[CMake] OO and/or IDEs

2007-12-17 Thread Brandon Van Every
On Dec 16, 2007 2:55 PM, Brandon Van Every <[EMAIL PROTECTED]> wrote:
> On Dec 16, 2007 1:54 PM, Alexander Neundorf <[EMAIL PROTECTED]> wrote:
> > On Sunday 16 December 2007, Brandon Van Every wrote:
> > >
> > > Meanwhile I just keep expanding my search radius, asking various build
> > > system communities "the OO question."
> >
> > What's the purpose ?
> > CMake is kind-of going OO.
>
> The purpose is to understand what benefits OO has, if any, for build
> systems.  Then to understand whether Lua, Python, or Ruby offer those
> benefits.  Then to understand whether CMake "kinda implementing
> something like OO" also provides those benefits.  Possible futures for
> build systems in general:
>
> 1) OO approaches really don't matter.  "Make"-style tools were the
> right way to do things all along.  In industrial practice, nobody ever
> moves away from Make, because the industrial continuity of Make-style
> development is paramount over any marginal benefit that OO provides.
>
> 2) OO approaches do prove to matter in some arenas.  Perhaps
> integration with IDEs or XML or some such, as the Waf author seems to
> think?  Or whatever.  Make-style systems and OO systems exist side by
> side, each in their own areas of greatest applicability.
>
> 3) OO approaches prove to matter greatly as software reaches a certain
> level of complexity.  Industry moves en masse to OO build systems,
> retiring their 1990s legacy Make systems.
>
> Which future do you think it will be?  If you assume (1), then in 10
> years you could get left behind.  So my goal is not to assume, but to
> go out there and understand.  Alternately, if (1) really is the
> future, we can learn how to make CMake be the best possible (1).  We
> should not, however, assume that we're great and that everyone who's
> trying something else is dumb.

Possibility (4) has occurred to me.  The OO question, and the somewhat
related "syntax nicety / maturity" question, may not be nearly as
important as supporting the correct IDEs well.  For instance, Eclipse.
 In that world view, the choice of extension language(s) is a
political decision, not a technical one.

When I peruse http://www.ohloh.net/tags/make I notice that most of the
Popular! make-like tools have a particular implementation language
associated with them.  If you want a make written in Java, you use
Ant.  If you want it in Ruby, you use Rake.  If you want it in C/C++,
you use either CMake or GNU Autoconf + GMake.  And so on for PHP,
Python, etc.  For any given implementation language, there's not a lot
of variety.

Maven 2 seems to have deliberately excluded itself from the "make-like
tool" category, so that will be the subject of another post.

Anyways; political decisions for supporting Eclipse.  How do you avoid
offending a Java programmer?  Well, if you're not going to write
anything in Java, perhaps there is no way.  Perhaps instead you cast
your lot with the C/C++ Eclipse users and support it that way.  Which
makes scripting languages moot / orthogonal / detrimental?  Or maybe
you look to see whether Python, Ruby, or Lua is winning the Eclipse
support wars.  If none of those are winning, perhaps you wait for a
winner to emerge before committing.  It doesn't always pay to be in
the vanguard of capabilities.


Cheers,
Brandon Van Every
___
CMake mailing list
CMake@cmake.org
http://www.cmake.org/mailman/listinfo/cmake


Re: [CMake] OO and/or IDEs

2007-12-17 Thread Alan W. Irwin

On 2007-12-17 20:30-0500 Brandon Van Every wrote:


When I peruse http://www.ohloh.net/tags/make I notice that most of the
Popular! make-like tools have a particular implementation language
associated with them.  If you want a make written in Java, you use
Ant.  If you want it in Ruby, you use Rake.  If you want it in C/C++,
you use either CMake or GNU Autoconf + GMake.


Correction about Autoconf with some additional comments about autotools.

Autoconf requires m4 and shell scripting (both of which are exposed to the
user), automake requires perl (hidden from the user with the public
interface a unique extension of make), libtool is implemented as a giant
(and slow!) shell script with a small number of command-line options for
that shell script.  autotools tries to use the lowest common
denominator of all make systems so it will work on any Unix platform rather
than the unique capabilities of native make systems such as GNU make.  In
sum, as virtually everyone on the Linux side of things realizes by now,
autotools is a technical mess.

BUT autotools were first to market in the Linux world so there are still a
large number of Linux projects that continue with autotools. However, my
guess based on obvious technical superiority, the possibility of porting to
windows (not all Linux projects are like Chicken!), and the huge
advertisement the KDE adoption gave to CMake is that the current CMake share
of Linux projects is strongly growing at the expense of autotools.
Furthermore, it is obvious from traffic on this list that a large and
growing number of windows projects are beginning to use CMake as well.

Brandon, because of this strong growth, I disagree with your emphasis on the
importance of strategic decisions now for CMake.  Those were done a long
time ago, and people and projects are strongly voting with their feet
despite (and this is an extremely important consideration) virtually
everybody absolutely hating to change build systems.  So long as the CMake
developers steer a steady course and don't shoot themselves in the foot with
some stupid decision, their strong growth will continue, and as a result I
think they we be _the_ major build system in the decades to come.

Thus, my own feeling is CMake developers and users can quit worrying about
market share since the future is bright indeed on that score almost
regardless of what they do.  Instead, they should totally concentrate on
technical improvements that don't disturb things too much and which make
CMake build systems simply easier to design and maintain. I am talking about
such things as cross-compiling, module improvements (including
standardization), scoping, improved regex, and even Boolean precedence.  The
first three are already in the CVS version of CMake and the rest have been
recently discussed positively on list with at least a chance to get into
CVS.

In sum, the CMake developers have something they can be proud of, that pride
will continue to drive them to make some modest improvements like listed
above, and so long as they don't make any irrevocable mistakes in such
changes their current large growth rate assures them of world domination
for both Linux and windows build systems.  :-)

Just my $0.02.

Alan
__
Alan W. Irwin

Astronomical research affiliation with Department of Physics and Astronomy,
University of Victoria (astrowww.phys.uvic.ca).

Programming affiliations with the FreeEOS equation-of-state implementation
for stellar interiors (freeeos.sf.net); PLplot scientific plotting software
package (plplot.org); the libLASi project (unifont.org/lasi); the Loads of
Linux Links project (loll.sf.net); and the Linux Brochure Project
(lbproject.sf.net).
__

Linux-powered Science
__
___
CMake mailing list
CMake@cmake.org
http://www.cmake.org/mailman/listinfo/cmake


Re: [CMake] OO and/or IDEs

2007-12-17 Thread Brandon Van Every
On Dec 17, 2007 10:35 PM, Alan W. Irwin <[EMAIL PROTECTED]> wrote:
>
> BUT autotools were first to market in the Linux world so there are still a
> large number of Linux projects that continue with autotools. However, my
> guess based on obvious technical superiority, the possibility of porting to
> windows (not all Linux projects are like Chicken!), and the huge
> advertisement the KDE adoption gave to CMake is that the current CMake share
> of Linux projects is strongly growing at the expense of autotools.

Plus, if I had a better pattern matching technology and another 6
months of either willpower or funding, I could implement completely
automagical conversion from GNU Autoconf + GMake to CMake.  Including
the nasty awk + grep + egrep + sed tools that Unixen like to use.
Haven't decided if I really want to take it on though.  I need the
better pattern matching technology.

> Brandon, because of this strong growth, I disagree with your emphasis on the
> importance of strategic decisions now for CMake.  Those were done a long
> time ago, and people and projects are strongly voting with their feet
> despite (and this is an extremely important consideration) virtually
> everybody absolutely hating to change build systems.  So long as the CMake
> developers steer a steady course and don't shoot themselves in the foot with
> some stupid decision, their strong growth will continue, and as a result I
> think they we be _the_ major build system in the decades to come.

I'm not that bullish.  I live in a Windows + console game development
universe where plenty of people try out CMake and tell me it sucks.
Not necessarily for well-measured reasons, but initial impressions do
count.  A lot of these people end up rolling their own because
custom-built NIH is endemic to the game industry.  I think it has to
do with game projects not lasting long enough to be reused.  There's a
huge burnout rate for game developers, with entire programming and art
teams getting swapped mid-project.  So nobody knows what's going on,
nobody likes what was done before, and projects tend to be rewritten
from scratch.

I also don't see how you could read all those articles I just posted,
and assume that CMake is going to sweep the table in decades to come.
A far more likely scenario is some Java or C# technology spills over
into the C/C++ universe and becomes a checkbox item.

> Thus, my own feeling is CMake developers and users can quit worrying about
> market share since the future is bright indeed on that score almost
> regardless of what they do.  Instead, they should totally concentrate on
> technical improvements that don't disturb things too much and which make
> CMake build systems simply easier to design and maintain.

I guess you have no fear of a Disruptive Technology biting you in the ass.
http://en.wikipedia.org/wiki/Disruptive_technology
I prefer to keep my eye on the 8-ball.
http://web.ics.purdue.edu/~ssanty/cgi-bin/eightball.cgi


Cheers,
Brandon Van Every
___
CMake mailing list
CMake@cmake.org
http://www.cmake.org/mailman/listinfo/cmake


Re: [CMake] OO and/or IDEs

2007-12-17 Thread Brandon Van Every
On Dec 17, 2007 11:02 PM, Brandon Van Every <[EMAIL PROTECTED]> wrote:
>
> I guess you have no fear of a Disruptive Technology biting you in the ass.
> http://en.wikipedia.org/wiki/Disruptive_technology
> I prefer to keep my eye on the 8-ball.
> http://web.ics.purdue.edu/~ssanty/cgi-bin/eightball.cgi

Related to "Disruptive Technology" is Kuhn's concept of a "Paradigm
Shift."  http://en.wikipedia.org/wiki/Paradigm_shift  I find the
following passage compelling with respect to "young bucks," who
haven't necessarily grown up with "crappy" make tools, plain C, or
even C++.

"Sometimes the convincing force is just time itself and the human toll
it takes, Kuhn said, using a quote from Max Planck: "a new scientific
truth does not triumph by convincing its opponents and making them see
the light, but rather because its opponents eventually die, and a new
generation grows up that is familiar with it.""

Technology generations in computerdom are capable of being exceedingly
long or exceedingly short.  It really depends.


Cheers,
Brandon Van Every
___
CMake mailing list
CMake@cmake.org
http://www.cmake.org/mailman/listinfo/cmake


Re: [CMake] OO and/or IDEs

2007-12-17 Thread Alan W. Irwin

On 2007-12-17 23:02-0500 Brandon Van Every wrote:


I guess you have no fear of a Disruptive Technology biting you in the ass.


That is correct.  Disruptive technology by definition is overwhelmingly
superior, and I like such technology and don't fear it in the least.  Also,
I am comfortable with change so therefore I tend to be an early adopter of
disruptive technology. But life is short so I don't adopt new technology
unless there is a real and overwhelming case (not just marketspeak) that it
is _much_ better than what I am using. For me, CMake was disruptive
technology (overwhelmingly superior) compared to autotools, and therefore it
was a no-brainer decision for me because of my comfort with change.  If/when
I adopt my next build system it must be similarly overwhelmingly superior to
CMake.  But right now, I am pretty satisfied with CMake and cannot imagine
when the next build-system revolution will strike.  Some here have guessed
three years, but my own feeling is it will be _much_ longer.

Anyhow, changing your strategy to deal with disruptive technological changes
is a waste of time at best; by definition disruptive technology changes are
extremely hard to predict and therefore there is no change in strategy that
will stop them.

OTOH, discussing possible incremental changes to CMake such as improved
regex is well worthwhile because of better service to users and the pride
that goes with that. But I don't think such changes are going to affect when
the CMake tipping point occurs.  I think that tipping point has already
happened based on the rate of CMake adoption in a software area (build
systems) where everybody ordinarily dislikes change.

Alan

__

Alan W. Irwin

Astronomical research affiliation with Department of Physics and Astronomy,
University of Victoria (astrowww.phys.uvic.ca).

Programming affiliations with the FreeEOS equation-of-state implementation
for stellar interiors (freeeos.sf.net); PLplot scientific plotting software
package (plplot.org); the libLASi project (unifont.org/lasi); the Loads of
Linux Links project (loll.sf.net); and the Linux Brochure Project
(lbproject.sf.net).
__

Linux-powered Science
__
___
CMake mailing list
CMake@cmake.org
http://www.cmake.org/mailman/listinfo/cmake


Re: [CMake] OO and/or IDEs

2007-12-17 Thread Brandon Van Every
On Dec 17, 2007 10:35 PM, Alan W. Irwin <[EMAIL PROTECTED]> wrote:
> people and projects are strongly voting with their feet
> despite (and this is an extremely important consideration) virtually
> everybody absolutely hating to change build systems.

Here, I think it's more important to concentrate on the lifecycle of
build systems, rather than people's emotions about them.  The vast
majority of software developers don't like build systems no matter
what stage of the lifecycle they're at.  Most engineers want the build
to go away.  They don't think it's real code, they think it's pure
overhead.  They resent having to maintain it.  Only when the
complexity of their business gets to a certain point, and the
inevitable relationship between their build system and their
profitability emerges, do they grudgingly take steps to address it.
Then after cutting off their fingers some more with half-measures,
they grudgingly hire a dedicated build engineer.

If a software project continues to grow in complexity and
requirements, the build dies.  Then there's a (forced) opportunity to
replace it with something better.  As builds die, engineers look at
the available products and decide what the next build is going to be.
They may choose something incrementally conservative, i.e. CMake over
GNU Automake, which are broadly of the same style.  Or they may choose
something "apparently cutting edge," if they think it may give them a
competitive advantage.  Or if the risk is manageable, i.e. they can
afford to change their minds again, if the new build doesn't work out.

I don't take it as a given that CMake will inherit all GNU Autoconf /
GMake projects.  Especially not indefinitely, as the next 10 years
unfold.  It's important to look at competitors and determine what
engineers think is attractive in a build tool.


Cheers,
Brandon Van Every
___
CMake mailing list
CMake@cmake.org
http://www.cmake.org/mailman/listinfo/cmake


Re: [CMake] OO and/or IDEs

2007-12-17 Thread Brandon Van Every
On Dec 17, 2007 11:51 PM, Alan W. Irwin <[EMAIL PROTECTED]> wrote:
> On 2007-12-17 23:02-0500 Brandon Van Every wrote:
>
> > I guess you have no fear of a Disruptive Technology biting you in the ass.
>
> That is correct.  Disruptive technology by definition is overwhelmingly
> superior,

I'm not sure you read the Wikipedia link I provided.  See the
description of "low-end disruption."  That corresponds to all those
guys out there rolling up things like Waf and Premake.  Things we
laugh at now, but may not be laughing at later.  Some of those low-end
things like JRake are even getting traction.  There's a constellation
of blog entries about them.  It performs significant work despite not
having 51 person-years into it.

> But right now, I am pretty satisfied with CMake and cannot imagine
> when the next build-system revolution will strike.

Whereas I can, and have been providing you with articles about it from
the Java universe.

> Anyhow, changing your strategy to deal with disruptive technological changes
> is a waste of time at best; by definition disruptive technology changes are
> extremely hard to predict

They're even harder to predict if you're unwilling to pay attention to
competitors and notice the facts on the ground.

> OTOH, discussing possible incremental changes to CMake such as improved
> regex is well worthwhile because of better service to users

Not much to discuss.  It's already to the point of action.  :-)  I
don't have anything against "low hanging fruit."  Despite Bill's
misgivings about CMake "competing with Python / Ruby / Perl," beefing
up CMake with PCRE and a few more string processing routines is an
obvious and easy improvement to the product.


Cheers,
Brandon Van Every
___
CMake mailing list
CMake@cmake.org
http://www.cmake.org/mailman/listinfo/cmake


Re: [CMake] OO and/or IDEs

2007-12-17 Thread Brandon Van Every
On Dec 18, 2007 12:42 AM, Brandon Van Every <[EMAIL PROTECTED]> wrote:
> Some of those low-end
> things like JRake are even getting traction.  There's a constellation
> of blog entries about them.  It performs significant work despite not
> having 51 person-years into it.

It occurs to me that Java and C# do not have the same portability
problems as C/C++.  Sure, Java has some, but any Java-oriented build
system can rely on Java being nearly the same on all platforms.
Meanwhile, C# is primarily a Windows thing.  Hmm, what aspects of
target OSes do Java and C# fail to pave over?  If CMake handles those
better than competing build systems


Cheers,
Brandon Van Every
___
CMake mailing list
CMake@cmake.org
http://www.cmake.org/mailman/listinfo/cmake


Re: [CMake] OO and/or IDEs

2007-12-18 Thread Pau Garcia i Quiles

Quoting Brandon Van Every <[EMAIL PROTECTED]>:


beefing
up CMake with PCRE and a few more string processing routines is an
obvious and easy improvement to the product.


I'm working on that, by the way.

PCREs have been actually easy to implement, including your wishes  
about outputting the matches directly to variables instead of using  
REGEX_REPLACE (PCRE_REPLACE in our case), etc.


I also took a look at the IF command implementation and I'm going to  
implement PCREs there, too: IF(variable PCRE_MATCHES pcre_regex) /  
IF(string PCRE_MATCHES pcre_regex).


The most difficult part is understanding the really odd (at least to  
me) behavior of REGEX_MATCH and REGEX_REPLACE in current CMake (I'd  
like PCRE to mimic as much as possible).


There is one thing which discourages me, though: nobody from Kitware  
commented on the interest of PCREs, what the "deadline" for PCREs to  
be included in CMake 2.6.0 would be, nothing.


--
Pau Garcia i Quiles
http://www.elpauer.org
(Due to my workload, I may need 10 days to answer)

___
CMake mailing list
CMake@cmake.org
http://www.cmake.org/mailman/listinfo/cmake


Re: [CMake] OO and/or IDEs

2007-12-18 Thread Alexander Neundorf
On Tuesday 18 December 2007, Pau Garcia i Quiles wrote:
...
> There is one thing which discourages me, though: nobody from Kitware
> commented on the interest of PCREs, what the "deadline" for PCREs to
> be included in CMake 2.6.0 would be, nothing.

I think one requirement would be that the pcre library is added under 
CMake/Utilities/ and converted to build with cmake. Kitware has the policy to 
have no extra dependencies for building cmake except a C++ compiler with STL.
(ccmake etc. are optional).
It's BSD licensed, that's good.

Alex
___
CMake mailing list
CMake@cmake.org
http://www.cmake.org/mailman/listinfo/cmake


Re: [CMake] OO and/or IDEs

2007-12-18 Thread Pau Garcia i Quiles

Quoting Alexander Neundorf <[EMAIL PROTECTED]>:


On Tuesday 18 December 2007, Pau Garcia i Quiles wrote:
...

There is one thing which discourages me, though: nobody from Kitware
commented on the interest of PCREs, what the "deadline" for PCREs to
be included in CMake 2.6.0 would be, nothing.


I think one requirement would be that the pcre library is added under
CMake/Utilities/ and converted to build with cmake. Kitware has the policy to
have no extra dependencies for building cmake except a C++ compiler with STL.
(ccmake etc. are optional).
It's BSD licensed, that's good.


I already have PCRE 7.4 under CMake/Utilities here and it builds using  
CMake. It was cmake-ified by Christian Ehrlicher from KDE4 on Windows  
fame.


--
Pau Garcia i Quiles
http://www.elpauer.org
(Due to my workload, I may need 10 days to answer)

___
CMake mailing list
CMake@cmake.org
http://www.cmake.org/mailman/listinfo/cmake