libathemerpc?

For those of you following Atheme’s development, you may or may not know of our plans to include an optional webservice module in Atheme 0.3 for the purpose of creating a web interface with.

Right now, we’re in the process of building an appropriate RPC interface around a library called xmlrpc-epi, which is released under the BSD license (just like Atheme). Our plan is simple. Using the new connection code, we’re going to create a TCP listener and a small HTTPD inside Atheme. The HTTPD will be very simple, and will only be usable for the XMLRPC interface.

Here’s the deal though. The XMLRPC interface is replacing realtime SQL support, as it is safer and ensures data integrity through Atheme being able to enforce it’s own data constraints. (Don’t worry, the postgresql backend is not being removed, nor will be any time in the future.)

You might be wondering what XMLRPC is. It’s basically a system that allows for the declaration of nice and easy to use interfaces, and also allows for the ability to use these interfaces remotely. In a computer program, internally, these interfaces (or jump-points, or symbols, or routines) are typically called procedures, and using these procedures is typically referred to as a procedure call. RPC extends the concept of having multiple routines, by allowing different programs to call work with other programs on another (or the same) machine. XMLRPC makes this concept work multiplatform by defining a platform-independent specification for program execution. There are many security issues with XMLRPC though, but those flaws are applicable to any system of this nature.

Another IRC-related package, NeoStats, takes RPC in a different direction by emulating a PostgreSQL server. While that is rather advanced, and could be rather useful, the overhead seems a little unnecessary for Atheme, and does not ensure data integrity in the manner that a RPC protocol would.

So the big thing for 0.3 is going to be XMLRPC.