The home of a curious mind.


Problem and Solution: Open Source

2013 03 23 For my latest venture in software development I decided that it was time to try my luck with the Open Source software scene. I had seen a lot of posts over on /r/programming about how great NodeJS apparently is, partially because of how fast it can run because of how it’s asynchronously processes its tasks, partially because you’d be able to deploy the same JavaScript code on both server and client as well.

I know what some of the programmers out there are thinking by now: “Isn’t JavaScript in more places worse?” Yes, yes it is, and if I could put any other language in the browser I would do so without hesitation, but I can’t, so instead I can only put JavaScript in the server. Consistency is a very big advantage.

So I decided to give the whole NodeJS hype a try, because after all, it’s just one tool so it shouldn’t be THAT hard to learn, right? Wrong, it turns out that unless you want to reinvent the wheel you’d need a framework like Express. No big deal, Express & NodeJS seems like a nifty plan: Now I can also serve out html files without relying on some outdated webhost and that makes me a little happy. However, we aren’t done because in order to do any of all that client-server interweb-interaction-magic you need stuff like SocketIO and then to get SocketIO to run you need another little thing, and I think that you are getting the inking of how the mill turns by now.

There are so many little pieces, and no clear overview. For each of the little parts that I needed to add, I had to Google for problems in a manner “why can’t my A B C do X Y Z” and it turns out that it’s because of something silly like that the feature was decapitated from version 3.0.0 and onwards. So I need to add Express-Partials to my project in order to do it in this new way. Thank goodness for Google and Stack Overflow – I think it would have taken me twice as long if I had to search a standard tech forum where there’s buckets of smalltalk, or if I had to start posting questions and waiting for replies. The real issue that I’m trying to illustrate here is that there are no proper introduction courses, or tutorials, or blog posts, or anything that goes just beyond the fundamental basics yet doesn’t take the reader into the obscurity of the writers little niche.

So that’s the problem. Here’s some possible solutions:

If each of the Open Source projects were drawn on a huge piece of papers along with a short description and lines were drawn between the projects that were related – different lines for different kind of relations. “Is compatible with”, “Can be run in”, “can call” or what have you. Then you’d be able to browse all related projects, and filter out the ones not related to the project you’re interested in and other nifty little search options like that.

Of course I speak as a user here. It’s not more complicated (infamous words) than making a database of links to open source projects and listing the related projects – then making a web service that reads and writes to the database and draws the results out neatly to the user. The real work is filling the database with entries and keeping those entries up to date while keeping everything descriptive.

It might be possible to get the open source community into that plan, but I don’t see how they benefit because the ones that really know won’t need the service, meaning little incentive. On the other hand, things such as Wikipedia exist because people simply want to contribute their knowledge.

Another way the problem could be solved was if small books or guides were written for each of the fundamental solution, only covering the basic and intermediate functionality without going in great theoretical details, and also covering which projects that are related to and useful for this specific open source project.

I think that this solution would be the easiest to do, yet it would be more work. On top of having a great understanding of a specific project, you’d also have to put in a lot of work writing it out, and ensuring that it’s not just a bunch of great sentences collected into a pile of useless points.

Starting slow, it could probably make a good blog with might even generate some side income. What’s important is to keep it up to date, so that the quality doesn’t deteriorate, which becomes gradually harder and harder as you cover more subjects. If the articles are allowed to get outdated, it would just become another series of hipshot blog post with no relevance in a year.