I never heard about the "suckless" philosophy and I'm not sure if I understand what's really about, after reading their manifesto. I have to spend more time there, to get a better idea. I was thinking about what to answer to your comments about Linux and then:
PeterX wrote:EDIT: vvaltchev's kernel (Tilck) comes close to my ideal kernel
I.am.shocked. I never expected that anybody here would say something like that. It seemed to me that everybody here believes their kernel is the best in the universe and that anything else sucks including Linux, Windows, MacOS X, etc. Mine, received just one comment in the announcement, so I got the impression that, at least in this community, people are not interested in it. I don't know what to say other than a big
THANK YOU, SO MUCH.
Said that, positive emotions apart, maybe it would be interesting to go deeper and try to understand our philosophy towards software development. Which trade-offs are we happy to do when writing code, which we aren't. At the end, in theory, you and I should end up with similar views, because otherwise why a project of mine be "close to an ideal" for you?
I'm not prepared to formally state my value-system about software now, but I can start saying that I oscillate between the "MIT approach" and the "New Jersey approach". Deep inside, I'm probably more a "New Jersey", but sometimes that leads to me places that I don't like enough so I escape to the "MIT approach" and the cycle repeats. I'm incredibly good at making people following either of those two approaches to HATE ME. I don't know how I do that.
Concrete examples? I hate
over-engineering. I hate
code bloat. I'm careful about adding
dependencies to my projects: the less dependencies, the better. But, when a dependency (whether it's a tool or a library, it doesn't matter) adds a great amount of value to my project, I'm certainly fine with adding it. I'm for
"code evolution" rather than the "design it once, never touch it again" approach, because the latter doesn't work as it's supposed to, take an incredible amount of time and leads to over-engineering. (Still, that doesn't mean that I'm fine with the first thing that comes to my mind, either.) I like A LOT having a
consistent interface, but I'm ready to do break that in order to improve the performance or to make some code-paths much simpler. Also, when it does make a difference, I prefer to design the
software for the machines, trying to make it as clear as possible for the humans (I'm talking about the source code), instead of doing the opposite: create an object-oriented hierarchy that maps the "real-world", but that's inefficient for the machines.
I like software that has virtually
no latency (on the human scale). E.g. I get frustrated when I click on a menu and it takes 200-300 ms to load. It MUST BE much faster than the human perception. I hate when software starts "half-loaded" and then, whatever you do, you have to wait because of the lazy-loading. I hate when anything lags, in general. I'm a huge
fan of user experience as an ultimate "force" above any software trade-off. OK, I think it's enough, for the moment.
In this article on my blog:
https://vladonsoftware.wordpress.com/20 ... e-mindset/
I believe you could understand more about my philosophy, while (hopefully) having some fun. (I have funnier articles too.)
What do you believe? Do you share any the values/principle I just enlisted? Which ones? Also, would you be so kind to try explaining a bit more why you like my project so much? What's the thing that most impressed you?