Oni v2 - Update #1
Added 2018-12-19 21:31:04 +0000 UTCHey all!
I wanted to give you a quick update on the prototyping progress for Oni v2. The primary focus for my prototyping time has been ensuring that we have the right set of rendering primitives to build an editor.
In parallel with Oni v2, we're building Revery - a general toolkit for building fast native desktop apps - and I wanted to put it through its paces and verify we have the pieces we need to make forward progress on Oni v2.
To that end, I mocked up a static UI that exercised some of the main rendering functionality required:
- Ligatures
- UTF-8 rendering / Glyph Fonts
- Flexbox layout
- Component Architecture
Here's the result at the end of my prototyping:

Pretty humble and basic - but it almost looks like it could be a (very minimal...) usable editor! So I'm happy with the outcome.
You can see that we have ligature support, along with the ability to render font-awesome glyphs, which is great - it shows our stack is working end-to-end. (Keep in mind though, it is totally static).
The technology feels like building a React app - except it's completely native!
However, of course, with any prototype, we find issues that we'll need to fix. Here's a few that came up during the course of prototyping:
- revery#108 - Text Rendering: Implement correct gamma correction
- revery#109 - Text Rendering: Investigate subpixel rendering strategies
- revery#115 - Performance: Cache results of `hb_shape` calls
And there are still gaps in the technology that need to be filled (specifically around mouse/keyboard input). But we can work in parallel on these while we build out the core editor experience.
We've also had some really exciting progress from collaborators:
- Akin has made progress on implementing box shadows (revery#107)
- Manuel has started working on texture atlases for our native font rendering (revery#53) - important for perf!
I've also spent some time on less-exciting investigations (or at least... not as fun as technical stuff!). As mentioned in the previous update - I'd like to sell Oni2 at some point (patrons / backers won't have to pay another dime though). The majority of our foundational work will be MIT Licensed in other repos (like Revery!), but the editor itself will be under a more restrictive license. My plan for the Oni2 repository is to use the CC-BY-NC-ND 4.0 license - it permits free and educational use, but commercial use is restricted.
For non-patrons, once we have an MVP, I plan on selling either 1-year or 3-year commercial use licenses. Patrons will get a lifetime commercial use license as a thank you for the early support. Let me know if you have any questions / feedback / ideas here, though! My goal is to create a sustainable business that can support building a high-quality editor - and I'm open to any ideas to make that happen.
The licensing is important to figure out, because I want to release a public repo as soon as possible. It'd be great for you to see live code, even if it is just a static executable to start.
With that, the next steps for me are:
- Creating the Oni2 repo
- Setting up boilerplate stuff like the License, cross-platform CI, basic tests, etc
- Port over the prototyping work completed thus far, so that we have a running executable on Linux/Windows/OSX with the new tech stack.
Basic stuff, but it is important foundationally for the project.
The next high-level goal I have for Oni v2 is to have basic read-only text rendering working, by end of January. Having this can help validate the performance and start-up time in a real workloads. Stretch-goal would be to have smooth scrolling and a minimap. Editing soon after :)
Oh and also - on the Oni v1 side - we released a new build of Oni (v0.3.9) that addresses an error on startup in OSX Mojave - the bits are available here.
I'm personally very excited about what 2019 will bring for the project. My hope is that we can realize the vision of an editor with the speed of Sublime, the language support of VSCode, and the editing experience of Vim - a complete package!
Thank you for your support and helping us bring this vision to fruition. Myself and the collaborators on Oni are very appreciate of what you do for this project.
The next update will be in 2019 - so in the meantime, Happy Holidays and Happy New Year! Thanks again!
Best,
Bryan