I haven't used ClearCase but I am wondering to what extent the features you mention can be provided using free revision control systems. Extremely lightweight branching is a standard feature of all modern systems; making a new branch for each feature or bugfix or experiment is pretty much standard practice with git. 'View spec' sounds cool. It could probably be implemented on top of git with a little bit of scripting (create a new branch, merge in the versions specified, then delete the branch when no longer needed). A make variant that reuses already-built objects sounds like ccache.
I instinctively save files. And this is a bad thing to do with CVS; when I do a commit, my otherwise unchanged file can overwrite another engineer's more recent changes because I happened to save the file at a later date than him.
I'm really surprised to hear that, since it goes against all my experience of CVS. If you try to check in a file that somebody else has modified in the meantime, you will be prompted to update and merge in their changes first. In any case, no work is ever lost because you can always go back to the previous revision.
Or are you saying that you and someone else are trying to hack on the same working copy (the same directory) at the same time? That's not a sensible way to use CVS. You should each check out your own working copy, and check in your changes to the central repository as you make them.
No, the statement is quite correct. (And your statement 'Subversion requires you to update... whenever you have modified a file that has changed' is also correct.)
Suppose the repository contains two files foo.h and foo.c. Bob modifies foo.h and checks it in. Separately, Alice modifies foo.c and checks it in. Subversion does not require her to update her working copy first; she can check in the file without any warning. But now the server has a new tree that doesn't match either Bob's tree or Alice's tree. They could both have run the test suite before committing and seen it pass; but the current version on the server might fail.
(For even more concreteness, suppose foo.h defines an unused constant 'const int FOO_FACTOR = 5'. Bob checks in a change to remove it. Alice, meanwhile, edits foo.c and starts using FOO_FACTOR in the code. Both people are checking in working code; both Bob's tree and Alice's tree are working programs. But the state that ends up on the server is neither of those, and is a program that won't build.)
I am not saying this is good or bad, just saying this is how Subversion works.
Indeed, the time is ripe for Gitipedia. Put the whole thing (well, maybe not the images) into a downloadable repository, you fork it to your local machine and make changes, then send a push request. In the meantime anyone can browse your version just as easily as wikipedia.org, so if you want to maintain a Wikipedia fork which contains all those deleted articles on webcomics and Buffy characters, you can straightforwardly do so.
(Wikipedia is several gigabytes large but this is not beyond the downloading reach of people at universities and other places with fast connections.)
I don't know what is meant by saying Maemo wasn't written for Intel hardware. It's just standard Linux stuff, largely based on Debian. Of course you can build and run it on Intel CPUs. It's true it does have some proprietary bits which Nokia builds and distributes for ARM only, but since it's their own code, I assume they could port it pretty easily if they wanted.
If they think a Windows laptop will sell better, that's their judgement, but I think they missed a trick by not offering a Linux version.
How disappointing, I thought they were working on Maemo and other cool Linux stuff? Are those only considered fit for PDAs and (eventually) phones?
Of course Nokia can try to become another Dell if they want to, but why is another Windows PC considered Slashdot front page material?
You realize that Wikipedia includes information on the basis of verifiability, not truth? That sounds lame at first sight - why would you deliberately include information somebody knows to the true? - but it's the only sane way to do things when you have thousands of contributors who can never all agree about what is '100% true'. When you fix the factual mistake, add a citation, for example a link to a page on the program's web site or a message on a mailing list. Otherwise there's no way for the other person editing Wikipedia to know that the change you made is correct, and that it's not you who is the muppet. Of course you are correct and the other person is wrong, but you have to provide a way for them to see that.
I believe that for compatibility with old binaries built for crusty i386 Unix variants, a userspace process can choose to map the zero page. That then causes all sorts of problems such as this one.
To determine the effect of a fatty diet on memory and muscle performance, researchers studied 32 rats that were fed low-fat rat chow and trained for two months to complete a challenging maze.
And then later, some of the rats had their diet changed to a high-fat diet and others kept the same diet as before. But perhaps they just performed worse because the diet differed from what they were used to? To make a fair experiment there should also be a group of rats who were fed on a high-fat diet for two months during training, and then switched to low-fat for tests. Perhaps their performance would worsen too.
It seems to me that C++ has forked into two languages which coexist in the same spec, like fungus and alga in a lichen. One of the examples given for using concepts is as follows: template<Container C, Comparator Cmp>
void sort(C& c, Cmp cmp);
This was to specify that type C, used as the type of the first argument, must implement the 'Container' concept. But don't we already have classes and abstract classes for that? void sort(Container& c, cmp cmp);
You define the abstract class 'Container' using the same boring C++ syntax that's been around since 1985 or so, and then the compiler will check that what you pass implements this interface. So what's the need for another type language? Is it because there is no abstract base class that specifies 'has an [] operator' or 'has ++ and * operators'? If so would it not be better to add that somehow rather than making new language syntax?
Or is it because of the difference between static binding, accomplished with templates at compile time, and virtual functions, which must be looked up at runtime? Is it really worth constructing a whole new language syntax just for the fairly small performance saving of skipping a vtable lookup? C++ advocates point out how std::sort can be faster than C's qsort because of template code generation, but with only slightly more intelligent compilers surely we could write more normal-looking source code and have type-specialized object code generated when needed, if the types used can be determined at compile time.
C++ templates are very useful, but they never seemed to integrate that well with the rest of the language. It's not clear that having them grow their own type system is the best mutation to make the language simpler and more powerful, though it may be the best way to move forward from the situation we have now.
They decided that there would be no point to accepting bids because Microsoft was the only vendor who had a product that could meet their needs.
The purpose of having a law that says 'all contracts must be put out to tender' is to not give government agencies the option to make that choice. Either you require competitive tendering, or you don't. You can't require competition except in cases where some official decided, for reasons that he doesn't have to justify, that it wasn't worth bothering with. Even if the agency was correct in this particular case (and I'm not saying it was), you don't allow public bodies to pick and choose what things to put out for tender and what to simply award to a particular company.
Exactly. It would be better not to use the term 'RAND'. As RMS wrote:
These standards bodies typically have a policy of obtaining patent licenses that require a fixed fee per copy of a conforming program. They often refer to such licenses by the term "RAND," which stands for "reasonable and non-discriminatory." That term whitewashes a class of patent licenses that are normally neither reasonable nor non-discriminatory. It is true that these licenses do not discriminate against any specific person, but they do discriminate against the free software community, and that makes them unreasonable.
"Do you have freedom to distribute copies of it to other iPhone users?"
Yes, you do.
Really? Does the iPhone allow you to transfer apps from one phone to another? I thought it did not.
"Can you change the software and run your changed version?"
Yes, you can.
How is that? Do you mean by using Apple's scheme for getting permission to run your code on a limited number of phones? If so, I'll admit the user does have the freedom to do that, although not really to share the changed version with many others.
You seem to be considering the freedoms granted by the GPL as a purely theoretical requirement: it doesn't matter if in practice nobody is able to redistribute the app, as long as the licence says you can in theory. But since we are considering the spirit of the GPL rather than its strict legal interpretation (see the question that started this Slashdot discussion), I would suggest that what matters is the freedom the user gets in practice. The GPL is intended to be a practical document and not just an exercise in legal theory. So I think it does matter if the iPhone platform has restrictions that stop you from changing or sharing the software. In practice, it's not free software for the iPhone user, at least for those who haven't jailbroken their phone.
you have all the same issues with GPL'd Windows or Java software.
Hardly; for all its faults, Windows is not a closed platform. If you have a free program on your Windows system you can copy it and give it to someone else (or sell it to them). Even though Windows doesn't ship with a compiler, free ones like Mingw are easily available, so you can modify the software (or employ someone else to do it for you). Neither of those are true for the iPhone.
Of course there's a spirit of the licence. You don't think that lawyerspeak is the most important value in life do you? Or that ethics consists of doing the maximum that you can get away with while still squeezing within the letter of the law? In fact, according to its author, the letter of the GPL is less important than its spirit, which is expressed in the preamble:
Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things.
Now, is this spirit being upheld when you buy the app from the App Store? Do you have freedom to distribute copies of it to other iPhone users? Can you change the software and run your changed version? It's pretty clear that people who buy it from the App Store don't have these freedoms; even if they can get the source code from some web site, that's about as much use to them as the printed copies of source code that used to be supplied with IBM mainframes instead of a real online copy you can rebuild and run. So I think the original author had a point; he and his fellow contributors made the software with the expectation that everyone who gets it can freely share and modify it, but here most users cannot.
On the other hand, there are those who don't think this is what the GPL is about. For example Linus has said it's quite okay to distribute locked-down Linux installations that the user can't modify, despite the language about 'freedom' in the GPLv2 licence. So there is certainly room for interpretation.
Really? Does Flash use ActiveX? I thought it was just a browser plugin using the same old NSAPI plugin interface; that's why the same plugin (on Windows) works with Firefox and other browsers that don't support ActiveX at all. The same applies to Quicktime or whatever other plugins people are still using these days.
I think you are asking about forward compatibility (use the older 10.4 apps on your newer system) but the other poster was complaining about the lack of backward compatibility (newer apps don't work on older OS releases). (Or is it the other way round? The definitions of 'forward' and 'backward' compatibility are even more confusing than X servers and clients.) Anyway, it's a different consideration.
What is this Web Accelerator software? Is it similar to the 'accelerated browsing' mode in Opera?
It would be possible, I expect, to run a Windows virtual machine just doing the Web Accelerator, which you can connect to from Linux; then you get the faster browsing without the unpleasantness of having to use Windows for other tasks.
This is so cool! Celebrate your birthday at McSoftware and get all the copies of Windows Vista you can eat, with free refills of McWeb Browser! My friend had his party there and we got to meet the clown guy who squirted us a picture of his kids!
I haven't used ClearCase but I am wondering to what extent the features you mention can be provided using free revision control systems. Extremely lightweight branching is a standard feature of all modern systems; making a new branch for each feature or bugfix or experiment is pretty much standard practice with git. 'View spec' sounds cool. It could probably be implemented on top of git with a little bit of scripting (create a new branch, merge in the versions specified, then delete the branch when no longer needed). A make variant that reuses already-built objects sounds like ccache.
I'm really surprised to hear that, since it goes against all my experience of CVS. If you try to check in a file that somebody else has modified in the meantime, you will be prompted to update and merge in their changes first. In any case, no work is ever lost because you can always go back to the previous revision.
Or are you saying that you and someone else are trying to hack on the same working copy (the same directory) at the same time? That's not a sensible way to use CVS. You should each check out your own working copy, and check in your changes to the central repository as you make them.
No, the statement is quite correct. (And your statement 'Subversion requires you to update... whenever you have modified a file that has changed' is also correct.) Suppose the repository contains two files foo.h and foo.c. Bob modifies foo.h and checks it in. Separately, Alice modifies foo.c and checks it in. Subversion does not require her to update her working copy first; she can check in the file without any warning. But now the server has a new tree that doesn't match either Bob's tree or Alice's tree. They could both have run the test suite before committing and seen it pass; but the current version on the server might fail. (For even more concreteness, suppose foo.h defines an unused constant 'const int FOO_FACTOR = 5'. Bob checks in a change to remove it. Alice, meanwhile, edits foo.c and starts using FOO_FACTOR in the code. Both people are checking in working code; both Bob's tree and Alice's tree are working programs. But the state that ends up on the server is neither of those, and is a program that won't build.) I am not saying this is good or bad, just saying this is how Subversion works.
Indeed, the time is ripe for Gitipedia. Put the whole thing (well, maybe not the images) into a downloadable repository, you fork it to your local machine and make changes, then send a push request. In the meantime anyone can browse your version just as easily as wikipedia.org, so if you want to maintain a Wikipedia fork which contains all those deleted articles on webcomics and Buffy characters, you can straightforwardly do so. (Wikipedia is several gigabytes large but this is not beyond the downloading reach of people at universities and other places with fast connections.)
I wonder what sort of performance you'd get running the Windows Firefox build under Wine?
I don't know what is meant by saying Maemo wasn't written for Intel hardware. It's just standard Linux stuff, largely based on Debian. Of course you can build and run it on Intel CPUs. It's true it does have some proprietary bits which Nokia builds and distributes for ARM only, but since it's their own code, I assume they could port it pretty easily if they wanted. If they think a Windows laptop will sell better, that's their judgement, but I think they missed a trick by not offering a Linux version.
How disappointing, I thought they were working on Maemo and other cool Linux stuff? Are those only considered fit for PDAs and (eventually) phones? Of course Nokia can try to become another Dell if they want to, but why is another Windows PC considered Slashdot front page material?
When did 'insane' become a synonym for 'very good'?
You realize that Wikipedia includes information on the basis of verifiability, not truth? That sounds lame at first sight - why would you deliberately include information somebody knows to the true? - but it's the only sane way to do things when you have thousands of contributors who can never all agree about what is '100% true'. When you fix the factual mistake, add a citation, for example a link to a page on the program's web site or a message on a mailing list. Otherwise there's no way for the other person editing Wikipedia to know that the change you made is correct, and that it's not you who is the muppet. Of course you are correct and the other person is wrong, but you have to provide a way for them to see that.
I believe that for compatibility with old binaries built for crusty i386 Unix variants, a userspace process can choose to map the zero page. That then causes all sorts of problems such as this one.
In fact, there are plenty of RNLI lifeguards as well as lifeboats.
And then later, some of the rats had their diet changed to a high-fat diet and others kept the same diet as before. But perhaps they just performed worse because the diet differed from what they were used to? To make a fair experiment there should also be a group of rats who were fed on a high-fat diet for two months during training, and then switched to low-fat for tests. Perhaps their performance would worsen too.
If 'altruism' is no longer a fashionable term, what do the cool scientists say nowadays?
It seems to me that C++ has forked into two languages which coexist in the same spec, like fungus and alga in a lichen. One of the examples given for using concepts is as follows:
template<Container C, Comparator Cmp>
void sort(C& c, Cmp cmp);
This was to specify that type C, used as the type of the first argument, must implement the 'Container' concept. But don't we already have classes and abstract classes for that?
void sort(Container& c, cmp cmp);
You define the abstract class 'Container' using the same boring C++ syntax that's been around since 1985 or so, and then the compiler will check that what you pass implements this interface. So what's the need for another type language? Is it because there is no abstract base class that specifies 'has an [] operator' or 'has ++ and * operators'? If so would it not be better to add that somehow rather than making new language syntax?
Or is it because of the difference between static binding, accomplished with templates at compile time, and virtual functions, which must be looked up at runtime? Is it really worth constructing a whole new language syntax just for the fairly small performance saving of skipping a vtable lookup? C++ advocates point out how std::sort can be faster than C's qsort because of template code generation, but with only slightly more intelligent compilers surely we could write more normal-looking source code and have type-specialized object code generated when needed, if the types used can be determined at compile time.
C++ templates are very useful, but they never seemed to integrate that well with the rest of the language. It's not clear that having them grow their own type system is the best mutation to make the language simpler and more powerful, though it may be the best way to move forward from the situation we have now.
The purpose of having a law that says 'all contracts must be put out to tender' is to not give government agencies the option to make that choice. Either you require competitive tendering, or you don't. You can't require competition except in cases where some official decided, for reasons that he doesn't have to justify, that it wasn't worth bothering with. Even if the agency was correct in this particular case (and I'm not saying it was), you don't allow public bodies to pick and choose what things to put out for tender and what to simply award to a particular company.
Exactly. It would be better not to use the term 'RAND'. As RMS wrote:
Really? Does the iPhone allow you to transfer apps from one phone to another? I thought it did not.
How is that? Do you mean by using Apple's scheme for getting permission to run your code on a limited number of phones? If so, I'll admit the user does have the freedom to do that, although not really to share the changed version with many others.
You seem to be considering the freedoms granted by the GPL as a purely theoretical requirement: it doesn't matter if in practice nobody is able to redistribute the app, as long as the licence says you can in theory. But since we are considering the spirit of the GPL rather than its strict legal interpretation (see the question that started this Slashdot discussion), I would suggest that what matters is the freedom the user gets in practice. The GPL is intended to be a practical document and not just an exercise in legal theory. So I think it does matter if the iPhone platform has restrictions that stop you from changing or sharing the software. In practice, it's not free software for the iPhone user, at least for those who haven't jailbroken their phone.
Hardly; for all its faults, Windows is not a closed platform. If you have a free program on your Windows system you can copy it and give it to someone else (or sell it to them). Even though Windows doesn't ship with a compiler, free ones like Mingw are easily available, so you can modify the software (or employ someone else to do it for you). Neither of those are true for the iPhone.
Of course there's a spirit of the licence. You don't think that lawyerspeak is the most important value in life do you? Or that ethics consists of doing the maximum that you can get away with while still squeezing within the letter of the law? In fact, according to its author, the letter of the GPL is less important than its spirit, which is expressed in the preamble:
Now, is this spirit being upheld when you buy the app from the App Store? Do you have freedom to distribute copies of it to other iPhone users? Can you change the software and run your changed version? It's pretty clear that people who buy it from the App Store don't have these freedoms; even if they can get the source code from some web site, that's about as much use to them as the printed copies of source code that used to be supplied with IBM mainframes instead of a real online copy you can rebuild and run. So I think the original author had a point; he and his fellow contributors made the software with the expectation that everyone who gets it can freely share and modify it, but here most users cannot.
On the other hand, there are those who don't think this is what the GPL is about. For example Linus has said it's quite okay to distribute locked-down Linux installations that the user can't modify, despite the language about 'freedom' in the GPLv2 licence. So there is certainly room for interpretation.
Neither of those cases is the one the other poster was talking about: where newer applications are not compatible with older versions of the OS.
Really? Does Flash use ActiveX? I thought it was just a browser plugin using the same old NSAPI plugin interface; that's why the same plugin (on Windows) works with Firefox and other browsers that don't support ActiveX at all. The same applies to Quicktime or whatever other plugins people are still using these days.
I think you are asking about forward compatibility (use the older 10.4 apps on your newer system) but the other poster was complaining about the lack of backward compatibility (newer apps don't work on older OS releases). (Or is it the other way round? The definitions of 'forward' and 'backward' compatibility are even more confusing than X servers and clients.) Anyway, it's a different consideration.
What is this Web Accelerator software? Is it similar to the 'accelerated browsing' mode in Opera?
It would be possible, I expect, to run a Windows virtual machine just doing the Web Accelerator, which you can connect to from Linux; then you get the faster browsing without the unpleasantness of having to use Windows for other tasks.
Google should just put the app on their website along with instructions on how to jailbreak your iPhone and install it.
This is so cool! Celebrate your birthday at McSoftware and get all the copies of Windows Vista you can eat, with free refills of McWeb Browser! My friend had his party there and we got to meet the clown guy who squirted us a picture of his kids!