This one was the one that needed the obvious rewrite.
Kahinah is an updates manager for the OpenMandriva Association’s distribution, OpenMandriva Lx. Its goal is to monitor builds that are produced from a build system (which is abf.io right now), and create a karma system which testers can vote on the updates, and eventually accept them as working, or reject them as deficient.
This worked for the most part, but when it came time for a large number of builds (think a KDE SC 4 version update), Kahinah was overwhelmed, testers were crushed, and updates had a hard time going through.
Additionally, the system suffered from numerous bugs due to changes on abf.io, and it certainly didn’t help that I was using beego and pulling many many dependencies, which shot build times up through the roof.
The first couple of versions were just getting it usable and bearable for the most part. This rewrite is entirely from scratch, with no existing code.
I finally provide a decent JSON API, and I plan to use JSON web tokens to provide authentication (thanks Matt for pointing that out). Updates are now more organized, and for the first time ever, I’m providing a new type called advisories.
What are Advisories?
Advisories are groups of updates. Instead of voting on one update, we create an advisory with the updates we want to contain in it. They can range from just one update to a group of them, and testers can test ALL of them at the same time.
This has two purposes - one, to force package maintainers to document more throughly for corporate customers (for example, putting bug references so that Kahinah can connect to Bugzilla and say, hey, here’s a possible solution that you can test), and two, to make large updates much more manageable for testers.
It also brings us in line with practically every distribution out there that has to keep track of updates (like Fedora’s bodhi).
What else has changed?
The frontend is separate from the backend, and is written with ember.js. It’s my first foray into ember.js, and I’m curious to see how it goes. The documentation is a bit random, especially since it looks like they’re migrating towards some ES6 standards, so it’ll be both a learning experience and a headache.
When I get stuff working, maybe. I intend to deploy a beta version to replace the current Kahinah on jasper sometime at the end of this month or the beginning of next.
kahinah is licensed under the MIT license.