Open source is sometimes much more than just coding and committing to the most trendy repository at that point in time. It’s also about the community. When a piece of software grows, stops being a pet project and makes a certain impact, it is to be expected to see people flocking around it. Who knows, even other developers could start contributing via pull requests, documentation or support in your forums.
Well, sometimes projects can grow too much, its main developer may be trapped under a massive pile of work or simply doesn’t feel like investing so much time in it anymore, which is fair enough. However, some authors adopt quite an aggressive approach when it comes to dealing with their community and that is not so okay.
Earlier this week a fellow programmer and countryman sent a pull request to Tiny Tiny RSS. Interestingly enough, that’s the Google Reader alternative I talked about less than a month ago. Sadly, he was received with rude comments and a complete lack of appreciation for his efforts. Take a couple of minutes to read through the brief conversation and judge by yourself.
I don’t want to get into the details of the pull request itself, but lets be over generous and assume my friend didn’t approach the initial problem the best way possible. Regardless of the quality of the patch, there’s no reason to drop all common courtesy except for, perhaps, enhancing, an already large ego.
Making this all about this particular case would be a bit ugly and, since there is a much obvious and better example, let’s bring it up. Linus Torvalds and the Linux Kernel! There are countless mailing list entries with serious insults coming from the controversial programmer aimed at contributors, who, in most cases, are renowned professionals. Surely he is an incredibly busy man and his project is titanic. Nevertheless, excuse me for saying that not even such situation legitimises being a dick.
It’s really not that hard to be polite
It goes without saying that a much better response for these situations be something like what follows.
Thanks for the pull request! However, I believe X is not an optimal solution cause of Y. If you could rework it and update the commit later, that’d be ace. Otherwise, we’ll try to address the underlying issue as soon as possible.
Even this is fine.
Sorry it took so long to review this. I’m sorry, I can’t accept this patch because of Y. This topic has already been discussed in the forums, please query the search tool before tackling a problem in the future. I’m too busy to fix this myself, feel free to try again.
See? That wasn’t too hard, was it?
Obviously, this guy, or anyone for that matter, can do whatever he pleases. The matter of whether his community would prosper under this environment or not, is a whole different story. I would imagine, a minority of them just don’t give a monkey’s. Ultimately, I guess some people are simply difficult to deal with. However, if you want to work in a community, I think it’s good to be aware of good practises, generally common sense and politeness work.
Fortunately, there are plenty of cheerful and healthy communities. Some more than others, but my point is that they exist. I can’t say my experience with crowd powered open source development is great but I’ve been involved in a couple projects. As some of you may know, one of them is libgdx.
Libgdx’s forums, IRC channel and Github repository are full of friendly folks. As opposed to the previous examples, I’ve never seen a poisonous comment nor an insult. Actually it’s quite the opposite, for instance, all pull requests are nicely handled, even if they’re incorrect. People are constantly posting extensions, showcasing their work and the acid humor that floods the IRC is just brilliant.
That kind of atmosphere is truly splendid, as it encourages people to be more active. Ironically, the hazardous environment of hostile communities scare newcomers off because they think they’d be attacked as soon as they participate. Sadly, their negativity gives the open source world its current reputation of being swarmed by nerds with gigantic egos.
So what’s the moral of this story?
Don’t be a grumpy person, don’t be a dick, be nice to people. Also, on a side note, don’t let an unhealthy community knock down your morale.
A friend recently asked me about which either general or games specific programming books would I recommend. The true and legendary must read. I answered him directly as I was feeling lazy about posting a comment on each one of them but here I am now. Nevertheless, before going straight to the list, please bare in mind that just like any other best of [insert year here] collection, this is simply a matter of opinion. Not every book is necessarily suitable for everyone at any given time.
Provided you already know how to code in C/C++ reasonably well, this is the book you should be looking at. Proficiency is in the details and you want to get better, don’t you? Structured in small pieces of advice, makes it highly entertaining and almost hides the complexity of the dense topics it covers. Contents range from subtle language details to design gems and wise use of OOP, it has a little bit of everything and I love it. The best non basic C++ book I have ever read, absent doubt.
If you want to go further, More Effective C++ and Effective STL are worth checking out as well.
I read this one a few years ago and it has proven itself most helpful since then. It is the classic patterns book, elegantly designed solutions to common problems. Singleton, facade, factory and all their friends are explained by presenting a real life problem, discussing a few alternatives to finally come up with a beautiful approach to solve it. Patterns are widely used in companies and, I believe knowing how to employ them wisely is paramount to be a good coder. As it is also an item structured book, it becomes quite accessible and allows being used as a consult source.
Game Engine Architecture
Personally, I consider it the ultimate game programming Bible. Brilliantly written by a Naughty Dog coder, it goes through every single component a decent game engine has. Input, rendering, collision detection, AI, networking and many others are there. Not only it explains what every subsystem does and a few ways of implementing each one of them, it also details how subsystems cooperate to achieve the bigger goal. Even though it does not provide an excessive amount of sample code, it hints enough so a mere commoner coder like me can implement stuff and feel fairly smart afterwards.
However, I would not recommend it as a first contact with game development, being so massive and detailed, it can blow any newcomer’s mind.
Game Programming Gems
This one is actually a series of books, very well known if I may add so it will not strike you as a surprise. Each issue is made of several articles written by industry professionals on themed blocks. I read a few when I was a complete noob so my ability to absorb knowledge from them was quite limited to put it nicely. As opposed to Game Engine Architecture, which scratches the surface of many topics, these texts are highly specific and therefore, recommended for medium to advanced programmers. This is the real deal, profusely tested and used in tangible projects.
Artificial Intelligence for Games
Want to learn about game AI? Search no more because this is it. Very few books start covering the very basics about an artificial intelligence system and end up explaining quite advanced stuff such as space partitioning, hierarchical path finding and machine learning. Even though it warms up with a friendly vision of how AI systems are designed and layered, it turns to be absolutely right and precise. Movement, physics, steering behaviors, state machines, high level strategies, decision making, you name it, the book explains it in plain English and easy to digest Python like pseudo-code.
I read it from cover to end only to find out later that it was going to be the course book for the AI module I took in Kingston University.
Currently I am reading through Large Scale C++ Software Design and it seems like a strong candidate for this list. I will probably write my impressions on it in the near future.
Lots of stuff has happened since I last posted something here. Crazy Eramus life, you want to do everything: projects, social life, studying… So, logically, the blog has been a little bit left behind. I just wanted to post a quick update about the two university projects I’ve been working on recently:
- Laterdroid: Read it Later client for Android created using the official SDK.
- Urban Race: time attack racing game developed using C# and the XNA framework.
For further information please go to each project’s page, you’ll find a more detailed description, screenshots, videos and download links. I was thinking of making both projects open source and upload them to a Google Code repository but I guess that’ll have to wait until they’re graded by the professors.
And now for something completely different…
Huge events have taken place recently, the dream has come true. Unfortunately, I can’t make anything public yet, I’ve only told my family and friends. However, I’ll soon post something on that matter.
Just a quick update, you really should spend a few minutes watching this presentation. Johan Andersson, Rendering architech at DICE, gave a talk called “Shiny PC graphics in Battlefield 3” during the last nVidia GeForce LAN. It’s focused on the latest improvements the Frostbite 2 engine includes and I think it’s a pretty good example of where the graphics technology is going.
Click on more to see the videos.
Google anunció Music, su servicio de música gratuito a través de streamming en su evento I/O 2010 pero no fue hasta hace poco cuando se comenzaron a permitir registros para la fase beta. El problema es que sólo usuarios de Estados Unidos pueden solicitar la invitación y utilizar el cliente para Android. Afortunadamente hay un pequeño y sencillo procedimiento para poder saltarse esta barrera, sigue leyendo para saber cuál es. Gracias a mi buen amigo Javier por los enlaces y las pistas.