After thinking a bit about what I need open-source, and what I’m capable of implementing but too time constrained, here’s a short list. If I had enough cash and if I didn’t have to study, I’d go now and work on some of these.

Open source Steam

And I don’t mean just a game browser and installer. I mean the full deal: friends, shop CMS, patching, DRM, DLC, ingame overlay. Friends could work with XMPP, and when I think about it, so could everything else. How about login with OpenID, Facebook Connect, XMPP?

Better, modular X11 login manager

I want a login manager where I can easily write a GUI in OpenGL or whatever I want, and just plug it in with the backend code that’ll handle the login itself.

In-game XMPP overlay

I’m sort of obsessed with in-game overlays, right? But that’s what I want to have: a way to talk to my google-talking buddies from in-game. Steam’s in-game browser is NOT a solution. I’ve tried looking around for something like this; I found some open source code for in-game overlays (Mumble VOIP has one), but nothing simple enough for me to fork and add XMPP code and a simple GUI (perhaps using my GLICT or my company’s AprilUI) to be able to have a proper in-game IM experience.

Well commented and structured code

This is not something I can fix even with a lot of time. I try to structure my code well, but that’s about it.

I’ve been through too much OSS code lately that wasn’t commented well. In fact, I know of one instance where I was studying implementation of in-game overlays, and the already-confusing code didn’t have a single useful comment in it. I’ll do an evil namedrop and mention this was, again, Mumble. I want to make it clear: it’s an excellent project, with lots and lots of cool ideas, well implemented tricks such as positioning audio according to the position in the game the speaker and listener are playing, et cetera. But, simply put, when I looked at the code they had in SVN, I found something I couldn’t put my head around.

Functions and classes were oddly named, not to mention files. Platform-specific code was all mixed up and was not separated; while there were attempts to be modular, separation of platform-specific stuff (and when it’s about in-game overlays, you know it’s VERY platform-specific) was done very clumsily. I couldn’t find where the code initializes system-wide monitoring for the launch of a game, and where the overlay is initialized. I gave up.

But this is what defeats the purpose of open source. Why bother releasing it as FLOSS if people can’t learn anything from it? I wrote a lot of code over the years, but if it isn’t instructional or useful, why would I release it as FLOSS? One goal may be to get it into Debian which has a social contract to ship only free software, but if that’s the entire point, then say so.

Anyone looking for a piece of software similar to Hamachi, but open source free software – take a look at P2PVPN. It uses torrent trackers for finding nodes, it works on GNU/Linux and Windows and individual nodes do the forwarding. (This also means at least one node in network needs to be able to accept connections but that can probably be arranged.)

Now, since this is a blog with programmer’s thoughts, I’ve taken special interest in this program’s source code; especially in how it manages to use OpenVPN‘s TUN/TAP driver under Windows. You see, TUN/TAP devices under GNU/Linux reveal themselves to be just simple named file descriptors you can write into and read from. But how to do it under Windows? This seemed like it might be another one of those things where you can venture around the net for days looking for an answer, but luckily, there was no need for that.

P2PVPN’s got two versions of its low level code for accessing TUN/TAP devices, one for GNU/Linux and one for Windows. They are written in C and are Java wrappers for accessing the devices. Windows version has 280 lines of code excluding header, and GNU/Linux version has 111 lines excluding header. They are a must-read tutorial for anyone wanting to write some code that has to do with virtual network devices and VPN. P2PVPN’s licensed under GPLv3, and the TUN/TAP Java wrapper code is licensed under LGPLv3.

Wolfgang Ginolas did some great work here. Anyone that wants to try something new aside from Hamachi, or wants to write their own VPN software, should take a look at P2PVPN.

Support me!

Need a host with root access over SSH where you can deploy a blank machine within 60 seconds? Need a host billed per hour, that costs only $5/month (that's less than a cent per hour)? Try Digital Ocean!