Great idea
Somebody taught me about Ben Jonson, I think. "Very few men are wise by their own council, or learned by their own teaching. For he that was only taught by himself, had a fool for a master."
Who needs an encyclopedia, after all, if you have everything2.
I wish you hadn't used the world "collaborative," it really makes me wince on this site.
This is an excellent post, and it has spawned some outstanding discussion. I will be so bold as to propose one question that could guide such a discussion: How can we design for your objective of a collaborative learning system with the fewest possible assumptions?
You're quite right to note that funding could be taken care of by advertising. However, I don't think it is really necessary that a single organization be responsible for everything (or a single editor- this will definitely require a wiki-type technology, as mentionned by other posters).
I also agree with many commenters that the tree-structure is not necessarily the best way to represent/describe knowledge. We do however, need some way to do this... and since that's often one of the most contentious areas in discussing such projects, I propose we just ignore it ;)
Or, more precisely, let competing 'narratives' compete: it's both impossible and useless to have a final arbiter on the web of what's a proper epistemology. If some want to build a tree, they can build trees... if other want webs, or maps, or yellow brick roads... the more the merrier.
How could tools build these representation? How can we have such tools and have knowledge scattered over many servers? I suggest each node have meta-descriptions with:
required knowledge
optional knowledge
links to required knowledge
links to optional knowledge
links to related nodes
links to more advanced nodes
If every node has at least one link, and most have more, engines could then crawl nodes, and represent information as they wish. In fact, I don't really like the first two items in that list, because they don't sufficiently separate knowledge from its representation... (can that actually be done? this might get some philosophers riled up!)
I hope this helps advance the idea... this sounds like a very important and exciting possibility!!
However, I have to disagree with you on the unlimited editing period. Submissions should be able to mature and not live on forever as zombies.
This is specifically important when you traverse through significant version changes of the language itself... granted, this would be less of a problem on mature languages such as C, Cobol, and to a certain extent, Perl, for example.
My suggestion would be editing period should expire when there is a newer version/release of the language. This might seem meaningless to many, but the difference in code when moving from an older version to a newer one will be educational for newbies as well as seasoned veterans.