Open Source Contributions – Can you really make a difference?

Last week I read this interesting post by Lars Vogel, promoting people to contribute to the Eclipse project. He shows that a single developer can make a great difference to a project, giving as example how two developers have done more than 50% or all commits of the Eclipse JDT project.

After my previous experience trying to contribute to the Eclipse UI project (since then, and a couple more iterations, I decided to abandon the change), this post created mixed feelings in me. On the one hand, every project has major developers that do most of the coding. But IMHO, having one/two developers as more than 50% of your commits may have other (not so good) implications. They may have taken control of the project, creating a selected group of “blessed” commiters, and generally making it hard for others to commit because things have to be done their way.

So I decided to check if this is an attribute of the Eclipse community or of the open source community in general. I did this by checking how the commits to a project are divided between the “main” commiters (the 3 highest commiters of the project), and the “small” commiters (those that commited little so they are counted as others in the commit statistics). The data is taken from Ohloh using the last 12 months of commits for the project. The columns “#1″, #2″, and “#3″ show the percentage of commits done by the highest 3 commiters, which are added in the next column. The “others” column shows how many commits are done by “small”, possibly casual commiters. I decided to specifically check the Apache Foundation specifically as it is a similar organization to Eclipse, and also some well known OSS projects that I a aware of. The results are mixed, and I’m not sure something can be concluded, but the research is pretty interesting :-).

Eclipse Projects

Project
#1
#2
#3
First 3
"others"
JDT24%18%15%57%23%
UI14%11%11%36%32%
Platform16%9%7%32%39%
PDE46%20%17%83%10%

Apache Projects

Project
#1
#2
#3
First 3
"others"
HTTP Server15%10%9%34%30%
Subversion23%15%13%51%6%
OpenOffice18%10%10%38%37%
Tomcat65%12%4%81%8%

Others

Various OS projects

Project
#1
#2
#3
First 3
"others"
Linux Kernel3%2%2%7%84%
Firefox6%5%4%15%74%
AngularJS11%9%5%25%54%
Ruby32%13%8%53%24%
Scala23%21%12%56%24%
KDE15%7%3%25%61%
Node.js25%19%14%58%18%

Conclusion

Since data does not lie, we can see that most of the projects have a very active core of programmers, for in most cases the three highest commiters make up for more than half of the commits in the project.The Linux Kernel and Firefox show a very good and large community effort, having both (almost) 3/4 of their commits done by small commiters.

I did not find any real difference between Eclipse and Apache projects. In both there are strong core commiters and varied ranges of other commiters. In truth, I was surprised to see the small amount of “other” commiters in Apache projects. There may be very good reasons for this, but alas, I have work to do and can’t spend all my time analysing this data.

So I guess that in OSS, you CAN make a real difference. But you probably have to work real hard to do so. And many of us just don’t have the time :-(.

Weekly Reading Material – 03/04/2014

Here are some interesting articles from my last week of internet reading. Enjoy.

How Fast Web is Impairing How You Think
Slow down and smell the flowers, because the fast pace can hurt you. “One of the byproducts of a fast-paced internet lifestyle is the crushing weight of information — and inside this snowball is where the danger lies. You’re more likely to get tricked into believing false information when you’re tired and distracted.”
http://blog.idonethis.com/post/76204409238/how-fast-web-is-impairing-how-you-think

Microservices
Comprehensive introduction to the microservices architecture by the famous Martin Fowler (co-author of Refactoring: Improving the Design of Existing Code). Explains what is the architecture, how it works, and why you should embrace it. Must read!
http://martinfowler.com/articles/microservices.html

The Top 5 Counter-Intuitive Ways To Rock Your Corporate Culture
Provoking article on this “culture” thingie everyone is talking about. For example “I’m a big non-believer in work-life balance. I’ve found that those who need it the most often aren’t loving their work or their life or their relationships, and therefore need to build in structures to support and protect both. If you work 80 hours a week and are in flow, and you’re happy with your life, relationships and impact, then personally, I’m leaving you alone”. I don’t agree with many things, but makes some points.
http://blog.15five.com/the-top-5-counter-intuitive-ways-to-rock-your-corporate-culture/

Our Dangerous Obsession With The MVP
We all praise the MVP, but we should take care not to fall in the IKEA effect: when you make something yourself, you value it way more than you should. The goal of the MVP is to bring in real customers to use your product. “You can’t build great products in the dark, without a well-defined customer. And you can’t develop the right product for your customer if you fall in love with a prototype that nobody wants to buy.”
http://techcrunch.com/2014/03/01/our-dangerous-obsession-with-the-mvp/

Programming – Not for the family guy/gal?

Disclaimer: as most non-technical posts in this blog, what follows are gut-feelings that transferred to writing. These are neither proven facts nor truths, so handle with care. I may be completely wrong in what I’m saying here :-)

Software development (a.k.a.Programming) is a skill that requires constant learning. Reading blogs, books, listening to podcasts, watching screencasts, and what not. If you stop learning you start to get behind, unless you have very specific knowledge that will be required in the long term (like being the only COBOL programmer in the country).

A new and very cool way to keep up with new technologies are meetups. A Meetup is a self organized group of people who get together to talk about a subject that interests them. In the greater Tel Aviv area (also known as Gush Dan) there is at least one metup every day. And regularly there are more than 2-3 (this Wednesday there are 5!). Meetups are also a great place to meet new people and get together with old friends you regularly don’t meet. There is only one catch – most meetups are after work hours, so that we don’t have to miss work to go to the meetup. Most of them start at about 6pm and end 8-9pm.

I am married. I have 4 kids. I like to be at home for dinner with my kids (well, most of the time). For me, this is a problem. I’m at a disadvantage. But that is life, isn’t it? But this is only the start…

Another way to learn and get involved in a community is to go to conferences, and like meetups, there are TONS of conferences, like mushrooms after rain. And here again, this means leaving the house, the kids, the family. But that is life, isn’t it?

OK, so I can handle it. And how about working in a cool start-up that works remotely? I will have all the time I need at home (since I’m working from home, right?). But wait… 4 times a year they meet at a remote location and “hang out” together for one week. Seems pretty fun, but I’m not sure the wife would like it that much… And what if I want to start my own startup? Most accelerator programs have a 3 month boot cam in  NY or SF. Not an easy thing to do in a house where both parents work.

So summing things up, doing tech is harder for the family guy/gal. While researching for this post, I found many articles on why the Startup culture is hard for women. But I digress – it is hard for family oriented humans, be there male of female.

What can we do about it? Well, having a disadvantage does not mean that you cannot win the race. It just means that you must work harder. And that’s what I’m doing.

Weekly Reading Material – 27/03/2014

Here are some interesting articles from my last week of internet reading. Enjoy.

How to be a sane programmer, The Stress Of Being A Computer Programmer Is Literally Driving Many Of Them Crazy, and I Knew a Programmer that Went Completely Insane
Three related posts about the programmer culture. Some say that a real programmer must code all day and night, with passion, and that someone that doesn’t go home and continue programming is not a real programmer. On the “imposter syndrome” and the “real programmer syndrome” and other goodies.

“[I knew a programmer who]  was one of the hardest workers I had seen in the industry. He would frequently stay after hours to work on projects; He was always available when management needed someone to rush a job out over the weekend…. His willingness to push himself to get a job done is what they liked about him. However, his productivity was not so great when he landed in a mental institution [my emphasis]”.

Food for thought.
http://www.nicholascloud.com/2014/03/how-to-be-a-sane-programmer/

http://www.businessinsider.com/syndromes-drive-coders-crazy-2014-3

http://startingdotneprogramming.blogspot.com/2013/04/i-knew-programmer-that-went-completely.html

The End of Agile: Death by Over-Simplification
Interesting analysis about the current state of Agile and why it is broken. I also think that Agile has gone too far and we need to find a better place in the middle where Agile and up-front design can co-exist.
http://effectivesoftwaredesign.com/2014/03/17/the-end-of-agile-death-by-over-simplification/

Beware the One-Person Team
“Many engineers and managers are familiar with the risks of large teams… unfortunately, managers and technical leads sometimes overcorrect for this problem. They attempt to maximize efficiency by staffing single-person projects”. But having only one person running a project has also many drawbacks (like the “bus factor”, which is the possibility of one of the team members being hit by a bus J. First time I’ve heard the term, and loved it).
http://www.theeffectiveengineer.com/blog/beware-the-one-person-team

Google Public DNS Server Traffic Hijacked and Redirected
Just a reminder that even the big and strong can fall to hacking. This is very serious.
http://freedomhacker.net/2014-03-google-public-dns-server-traffic-hijacked-and-redirected/#.Uyq-aYXEmGw

Automation is not about saving keystrokes

There are many posts out there calling us to automate everything. And some think that the main reason to automate a task is to save time. While I don’t completely disagree with this idea, I think this is not the main value of automation.

Let’s say for example you have a deployment process. You can write it down and repeat the process manually step by step every time you do it. If the process takes 5 minutes, and you automate it, you are saving 5 minutes every time you deploy. Let’s say you deploy once a day. This means you have saved 1825 minutes a year, which are 30.41 hours… basically about 1.2 days. But let’s say the manual process is long, taking 15, 20, even 30 minutes… now you are saving about 7.6 days in a whole year.

Not that much, right? And it is even less if you take into account that writing the automation script will probably take you at least 1-2 days, which in regular programmer time means about 1-2 weeks. And you also have to support the script, update it, re-test it… So are you really saving time?

The main value of automation is reducing mistakes

Assume in the same example above that you decided to continue performing the deployment process manually. On Friday afternoon someone finds a high-priority bug and management decides to fix it (and assume that it can be fixed in a short time). Everyone is on the effort and you fix the bug. Now you only need to deploy to production.

Remember, it’s Friday late afternoon, you planned to go out with your friends tonight.

So while following the manual deployment process, you skip one of the steps. Not on purpose (obviously :-)), but by mistake. Here’s what can happen:

  1. You accidentally delete all the customer database.
  2. You break the backup environment and after the deployment you see that the new version is not good, so you have to do a rollback… but you can’t

I’m sure you can think of more things that can go wrong. So you end up all night at work fixing the system, because you didn’t have automation.

So please, do automate your critical processes, not (only) to (may) save time, but also to minimize mistakes.

Weekly Reading Material – 20/03/2014

Here are some interesting articles from my last week of internet reading. Enjoy.

The Programmer Productivity Paradox
“If the average programmer writes about 50 lines of production code a day.  A 50,000 line program would take 1,000 man days to produce.  The 50,000 line listing can be entered by a programmer at about 1,000 lines a day or about 50 man days. So what the heck are the developers doing for the other 950 days?”
http://java.dzone.com/articles/programmer-productivity-0

So what is the Product Backlog?
Interesting analysis of what is this thing we call the product backlog. “I think that the product backlog main role in the project is to serve as an interface between the business facing aspect of the product AKA the Problem space and the technical sides AKA the Solution space”.
http://imistaken.blogspot.co.il/2014/03/so-what-is-product-backlog.html

Buy the Sandwich, Not the Meal
“If you don’t need it, then don’t buy it, don’t write it, don’t think about writing it. We’ve all heard it before, just need a reminder every once in a while. So just say no, do what you really need to do, and live a good life.”
http://blog.8thlight.com/dariusz-pasciak/2014/03/17/buy-the-sandwich-not-the-meal.html

3 Reasons to raise the bar for enterprise product MVPs
Interesting analysis of the difference between a consumer MVP and an enterprise MVP . “the MVP [for enterprise products] needs to be good enough that your customers and your channel see enough value from the first release that they’ll forgive the flaws”.
http://www.linkedin.com/today/post/article/20140301191926-9868792-3-reasons-to-raise-the-bar-for-enterprise-product-mvps

Two tales of great customer service

Good service creates happy customers, and happy customers keep coming back to spend more money. Here are two examples of GREAT customer service that I experienced last week.

Is your cat hungry?

I have two cats at home, and like all members of the animal kingdom, they have a tendency to eat their food and finish 2-3 bags of it every month (what chutzpa!). I used to go and buy them food from the local pet shop until they introduced their delivery service, so I only had to call them, ask for the food and it was delivered to my door the next day. But sometimes I forgot to call them so I would have to go late at night to the supermarket and buy a small bag of food for 10 times the price I usually pay for it.

But last week the woman from the pet shop called me and asked me if I needed food delivered to my home. The call was done at 7pm, so I was home and able to check if I really needed the food. And yes, I had only a couple of days left of food. I asked her how she knew and she told me that she follows the orders that every customer does and learns the pattern (no idea if manually or using some kind of software), so she knew my cat food was about finished. How cool! Now I don’t even have to remember to order the food!

Are you missing a piece?

If you follow my blog, you probably know that I love Lego and I have partially succeeded in passing this love to my kids. On my last business trip I bought a Lego garbage truck for my son, and after he sat down and built it (alone!) we were missing the stickers that should come with the set.

Having read that Lego has great customer service, I searched and found that they have a Bricks & Pieces page where you can ask for missing pieces and they are sent to your home. So I went and requested the missing stickers and they are now in the mail. I really hope to get them soon

Conclusion

I will definitely keep on buying from my local pet shop, even if it is more expensive than other places, because they are saving me mental effort. And Lego… well, I would still buy Lego even if their customer service was awful because their products are very good. But now I like them better :-).

So, how are you making your customer happier today?