The N2O was born in 2013 in spring. It’s started as a process of reimplementation of Nitrogen Web Framework behavior for better performance and code reducing. The initial version had its own render core along with pure websocket nature of the IO protocol.
In this minor release BERT transformations mainly were improved using parse_transform. Was introduced ETS caching. Tiny 50 LOC Makefile called otp.mk was suggested for easy production deployment. It’s still best option to deploy applications. It was release 0.11.
In January 2014 release xen hosting in LING VM was initially introduced. Dependencies start to freezing; asset and deploy options were improved.
The release of May 2014 is still supported. In this release new build tool mad was initially introduced. Version 1.5.
August 2014 version 1.8 received new cookie session manager synchronized with ETS table where all entries zipped with session keys. Client binary requests was made to exists in bin sub-protocol. KVS was first added to sample application in this release. Full HTML elements and attributes were added, which caused the growth of the nitrogen DSL size to the size of N2O.
September 2014 release was numbered 1.9. New client side protocol pipeline along with new n2o.js. For mad was issued new dynamic loader which is able to host working directory inside ETS table and readable from erlang executable script on Windows, Linux and Mac. UTF-8 support was optimized in utf8.js. New experimental rails protocol and crashdump.io logging backend module were added in version 1.9.
October 2014 version 1.10 was minor again. The only message in changelog were added: "nothing special". The first malfunction bug which was fixed is the racing which happened during async DOM bulding. Yes, N2O is faster than browser.
January 2015 version 2.1. Major Release. N2O book from now on can be purchased in a hardcover print. For business applications validations were introduced. n2o.js, binary.js, nitrogen.js, template.js were slightly optimized. KJELL color support from now on enabled in new review sample application. Log level support and several field and racing fixes in HTML elements.
March 2015 version 2.3. Initial Haskell implentation of N2O server is introduced. New N2O WebSocket protocol specification for all stack of synrc and spawnproc applications. New auto-expiring cookie-based session and cache managers. Revised and more sane XHR fallback. Automatic language detection from routes in context. Several element fixes and latest Cowboy 1.0.1.
N2O is fast energy efficient binary protocol for IoT and WebSocket applications. I hope you will find this retrospective useful in your discovering of N2O.
N2O is free from unnecessary layers and code calls as much as possible. At the same time it covers all your needs to build flexible web messaging relays using rich stack of protocols.
Minimalistic criteria allows you to see the system’s most general representation, which drives you to describe efficiently. You could be more productive by focusing on core. Erlang N2O and companion libraries altogether make your life managing web applications easy without efforts due to its naturally compact and simple design, and absence of code bloat.
All apps in stack operate on its own DSL records-based language: N2O — #action/#element; KVS — #iterator/#container. This language is accessible directly from Erlang-based languages: Joxa, Elixir, Erlang, Lol.
We hope that this book will guide you in the wild world of Erlang web development and you will be enlightened by its minimalistic power.