Howdy everyone,
Hye Ararat has been undergoing a rewrite since May 12th, which has repeatedly encountered slowdowns (as documented throughout the Hye Ararat Beta 4 is now available thread). Up until recently, I believed that Ararat would have a full-primitive release ready by July 24th.
This is no longer the case, and after careful deliberation, I’ve decided that Ararat needs to follow a different development approach going forward, which ultimately entails another rewrite.
Ararat needs to use Incus as the source of truth for everything, including configurable options and access. However, some Incus behaviors need to change before Ararat can deliver an optimal experience with this methodology. Therefore, Ararat’s development model is shifting from chasing perfection to building a system that can mature over time.
New Development Model
More technically, Ararat must be built such that changes in future Incus behaviors (which are anticipated) won’t require substantial refactoring. From now on, Ararat will be developed like a framework. Ararat will focus on establishing modular & extensible systems within its core for each Incus primitive & behavior, and simply match current Incus capabilities in the wired interface. Effectively, the plan is to continue the “perfectionist” approach with the core, while treating the wired interface as something that can mature.
Velocity & Impact
This means that in the short-term, some areas will lose depth & functionality (e.g. configurable options). However, as Incus evolves, that depth & functionality will be easy to bring into already existing Ararat code globally. In the long term, this will allow Ararat to keep up with Incus capabilities at a much faster rate, as well as streamline the development process. The short-term losses will be eventually rectified, and it could be argued that a full-primitive Ararat will be in your hands sooner than the previous trajectory would.
The currently in-progress rewrite does not satisfy the requirements of this new model, and the Beta 4 variation isn’t rectifiable for these purposes. Many systems in the rewrite that’s been in progress since May 12th do adhere to this model, however, the wired interface does not. Thus, another rewrite of Ararat must take place. Ironically, the solution to preventing a future rewrite is a rewrite.
Next Steps & Beta 5
Since we will no longer be migrating Next.js components, the codebase will not be an unpushable Frankenstein, so unlike the prior rewrite, this will take place live under the rewrite branch on the Ararat GitHub. Many elements of the already existing rewrite are completely compliant with this, so despite the term rewrite, we are not starting from scratch.
This thread will be used to discuss anything further related to the rewrite until Beta 5 is ready. Beta 5 will release once we are back to parity with Beta 4. There will be no schedule/roadmap until then (as with a scope this large, it is entirely unpredictable). I will write a post here once I push the new initial base. Once that happens, I do plan on using our GitHub’s issue tracking like I did in the lead-up to previous betas with this rewrite, so feel free to file or take on any that are unassigned.
Thank you for your feedback & continued interest in Hye Ararat. If you ever doubted the gravity of your voice, know that the rewrite that sparked it all actually stemmed from community feedback, so definitely speak up
.