Skip to content

Latest commit

 

History

History
37 lines (19 loc) · 3.92 KB

2-agile-and-open-source.md

File metadata and controls

37 lines (19 loc) · 3.92 KB

Why open source is an agile method

Free Software Foundation will usually stress how important it is that software is free and rightly so. It is indeed way more important how a program can be used than how it was originally made.

The argument is, when talking about open source, you are only talking about software development process and not about the outcome. The outcome is what allows NSA to spy you and Facebook to sell your data to whoever. No matter if the development process was "open source" or not.

But the development process actually matters as well. Today I want to talk just about that. I want to specifically talk about software development methodology.

In my opinion free software developers found an agile software development method already at 70s. And when Linux kernel was created, Torvalds handed code to other people in very early stages of the project. Long before Linux kernel was actually usable, you could compile and use it.

That allowed for a tight feedback loop, something that agile development proponents many times stress is important. You don't write your code in vacuum. You write it to the users, and users tell you what they like before you have the code ready.

Open source projects have a lot of agility

Another agile principle is developing good enough code. The idea here is you will only add features that are needed. As soon as people find your program useful, you release it and call it a day. Maybe the project then finishes and no more features creep into the project (yeah, sure...)

Does this sound familiar? I know several free software projects that were in a version zero-dot-something for a better part of a decade. I think DosBOX still hasn't released a 1.0 version! That means their code is good enough to use. No one cares they are planning to add something. It is already useful in its present state.

Agility also means ability to change when requirements change or situation changes. Open source development team can alter its size and structure when needed. Communication structure is often pretty flexible one, when discussions have been had in mailing lists, forums or chats.

Proprietary agility is missing features

There are many closed source, proprietary, non-free software projects that are done in "agile" way. I think all those projects lack certain benefits that the open source development method gives. To be truly agile you must be open.

First and foremost, you are connected to a free software ecosystem. It's no small thing that all (or at least most of) your tools are non-proprietary. Non-proprietary tools give you more freedom to do whatever you want as a developer. Open tool doesn't force you to do anything. Think about proprietary IDE:s, libraries and platforms. It's their way or no way.

I also do believe proprietaryness allows you to have shitty stuff. In a free software project people notice these things. It's not just backdoors and other nasty stuff. It's also about your cumbersome configuration file format, your commit message style... Agile development means creating quality software. Quality software does not include shitty stuff.

We should be proud

What is my point here? Well, I just think free software is tightly coupled with agile way of thinking. I personally believe agile method is the best method to create a good piece of software. Free software is sometimes great in quality because it was made in an agile way.

Linus Torvalds, Richard Stallman, Dennis Ritchie and numerous others found an agile development method by accident and started to use that before anyone even knew what agile was. Free software community has some good, agile DNA on us. We should be proud about that. And release early, release often.

Notice I didn't say a word about JIRA or estimation. That's because this text was about agility ;)

By the way, I'm creating my own photo library management tool. It's just a hobby, won't be big and professional :) Check it out!