Live data from Hacker News

How would you rebuild software from the ground up?

news.ycombinator.com

1–10 of 15 posts

How would you rebuild software from the ground up?

#1
I often see people saying things like: "If you want a secure OS, you'd need to be thinking about security from the beginning." "The HTML/CSS/JS stack is a mess, we need to rebuild it from the ground up."

And Alan Kay certainly seems to want to start everything over.

Are there visions for an entirely reimagined OS, web, programming, etc, that are interesting to you?

If you had infinite time and manpower, how would you do it?

What's intractable today that could be easy, if software were fundamentally redesigned?

However unlikely, do you think there's a plausible path to success for any floor-to-ceiling change like this?

Re: How would you rebuild software from the ground up?

#2
Have you seen Squeak? http://squeak.org/ You can inspect and modify any code running the system. Wondering what the compiler is really doing? It's right there for you to play with.

Most web devs don't know how a browser works and it makes the web painful and janky. Nobody knows what's going on under the hood, so nobody really knows what their code does, either.

Re: How would you rebuild software from the ground up?

#3
> How would you rebuild software from the ground up?

> [ ... ]

> However unlikely, do you think there's a plausible path to success for any floor-to-ceiling change like this?

I wouldn't and no, I don't think there is. Rewrites from scratch most of the time fail miserably, a prominent example being Netscape, who arguably bankrupted the whole company by wanting to start from scratch.

The only reasonable path in my opinion in most cases is the incremental one. This can mean to occasionally extract and rewrite modules but never the whole application or - perish the thought - an entire end-user-facing OS.

Want a secure OS? Linux, particularly with SELinux is reasonably secure. macOS is, too (for most purposes). Both are increments of UNIX. If you want even more security virtualisation could be a useful approach.

HTML / CSS / JS is a mess? Only to people who expect complex, distributed web apps in the year 2017 to behave like single-user, non-networked Win95 applications. There have been massive incremental improvements on the web platform in recent years.

Re: How would you rebuild software from the ground up?

#6
Models, Rules, and Schemes all the way down.

Rules are applied to a Model to make more rules, rules are again transformed by rules in stages to compile to targets. Declarative schemes arbitrate between rules, select execution modes such as forward or backwards chaining, hybrid execution, memorization, etc.

Much like the vision in

https://www.amazon.com/Software-Factories-Assembling-Applica...

but more aimed at "getting non-professional programmers to be able to do more easily" and less aimed at "helping a team create software product lines".

Roughly this is the direction that OMG is going in.

Re: How would you rebuild software from the ground up?

#7
I know this is going to sound more trite than I want, but I can think of no better way to say it.

I'd start by hiring the best of the best. I'd start with paying for quality research. I'd start by giving incentive.

Why? First, while I have opinions, they are unqualified. Second, I am biased because I've seen this work but in smaller portions.

I know, that's pretty generic but it's really where I'd start. I'd like to see security and privacy more easily prioritized. I'd like to see more open standards. And, to be fair, those are pretty generic. I'm pretty sure you don't want a novella with barely literate opinions.

Re: How would you rebuild software from the ground up?

#8
I think the current state of the creating software can certainly be complex but it is so mostly out of necessity and not necessarily bad design. It can also be very simple for simple things and that shouldn't be overlooked or dismissed when we look at the state of the art.

I also think that to conclude "The HTML/CSS/JS stack is a mess" one is really complaining that they want to do something it's not designed to do or doesn't have some specific functionalities they want or need, which is not at all the same as being a "mess".

"Are there visions for an entirely reimagined OS, web, programming, etc, that are interesting to you?"

Well, for me, yes. But we have to look at it with a long term perspective to see it. My first web app (an invoicing app) was made with perl using CGI.pm and HTML. Later I added CSS, then a bit of Javascript to manipulate the UI with Prototype.js and it's fair to say that for me, Prototype.js allowed me to reimagine how to build the app. It allowed me to take multiple forms and "hide/show" them instead of sending user data to the server, saving it, and sending another form for them to continue on with the process of making an invoice. That process was reimagined again when I saw how AJAX worked. And again when I first learned about "Document Databases".

I didn't like the way SQL stored data for creating invoices so I never used it on my app. I used CGI.pm's "Save" feature to store data in a "name=value" format. When "NoSQL" databases, or "Document Databases", came out that were designed specifically for web apps I was pretty amazed because I thought I was the only one who thought SQL was a really crappy way to store document data and the few times I'd mentioned that on the perl mailing lists I got torched by most who responded.

Currently, I think it's probably fair to say that React.js "reimagines" how we approach building web apps.

Finally, when it comes down to the bit level processing going on in an OS I don't have a frigging clue and I know that, so no, I don't know of any better way. I am still in awe and constantly amazed and don't expect to ever not be.

Re: How would you rebuild software from the ground up?

#10
Visions which completely reimagine things from the ground up tend to presume a much more spatial experience. Lots of VR, lots of AR. I'd tend to agree, except I think that we're going to see things like brain implants a lot sooner than we think. Certainly before our entire stack can be rebuilt from the ground up. So in a way, I almost view it as futile.

That said, I do have some vague notions on some features a ground-up rebuild should have. Namely:

1. Provably secure systems. I'm talking ironclad. Doing for security at all layers of the stack what Rust did for memory safety, and then some. I want to live in a future where physical access becomes a thing again, so we have more cyperpunk intrigue.

2. Simplicity. Composing software should be like gluing LEGOs together. We have some slick stuff now, but it's not there yet.

3. Visual augments to code. Pure visual programming exists, and it kind of sucks. Whether that's just because we're doing it wrong, I'm not sure.

Rust for example would be a hell of a lot easier to learn if I didn't have to maintain a mental model of what everything is doing at all times, and reconciling that against its vast syntax—half of which is inferred by the compiler—which saves work, but makes the learning curve even harder in the process.

Staring at text is just so banal. I'd love to code in something that has a visual representation for every line of code I write, and see that visual representation come alive. Event architectures in particular would benefit from this.

I think if we're reinventing the entire stack from the ground up, having to not tab out and Google things every other minute would also be nice. Somehow in-context documentation hinting has become shittier over time, not better (in my opinion).

-

I've a separate vision for a completely reimagined web which I won't be sharing (doesn't everyone?), but it's worth noting that it builds atop the existing stack quite heavily. It's simply not worth it to try and rebuild the entire stack, even in that case.

I think the only thing that could possibly justify rebuilding software from the ground up is if we first rebuilt hardware from the ground up. A radically different kind of hardware that demanded a radically different kind of software.

Post reply on HN