Don’t worry, I’m not talking about an “end” to JSMESS.
Oh goodness – far from it. Of the two versions of JSMESS we’re currently working with (the “in-process” jsmess.textfiles.com version and the “dressed for dinner” archive.org version), we’re going to be adding a third version for general distribution out to anyone who wants to run JSMESS on their own site. We have gotten sound running (somewhat, and best in Firefox), joypad support (in Chrome and Firefox, but you have to enable it in Firefox), and full screen. We also got the pipeline from “New version of MESS is made, new version of JSMESS is generated from it” down to a near (time-consuming) science, so it’ll be possible to keep up with the many-per-day changes to MESS that are going on. Things are vibrant, intense, and amazing.
In fact, I just wanted to touch a little on where I think this whole thing is going, and what my vision is for JSMESS’s future. I figure we’ve been making such amazing strides, that some folks might start to wonder if there’s any plan at all beyond “it works”.
I am hugely skeptical we will see the browser paradigm disappear anytime soon, certainly not within the next five to ten years.
I’m also very skeptical something is going to sneak up on MESS and take away the portability/flexibility crown. (Individual emulators can smoke MESS on chip-performance accuracy, but then they only do one platform, not 1600.) Maybe someone will cook up some amazing emulator out of the bushes that will blow past MESS – that’s not out of the realm of possibility. I don’t know of one, but that’s how obsessive projects work – someone burns brain on it in darkness and then drops it on the world.
The important thing here is that the IDEA of JSMESS transcends the individual parts – the emulator, the browser, the scripting language of choice. All of these can be swapped out and the idea lives on – you turn on this thing in your computer and within seconds you are interacting with vintage software. That’s what we shot for and that’s what we have.
So, expect probably some upheaval in JSMESS and how it runs in the future, near or distant, depending on what’s best for the core values of speed, accuracy and access. That might happen in six months (unlikely) or six years (likely).
The goal with JSMESS has always been to think of it as a “software player” in the same way that we think of “video players” and “audio players” – discreet programs that will put us in touch with the digital item. To that end, we have a whole range of plans for adding features to the JSMESS “player” that you interact with. I don’t want to list them out here, as some will inevitably be dead ends and others will be subsumed or decided against, but the point is that once the JSMESS player deals with one system, it will more often than not deal with all the systems. For example, once we have sound running smoothly, all platforms have sound running smoothly, both in terms of browser platform and emulated platform.
So as more features enabling you to interact with these emulated platforms are added, the experience becomes richer, more reproducible, more flexible. Some features might only be of interest to a few people, while others will have been called for by anyone who uses JSMESS for a few minutes. Whatever they are, we’ll add them and they’ll just be part of the landscape going forward.
Let me tell you – the Joypad changes the experience completely. You can definitely use keyboard controls, but going back to joysticks to interact with some programs brings up a pretty visceral reaction. It made the program just work better for a bunch of reasons – and it’s optional going forward. That’s the plan generally, regarding that.
Finally, there’s the secret weapon – something I call The Feedback Loop.
Emulation development is a strange art, and one that can be really non-rewarding. You spend a lot of time trying to ramp up a program that plays other programs, and then you realize the official documentation is wrong, there are missing pieces and unexpected confluence with the machine the emulator is running on, and so on. Adding to this frustration is the fact that if you’re collaborating on an emulation project, some of the developers are by the nature of the process hard-edged, critical of radical change, and generally abrasive about the process in the pursuit of perfection… and then you find being The New Coder is a crapshoot of ease and difficulty. Maybe you suggest a change and everyone hoists you on their shoulders, while other times you get a stream of profanity. Emulation is very hard work, coding wise, and it can be an uphill battle to keep track of all the moving parts and contribute positively to the project. And in the case of emulators, the audience is (relatively) small and often hypercritical of what they get on the outside, so your skin has to be a certain level of tough. The result, then, is the pool of developers can be relatively small, especially for platforms that lack the passionate adherents dedicated to that platform’s accuracy and immortality.
What we have here, with the ability to run the emulator directly in the browser, is proof positive that the work you put into it has near-instantaneous effect. Make the emulator better, and the ability of people all over the world to run this platform in their browsers is better. That may be a critical push for a specific set of development-oriented folks, and allow additional focus on more obscure platforms. The dream is someone who goes around doing incremental improvements to platforms that are not all-stars, but just as critical to preserve, maybe more so.
Improvement will beget improvement. The MESS team already does amazing work, so more people focused in on working various parts will make the project stronger. It’ll encourage more documentation as more people want to learn how to ramp up.
That’s the hope, anyway. We’ll see how it pans out.