Comment

Comment by kakwa_

Software is also a really immature field. Software development is not an industrial process, it's more like craftsmanship. Part of it comes from the fact the field is relatively young, but also because in software, it is extremely easy to modify to suit new needs and to fix introduced mistakes which results in an inherent instability of design and no strong patterns.

It's getting better, but it's still present.

For example, nearly each source tree I've seen has its own idiosyncrasies in term of organization and layout.

Are the tests in ./test/ or ./tests/? how do I run the tests? where do you put the headers? ./inc/? ./include? what are the options available at compile time? how are they exposed? what are the install targets? does it support the usual variables (looking at you DESTDIR)?

Granted more modern languages tend to be more normalized than the previous examples which are valid for C/C++ mainly. But these questions still applies. For example, the Go projects I've seen tend to vary wildly in term of compile tool chain, some have nothing, just run go build, other have a ./build.sh and the better ones have a basic Makefile which is generally not so great (no variable present to override the path to the go binary or set some compilation variables, no proper install target, very weird handling of the ./vendor/ directory in some cases).

parent kakwa_ 7 years ago

Discussion

Live from the official Hacker News API

A modern reader for Hacker News · SvelteKit + Skeleton