ASCII by Jason Scott

Jason Scott's Weblog

A Simple Request: VLC.js —

Almost five years ago to today, I made a simple proposal to the world: Port MAME/MESS to Javascript.

That happened.

I mean, it cost a dozen people hundreds of hours of their lives…. and there were tears, rage, crisis, drama, and broken hearts and feelings… but it did happen, and the elation and the world we live in now is quite amazing, with instantaneous emulated programs in the browser. And it’s gotten boring for people who know about it, except when they haven’t heard about it until now.

By the way: work continues earnestly on what was called JSMESS and is now called The Emularity. We’re doing experiments with putting it in WebAssembly and refining a bunch of UI concerns and generally making it better, faster, cooler with each iteration. Get involved – come to #jsmess on EFNet or contact me with questions.

In celebration of the five years, I’d like to suggest a new project, one of several candidates I’ve weighed but which I think has the best combination of effort to absolute game-changer in the world.


Hey, come back!

It is my belief that a Javascript (later WebAssembly) port of VLC, the VideoLan Player, will fundamentally change our relationship to a mass of materials and files out there, ones which are played, viewed, or accessed. Just like we had a lot of software locked away in static formats that required extensive steps to even view or understand, so too do we have formats beyond the “usual” that are also frozen into a multi-step process. Making these instantaneously function in the browser, all browsers, would be a revolution.

A quick glance at the features list of VLC shows how many variant formats it handles, from audio and sound files through to encapsulations like DVD and VCDs. Files that now rest as hunks of ISOs and .ZIP files that could be turned into living, participatory parts of the online conversation. Also, formats like .MOD and .XM (trust me) would live again effectively.

Also, VLC has weathered years and years of existence, and the additional use case for it would help people contribute to it, much like there’s been some improvements in MAME/MESS over time as folks who normally didn’t dip in there added suggestions or feedback to make the project better in pretty obscure realms.

I firmly believe that this project, fundamentally, would change the relationship of audio/video to the web. 

I’ll write more about this in coming months, I’m sure, but if you’re interested, stop by #vlcjs on EFnet, or ping me on twitter at @textfiles, or write to me at with your thoughts and feedback.

See you.


Categorised as: computer history

Comments are disabled on this post


  1. Do you for sure want the whole VLC, or would it be adequate to get command line VLC stream-and-save functionality working to transcode stuff, then leave the output to whatever the browser normally does?

    • Jason Scott says:

      So, the summary would be to try and do all of VLC, and see what doesn’t make sense or what chokes out on Emscripten transfer. Discoveries among the way of this journey will likely send the project into different directions. For example, we ended up splitting up MAME into by-driver javascript functionality just because it made more sense, and now MAME does the same as an option as well.

      Whether there might eventually be a vlc-transcode.js or a vlc-player.js resulting set of programs from the effort would have to be seen. But it’s both within the realm of possibility and something with precedent.

  2. Michael Kohne says:

    Good luck! I wouldn’t have thought it possible if I hadn’t seen what happened with emulation!

  3. I say this with my absolute best Roman Mars voice…you, sir, are a beautiful nerd.

  4. SchizoDuckie says:

    Oh well, why the fuck not.

    I’ve seen crazier shit done in javascript.
    Bring it on!

  5. Zen says:

    Maybe ffmpeg would be even better, you could just render any source to a canvas and paint your own UI.

  6. rhardih says:


    This is an emscripten version of ffmpeg:

  7. I’m not convinced that porting a large application to JavaScript is the correct approach. Memory and CPU usage matter. Processor speed isn’t increasing like it used to, and you also need to consider power usage on portable devices, like if someone wants to play MODs on their smartphone. For lots of audio formats, the codec library might be a better choice.

    • Indeed. I avoid browsing pages that leave my battery draining fast. But on the other hand what I experienced was in many cases optimized to the point that these sites became browseable again without loss of functionality. I guess with lots of optimalization effort and support of JS engines (like was pushed with WebGL) this is a really good idea! The only better idea would be to implement all these formats in native code in browsers themselves. Yet for now, this would do marvelously to keep wonderful formats mentioned here in use.