I now feel I'm confident enough to modify the source code of the software I use everyday, so I'd like the ability to do so. Put simply, I want a daily-use desktop system (linux or BSD) on which I can instantaneously modify some source code to fix bugs or add new features if I want to. I need it to be stable --granted that my modifications might break something--, upgradable, and in general easy to use, with the exception that I'd need to compile stuff.
As I feel comfortable using Debian, there's the option of downloading the source package for that specific software I want to modify, which puts you in conflict with already installed packages. BSD ports and Gentoo's portage allow this. They allow you to build a system from scratch, you actually use upstream code with some patches to adapt it to your system, and it's easy to hack something, recompile it and make install.
Then there's the issue of source code clarity. Here's mkdir.c:
* Linux http://git.savannah.gnu.org/cgit/coreutils.git/tree/src/mkdir.c
* OpenBSD http://www.openbsd.org/cgi-bin/cvsweb/src/bin/mkdir/mkdir.c?rev=1.24;content-type=text%2Fx-cvsweb-markup
* Plan9base (just for fun) http://git.suckless.org/9base/tree/mkdir/mkdir.c
Up to this point, it seems that the only feasible choices are LFS (too complicated to install), Gentoo (GNU code is kind of bloated), and then the BSDs.
Of those, Open's documentation is excellent, and Net's code is simple and clear. Both would work. However, I read OpenBSD's documentation, and it states explicitly that "you probably want to use precompiled packages". I'm unsure if that is to discourage newbies or honest advice.
I want to be able to modify the desktop software I'm running, and I'd like some advice from fellow readers who might already have a setup like this one. My biggest fears are upgrades, new upstream versions with new patches on software I've modified, or new system releases. Is this unmaintainable on the long run?
Thanks!