No, you can't. For example, if you try building an ARM-compatible CPU, there is ample reason to believe ARM Ltd. will pursue you for licensing fees even if the chip design is entirely your own.
Lots of things are very well documented, without permitting you to build your own workalike, or require a negotiated license to do so. Sure, you can build your own private device. But try distributing it to others, and enjoy the lawsuits if you weren't careful about the agreements. I have no idea if you would get away with it or lose everything you own.
BTW you should be create such types in C++ fairly easilly.
And I have. The classes and all the overloaded functions were C++ generated by Emacs-Lisp. The code optimised pretty well to the equivalent raw floating point - we used it in a computationally intensive video game.
In this case, the project must be very delicate in providing vxworks support while not stepping into any of these non-RT boundaries.
You're right, and I will be very surprised if they get this right in all corner cases. The kernel is pretty complex, and the C library's threading implementation is also very complex. I expect by themselves these will have corner cases where RT properties are not maintained, without being clearly documented. So no matter how much effort the folks writing the vxworks layer put in, they are dependent on other folks getting a lot of things right which are not precisely specified nor testable.
So in practice, I think it will be something which provides RT properties when running smoothly (e.g. (this is a guess) not doing things like initialising new RT processes or adding new devices), but you still have to test your application to get to the level of confidence that it's good enough for practical scenarios. As a tool, that puts it somewhere more reliable for RT than older soft-RT systems, but not quite to the level of guarantees from a much simpler, hand audited (we hope) system.
Mind you, I'm not sure where VxWorks fits on that spectrum either. If you really, really need hard RT assurances, wouldn't you write your own (very) tiny kernel and consider every critical code path? I have done this on a couple of occasions, for relatively simple devices.
"Realtime linux" is a non-linux realtime OS with a non-realtime linux compatibility layer... emulating a REAL RTOS?...
That was true in the past, but it is no longer true. The algorithms of the latest approaches to real-time Linux, when working together, actually do provide deterministic, hard real-time responses if the real-time parts of your application are coded appropriately. (By this, I mean that you don't expect a deterministic response when trying to use a service which isn't, such as a filesystem.) And they do this at the same time as supporting the vast set of devices and features of a general purpose OS.
Older approaches to "real-time" on Linux either had a separate real-time layer, with Linux itself as a sort of task running on top of that and extra drivers required, or they used a best-effort approach, where drivers and other code could potentially hold a lock for a long time, blocking real-time scheduling, but you hoped to minimise those through testing and tweaking drivers all over the place.
The current approaches work differently. All drivers can take locks, but tasks which require higher priority or even deterministic scheduling aren't blocked by locks, nor by other interrupts (unless those have conflicting real-time requirements too, of course), except when there is genuine contention over a common resource, such as accessing the same chip.
This is just like the Linux-over-real-RT done before, but without having to have separate interrupt infrastructure and so on.
Additionally, the current approach allows RT tasks to use system services like filesystems and networking and so on, when that's convenient. When this is used, using a non-RT service means the RT tasks take on potentially non-RT properties but only for the duration of that call, which is expected by the RT caller anyway at that point. Furthermore, Linux applies a priority inheritance technique even in that case.
The ability to intermix RT code and non-RT services well is very convenient for some applications. E.g. mobile phones have strict RT requirements for the radio, but not for the GUI. It is convenient for hardware cost and versatility if both can run on the same multi-core CPU, scheduled by a common OS.
Why would you emulate a realtime system in a non-realtime system? Doesn't that defeat the purpose of a realtime OS?
Because the underlying Linux got better real-time properties since you last looked; the "non-realtime system" is now a mixed system with some real-time capabilities when requested.
That's not at all obvious, because it's not done in a simple way.
A remarkably large number of different things need to be implemented together to get those properties while keeping close access to the general purpose OS services, and using common drivers. Things like high-res timer queues, spinlock preemption, prioritised lock acquisition including userspace locks (RT-futexes), priority inheritance, O(1) scheduling decisions, preemptible interrupts (i.e. interrupts become RT tasks themselves), and countless details.
But if you bring the right ingredients together, you can see that the code paths, although non-obvious, are able to provide deterministic real-time response to particular applications on appropriately chosen hardware, while still able to run general purpose OS services at the same time on the same hardware, and without having a lot of special drivers and code dedicated to the real-time part. And there are quite some benefits to this mixing, for more complex applications.
This stuff still isn't suitable for nukes and car engines. But it's not suitable because it's too large and complicated to prove everything is right and nothing critical breaks the rules, not because it doesn't provide RT guarantees in principle.
It is well suited to things like mobile phones, even the radio DSP part which has strict timing requirements, since it does provide suitable mechanisms in principle, and any failures in an application like that are not catastrophic but simply bugs to be fixed in the usual way.
Eg. never require version 1.4.5 of a library if you can work with any version 1 or 1.4
How do you know your program works to the reliability expected by customers with any version 1 or 1.4, without testing every version in that range? Different distros have their own patches, so you need to test on all the major distros too, multiplied by the versions available, if you care about high reliability for each users first impression of the program. (Just think of past distro-specific compatibility issues OpenSSL, GCC, Glibc or libstdc++, for example. Version number alone isn't enough to identify them.)
I believe that was the grandparent's point: it's a lot of testing (QA), or release quality is not up to a high standard, at least for the first few releases.
If you don't care about first impressions of complex software being to a high standard, that's fine. That works in the free software world, because nobody expects a "pre-alpha" release to be of high quality: there is community support for releasing works in progress.
But for a company trying to do funded development, reputation is more likely to be critical, and getting it wrong can be poison, hence greater concerns about which platforms are supported, and a desire to avoid releasing code for platforms which they cannot afford to support themselves.
Are they still filtered if you add &safe=off to the end of the URL?
That's a really good question.
So I've just been to have a look, and...
Ooh.
The mobile provider's links page has "Search Google". When I go there, I get the restricted Google page with limited results, and preferences that don't mention SafeSearch. There is no indication that you can go to another Google page. The "Google Home Page" link goes back to that limited page.
When I go to http://www.google.com/ or http://www.google.co.uk/, however, I get a "mobile-optimised" but unrestricted page. That one has mobile settings which do include SafeSearch options, has an option to turn on mobile-optimised HTML or not, and offers the choice to show "Classic" view instead of "Mobile" view, serving the standard Google pages we hope (apart from the option to switch back to "Mobile" at the bottom":-).
I'm sure I tried the standard Google URLs 2 weeks ago, and got the super-restricted mobile page. Maybe I didn't, or maybe Google and/or 3 (the mobile network) have changed their policy in some way since then to allow the standard URL to work.
Big improvement. And big surprise to me, right after posting my comment:-)
I'm on the 3 network in the UK. The internet facility is quite good: we have HSDPA, advertised as "up to 2.8Mbit/s". I've seen about 2Mbit/s at best, however download rates are sensitive to latency too. The latency is extremely variable, anything from 150ms up to 30 seconds for a ping, independent of signal quality. Whether it's usable or not is therefore also rather variable. Still, when it works, it's quite nice.
I pay a flat rate of approx £10 (US $20) to fetch up to 3GB/month, which I've never reached on it. Therefore, I'm quite happy with the price, and I don't worry at all about data charges.
It's not a walled garden: the whole internet is accessible. That's nice.
But when I visit good old Google, at their normal URLs, I find the search results are filtered by Google. I'm not sure, it may be that Google's "Safe Search" feature is switched on when using a mobile. But I notice that there are no settings to turn it off: I'm stuck with filtered results, whether I like them or not. And there's no text saying the results are filtered.
Another thing I noticed is that the BBC News page redirects to a "mobile-optimised" version which doesn't have what I want on it. That's very annoying; I would really like to be able to visit the normal page.
I wouldn't be surprised if this has nothing to do with the mobile network, and is done by the web sites themselves detecting a mobile client. It is very annoying, especially when the site in question provides no way to access the normal site.
I have a Lexmark, a delightful colour LED (similar to laser) with delicious print quality and speedy too.... and it works out of the box with no special drivers, as it accepts PDF and Postscript files. I take it the cough is for _some_ Lexmark printers, then?
... it was still busy indexing your preexisting files. Once it gets past that, it gets quite calm in my admittedly limited experience.
That would be nice. After waiting 3 solid days, during which Gnome was barely usable, and freeing up some spare extra gigabytes for the index files, I've still yet to see trackerd get past indexing.
Actually, trackerd is a real resource hog on some systems, especialling when it's indexing. Quite a few of us had to uninstall it, as just using simple apps on the desktop would crawl. They're still trying to work out why - some aspects of it may be kernel problems triggered by trackerd. Some of it is known to be poor database implementations for trackerd's usage, for which trackerd is developing various (in my opinion hackish and far from optimal) workarounds. There is no "pre-analyzed" data: it's a tool for indexing your personal files in/home, not your Ubuntu installation! It's those of us with 10^6 files in 80GB or whatever in/home who notice the biggest problems. I don't think it even does index outside/home by default.
There may be a problem with background I/O interfering with everyone on current kernels. See the bug reports in Ubuntu Launchpad about Tracker on Gutsy. Tracker indexes files in the background. While it's doing that, everything slows to a crawl. It does seem to do so disproportionately, as through the kernel isn't scheduling I/O very well.
You spew such utter nonsense, I'm not going to bother engaging further. I didn't disagree with your 1); I never said the GPL doesn't apply to the whole program so your reply is nonsense; 2) is irrelevant; we're talking about what the GPL means, not what the other license means, and besides we're talking about the license of a derived work of BSDL-non-advertising-clause, not unchanged work, which plainly can be co-licensed with in another license, it is done every day in Linux and GNU code and proprietary products.
The rest of the paragraph does not mean what you think it means.
All portions are under the GPL prior to extracting identifiable independent sections. It is the GPL itself which grants you permission to extract those sections under their original license. Therefore you are not violating the GPL when you do that - it is a permission granted by the GPL.
It is not a contradiction to say the whole work is covered by the GPL, and at the same time you can extract identifiable sections of it under their original license - precisely because that is one of the permissions granted explicitly by the GPL.
Only when they are extracted and made separate, as identifiable independent sections, do you have the option of using the original license (determining that is part of "identifiable"). The GPL continues to apply to those sections when they are part of the whole GPL'd work: that's what "But when you distribute the same sections as part of a whole..." means.
Using the Linux kernel as an example: when you give me a compiled kernel, you must give me the source for that kernel (or equivalent, as per GPL). The GPL requires that you give me _all_ the source, including for those parts of the kernel which have a BSD license on the source file, or even those which have identifiable sections of BSD code. That's what "But when you distribute the same sections as part of a whole..." means. It's to make sure you must give me the _whole_ source code. It's to prevent you from keeping some bits to yourself just because they were copied verbatim from BSD, for example; it makes the GPL stronger.
But at the same time, after you give me that Linux source, if I find a file in it which has the BSD license only, then I can use that file under the BSD license. It is in identifiably independent section.
See why section 2 has to have both parts of that paragraph? The bit I quoted grants you the right to extract identifiable independent sections under their original license. And the bit you quoted makes sure you have to give me those sections, despite their weaker license, when you distribute the compiled binary containing them as part of a GPL'd whole. Otherwise people might try to use the first bit as a loophole to avoid giving out the whole source to a GPL'd binary.
I just tried turning on "Desktop Effects" on my Ubuntu Gutsy install. I didn't get excited by the basic effects: soft shadows around the windows. I like a crisp picture. The full effects, well the only thing I saw was the wobbly windows, which are pretty but seem to get in the way of nice, simple moving a window to where I want it.
But the real reason I turned it off again was Firefox suddenly wedged at 100%, with blank windows (at first) and then rendered, but still not responding to clicks in its windows. Never mind.
GPL REQUIRES that ALL portions of a program distributed under the GPL are under the GPL. In case you don't get it: You CAN'T have a GPL program where portions are under the BSD, unless you own the copyright in the BSD portions.
That is not really accurate. A GPL program may contain sections which can be extracted and distributed under their original licenses, if those sections are identifiable. Section 2 of GPL v2:
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works.
One interpretation of that is that GPL licensed source code may contain identifiable sections inherited from BSD licensed source code, and those sections may be extracted and used under their original BSD license, even though you received the whole under the GPL.
This does not mean "only Bob's changes" are GPL'd. It means those identifiable sections which are unchanged from Darin's BSD code (or perhaps changed in trivial ways) may be extracted, if they can be reasonably considered independent and separate works in themselves. Which you can argue they always are, as they were copied verbatim from another work, Darin's BSD code.
This is also another reason why it is not acceptable to remove the BSD license statement and identify those sections which may be extracted and distributed under it. Doing so fails to inform the recipient of rights they have with respect to those sections, even under the GPL.
The acupuncture paper you link to looks quite impressive, to be honest, as acupuncture science goes. It describes in considerable detail how to replicate the results, with quantitative and unambiguous measurements, and practical uses. It's also the only method I've seen to date where effects of acupoints could be assessed in a double-blind manner.
Then let me add to your statistics. My shiny new laptop bought last September failed at the "install X" step when installing Ubuntu Dapper Drake from CD. It yielded a black screen, and I never did see the final steps of the install process. It wasn't the CD, it was a graphics problem with Intel video chipset.
Once fixed, it was still a few sad months before the display worked as I would like.
However, I am now the happy user of Ubuntu Gutsy Gibbon, whose Intel driver is most excellent. Apart from the bugs every odd version or so, but the ones without those bugs work very well.:-)
(The X video driver is the only package on my Ubuntu which is "version locked" to an older version because the current one has problems).
we've always used kilobyte/megabyte/etc as they applied to computers
But that's not true. It's common when measuring RAM and ROM sizes, and sometimes when reporting file sizes (by no means all systems though). But many uses in computers use SI base 10 notation, or even weird mixtures. This is not new; it goes back to the early days in computing.:
A 100Mbit/s network communicates at 10^8 bits per second, not 100 x 2^20.
A 33.6k modem communicates at 33.6 x 10^3 bits per second, not 33.6 x 2^10.
Bizarrely, a 1.44MB floppy holds 1.44 x 10^3 x 2^10 bytes, not 1.44 x 2^20 or even 1.44 x 10^6.
A 2Gflop CPU performs 2 x 10^9 operations per second, not 2 x 2^30.
When a downloading program reports it's getting "1MB/s", it is rather ambiguous: is that a binary k because you're storing 1MB (MiB) every second, or is it decimal k for consistency with communications usage, showing off your 8Mbit/s (decimal) cable modem at peak performance? Likely it will depend on the background of the person who wrote the program, or the context in which it's being used. Sure, you might think it should always use the binary notation. A communications engineer would see it differently. A status display on your cable modem's web page would look weird showing it had negotiated an 8Mbit/s connection while telling you the theoretical maximum download rate is 953kB/s; it would need an explanation to avoid complaints.
Summary: the idea that binary notation is used in computers is historically true only for some kinds of measurement, and even then it's been a source of confusion.
I agree with you about us (and everything) being part of nature. And of the importance of getting over the idea that we're separate. And of the destructive and counterproductive consequences of the idea of being separate.
But I think you have missed the sentiment of the article, which asserts that we are part of nature, rather than asserting that we are separate from it. It has been written that we are the eyes of the universe to see itself. Admittedly there are a lot of other eyes of the universe too. But that doesn't diminish the idea. The gist of that asserts that we are part of the universe, of nature, with a role to play in nature's own sentience, much as neurons and other things have a role to play in our individual sentience. Not watching from a distance, but part of.
Well, I'm man enough to say one beer definitely affects me. Heck, half a beer does. I can drink a lot more. I don't, by habit, but I can. But I won't pretend one beer has no effect; it does. The effect on driving is subtle at that level; not drunk driving, but a slight change in reaction times and risk prediction.
Not using templates - templates weren't even reliable in G++ in those days. I did try using them, but it quickly became unmaintainable.
I used an Emacs Lisp program to generate C++ classes for every dimensional combination in our programs, and operator overloading to combine them.
For example, we had "Velocity", "Speed", "Time_Interval", "Absolute_Time", "Position", "Acceleration" and several other classes, which could only be combined in certain ways. We had different types for different numbers of dimensions, too - 1d, 2d, 3d.
When compiled it all came down to simple arithmetic - nicely optimised. But any mismatch in dimensions showed up as a reasonably clear compile error. It worked really well. And it was reasonably maintainable with the Lisp code generator.
No, you can't. For example, if you try building an ARM-compatible CPU, there is ample reason to believe ARM Ltd. will pursue you for licensing fees even if the chip design is entirely your own. Lots of things are very well documented, without permitting you to build your own workalike, or require a negotiated license to do so. Sure, you can build your own private device. But try distributing it to others, and enjoy the lawsuits if you weren't careful about the agreements. I have no idea if you would get away with it or lose everything you own.
And I have. The classes and all the overloaded functions were C++ generated by Emacs-Lisp. The code optimised pretty well to the equivalent raw floating point - we used it in a computationally intensive video game.
-- Jamie
So in practice, I think it will be something which provides RT properties when running smoothly (e.g. (this is a guess) not doing things like initialising new RT processes or adding new devices), but you still have to test your application to get to the level of confidence that it's good enough for practical scenarios. As a tool, that puts it somewhere more reliable for RT than older soft-RT systems, but not quite to the level of guarantees from a much simpler, hand audited (we hope) system.
Mind you, I'm not sure where VxWorks fits on that spectrum either. If you really, really need hard RT assurances, wouldn't you write your own (very) tiny kernel and consider every critical code path? I have done this on a couple of occasions, for relatively simple devices.
That was true in the past, but it is no longer true. The algorithms of the latest approaches to real-time Linux, when working together, actually do provide deterministic, hard real-time responses if the real-time parts of your application are coded appropriately. (By this, I mean that you don't expect a deterministic response when trying to use a service which isn't, such as a filesystem.) And they do this at the same time as supporting the vast set of devices and features of a general purpose OS.
Older approaches to "real-time" on Linux either had a separate real-time layer, with Linux itself as a sort of task running on top of that and extra drivers required, or they used a best-effort approach, where drivers and other code could potentially hold a lock for a long time, blocking real-time scheduling, but you hoped to minimise those through testing and tweaking drivers all over the place.
The current approaches work differently. All drivers can take locks, but tasks which require higher priority or even deterministic scheduling aren't blocked by locks, nor by other interrupts (unless those have conflicting real-time requirements too, of course), except when there is genuine contention over a common resource, such as accessing the same chip.
This is just like the Linux-over-real-RT done before, but without having to have separate interrupt infrastructure and so on.
Additionally, the current approach allows RT tasks to use system services like filesystems and networking and so on, when that's convenient. When this is used, using a non-RT service means the RT tasks take on potentially non-RT properties but only for the duration of that call, which is expected by the RT caller anyway at that point. Furthermore, Linux applies a priority inheritance technique even in that case.
The ability to intermix RT code and non-RT services well is very convenient for some applications. E.g. mobile phones have strict RT requirements for the radio, but not for the GUI. It is convenient for hardware cost and versatility if both can run on the same multi-core CPU, scheduled by a common OS.
Why would you emulate a realtime system in a non-realtime system? Doesn't that defeat the purpose of a realtime OS?
Because the underlying Linux got better real-time properties since you last looked; the "non-realtime system" is now a mixed system with some real-time capabilities when requested.
That's not at all obvious, because it's not done in a simple way.
A remarkably large number of different things need to be implemented together to get those properties while keeping close access to the general purpose OS services, and using common drivers. Things like high-res timer queues, spinlock preemption, prioritised lock acquisition including userspace locks (RT-futexes), priority inheritance, O(1) scheduling decisions, preemptible interrupts (i.e. interrupts become RT tasks themselves), and countless details.
But if you bring the right ingredients together, you can see that the code paths, although non-obvious, are able to provide deterministic real-time response to particular applications on appropriately chosen hardware, while still able to run general purpose OS services at the same time on the same hardware, and without having a lot of special drivers and code dedicated to the real-time part. And there are quite some benefits to this mixing, for more complex applications.
This stuff still isn't suitable for nukes and car engines. But it's not suitable because it's too large and complicated to prove everything is right and nothing critical breaks the rules, not because it doesn't provide RT guarantees in principle.
It is well suited to things like mobile phones, even the radio DSP part which has strict timing requirements, since it does provide suitable mechanisms in principle, and any failures in an application like that are not catastrophic but simply bugs to be fixed in the usual way.
I believe that was the grandparent's point: it's a lot of testing (QA), or release quality is not up to a high standard, at least for the first few releases.
If you don't care about first impressions of complex software being to a high standard, that's fine.
That works in the free software world, because nobody expects a "pre-alpha" release to be of high quality: there is community support for releasing works in progress.
But for a company trying to do funded development, reputation is more likely to be critical, and getting it wrong can be poison, hence greater concerns about which platforms are supported, and a desire to avoid releasing code for platforms which they cannot afford to support themselves.
-- Jamie
That's a really good question.
So I've just been to have a look, and...
Ooh.
The mobile provider's links page has "Search Google". When I go there, I get the restricted Google page with limited results, and preferences that don't mention SafeSearch. There is no indication that you can go to another Google page. The "Google Home Page" link goes back to that limited page.
When I go to http://www.google.com/ or http://www.google.co.uk/, however, I get a "mobile-optimised" but unrestricted page. That one has mobile settings which do include SafeSearch options, has an option to turn on mobile-optimised HTML or not, and offers the choice to show "Classic" view instead of "Mobile" view, serving the standard Google pages we hope (apart from the option to switch back to "Mobile" at the bottom"
I'm sure I tried the standard Google URLs 2 weeks ago, and got the super-restricted mobile page. Maybe I didn't, or maybe Google and/or 3 (the mobile network) have changed their policy in some way since then to allow the standard URL to work.
Big improvement. And big surprise to me, right after posting my comment
I'm on the 3 network in the UK. The internet facility is quite good: we have HSDPA, advertised as "up to 2.8Mbit/s". I've seen about 2Mbit/s at best, however download rates are sensitive to latency too. The latency is extremely variable, anything from 150ms up to 30 seconds for a ping, independent of signal quality. Whether it's usable or not is therefore also rather variable. Still, when it works, it's quite nice.
I pay a flat rate of approx £10 (US $20) to fetch up to 3GB/month, which I've never reached on it. Therefore, I'm quite happy with the price, and I don't worry at all about data charges.
It's not a walled garden: the whole internet is accessible. That's nice.
But when I visit good old Google, at their normal URLs, I find the search results are filtered by Google. I'm not sure, it may be that Google's "Safe Search" feature is switched on when using a mobile. But I notice that there are no settings to turn it off: I'm stuck with filtered results, whether I like them or not. And there's no text saying the results are filtered.
Another thing I noticed is that the BBC News page redirects to a "mobile-optimised" version which doesn't have what I want on it. That's very annoying; I would really like to be able to visit the normal page.
I wouldn't be surprised if this has nothing to do with the mobile network, and is done by the web sites themselves detecting a mobile client. It is very annoying, especially when the site in question provides no way to access the normal site.
-- Jamie
Ruby's first public release was 13 years ago.
I have a Lexmark, a delightful colour LED (similar to laser) with delicious print quality and speedy too.... and it works out of the box with no special drivers, as it accepts PDF and Postscript files. I take it the cough is for _some_ Lexmark printers, then?
Actually, trackerd is a real resource hog on some systems, especialling when it's indexing. Quite a few of us had to uninstall it, as just using simple apps on the desktop would crawl. They're still trying to work out why - some aspects of it may be kernel problems triggered by trackerd. Some of it is known to be poor database implementations for trackerd's usage, for which trackerd is developing various (in my opinion hackish and far from optimal) workarounds. There is no "pre-analyzed" data: it's a tool for indexing your personal files in /home, not your Ubuntu installation! It's those of us with 10^6 files in 80GB or whatever in /home who notice the biggest problems. I don't think it even does index outside /home by default.
Gutsy Gibbon beta, up to date with the latest packages, running on Core Duo laptop:
There may be a problem with background I/O interfering with everyone on current kernels. See the bug reports in Ubuntu Launchpad about Tracker on Gutsy. Tracker indexes files in the background. While it's doing that, everything slows to a crawl. It does seem to do so disproportionately, as through the kernel isn't scheduling I/O very well.
You spew such utter nonsense, I'm not going to bother engaging further. I didn't disagree with your 1); I never said the GPL doesn't apply to the whole program so your reply is nonsense; 2) is irrelevant; we're talking about what the GPL means, not what the other license means, and besides we're talking about the license of a derived work of BSDL-non-advertising-clause, not unchanged work, which plainly can be co-licensed with in another license, it is done every day in Linux and GNU code and proprietary products.
The rest of the paragraph does not mean what you think it means.
All portions are under the GPL prior to extracting identifiable independent sections. It is the GPL itself which grants you permission to extract those sections under their original license. Therefore you are not violating the GPL when you do that - it is a permission granted by the GPL.
It is not a contradiction to say the whole work is covered by the GPL, and at the same time you can extract identifiable sections of it under their original license - precisely because that is one of the permissions granted explicitly by the GPL.
Only when they are extracted and made separate, as identifiable independent sections, do you have the option of using the original license (determining that is part of "identifiable"). The GPL continues to apply to those sections when they are part of the whole GPL'd work: that's what "But when you distribute the same sections as part of a whole..." means.
Using the Linux kernel as an example: when you give me a compiled kernel, you must give me the source for that kernel (or equivalent, as per GPL). The GPL requires that you give me _all_ the source, including for those parts of the kernel which have a BSD license on the source file, or even those which have identifiable sections of BSD code. That's what "But when you distribute the same sections as part of a whole..." means. It's to make sure you must give me the _whole_ source code. It's to prevent you from keeping some bits to yourself just because they were copied verbatim from BSD, for example; it makes the GPL stronger.
But at the same time, after you give me that Linux source, if I find a file in it which has the BSD license only, then I can use that file under the BSD license. It is in identifiably independent section.
See why section 2 has to have both parts of that paragraph? The bit I quoted grants you the right to extract identifiable independent sections under their original license. And the bit you quoted makes sure you have to give me those sections, despite their weaker license, when you distribute the compiled binary containing them as part of a GPL'd whole. Otherwise people might try to use the first bit as a loophole to avoid giving out the whole source to a GPL'd binary.
I just tried turning on "Desktop Effects" on my Ubuntu Gutsy install. I didn't get excited by the basic effects: soft shadows around the windows. I like a crisp picture. The full effects, well the only thing I saw was the wobbly windows, which are pretty but seem to get in the way of nice, simple moving a window to where I want it.
But the real reason I turned it off again was Firefox suddenly wedged at 100%, with blank windows (at first) and then rendered, but still not responding to clicks in its windows. Never mind.
That is not really accurate. A GPL program may contain sections which can be extracted and distributed under their original licenses, if those sections are identifiable. Section 2 of GPL v2:
One interpretation of that is that GPL licensed source code may contain identifiable sections inherited from BSD licensed source code, and those sections may be extracted and used under their original BSD license, even though you received the whole under the GPL.
This does not mean "only Bob's changes" are GPL'd. It means those identifiable sections which are unchanged from Darin's BSD code (or perhaps changed in trivial ways) may be extracted, if they can be reasonably considered independent and separate works in themselves. Which you can argue they always are, as they were copied verbatim from another work, Darin's BSD code.
This is also another reason why it is not acceptable to remove the BSD license statement and identify those sections which may be extracted and distributed under it. Doing so fails to inform the recipient of rights they have with respect to those sections, even under the GPL.
The acupuncture paper you link to looks quite impressive, to be honest, as acupuncture science goes. It describes in considerable detail how to replicate the results, with quantitative and unambiguous measurements, and practical uses. It's also the only method I've seen to date where effects of acupoints could be assessed in a double-blind manner.
Then let me add to your statistics. My shiny new laptop bought last September failed at the "install X" step when installing Ubuntu Dapper Drake from CD. It yielded a black screen, and I never did see the final steps of the install process. It wasn't the CD, it was a graphics problem with Intel video chipset.
:-)
Once fixed, it was still a few sad months before the display worked as I would like.
However, I am now the happy user of Ubuntu Gutsy Gibbon, whose Intel driver is most excellent. Apart from the bugs every odd version or so, but the ones without those bugs work very well.
(The X video driver is the only package on my Ubuntu which is "version locked" to an older version because the current one has problems).
But that's not true. It's common when measuring RAM and ROM sizes, and sometimes when reporting file sizes (by no means all systems though). But many uses in computers use SI base 10 notation, or even weird mixtures. This is not new; it goes back to the early days in computing.:
When a downloading program reports it's getting "1MB/s", it is rather ambiguous: is that a binary k because you're storing 1MB (MiB) every second, or is it decimal k for consistency with communications usage, showing off your 8Mbit/s (decimal) cable modem at peak performance? Likely it will depend on the background of the person who wrote the program, or the context in which it's being used. Sure, you might think it should always use the binary notation. A communications engineer would see it differently. A status display on your cable modem's web page would look weird showing it had negotiated an 8Mbit/s connection while telling you the theoretical maximum download rate is 953kB/s; it would need an explanation to avoid complaints.
Summary: the idea that binary notation is used in computers is historically true only for some kinds of measurement, and even then it's been a source of confusion.
That is one way of looking at it. *chuckles and bows*
I agree with you about us (and everything) being part of nature. And of the importance of getting over the idea that we're separate. And of the destructive and counterproductive consequences of the idea of being separate.
But I think you have missed the sentiment of the article, which asserts that we are part of nature, rather than asserting that we are separate from it. It has been written that we are the eyes of the universe to see itself. Admittedly there are a lot of other eyes of the universe too. But that doesn't diminish the idea. The gist of that asserts that we are part of the universe, of nature, with a role to play in nature's own sentience, much as neurons and other things have a role to play in our individual sentience. Not watching from a distance, but part of.
Well, I'm man enough to say one beer definitely affects me. Heck, half a beer does. I can drink a lot more. I don't, by habit, but I can. But I won't pretend one beer has no effect; it does. The effect on driving is subtle at that level; not drunk driving, but a slight change in reaction times and risk prediction.
Not using templates - templates weren't even reliable in G++ in those days. I did try using them, but it quickly became unmaintainable.
I used an Emacs Lisp program to generate C++ classes for every dimensional combination in our programs, and operator overloading to combine them.
For example, we had "Velocity", "Speed", "Time_Interval", "Absolute_Time", "Position", "Acceleration" and several other classes, which could only be combined in certain ways. We had different types for different numbers of dimensions, too - 1d, 2d, 3d.
When compiled it all came down to simple arithmetic - nicely optimised. But any mismatch in dimensions showed up as a reasonably clear compile error. It worked really well. And it was reasonably maintainable with the Lisp code generator.