shalabh
11/18/2019, 6:15 PMThis system --including everything -- "OS", SDK, Media, GUI, Tools, and the content -- is about 10,000 lines of Smalltalk-78 code sitting on top of about 6K bytes of machine code (the latter was emulated to get the whole system going).The software mentioned has a windowing system, multiple desktops, IDE/code editing and running, paint, animation, document editing/viewing, gesture recognition). 16K lines on top of hardware.. how is this possible? (What am I missing?) Source: https://news.ycombinator.com/item?id=19722205 Link to demo:
Nuno Leiria
11/18/2019, 8:42 PMguitarvydas
11/18/2019, 10:08 PMStefan
11/19/2019, 7:21 AMIan Rumac
11/19/2019, 9:26 AMKonrad Hinsen
11/19/2019, 12:18 PMDoug Moen
11/19/2019, 4:03 PMStefan
11/19/2019, 5:15 PMshalabh
11/19/2019, 5:56 PMWhen you build all the systems across all levels of the stack you can ensure each of them do their jobs well and there are no inefficiencies.
a ton of complexity and legacy... it’s all below the surface of your applicationMore essential complexity
the complexity of the real world vs. a demo
Unicode support (character set, fonts, text rendering). Hi res 24bit RGB display, compositing window manager, ability to display and edit photos, play videos'inertia'
bad at cleaning up and getting rid of things. And so we keep old stuff around forever, because, hey, it still works and software is difficult to get right so let’s better not touch it and build new stuff on top of it instead.
they’ve been trying to fix those mistakes by throwing more libraries on it and just adding more and more complexity.'compatibility'
...HTTP, etc). A web browser (HTML, JS, CSS).Perhaps it's also the interaction between all of these dimensions that produces a combinatorial explosion in complexity and 'software material' all around. Specifically wrt 'compatibility', I think we want to look at the end goals rather than the specific implementations. E.g. what services does the web browser/HTTP system provide? Some kind of a UI kit for distributed information/computation systems. Is a browser an efficient model for this goal? What other system could provide the same service? The 'vertical integration' aspect is particularly appealing to me. It seems so much effort is spent just building bridges between layers that have different models. There definitely is much more essential complexity than exists in the ST system. I believe STEPS implemented the compositing engine, basic TCP/IP networking and font rendering. TCP/IP specifically was ~200 LOC (http://www.moserware.com/2008/04/towards-moores-law-software-part-3-of-3.html).
Stefan
11/19/2019, 7:46 PMmodern software is typically designed by accretion, much like a pyramid. That is, we design by adding around the edges rather than being willing to do a radical top to bottom design like the Empire State Building which was built in about a year with great engineering precision. We keep adding to systems rather than look back at their core assumptions to see if they’re still meeting our needs.I don’t think the “dimensions” you extracted are creating “a combinatorial explosion of complexity”, and rather see them as an incentive structure pushing us to “add around the edges” instead of redesign radically: 1. Most projects or organizations are not vertically integrated and don’t control the whole stack, and if you’re dependent on things you don’t control you can’t touch them. 2. The world hasn’t changed much, but we decided we want to model it more closely and with higher fidelity. That’s a design decision (and a good one) that certainly causes more complexity, but not all of that complexity is essential and choosing to leave existing solutions behind also works higher up the ladder of abstraction — do we really need all those different image compression algorithms or should we just keep one of them? Which leads nicely into… 3. Compatibility — of course we want to still access all the JPEGs and GIFs scattered all over the web, even though we have so much better compression algorithms now. Huge incentive towards keeping the old stuff around. We could attempt to convert everything but that’s obviously more difficult than to just keep a few extra LOCs around to still be able to read JPEGs. All that provides pretty strong incentives to not break what already works, avoid the heat of people complaining that legacy will be removed, and so we just keep adding. It's the totally reasonable thing to do. And it’s a viscious cycle as we keep adding more and more things people and other things start to rely on and don’t want to go away.
Doug Moen
11/19/2019, 8:12 PMDoug Moen
11/19/2019, 8:26 PMGarth Goldwater
11/19/2019, 10:56 PMwtaysom
11/20/2019, 1:49 AMKonrad Hinsen
11/20/2019, 7:35 PMKonrad Hinsen
11/20/2019, 7:39 PMStefan
11/20/2019, 9:08 PMshalabh
11/20/2019, 9:37 PMshalabh
11/20/2019, 10:05 PMcomposition really is at the heart of most of our frustrations with computer
Konrad Hinsen
11/22/2019, 7:18 PM