Hacker News new | past | comments | ask | show | jobs | submit login
Show HN: Windows 95 in an Electron App (github.com)
213 points by felixrieseberg 8 months ago | hide | past | web | favorite | 110 comments

Glad to see an Electron application that finally has a decent, native-looking, unsurprising UI :-).

(Edit: sadly, I'm only half-joking. I was thinking about how fun it would be to extend this so as to bridge the host and the guest via e.g. a socket, so that I could get notifications about UI events inside the machine on the host, which would give me Visual Basic 6's UI builder and all the greatness of a 21st century machine, so that I could finally whip up an UI without yelling profanities at the CSS reference and in less than umpteen hours of tinkering with stuff that clearly just wasn't built for this. Thing is, halfway through, I really began thinking this might make sense a little and that depresses me. /done editing)

That being said, if anyone's curious what else can be achieved in this manner, there's a bunch of nice demos here: https://github.com/copy/v86 .

> give me Visual Basic 6's UI builder and all the greatness of a 21st century machine, so that I could finally whip up an UI without yelling profanities at the CSS reference [...] that clearly just wasn't built for this

Can I interest you in a VB6-y design/code/deploy tool with no CSS or JS? It's all in Python, even in-browser: https://anvil.works

Also the Lazarus Pascal IDE is still around and is keeping the old-school VB flame alive. Just looking at the screenshots will make you nostalgic.


iBasic is, however, on permanent hiatus: http://basic.mindteq.com/index.php?i=88

After watching the demo and reminiscing of my beginnings in programming experimentation, I feel like this paradigm will become the de-facto way to produce an app in the future. At least basic CRUD apps which are still tons of standard boilerplate today. I could see this mapping to React(+Native) and generating mobile apps, etc. The future is bright! Great work on this!

Wow, I nearly forgot about it.

Revisiting today, I see you've made a lot of progress. Keep up the good work!

Btw, Anvil uplink works with a non-public IP right?

Yep :) When you load the uplink library, it makes an HTTPS connection to Anvil from your code, so it can be anywhere as long as it can make outbound requests.

Did you try doing full p2p? Just curious..

It's been on my to-try list for a long time.

I think this is as good an evening as any :-).

Well, the web still isn't up to the UI ease of programming of the operating system it was started on (NeXTSTEP). With all the standards and work, you would think a VB6 or Interface Builder could actually be built for the web.

I know what you mean, and I've often wondered why this hasn't happened yet. I honestly think that a big reason why this has not yet happened is that most of the young folks who are equipped with the kind of free time and expertise to do it have no idea how easy Visual Basic was. And not just VB6 -- NeXTStep/OpenSTEP, Delphi... They were never exposed to the successes -- and many, many failures -- of the RAD environments of the 1990s.

(I've been toggling bits and writing C for a living for a long time now, I certainly suck at anything web-related).

You look at enthusiastic web developers telling you that Electron is easy if you couple it with React (I think?) or Photon, and I mean, they're sort of right if you're comparing it to GTK (or ohgodohgodohgod MFC). But if you've touched Visual Basic, NeXTStep (or Cocoa, or GNUStep), or even Qt for that matter, it seems anything but easy.

It's illuminating to show someone who's reasonably apt with computers but never wrote much code (save, maybe, for some Excel formulas) how to write the "canonical" currency converter app from the NeXTStep docs. You need to explain pretty much four concepts to get them to grok how things work in Visual Basic: what a form is, what an event is, what an event handler is, and how you get and set data from and to UI elements. You can whip it up together in 30 minutes, tops, and they can do a variation on that topic all by themselves the next day. You need half that time just to explain what CSS is and how to center most things with it, and then you get into the whole renderer process vs. main process thing. Eww.

I suppose the other big reason is that things like branding and recognition are touted as Really Important (TM), so no one really wants to design a tool that helps you build an interface that looks like any other interface (somewhat ironic, considering how uniform and compliant web design is in 2018).

I often lament that the kind of empowerment things like Visual Basic --and before it QBasic, BASICA, and the 8-bit micro BASICs-- brought us pretty much no longer exists in modern computing. Allowing people to easily build their own tools to solve their own problems is a big part of what personal computing is all about as far as I'm concerned, and there's just no effort put into it today.

Even on something like Linux, which you'd think would have a community favorable of the concept, you instead have a bunch of elitists declaring that only professional C greybeards should even be allowed to change the background color.

> I often lament that the kind of empowerment things like Visual Basic --and before it QBasic, BASICA, and the 8-bit micro BASICs-- brought us pretty much no longer exists in modern computing.

But, it does: tools that are superior to these in almost every imaginable dimension (including the ease by which a novice can ramp up if they devote energy to it) are bundled with most desktop/laptop OSs, and, a couple clicks away in the app stores of at least one of the two major mobile platforms.

There is a complete lack of interest in most of the userbase, though.

Bullshit. There is nothing like what VB6 was being shipped with anything today.

PowerShell or Python are about as close as you get to BASIC in terms of things that are shipped with the OS, but they're an order of magnitude or more as complicated and do basically nothing as far as creating GUIs, which really aught to be much much more straightforward in 2018 than it is.

I feel that lament, but I wonder what problems people have now, that aren't more easily solved with an existing desktop program or an app?

(implying that all easily solved problems have been solved many times over, which makes now different from the 1990s. And modern solutions are more complex to reflect more complex computing reality).

Why do people still pipe commandline tools together to do things? Hasn't someone written a program to solve their problem?

There are an infinite number of problems, and being able to construct your own tools to solve them is still enormously useful. It's one of the reasons Excel is still so popular.

> modern solutions are more complex to reflect more complex computing reality

This is a convenient lie developers tell themselves to justify their complexity fetish instead of thinking about how to simplify things.

This is a convenient lie developers tell themselves to justify their complexity fetish instead of thinking about how to simplify things.

VB dates back to 1991, with its last release in 1998. Before popular email, before people wanted high-res photo processing and music file tagging, before people wanted to write their own 3d games, before ordinary people wanted cross-platform tools, when everything was ASCII and that was fine, before people had cloud backups or wanted to cross-post their Wordpress blogs to Twitter, before they wanted to integrate with Philips Hue bulbs or have their code run on an rPI, or integrate with an XML web service or a REST API or download 10GB of mapping data and look for patterns in it.

If you're going to argue that the computing landscape is no different to 20 years ago in complexity, and the tasks people want to do are no different, it's going to be a tough argument.

But if you do argue that, then you have no problem because VB still exists and you can buy it on eBay. If you think nothing's changed, that should be as good a solution as it ever was, right?

Why do people still pipe commandline tools together to do things? Hasn't someone written a program to solve their problem?

Do ordinary people do that?

Processing 10GB of data is not fundamentally different from processing 1k of data. Copying data, whether to disk or the internet, again is not fundamentally different. Keeping data consistent was the same problem in 1980 as it is today. All that has changed is the scale.

> Do ordinary people do that?

Yet another excuse, imagining that the user is some drooling moron who never uses tools correctly and things must be as crap as they are because we have to cater to them. Linux desktop has been targeting this user for over a decade, where has it gotten them?

Processing 10GB of data is fundamentally different, in the sense that the data you want to process is going to be more complex - many 1kb files, or a pile of structured map data or weather data or something that you aren't going to want to write your own parser for - there are surely more common data formats now than there were decades ago.

Copying data to/from the internet isn't "fundamentally" different, it's normally different. Python requests module, Beautiful Soup, a good XML and JSON library will get you a lot further than plain VB code when working with internet things. It's not only scale which has changed, there's more kinds of things to do, and more existing popular large systems to tie into, and the desire to make use of more existing libraries to build on.

Yet another excuse, imagining that the user is some drooling {disinterested person} who never uses tools correctly

That pretty much is my experience of non-geeks using computers.

things must be as crap as they are because we have to cater to them. Linux desktop has been targeting this user for over a decade, where has it gotten them?

As I said, you claim VB is some pinnacle of computing which we've lost, but it's still there. You also claim that nothing has changed and nothing needs to be different, so I'm still at a loss how you can then say that there's nothing today like VB was for normal people. If VB exists and you think nothing is different .. what's wrong?

What about an interface builder for Windows Forms in PowerShell, in JavaScript on the web?


Have you ever used flex box?

Win 98 next!

A whole OS and it's still on the relatively small side for an Electron app...


"The Birth & Death of JavaScript" keeps getting more and more real

Link for the uninitiated: https://www.destroyallsoftware.com/talks/the-birth-and-death...

Reference in above comment is to the future “metal architecture” Gary starts detailing about halfway through.

Gary Bernhardt’s presentations are always masterfully done. This one is particularly funny.

You just beat me to linking that talk for like the fifth time.

37 MB for the deb package... Wow. That's incredibly small compared to some other Electron apps.

Well, yeah. It's just a complete operating system with an all new GUI that completely revolutionized the world of computing. It's not like it can send emoji to your co-workers.

When you contextualize it like that it makes sense - emacs is something like 38MB.

The default distribution of Emacs 26.1 x64 for Windows is 677 MB.

Emacs 26.1 for Mac, built from code via `brew install emacs-mac` is 136 MB.

Compare the size to Mac System 7…

completely revolutionized

Not quite :)

The rest of the comment is spot on.

If not "completely revolutionized," then "had a really, really, really, big impact"?

By sheer volume only. When you have 90% of the market, everything you do has a really big impact.

Yep and every concept you introduce is a revolution for the general population. That's the idea.

What do you mean, that’s like 27 disks!

Art poster of contemporary software distributions as floppy-disk sets:


Was Windows 95 really still distributed on floppy disks?

Oh my yes.

I signed up for a Microsoft Developer Network subscription, only $2000 per year, and they sent me just about every product they made, on CD-ROM.

The Windows 95 CD ROM had a script that would write out the set of floppy disks. It was a long and tedious process, but to keep you entertained, you could watch the Weezer music video that sprawled across the unused hundreds of megabytes of the rest of the CD. If you had a workstation powerful enough to handle video.

(I used those floppy disks to load up Windows 95 in a virtual machine on a Mac. Connectix Virtual PC, soon afterwards aquired by Microsoft. I started the boot process once it was installed, then I had to go to a meeting. Came back about 30 minutes later, just in time to see the boot process complete and display the Windows 95 desktop.)

Yes, I installed it that way.

CD-Roms were not on all computers until after the game Myst came out.

This is how I got Win95. In fact, if memory serves, even Win98 was available on floppy, and possibly WinME Upgrade as well. I'm pretty sure when we were forced from 9x FAT16 to NTFS + FAT32 was when they demanded CD-ROM drives.

Yup, I still distinctly remember installing it on my Toshiba Portege that way, because I don't know that external CD drives were even available yet. If they were, I couldn't afford one.

Yes, English version was on 15 (or 13 specially formatted) 3½ discettes. Localized into my language was on 28 3½ discettes.

* me, crying *

Please, no, you can't just Electron everything

* hacker news points at Windows 95 *


Does anyone have a BonziBuddy download link?

"Should this have been a native app?" - "Absolutely" lol. love it. Brings back all the nostalgia.

This is based on the javascript x86 emulator https://github.com/copy/v86/ , which has demos online running many older operations systems like Windows 1.01

Awesome. Immediately tried to jump into DOS by running 'command' and managed to break it.

Let me know when you get DOS running. Then we can work getting MechCommander working w/ SoundBlaster-compatible music.

I think this already works in DOSBox .74 with MechCommander Gold.


There should be some practical purpose for this, like some Win-95 only app I loved from my childhood that I can now experience again. But I struggle to think of any.

If Microsoft does one thing right, it's backward compatibility. After all, Windows is the operating system running old nuclear codes, hospital monitors, army navigation systems, etc unchanged from the 90's. So your retro games will play just fine on the latest version.

VirtualBox or QEMU will run Windows 95 more "natively" if you need serious Windows 95 emulation.

> Microsoft does one thing right, it's backward compatibility

Except for games. Between XP and 7 many games broke, and the same thing happened again between 7 and 10. There are numerous examples out there.

In fairness, they painted themselves into a corner with intracate APIs designed to skip the normal hardware abstraction layers. It probably takes a ton of effort just to keep old DirectX APIs working through architectural changes.

Also, supporting 16 bit software in long mode requires emulation, and they chose not to.

I dunno about broke, if they had backported the DirectX stuff to XP there would not have been a breakage. But MS tried to use DX10 as an upsell of Vista, thus making DX9 the last directX version on XP.

What we ended up with was a whole host of game engines that stuck with DX9 to try to reach the largest possible market.

True, but compared to game console backward-compatibility or that you often have to recompile things to get them to work between linux distros made the same year, Windows is pretty damn good about backwards compatibility.

They completely changed the driver architecture, it was bound to cause some incompatibilities.

I really with the FOSS world would take backwards compatiblity more seriously, but all i hear is "we lack resources" when it is more correct to say those rainbow haired devs think C and such stale and boring.

What FOSS projects have you improved the backwards compatibility of?

This isn't a discussion of C verses another language. The issue with backward compatibility on Linux (for example) is mostly the versions of glibc, libstdc++, ALSA, X11, OpenGL, etc. which are all C APIs. Backwards compatibility isn't much of a problem with open-source software, because you can solve ABI issues by simply compiling yourself, and API issues by deriving the source code yourself (or using someone else's patch.)

> you can solve ABI issues by simply compiling yourself

As much as I would love it to be, not all Linux software is open-source (or even source-available). Especially in the (disgusting) world of enterprise software, ABI compatibility is crucial because the word "update" basically isn't in their vocabularies. Recompiling isn't backwards compatibility. It's essentially an update. Backwards compatibility implies it Just Works™.

We're talking about open-source software. And in most cases, open-source software is delivered and installed by source, and there's no such thing as an ABI issue in this case. Only API issues remain.

The best game in the Star Wars franchise, "Yoda Stories."

Might not be '95-only, but still worth it for the authentic experience.

For me it's this game: https://en.m.wikipedia.org/wiki/Mordor:_The_Depths_of_Dejeno...

It is only playable on Windows 95 (and probably 98 and ME) and I have a Windows 95 virtualbox just for playing this game! I can't wait to test it!!

As for the game itself? It's an old style dungeon crawler. Very primitive but after you play it a little you just get stuck and want to keep improving your character!

I also have a virtualbox Win95 that I only use for Mordor! It had a great mindless grind sort of appeal.. and the music still gets itself stuck in my head.

Have you played Divinity: Original Sin? I think you’d enjoy it a lot if Dejenol is up your alley.

Not yet but I know the game. I'll definitely try it thanks!


I'd love to try out some old 16-bit and/or MS-DOS games on it. But I don't see a way to copy files into its sandbox. Anyone had any luck doing this?

Yeah you can add drive to the array at the top of https://github.com/felixrieseberg/windows95/blob/master/src/... So build an ISO using imgburn or something and then mount it?

Source: https://twitter.com/felixrieseberg/status/103265669554824806...

I think you would be better off getting Windows 3.x going in Dosbox.

Diablo 2, Anno 1607

Diablo 2 runs just fine under Wine.

They also have Mac version so you're covered.

The late 90s and early 2000s had a slew of fantastic PC games that I would love to be able to play again

I might try to play LEGO Loco on this. I know I've been unable to on Win 10

MS Paint

Old versions of Excel?

Odell Down Under?


Now we can bring back html based applications using html and vbscript and jscript.


Has Win95's copyright expired?

No, it hasn't. Copyright expires a couple of decades after the death of the/all author/s.

It's more than just "a couple of decades", it's 70 years.

So can I assume that any self-respecting company producing IP has an army of toddlers 'working' on its products? ;-)

Or that the company itself is legally the author.

Now I can test my websites on this old IE again!

In other words, now you can make decent websites instead of garbage! You're right, that makes this whole thing worth it!

I’d love a version of this running classic macOS versions (7,8 and 9)

Agreed. At least we have this as a start: https://blog.archive.org/2017/04/16/early-macintosh-emulatio...

You could run System 7 via Executor under Windows 95.

I wasn’t aware of Executor, fascinating. Thanks.

I love traditional simplistic UIs like Win95 for their retro feel, and miss the days when you could skin apps. That ship probably sailed by now, but at least we get projects like this every once in a while.

But isn't Windows 95 not allowed to be used unless you purchase a license?

> But isn't Windows 95 not allowed to be used unless you purchase a license?

Technically yes.

Legally Microsoft has the absolute right to stop people hosting Windows 95's files for download/re-distribution. I'm guessing they choose not to since it is not-for-profit, and the cost of going after violators will be more than they make from sales.

Fun fact, the CD keys used to be in the format of 123-1234567

The first three digits didn't matter, the second portion needed to be evenly divisible by 7. In highschool I worked the summer setting up computers and we would just make them up. After a couple summers and some technology upgrades I doubt there was a legitimate CD key in that school.

Chances are they didn’t get a license from Microsoft to distribute Windows 95 either.

I was surprised. Completely on a different topic though.

I noticed that emoticons were used in git commit message titles as a prefix. I did not know that github rendered those. And using CLI it is still readable:

  :wrench: One more Forge fix
EDIT: formatting

It's all about that SOL.EXE

That was running slow for me, so I defragged the drive.

What is a rationale for an Electron app when there has long been an online version of Windows 95? https://win95.ajf.me

Can't you say this about 90% of electron apps?

I just restarted it via Start Menu and it won't start anymore. Bug?

The layers of VMs and interpreters involved in this gives me vertigo...

This has made my day.

Sucks that "Internet Explorer" can't browse websites. I just want to open aol, geocities, altavista may be?

This brought back so much of nostalgia ...

Thanks, man! Thanks a lot!!

This is simply delicious.

Is this vaporwave?

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact