On hackability

By definition of free software, you have right to study and modify it, you have right to “hack it”. How much effort will it take you to actually make changes depends on many factors – your experience in programming, problem the program is solving, and, most importantly, how program was designed and implemented.

The harder it is to make a change to a program, the less amount of people can do it.

Another facet of hackability is what happens when new version of program is released. Will your changes apply cleanly on new version, or will you have to hack things again? The harder it is apply changes on new version, the less people will undertake this task.

The biggest hammer the free software society have is the right to fork. If maintainer of a program does something unreasonable, there is always a threat, that other developers will continue development by themself. It is considered bad thing to happen, as it splits our forces, and is avoided as much, as possible.

But when program is not hackable, when there is no fork threat, maintainers of programs can enjoy all benefits of being part of free software community, without being responsible to community.

Probably the most prominent examples are “modern” web-browsers – Firefox and Chromium – and operating system for mobile devices Android. These programs have misfeatures, that leak user information; not for gain of user, but for gain of program developer. It sounds like proprietary software, but it is free software, simply most of us do not have enough of computer power to build these programs and enough of time to hack on them.

This is why hackability of a program is as important, as legal right to execute, study, modify and distribute a program.

And we have problem. Creating elegant, hackable program takes skill, maybe even genius, while creating huge amounts of messy code to be understood only by those, who work with it fulltime, is easy and have all properties “effective corporate managers” infatuated with.

If we care about our freedom, if we want to have free software that is effectively free, we must care about hackability and favor hackable programs.