Programmeur laat Windows 95 draaien in browser

Het is een Schotse programmeur gelukt om Windows 95 te laten draaien in de browser. De programmeur is 19 jaar en is dus geboren na de release van het besturingssysteem. Zij gebruikt Emscripten om het besturingssysteem te laten draaien.

Er zijn geen plugins nodig om Windows 95 te laten booten. Simpelweg het openen van de site in een moderne browser is genoeg om het besturingssysteem te laten booten. Dankzij Emscripten is het mogelijk om C++-code om te zetten naar Javascript en de site gebruikt dat dan ook om de interface tevoorschijn te toveren. Naast Emscripten gebruikt Andrea Faulds Dosbox en Em-Dosbox om de site te laten draaien.

Veel elementen werken, hoewel Internet Explorer 3.0 de site laat vastlopen, schrijft The Next Web. Faulds is geen onbekende programmeur. Zij is het meest bekend van haar werk aan php, waarmee ze vorig jaar stopte. Faulds is 19 jaar en studeert Duits aan de universiteit van Aberdeen in Schotland.

Windows 95 in de browser

Door Arnoud Wokke

Redacteur Tweakers

01-02-2016 • 09:12

105

Submitter: Malantur

Reacties (105)

105
103
53
2
0
2
Wijzig sortering
Zijn video's van maanden terug op Youtube: https://www.youtube.com/watch?v=-vGGlcxySDA. Het is er al een tijdje, zeg maar.

Ook voor de mensen die het werkend willen zien, nu de site down is.

[Reactie gewijzigd door YStec op 23 juli 2024 00:12]

Site is weer up.
windows is gecrashed :X :+
Anoniem: 631510 @xoniq1 februari 2016 13:49
bij mij starte hij niet eens. na al die jaren hebben ze het niet eens stabiel kunnen maken ;) :P
Tja je kan altijd nog downgraden naar 3.11 _/-\o_
ja inderdaad, dat zal beter werken :)
'haar' videos, niet 'zijn' :D
Anoniem: 114278 @Morress1 februari 2016 10:22
het zijn bedoelt de poster denkelijk O-)
nee met de verwijzing naar wordt het : Het zijn video's van maanden terug op Youtube :P
Het is inderdaad een project wat al een hele tijd bestaat, dus vreemd dat het als "nieuws" op Tweakers staat. Desalniettemin een geweldig project, ook al is niet de meest stabiele setup (wordt ook uitgelegd op de website zelf) door de manier waarop alles opgezet is.
Haar*. Andrea is een vrouw.
Andrea Faulds is een vrouw.
"zijn"? Het is een vrouw hoor! :)
edit: spuit elf.. (ik geef de gekke nesting van reacties hiervan de schuld.. ;))

[Reactie gewijzigd door CyBeRSPiN op 23 juli 2024 00:12]

Prachtige prestatie, erg gaaf gedaan.
Toekomst voor virtuele machines?

Echter... waarom dan zo'n super moeilijk te lezen website maken.... witte letters en een plaatje op de achtergrond.
Dit helpt totaal niet met virtuele machine. Het is een proof of concept en zoals op de site zelf gezegd zijn er serieuze limitaties aan de snelheid van het geheel. Plus, als je dan je VM wilt laten draaien moet je eerst een volledig ander OS laten draaien, lijkt me nogal omslachtig en erg onzuinig.
"als je dan je VM wilt laten draaien moet je eerst een volledig ander OS laten draaien"

Is dat niet een beetje de normale situatie bij een VM? Als je een 'machine' zonder host draait dan is dat al niet erg 'virtual' meer.
Normaliter gebruikt VM software "VT-x" en "VT-d". Twee processor extensies die er voor zorgen dat VM's bijna bare-metal draaien (er gaat weinig nog door de VM host software heen, behalve IO dan, welke VT-d verzorgt). Een VM draait dus niet IN het andere OS, maar het andere OS bestuurt alleen in grote lijnen de container waarin de VM draait.

Dus ja: je hebt een OS nodig om VM's te draaien, maar nee, de VM's draaien niet OP dat OS.

[Reactie gewijzigd door OverSoft op 23 juli 2024 00:12]

Maar het ene sluit het andere niet uit imho. Dat browser (of hun JS engines) nog geen VT ondersteunen maakt dit voorbeeld nog niet totaal onzinnig. Juist dit soort innovaties kan bijvoorbeeld een eerste stap zijn richting VM georienteerde engines, wat en je prestaties ten goede komt maar ook sandboxing tbv security.
Oh, maar daar zeg ik ook helemaal niks over. Dit is een stap naar "plugin-loze" virtualisatie / emulatie.

Maar dit is meer emulatie dan virtualisatie. Deze JS-engine interpreteert de x86 commando's die door het guest-OS worden gegeven, ipv dat deze commando's een-op-een doorgezet worden zonder tussenkomst van een engine. Dit is natuurlijk significant trager dan echte virtualisatie en ik zie niet gauw gebeuren dat Javascript direct toegang krijgt tot de VT extensies.
Deze JS-engine interpreteert de x86 commando's die door het guest-OS worden gegeven, ipv dat deze commando's een-op-een doorgezet worden zonder tussenkomst van een engine.
De javascript engine's van moderne browsers compileren ipv interpreteren. EMScripten (voorloper van asm.js) maakt ook javascript die erg op assembly lijkt en zo makkelijker gecompileerd kan worden. Grote kans dat veel delen dus 1 op 1 kunnen draaien, de graphics, geluid en alle overige hardware moet wel ge-emuleerd worden.
Dan is de code van de VM engine wel gecompiled, maar de container wordt wel degelijk geinterpreteerd zonder toegang tot virtualisatie extensies.

Dosbox is dan ook een emulator, geen virtualisator, al helemaal niet onder JS.
Dat klopt, maar mijn reactie was origineel op Mraedis die aangaf "Dit helpt totaal niet met virtuele machine." alsof een 'compleet OS draaien' een reden was om dit (JS emulatie/virtualisatie) niet als nuttig te zien.
Dat hangt ook een beetje af van hoe modern je pc is...

een vm kan namelijk ook zonder die extensies draaien, en dan gaat het een heel pak trager natuurlijk. Zo had je ten tijde van bv windows xp ook al vm software, maar waren de Virtual Technologie-extensies nog niet in de cpu's ingebakken.

Ik geloof dat het pas met de core generatie is geintroduceerd (niet de core-i reeks, maar de core2duo enzo); zowat rond 2006-2007, en da's trouwens net wanneer Windows Vista kwam kijken
Dat klopt, maar dat is inmiddels al 10 jaar geleden en ik geloof niet dat er nog mensen zijn die tegenwoordig VM's draaien op "extensie-loze" machines.
Niet helemaal. Met bare metal hypervisors werk je eigenlijk zonder onderliggend OS al heb je wel een OS (dat in bepaalde gevallen als VM draait) om heel het geheel te beheren. En men doet vandaag onderzoek om nog dichter op de hardware te zitten met VMs en dus bepaalde taken van de hypervisor te elimineren.
Vandaar dus "volledig" ander OS, een hypervisor is niet meteen equivalent van pakweg windows 8 te noemen in termen van nodige resources.
Toekomst voor virtuele machines?
Niet echt. In de toekomst gaan de meeste virtuele machines niet op JavaScript draaien. ;)
Dankzij Emscripten is het mogelijk om C++-code om te zetten naar Javascript en de site gebruikt dat dan ook om de interface tevoorschijn te toveren. Naast Emscripten gebruikt Andrea Faulds Dosbox en Em-Dosbox om de site laten draaien.
(Em-)Dosbox is dus een emulator die in een browsersessie draait doordat diens C++ code code is omgezet naar JavaScript. In die emulator kan je vervolgens de software draaien die je wilt (mogelijk wel met beperkingen).

Gaat de distributie van Windows 95 (deze wordt immers gedownload en lokaal gedraaid) niet in tegen de licentievoorwaarden van Micrososft?

[Reactie gewijzigd door The Zep Man op 23 juli 2024 00:12]

ik denk niet dat dit tegen de licentie ingaat; je installeert namelijk geen windows op jouw pc, evenmin heb je alle functionaliteit van het OS, bovendien is het ook al zo'n 20 jaar oud en zal het niet meer mogelijk zijn om het te draaien op nieuwe pc's (verplicht win10 met nieuwste cpu's)..

Het is dan ook nog eens een proof of concept; als microsoft alles zou moeten neerhalen waarvoor een windows 95 draait dan zullen ze lang bezig zijn, tegenwoordig draait win05 op draagbare gameconsoles, telefoons, en wat weet ik nog allemaal niet, maar in feite kan je er nooit nog echt iets mee doen; er is amper nog software te vinden welke nog werkt op win95.
Oude Windows versies zullen prima draaien op nieuwe CPU's. Ze worden enkel niet ondersteund en mogelijk werken nieuwe features niet wanneer hier OS support voor nodig is.

Net als dat Windows 9x prima op dual/multi core CPU's kan werken maar single threaded is en dus maar 1 core gebruikt. En zaken als SSE* en dergelijke worden ook niet ondersteund.
je hebt deels gelijk als het gaat over windows en cpu's tot nu toe; maar vanaf skylate zal intel wellicht de 32bits uitvoering schrappen (x86) en puur op 64bit draaien (x86-64/amd64), tenmisnte dat denk ik toch wat er gaat gebeuren; maar er wordt in iedergeval aangegeven dat vanaf die cpu's oude OS'en niet meer worden ondersteund, en dat ze mogelijk niet volledig functioneren (denk bv aan de recentste os'en zoals win vista-7-8) of helemaal niet meer werken (denk aan windows 4 en NT4-5)
Over linux wordt niet gesproken; volgens intel worden de cpu's speciaal gemaakt voor windows 10; al denk ik dus dat het gewoon weglaten is van 32bits backwards compatibility, waardoor linux ook nog gewoon werkt (64 bits uiteraard)

bovendien zijn er al een heleboel moederborden waar enkel nog uefi op draait; en support voor BIOS dus niet meer aanwezig is; op die systemen kan je ook al geen oude windows meer installeren (pre win7) omdat die gewoonweg niet booten zonder uefi bootloader. op de duurdere moederborden is vaak nog een bios-chip aanwezig en kan je kiezen voor legacy bios of uefi, maar ik vermoed dat dat bij skylake dan ook helemaal weg zal zijn. (linux boot perfect met uefi, zolang de distro ook een uefi bootloader heeft; secure boot is nog een iets ander verhaal)
Intel maakt geen 32 en 64 bits versie van de CPU, alleen maar een 64 bits CPU, waarop ook 32 bits code loopt.

Als er al iemand de 32 bit versie op de schroothoop gooit, is dat Microsoft: geen 32 bits versie van Windows meer met ondersteuning voor de komende CPUs.
Het lijkt mij veel interessanter om dit te gebruiken om oude dos spellen online speelbaar te maken.
Ik vind het eigenlijk niet heel erg indrukwekkend, want het draait op Dosbox. Het is al lang bewezen dat Dosbox werkt in de browser (kijk maar naar een dosbox archive, kun je veel spellen spelen in de browser) en win 95 werkt ook al lang op dosbox. Als je dus dosbox ergens werkend krijgen (dosbox was al werkend in de browser) dan is win95 een eitje. :)
Daar sluit ik me voorzichtig bij aan, maar de schuld voor de manier waarop het wordt gepresenteerd ligt natuurlijk bij The Next Web. Haar eigen beschrijving van het project is dan ook: "Windows 95 emulated in the browser, thanks to the wonderful work of Emscripten, DOSBox, Em-DOSBox and browser engine contributors." Bovendien is het enigszins oud nieuws, want de site is in ieder geval al sinds 3 mei 2015 live.
Misschien breng ik het wat hard, maar op de 500mhz processors en de pda's van vroeger (HP 4700, Dell axim x50v Qtek s200 etc.) was het al lang te draaien. Ik stond eerder verbaast te kijken dat het nog neit gelukt was schijnbaar! Mooie links trouwens in je reactie.
Geniaal!!!
Leuk dat dit gedaan is.

Wel verbazend, blijkbaar is ze behoorlijk weg in programmeren en dan zou je verwachten, goh die studeert of werkt ook in die sector. Nee, studeert Duits. Best verassend.
Aan de andere kant zijn er vrij veel wetenschappers die er een andere hobby (understatement) op na houden. Marie Curie heeft bijv twee Nobelprijzen gewonnen in zowel Chemie als Natuurkunde.
Chemie en Natuurkunde liggen zo dicht bij elkaar dat ze in meerdere sectoren overlappen. Als je nou had gezegd de nobelprijs voor chemie en de nobelprijs voor de economie ofzo had ik indrukwekkender gevonden. :P
Dat had ik ook, maar op zich is het studeren van een taal niet heel anders dan het bestuderen van een programmeer-taal. Om bijvoorbeeld maar semantiek te noemen, dat is bij beiden zeer aanwezig. Ik kan me voorstellen dat ze linguistics inzet bij haar contributions voor de PHP taal.
Ligt ook aan in wat voor omgeving je bent opgegroeid. Zo zijn er van die superscholen in Schotland waar je schooljaren veel uitgebreider zijn (denk aan: veel meer lesuren, waar je standaard op jonge leeftijd leert programmeren, Mandarijn leert spreken, enzovoort) dan op je reguliere basis-en middelbare school.
Hoezo? Programmeren is ook gebaseerd op taal.
Programmeren ligt volgens mij dichter bij wiskunde dan bij Duits.
Wiskunde en taal ligt dichter bij elkaar dan je denkt. Kreeg al jaren geleden NIAM tijdens mijn studie. En op de uni kreeg ik logica wat, samen met een functionele programmeertaal, helemaal hand in hand ging met wiskunde.
.oisyn Moderator Devschuur® @maniak1 februari 2016 10:40
Een programmeertaal is slechts een hulpmiddel om de computer duidelijk te maken wat je bedoelt. Daadwerkelijk programmeren heeft vrij weinig met de programmeertaal zelf te maken, maar met het opdelen van je probleem in logische deelstapjes. En derhalve heeft het ook in z'n geheel niets met een menselijke taal te maken.
Er is niets menselijk aan een taal het is niets meer dan een set afspraken om te kunnen communiceren. In het geval van mijn initiële reactie op dat het vreemd is dat zij Duits studeert is dat het niet zo vreemd is om te programmeren en een taal te studeren het ligt immers dicht bij elkaar.
.oisyn Moderator Devschuur® @maniak1 februari 2016 11:57
Je snapt mijn punt niet. Daadwerkelijk programmeren heeft niets met een taal te maken. Je gebruikt weliswaar een programmeertaal, maar dat is slechst een hulpmiddel. Je kunt een programmeertaal van buiten leren, maar dat zegt nog niet dat je ook kunt programmeren.

Je zegt ook niet dat Nederlands ook dicht bij bruggen bouwen ligt, want je gebruikt immers Nederlanders om te communiceren met je collega's. Het studeren van Duits en Informatica (software engineering) zijn echt twee *compleet* verschillende dingen. Je hebt ook in z'n geheel niets aan een talenknobbel bij programmeren, en anderzijds is de afwezigheid ervan ook niet van invloed.

[Reactie gewijzigd door .oisyn op 23 juli 2024 00:12]

Wanneer heb jij het laatst een taal met fatsoenlijke syntax (in tegenstelling tot Nederlands en Engels) geschreven?

Logica is een stukje structuur aanbrengen om dingen duidelijk te maken. Of dit in het Duits geschreven wordt of in een programeertaal, het doel is hetzelfde (ik ben duidelijk geen ster in beide ;) ).

Programmeren ligt ergens tussen taal en wiskunde, dus komt zowel een wiskundeknobbel als een talenknobbel van pas.

Overigens is een talenknobbel ook verrekte handig om goed te zijn in wiskunde.
.oisyn Moderator Devschuur® @RMvanDijk1 februari 2016 15:18
Wanneer heb jij het laatst een taal met fatsoenlijke syntax (in tegenstelling tot Nederlands en Engels) geschreven?
Mist daar een woordje "in", of bedoel je wanneer ik voor het laatst een taal zelf heb ontworpen? Indien dat laatste, een paar jaar geleden. Compilerbouw vind ik een interessant onderwerp.
Logica is een stukje structuur aanbrengen om dingen duidelijk te maken. Of dit in het Duits geschreven wordt of in een programeertaal, het doel is hetzelfde (ik ben duidelijk geen ster in beide ;) ).
Met dat laatste stukje tussen haakjes geef je eigenlijk al aan waar het fout gaat. Veel mensen, vooral niet-programmeurs, denken dat leren programmeren het leren van een progammeertaal inhoudt. Dat is absoluut niet waar. Natuurlijk, je hebt een willekeurige programmeertaal nodig om je uit te kunnen drukken, maar dat is niet waar het uiteindelijk om gaat. Iemand die C++ van binnen en buiten kent hoeft nog geen fatsoenlijke programmeur te zijn. Als hij niet in staat is een probleem om te zetten in een algoritme (= taalonafhankelijk!) zal hij nooit fatsoenlijke programma's schrijven. Anderzijds kan iemand die louter nog met C++ gewerkt heeft prima in een functie waarbij in Java geprogrammeerd wordt worden ingewerkt. De concepten zijn hetzelfde, de taal is wel aan te leren.

Jij beschrijft hier vooral de laatste stap: het duidelijk maken van de logische stapjes in een programmeertaal. Je gaat daarbij voorbij aan de veel belangrijkere stap die daaraan vooraf gaat: het omzetten van een probleem in die logische stapjes.

Een programmeertaal is een tool uit de toolbox van een programmeur, meer niet. Vergelijk het met huizen bouwen: je kunt de handleiding van je gereedschap uit je hoofd kennen, maar dat wil nog niet zeggen dat je weet hoe een huis in elkaar zit, hoe je een goede fundering en structurele basis moet leggen, wanneer je bepaalde houtverbindingen moet gebruiken, etc. Het gereedschap is precies dat: gereedschap. Hulpmiddelen om je doel te bereiken. De skills van een timmerman worden niet bepaald door hoe goed hij zijn gereedschap kent.
Programmeren ligt ergens tussen taal en wiskunde
Dat programmeren niet louter en puur wiskunde is is duidelijk, maar taal heeft er toch echt weinig mee te maken. Eigenlijk ligt alles wel tussen taal en wiskunde in, daar taal een alpha vak is en wiskunde zo beta als het maar zijn kan. Ze staan zo'n beetje tegenover elkaar in het spectrum. Wat meteen ook maar weer aangeeft dat het hebben van een talenknobbel er vrij weinig mee van doen heeft.

Ik heb zelf geen talenknobbel, toch kan ik prima programmeren. De meeste van mijn collega's en klasgenoten waren precies zo. Anderzijds ken ik ook een paar mensen met een talenknobbel, die de logica van het programmeren maar niet kunnen bevatten.

[Reactie gewijzigd door .oisyn op 23 juli 2024 00:12]

Mist daar een woordje "in", of bedoel je wanneer ik voor het laatst een taal zelf heb ontworpen? Indien dat laatste, een paar jaar geleden. Compilerbouw vind ik een interessant onderwerp.
Er mist inderdaad een woordje in, goed gezien. De talen die ik bedoelde waren (bijv.) Frans, Duits, Latijn en Grieks.

Dit zijn talen waarin veel meer dan in het Nederlands de betekenis wordt bepaald door grammatica (qua regels vrijwel gelijk tussen bovengenoemde talen). Alleen woorden uit je hoofd leren is ook voor een taal niet genoeg.

Het begrijpen van de grammatica kan ik niet als alpha ("softe" wetenschap) bestempelen, het gebruiken van taal voor "mooie verhalen" is dat echter zeker weten wel.

Ondertussen zijn we redelijk off-topic geraakt, ik gun je graag het laatste woord, maar zullen we daarna de discussie staken?
ik denk eerder dat hij bedoelt; om te programmeren moet je niet als bij communiceren in een andere taal eerste de taal leren.

Zo heeft elke programmeertaal z'n eigen lexicon (bv; Print), maar ook grammatica (If->then bestaat in zowat elke programmeertaal; maar het wordt bijna overal op een iets andere manier gebruikt, in sommige talen wordt de 'then' niet eens erbij gezet terwijl het in andere talen verplicht is)
alleen is een computertaal niet zo uitgebreid als een gewone taal en stelt een computertaal alleen maar op een computer iets voor.
Misschien vindt ze programmeren als hobby leuker dan er haar werk van te maken.
Wow. Gaaf. Ik weet er nu geen nut voor, maar het is een prachtige prestatie!
leuk voor je chromebook waarin ze je alles in de browser willen laten doen ;)
Je kan dit vergelijken met het nut van een museum: Windows 95 is een belangrijk stukje (computer-) geschiedenis en nu weer beschikbaar voor het grote publiek.
Leuk om te zien! Het laat toch weer zien wat er allemaal mogelijk is tegenwoordig met het gebruik van alleen een webbrowser. Daarnaast ook even leuk om nostalgische tijden te beleven in Win95 :) Zelfs de spelletjes doen het :)
Anoniem: 463321 @Slavy1 februari 2016 09:37
Het laat toch weer zien wat er allemaal mogelijk is tegenwoordig met het gebruik van alleen een webbrowser.
'Alleen een web browser' klinkt ook mooier dan het is. Browsers van nu zijn niet meer de simpele HTML renderers maar complete programmeeromgevingen. Niet gek dat er dan veel mogelijk is.
Klopt, ik weet dat er meer achter zit dan dat, maar voor het gross van de gebruikers (niet IT-ers) is en blijft een webbrowser "gewoon een webbrowser" ;)
Een heel leuk idee, ook leuk om te zien dat je een Windows om kan zetten naar een webbased iets, maar ik gebruik hem nu om mijn dochter te laten zien waar wij het mee moesten doen vroeger.
Alleen is Windows niet omgezet. Het is de dosbox emulator die gedraait word in een omgeving waarin C++ code is omgezet naar javascript. En daar dosbox dan weer een emulator van dos is kan men daarbinnen dus wel weer andere software starten die bovenop dos draait.
Volgensmij wordt er weer meer credit gegeven als dat nodig is, zo te zien wordt er dosbox gebruikt (die er al enige tijd is welke draait in een browser) en die kan gewoon win95 draaien.. Dus niets bijzonders.....
Voor het idee en de uitvoering mag je best kudos krijgen. Het hoeft niet perse moeilijk en extreem bijzonder te zijn... Het regelen ervan en voor elkaar krijgen is best een vermelding waard.
Ideaal om legacy applicaties als naslag voor gebruikers beschikbaar te maken lijkt me ;)
Wel fijn dat je bij een BSOD gewoon je browser tab sluit. USB werkt met windows 95 nog steeds even goed (kon het niet laten)
Anoniem: 475099 1 februari 2016 09:52
Die website doet het niet (Connection timed out).
Niet dat dit erg nuttig is, maar wel een prachtige prestatie om Windows 95 te laten draaien in een browser! Klasse :)

Op dit item kan niet meer gereageerd worden.