Raun is a web application that lets you monitor the recent changes of Wikimedia projects, live. Mouthful, but that’s basically what it does.
It was a project that started back in late 2013, rewritten in 2014, and enhanced in 2015. Forgotten for the most time in till rewritten again in 2019.
2013 was the year that I started to use GitHub. It was also the year that I used Git without really knowing what’s going on behind the scene.
Back in the days where I was super active in Indonesian Wikipedia (2011!?), there was a tool created by Ivan Lanin, called “Ronda“, which basically list down the recent changes of a wiki, revisions grouped by pages, and it refreshed itself every minute. It was quite useful, but I thought, what if the page loads the new content via AJAX and not using a full page reload?
The initial project was cobbled together, using jQuery, Bootstrap, and PHP to render the page. The new entries were fetched using polling and appended to the page.
Shortly after publishing it, someone actually asked for support of other locales! And since I hardcoded most of the strings in the codes, I started the refactor, and refactored to the point of rewriting the whole web application.
The second version of Raun relied heavily on JS codes to render the page and do all the magic. This is because, at that point, I think that it was quite redundant for PHP to render the initial view, and then JS need to duplicate the logic so that I can show the updates without reloading the whole page. After I finish the version, the single JS file is around 600 lines long, which consists of 3 parts: model, view, controller; because it was the year JS needs to be MVC? The PHP codes now are mostly an API proxy to Mediawiki API; I also have a Server-Sent Event API here, but it isn’t that reliable (since internally, it’s just polling Mediawiki’s API)
The next version of Raun, called “streamlined”, is built on top of the “rewrite” version, which is mostly a UI change and some refactor. In the end, the JS codes grew to 1000 lines.
In 2015-16, there are more and more incremental features, like revision grouping, integration with ORES, changing APIs, etc.
After 2016, it was mostly quiet, although there are weekly commits from Translatewiki. At the moment (2019), Raun’s interface has been localized into 95 languages! (most are partial localization, but again, wow)
The rewrite in 2019 actually is a project reboot, restarting almost everything from scratch (at least the whole front-end is trashed). The JS is totally “modern”: using Svelte JS and the other hyped JS toolchain. The PHP codes are still needed to act as proxy to Mediawiki API, but has also been rewritten in a more “PHP best practice” way, like using PSR-4 to include classes instead of “include”/”require”.
In a way, you can see the evolution of my code in this project. It was one the earliest project that was published in my GitHub profile. It has been evolved using many techs: jQuery, Bootstrap; Ajax Polling, Socket IO, Server Sent Events; MVC vanilla JS, Svelte JS.
In the end, I don’t think that this project is widely used by the admins, since there are many better tools out there, but this tool is endearing to me as it is one of my earliest open source project.