Newspeak is an object-capability programming platform that lets you develop code in your web browser. The entire Newspeak IDE runs locally in the browser. It will run on desktop, tablet or phone. Try it online right now.
Like Self, Newspeak is message-based; all names are dynamically bound. However, like Smalltalk, Newspeak uses classes rather than prototypes. As in Beta, classes may nest. Because class names are late bound, all classes are virtual, every class can act as a mixin, and class hierarchy inheritance falls out automatically. Top level classes are essentially self contained parametric namespaces, and serve to define component style modules, which naturally define sandboxes in an object-capability style. Newspeak was deliberately designed as a principled dynamically typed language. We plan to evolve the language to support pluggable types. Last but not least, Newspeak is a reflective, live system (if you don't know what a live programming system is, see this 5 minute video).
Applications should work well both on or off-line, combining the ease of maintenance of web applications with the high quality user experience of local clients. See the Room 101 blog for details.
Applications should be a joy to write and to read. The best way to create such applications is to create interactive narratives via live, literate programming. We want an editor for interactive narratives.
Such an editor should be scriptable. You should be able to write programs that control the editor in a powerful, general purpose programming language (Newspeak). In fact, every last bit of functionality the editor provides should be accessible programmatically.
Said editor should, of course, support its scripting language. Support means more than pretty-printing or syntax highlighting. It means you can evaluate the code. In particular, you can evaluate code that affects what the editor does.
Being a modern editor, you can build documents that contain more than just text. You can embed images, audio, video. In fact, you should be able to embed arbitrary widgets. So you might evaluate code that creates a UI element and inserts into the editor. Now you can make the editor modify its own GUI. In fact, the editor can be extended into a general purpose GUI builder. And every such GUI can modify itself if you wish; sometimes you may wish to modify it so it can no longer modify itself, and then you have a frozen application. Your editor has become an IDE. In fact, it is a live literate programming environment.
If the editor’s scripting language interoperates well with the surrounding environment, it can be used to control the computer and everything the computer itself controls. You can check in to the environment and hardly ever leave. You can lead your cyber life in it.
Now, imagine that the code you created in this environment was modular and secure. Imagine the editor’s scripting language can deploy the same code on web, desktop or mobile. Imagine that the applications built with the language support online and offline use out of the box, automatically synchronizing data and code between clients and servers. Imagine that they have built-in support for collaboration, either syncing in real time or merging offline as required.
This is what Newspeak is supposed to provide. We're not there yet, but we have an elegant foundation to get us there. If this vision excites you, we welcome volunteers to make it happen sooner.
The current version of Newspeak runs on top of WASM, and has been tested on Safari, Firefox and Chrome-based browsers, both desktop and mobile. You can try it out here. The IDE is a progressive web app, which means it can be installed locally on your machine and function like a normal app, with no internet connection. The latest development version is available at our source code repository.
The WASM based version is still a work in progress. We no longer support the old Squeak Smalltalk based implementation.
In Orwell's novel 1984, Newspeak was a language that grew smaller over time. Unlike the case of natural languages, for a programming language this is actually a good thing. It is an ideal we strive for - a shrinkable language.