The Xanadu story is indeed a classic full of
interesting lessons. Specifically “ship early” is now a platitude in web software development.
But I also have some sympathy for the developers who still dream of finishing Xanadu: From a purely academic perspective, it would be interesting what such a system would look like and whether it could work in any way. It appears to have anticipated some form of DRM (digital rights management) which is now routinely used for things like Netflix.
Xanadu reminds me of “Google Wave“ from 2009: A quite ambitious (though much less ambitious than Xanadu) project which tried to replace email with something much more dynamic and flexible. Wave didn’t succeed, but I think not because Wave was too rigid and overengineered compared to email (it arguably wasn’t), but because email was already firmly established. Any alternative didn’t have the network effect on their side.
This leads me to think: Are there are any exceptions to the Xanadu lessons?
One case is perhaps the computer game “Star Citizen”. It’s an completely overambitious crowdfunding project which is in development for more than a decade. Apparently it is still nowhere near finished, and many think it will never be. But unlike Xanadu, Star Citizen did definitely “evolve” pretty much from the start with its users, who got access to the unfinished game very early on. But dynamically evolving development with the userbase seems not sufficient for a project not to get hung up in unrealistic platonic ideals.
Another case is, perhaps, the invention of the computer. I don’t mean the actual invention(s) during the second world war, but Charles Babbage’s Analytical Engine a hundred years earlier. He mostly just produced elaborate plans, since he didn’t have the financial means of implementing them. So his visionary ambitions didn’t get anywhere. He was mostly forgotten, and computers were set back for a century. But it seems plausible today that his project could well have succeeded at the time if he had access to a substantial engineering and research team. Some projects can apparently only succeed with a ton of antecedent effort, because they simply have (unlike Xanadu with the WWW) no small analogue.
But I generally agree: for most projects the Xanadu lessons seem applicable.
But it seems plausible today that his project could well have succeeded at the time…
I don’t think so. Several computing machines were prototyped in the early 20th century, and none of them really took off until they were made fully electronic (ENIAC). Any system with moving parts is just too slow to be of practical interest.
Well, as far as I can tell, even the electromechanical computers of the 1930s were not significantly faster than humans using mechanical calculators. That’s why I don’t think it would have worked in Babbage’s day. More details in the middle of this essay https://rootsofprogress.org/epistemic-standards-for-why-it-took-so-long
My impression was that wave failed because it was slow and miserable to use. Maybe it would have failed later on for your reason as well, but this was the reason it failed for me.
The great and mighty Google didn’t actually have the ability to make a fairly complex UI for the web that could scale to 100 items. As of today, the craft of UI programming has been lost to all but a few Qt programmers. Google are now gradually rebuilding the art, with Flutter, and I think they may succeed, and this will have a shocking quantity of downstream consequences.
The only thing I remember about Wave was that it was a collaboration tool, but it was in private beta, and when I got in, I couldn’t invite others to the private beta to collaborate with them. So I poked around a bit and then never came back to it. I suspect many others had the same issue.
Sometimes projects are killed not for deep reasons but just from simple, basic execution failures.
What does Flutter do that various JS/CS frameworks don’t? Does it give design advantages on web, or is the benefit that it brings web design to non-web applications?
It makes non-web applications possible. It has a better layout system, rendering system. Animates everything properly. Centers Dart, which seems to be a pretty good language: It can be compiled ahead of time for faster boots (although I’m not completely sure that typescript wont be basically just as compilable once wasm-gc is up), has better type reflection, will have better codegen (already supports annotations), has a reasonable import system, better data structures, and potentially higher performance due to the type system not being an afterthought (although typescript is still very good relative to dart).
The Xanadu story is indeed a classic full of interesting lessons. Specifically “ship early” is now a platitude in web software development.
But I also have some sympathy for the developers who still dream of finishing Xanadu: From a purely academic perspective, it would be interesting what such a system would look like and whether it could work in any way. It appears to have anticipated some form of DRM (digital rights management) which is now routinely used for things like Netflix.
Xanadu reminds me of “Google Wave“ from 2009: A quite ambitious (though much less ambitious than Xanadu) project which tried to replace email with something much more dynamic and flexible. Wave didn’t succeed, but I think not because Wave was too rigid and overengineered compared to email (it arguably wasn’t), but because email was already firmly established. Any alternative didn’t have the network effect on their side.
This leads me to think: Are there are any exceptions to the Xanadu lessons?
One case is perhaps the computer game “Star Citizen”. It’s an completely overambitious crowdfunding project which is in development for more than a decade. Apparently it is still nowhere near finished, and many think it will never be. But unlike Xanadu, Star Citizen did definitely “evolve” pretty much from the start with its users, who got access to the unfinished game very early on. But dynamically evolving development with the userbase seems not sufficient for a project not to get hung up in unrealistic platonic ideals.
Another case is, perhaps, the invention of the computer. I don’t mean the actual invention(s) during the second world war, but Charles Babbage’s Analytical Engine a hundred years earlier. He mostly just produced elaborate plans, since he didn’t have the financial means of implementing them. So his visionary ambitions didn’t get anywhere. He was mostly forgotten, and computers were set back for a century. But it seems plausible today that his project could well have succeeded at the time if he had access to a substantial engineering and research team. Some projects can apparently only succeed with a ton of antecedent effort, because they simply have (unlike Xanadu with the WWW) no small analogue.
But I generally agree: for most projects the Xanadu lessons seem applicable.
I don’t think so. Several computing machines were prototyped in the early 20th century, and none of them really took off until they were made fully electronic (ENIAC). Any system with moving parts is just too slow to be of practical interest.
Back then there was already significant demand for “human computers”: https://en.wikipedia.org/wiki/Computer_(occupation)#Origins_in_sciences I think it is plausible than one of Babbage’s steam powered machines could have been faster than quite a few people.
Well, as far as I can tell, even the electromechanical computers of the 1930s were not significantly faster than humans using mechanical calculators. That’s why I don’t think it would have worked in Babbage’s day. More details in the middle of this essay https://rootsofprogress.org/epistemic-standards-for-why-it-took-so-long
Thanks!
My impression was that wave failed because it was slow and miserable to use. Maybe it would have failed later on for your reason as well, but this was the reason it failed for me.
The great and mighty Google didn’t actually have the ability to make a fairly complex UI for the web that could scale to 100 items. As of today, the craft of UI programming has been lost to all but a few Qt programmers. Google are now gradually rebuilding the art, with Flutter, and I think they may succeed, and this will have a shocking quantity of downstream consequences.
The only thing I remember about Wave was that it was a collaboration tool, but it was in private beta, and when I got in, I couldn’t invite others to the private beta to collaborate with them. So I poked around a bit and then never came back to it. I suspect many others had the same issue.
Sometimes projects are killed not for deep reasons but just from simple, basic execution failures.
What does Flutter do that various JS/CS frameworks don’t? Does it give design advantages on web, or is the benefit that it brings web design to non-web applications?
It makes non-web applications possible. It has a better layout system, rendering system. Animates everything properly. Centers Dart, which seems to be a pretty good language: It can be compiled ahead of time for faster boots (although I’m not completely sure that typescript wont be basically just as compilable once wasm-gc is up), has better type reflection, will have better codegen (already supports annotations), has a reasonable import system, better data structures, and potentially higher performance due to the type system not being an afterthought (although typescript is still very good relative to dart).