Ask HN: What would you do differently?

11 points by chris_l ↗ HN
If you started all over again, what would you do differently? If we started all over again with software, that is. Imagine a scenario in which all software implementations and specifications are lost while the hardware remains intact, sort of like after a software neutron bomb. Every last Linux CD, ANSI C manual and copy of the R5RS spec is forever gone. Now starting all over from scratch we would surely avoid the worst mistakes, incompatibilities and artificial limits (think 640k). The most obvious thing to redo is a clean design, learning from our collective memory of the past attempts, making use of the best ideas in the history of computing so far.

But once we are going down the path of cutting away dead branches in the tree of possibilities and straightening out the data paths, where do we stop? Do we still want to have file systems? And should they be exposed to the average user? And what about files themselves, are they a useful paradigm? What about all the other internals that are routinely exposed to end users. I think they might be caused by the cultural geek roots of the PC business.

How about the following goal: computing that is completely transparent of location and device, with no application boundaries. No more copying files, configuring the IP, downloading the browser, etc. Would such a reset of the software world end up getting us ahead faster in the long run. I have the suspicion that might be the case. What do you think?

17 comments

[ 5.1 ms ] story [ 55.6 ms ] thread
Wtf? How did this masturbatory piece get modded up?
Sorry if my tone or style disgusts you, I'm no pg. I'll try and say it more succinctly: I think it's possible to innovate quite a bit, simply by ignoring the status quo to a yet unknown extent. In a worse-is-better way to serve simplicity and clean interface before compatibility.
Don't apologize for your curiosities. This is the first of many times people will knock you down. Brush the dirt off and keep going if you don't see a lesson in what people tell you.
The most recent starting from scratch that I can remember was Palm. No real file system, no legacy anything, databases for everything. Rather quick for its hardware but wasn't groundbreaking.
As long as there are people with different opinions, there will be different answers to your questions. We will split up to different "religions" again, since we cannot agree even on whether command lines are a good thing, or on what amount of freedom is a good tradeoff versus security. There simply are too many variables: Power users want freedom, corporations want security, productivity, and low cost (and not even all the coprporations want that)...

Too many players, too many egos.

Right now the Mac zealot's ego prevents him from seeing anything good in a PC, and vice versa. If we started all over, people will, within a short amount of time, identify with a particular solution, and then we will have religions all over again.

I'm not saying it's hopeless, but what I am saying is that the problem's root is people, human behavior; not necessarily technology. The technological mistakes (which itself is subjective), were kept alive mainly by egos, easily justified with the cost of undoing the mistake. And don't forget every mistake is a steppingstone for a later success. IBM's OS2 was a financial mistake, but which O/S has not borrowed from it?

So I gues we might have the same kinds of problems if we start over again, with the names of the companies and people involved shuffled around.

Maybe it's just better to keep going and try to do our best.

Yeah, that's pretty true (and sad). My main idea is that things we could do better, even if still in several different ways across cultures/companies, would have already emerged, but for the momentum of the legacy interfaces (in the widest sense).
If I could go back in time, I would make a much more serious effort to encourage people I did business with that software patents are a bad idea and that they should always insist on software for which they have sufficient source code to always allow them to legally maintain their systems without involving the original vendor.

To me that means it has to either be open source from the start or have a license that would guarantee an eventual open source release (i.e. along the lines of aladdin ghostscript).

If I could go back in time, there's one major thing I would do differently. I would:

START WITH THE ANSWER, THEN WORK BACK.

I wasted way too much time "coding forward" from where I was at to where I wanted to be. I should have just mocked up the final product first, worked my way back to the building blocks, filled in the rest, and fixed what wasn't right. Would have saved years.

Thanks, that sounds useful, I'll keep it in mind.
I think thats the philosophy 37 Signals' "Getting real" gets to. Start with what it should look like, and work backwards...

Good advice though. Thanks

I think all the things you've objected to are 'local minimums' of some cost function.

We have Windows because it was popular, then snowballed. We have C because it was the best systems language for the 'best' computers of its day, the PDP's.

It seems that between people clustering to a local minimum, and momentum, we often get 'stuck' on less than perfect technologies.

I'm sure if we started all over again, we would encounter similar problems.

I don't think we would encounter Windows Vista again, to take an example. It seems to require the path from DOS and the company culture that grew along with it.
If I had to do it all over again... I wouldn't have taken my CIS classes so early in the morning. My brain cannot comprehend a linked list before 10am.
"The big re-write" is a classic anti-pattern. There's hard-earned wisdom hidden in that cruft.
I'm not after an implementation (i.e. code) rewrite so much as more of an interface redesign. I think that happens anyway, but at a slower pace than such a radical cut would allow.
I'd keep files but use tags instead of folders. I like powershell's object based cli, make sure nothing like the windows registry ever existed, the OS would only run byte code, memory would be transactional and grey would not be the default window background color.
Just had to jump on this: 640k was no more an "artificial" limit than 4G is. The 8086, like all CPUs, had only a finite amount of die space. They chose to implement a 20 bit wide bus, because that fit the problem space of a contemporary minicomputer (the biggets PDP/11 had 4MB). But they didn't have space for paging or mapping hardware, so the operating system needed to reserve some space for hardware (video framebuffers, etc...) to use. So thus was born the 640k/384k memory mapping of PC-DOS. It made perfect sense given the limitations of the hardware.

Now, IBM could have chosen a different part like the 68000, which was a bigger and more expensive chip that had an internal 32 bit architecture. But they didn't, for some pretty justifiable reasons (like the need to compete with computers like the Apple II which were under $2k).