Over the many years Scribbington has been alive, I have been asked many times, “how did Scribbington start?” With the latest move to better code and a clearer path ahead, I started tracking down the earliest conversations and code commits to draw a path. This is what I have uncovered.
The first version of Scribbington was essentially a mostly-vanilla
Supybot that was primarily used for IRC convenience commands. One day, someone said, “I wish Scribbington would talk.”
I found pyBorg and really enjoyed what it did, at first. One of the first things I did was gut out tools that we didn’t need and wrote some cleanup functions, so that the brain would compact and automatically trim itself. There was a fork of
pyBorg that some code was taken from to help with this, but eventually I started doing some things with the brain that made it no longer compatible with other
pyBorgs. During this time one or two other people tinkered with Scribbington, as I had used it as an Ubuntu Beginners Team project.
scrib was a fork of
pyBorg, but after doing more experimentation and running into more walls of frustration, I decided that there needed to be a rewrite. This was a hot mess. Four people contributed to this project, mostly with ideas and feedback. One contributed a lot of time and code, and shared in the frustrations with me. The hot mess only got worse, and by the time it hit version
1.1.0 we were maintaining bots at version
We flopped the brain around to
Redis-based, among other abominations. It was becoming too awful to maintain and the git commit history was horrendous. There were many problems with the transition from Python 2.x to Python 3, as well, since the brain data contained mixed types of strings (binary, unicode, and ascii). A great deal of time was put into building a converter-cleaner, and though one finally did export the data into a usable format, I made an executive decision to drop this path entirely.
After much waffling and hand-wringing, I decided to fork
scrib and slim it down to its bare essentials. Thus
harbinger came to be.
Harbinger, by design, only ferries data between users and its plugins. By itself, it will only sit and accept input.
In an attempt to reconstruct the old brain in the new system, I realized it would be easier and less awful to just make the working version of Scribbington into a plugin, so that the brain data could be transferred to a better system through the plugin system. This brings us to
LegacyBrain plugin for
harbinger is a stripped down (but not efficient) version of
scrib 0.8.1 and supports the brain version
0.1.3. The main purpose is to allow full functionality of the original Scribbington while we build other brain alternatives.