CMake Proposal

simo idra at samba.org
Wed Feb 24 18:25:41 MST 2010


On Thu, 2010-02-25 at 11:40 +1100, tridge at samba.org wrote:
> I also think calling cmake 'standard' is a bit of a stretch.

Oh come on, you know I did not mean that cmake is standard, I wasn't
referring to cmake at all, I was saying that I would like to make things
in a more standardized way whetehr that is the cmake way, the waf way or
the autotools way.

<rant ahead be warned!>
The problem I have with the current build system is that it is too
smart, we have created a mess that encouraged circular dependencies and
broken interfaces all over. We still pay the price of the mega proto.h
file in samba3 land, even if a lot of people are begging us to reduce
the size of the binaries. The problem is so bad that some still try to
use samba 2.2.x because of the size!!

It is extremely difficult to solve the problem because with
auto-generated headers we encouraged a savage spaghetti dependency
coding style, and samba4 got simply worse with the added components
there.

This huge code complexity also discourages new developers from joining.
In projects where you have clearly defined modules with stable
interfaces people can easily come in and improve a single module in
isolation without interfering with the rest of the development and with
a lot more gratification given you can reach small goals much more
easily. Having stable libraries also encourage other projects to use
them increasing the pool of people interested in finding/fixing bugs.

So in the end, whatever tool we choose, let's try to be a bit dumber
maybe but make the project digestible by others, and maintainable by
others. Unmaintainable code is much more difficult to adopt, not just
for users but also for OEMs, especially for OEMs. They have to take the
risk of maintaining the code themselves, the more we make that
difficult, the less people is willing to consider it.
</rant>

Just to make it clear, I am not accusing anyone, I am guilty as anyone
else for not having tried harder. I am also *not* saying that CMake is
going to magically resolve this problem or that the current or another
build system can't be used to do it. I am just pointing out a problem we
have, and I hoped that putting our hands and heads on the build system
could be a good opportunity to tray and fix some of these problems at
the same time, whatever the build system used.

Simo.

-- 
Simo Sorce
Samba Team GPL Compliance Officer <simo at samba.org>
Principal Software Engineer at Red Hat, Inc. <simo at redhat.com>



More information about the samba-technical mailing list