• Skip to site navigation
  • Skip to content
  • Skip to sidebar
  • Skip to footer
  • Go to archive page
Shadowmaster’s Lair
A light in the darkness, where everything is possible...
  • Home
  • Projects
  • About
  • Contact
  • Blog [ frontpage ]
« Previous | Index | Next »

Robots!

Friday, January 22, 2010

It's year 2010, and, despite the promises, there are no flying cars, no jetpacks, people still die, there's no interplanetary travel, no apocalyptic event triggered by humans made Antarctica disappear on 2000, and most importantly, we are still awaiting the day we can have our own robot pals.

But here's IRC to solve that! No, really! What do you mean, it's not awesome!?

Okay, obscure references aside, the Wesnoth-UMC-Dev started as a fairly casual repository set up by me and Eric S. Raymond for managing a few add-ons that were, at that time (March 2008) candidates for being mainlined at some point of the future: Invasion from the Unknown, Legend of Wesmere and Delfador's Memoirs. Guess which of them has not made it to Wesnoth's mainline project yet.

The way we worked before was fairly different to what we do nowadays. Some time before AI0867 joined me in this quest, I decided to open the “UMC Sandbox” for projects not intended/expected to be merged into mainline. This had some unexpected success by the end of the year and we got a fair amount of add-ons to manage. As I write this, I'm wondering what the hell we are hosting anymore — I lost track!

At the beginning we also had a wiki page at Wesnoth.org with the list of projects and authors. AI0867 and I tried to keep it up to date at all times, but we inevitably forgot its existence after a while. The fact that Wesnoth.org crashed around July 2008 and stayed dead for nearly one month, and was resurrected from 2 months-old backups didn't help. When I remembered the page, I decided to wipe the rusty listings out; the only thing that survived was the admin list, which is now happily hosted by AI0867 on our project's website.

But it'd benefit everyone if we didn't need to look at SVN directory listings or history to check what add-ons we host, or who are in charge of them. To solve this problem, two new services are born: the Statistics service (umcstat, codename “Listra”) and the Registry system (umcreg, codename “Thoria”). I've been asked about their purposes and goals a few times lately, mainly because umcreg is finally reaching completion, so here it is; a thorough description of our new pals.

Registry system

The most important piece of this new ensemble is the Registry system which we'll use for Wesnoth-UMC-Dev. Being a project that manages several, not necessarily interrelated subprojects, I decided that we needed to come up with a custom hierarchy for administrating the repository. Originally, this hierarchy was pretty flat, and all developers had unrestricted access to all objects in the SVN directory tree; this later changed by the end of 2008 when Turuk joined to help us. He was not granted complete administrative control of the project via the SF.net membership management page, but instead he was turned into the first half-admin developer. The implications of this charge are suggested in our staff listing online, but the actual terms are described in detail in our internal documentation.

“Thoria” is the codename of this registry system which will be shared by our utility programs. It's fairly simple:

  • The repository has projects.
  • Projects have associated treeish objects in a standard filesystem-like structure.
  • Individual projects are worked on by users (think developers).
  • Certain users known as Half-admins and admins oversee the interactions between projects, users and trees.

The simple configuration system (libthoria) used by these utilities, reads parameters from a plain text file with a format that I derived from older hybrid-based ircds for no reason at all — okay, I actually wanted to play with writing config parsers by hand, since I can't be bothered to use any existing parser generator yet.

Example config with our current admins and half-admins who also happen to work in an individual add-on:

# userid, realname, forumname, ircname, email
U:shikadilord::shadowmaster:shadowmaster:username@eat.shit.spambots.tld
U:ai0867::AI:AI0867:username@eat.shit.spambots.tld
U:espreon::Espreon:Espreon:username@eat.shit.spambots.tld

# userid, svaname (IRC services account), hostmasks
A:shikadilord:shadowmaster:*!?=ignacio@wesnoth/developer/shadowmaster
A:ai0867:ai0867:*!?=ai@wesnoth/developer/ai0867
H:espreon:Espreon:*!*@wesnoth/developer/espreon

# project id, usernames, paths
P:Invasion_from_the_Unknown:shikadilord,ai0867,espreon:/trunk/Invasion_from_the_Unknown,/branches/1.6/Invasion_from_the_Unknown

Given the repository's current structure, some ambiguity may surround the nature of those branches that don't belong to any project in particular, under this scheme. To avoid introducing any kind of exception system to Thoria, those branches will simply belong to several hidden projects whose developer lists are empty — after all, admins and half-admins are given the right to interact with the whole repository by contract, so to speak.

# project ids prefixed with @ are hidden from user front-ends
P:@wesnoth-umc-dev/maintenance-toolchain::/branches/maintenance-toolchain
P:@wesnoth-umc-dev/shikadibot::/branches/irc-bots/shikadibot
P:@wesnoth-umc-dev/pykadibot::/branches/irc-bots/pykadibot
umcreg

The Registry service IRC bot, also codenamed “Thoria”, implements a convenient mechanism for interacting with the repository layout itself. Since Wesnoth-UMC-Dev relies on the IRC services provided by freenode, it seems logical to take advantage of their authentication system and Wesnoth-UMC-Dev's status as an informal subproject of Battle for Wesnoth (as far as freenode's group registrations are concerned); this way we can skip the development of a new authentication layer for our admins and half-admins.

umcreg will use freenode's services to determine who is speaking to it and what kind of privileges they have. Half-admins cannot do some things that admins can do, and regular users certainly don't have any business with the Registry system.

This bot is written in Perl using the Net::IRC module to facilitate progress so I can proceed to the next step in implementing the Registry; and at the same time, I learn more Perl that could be useful for future projects of any kind.

umcreg's web front-end

This is expected to be a Perl CGI script that will share some functionality with umcreg (specifically, the Thoria::Basic module) to read the Registry and generate a neat report of the repository structure for users on the website. In other words, this front-end will be the reincarnation of our ill-fated Wesnoth.org wiki page — except that is contents will be always up-to-date as long as we make proper use of its companion IRC bot.

umcstat

The Statistics service will be a somewhat different piece of machinery for managing Wesnoth-UMC-Dev by IRC.

umcstat is intended to provide regular users with useful informations about their projects, and to keep track of the treeish structures hosted and who interact with them, notifying admins and half-admins of anything unusually wrong, or unusually cool; for example, commits by authors to projects on which they aren't members, commits accidentally containing blacklisted object (file/dir) names, and administrative actions on object trees, to name a few.

I also intended to implement umcstat using C++, and I have the basics written and stored in my hard disk. Whether this will continue to be the case for the end product remains to be seen; while Perl and Net::IRC are undoubtedly versatile, they also have a few shortcomings of their own, including syntax quirks, high entropy, and, mostly in the case of the module, inflexible design for specific implementations. If I go ahead and complete umcstat as a C++ application, it will also be my first experience implementing a networked application using the IRC protocol, or any protocol at all.

Of course, there are many IRC-based applications out there with source code available under OSD-compatible licenses; however, it is my opinion that mixing third-party code together with my own can only result in an unmaintainable code ball from which I won't even learn, which is the last but not least important purpose of this exercise. Admittedly, it's taken longer than I wanted, but so's life.

Whether umcstat will also help in IRC channel management or umcreg will fulfill this duty — currently assigned to shikadibot — has yet to be decided.

Summing up

While Wesnoth-UMC-Dev saw very little activity the past year, with only one mainlined add-on (Delfadors' Memoirs), one newly introduced candidate for mainline (Dead Water), one new half-admin and one missing one (Espreon and Turuk, respectively), and only a couple of new add-ons being actively maintained, this could be a better year for the project — we could research into marketing strategies :P — and this means that admins and half-admins will perform better with some automated help for managing the repository.

umcstat is quickly becoming vaporware, similar to After the Storm's case, but there's always the hope that I may eventually gain access to the adequate combination of inspiration, concentration, time and energy to finish it — especially once umcreg is completed, which may be sooner than I thought.

Posted in Software, Wesnoth, Wesnoth-UMC-Dev at 00:38 UTC | No comments »
Trackbacks
Trackback specific URI for this entry
No Trackbacks
Comments
Display comments as (Linear | Threaded)
No comments
Add Comment
Standard emoticons like :-) and ;-) are converted to images.
 
 
 
« September '10 »
Mo Tu We Th Fr Sa Su
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30      
  • Recent posts
  • Archives
Twitter
  • http://is.gd/eSuYt is Dead Water's official development thread at the #wesnoth forums. All hail the new maintainer, @Grickit !2 hours ago
  • Playing Wesnoth MP for a change. It's refreshing.2 hours ago
  • Choqok doesn't disappoint (other than the little bug I found in an older version) @grickit @artisticdude3 hours ago
  • I'm finally realizing the usefulness of phpBB's jumpbar at the bottom of viewtopic and viewforum!4 hours ago
  • @the_monochrome I don't think "monochrome" qualifies as an alter-ego in the w.o forums, it's just an alternate nickname. :P4 hours ago
  • This is the second time ext4 passes these crash recovery trial runs with the battery. So far nothing breaks. Good!22 hours ago

Follow me

Categories
  • Frogatto
  • Hardware
  • Miscellaneous
  • Personal
  • Software
  • Web browsers
  • Web design
  • phpBB
  • Wesnoth
  • Wesnoth-UMC-Dev
  • freenode
All categories
Syndication
  • XML RSS 1.0 feed
  • XML RSS 2.0 feed
  • ATOM/XML ATOM 1.0 feed
  • XML RSS 2.0 comments
Projects
  • Frogatto levels
  • Wesnoth add-ons
  • Wesnoth Team Colorizer
  • Wesnoth-UMC-Dev Registry Model
  • Shikadibot 0314
  • Miscellaneous
    • Irssi scripts
    • phpBB 3.0.x hacks
Links
  • Frogatto & Friends
  • Battle for Wesnoth
  • Wesnoth-UMC-Dev
  • Grickit’s blog
  • Turuk’s blog
  • The Monochrome
Frogatto & Friends
Serendipity PHP Weblog
Valid XHTML 1.0 Transitional
Copyright © 2006-2010 by Ignacio R. Morelle. All rights reserved. Powered by Poison Ivy/Dorset3 r4 and Serendipity.
Hosting by rewound.net and NearlyFreeSpeech.NET.
The opinions expressed herein do not represent those of any of the projects and organizations the author might be affiliated with, unless otherwise stated. The author is not responsible for the content hosted by external websites linked from this site. All software, documentation or instructions of any fashion are provided as is, and under its own license terms. Use/read/eat/drink at your own risk.