Subject: Re: [Boost-build] bjam 4.0.. in C++
From: Gevorg Voskanyan (v_gevorg_at_[hidden])
Date: 2010-05-24 03:32:12
Dean Michael Berris wrote:
> Robert Ramey wrote:
> > a) Re-define your
> > task
> > Think of bjam as a general purpose make replacement
> > rather than the "official boost build tool". I know you think you think
> > that way
> > but I don't see it. I expect to see a manual/tutorial with
> > examples which
> > walks
> > one step by step through examples of
> > increasing complexity. The manual is
> > part of the
> > program.
> +1 -- I would really like to see bjam being treated as something
> decoupled from Boost. If changing the name is one way of doing it,
> then I would say we should be open to doing that too if not now then
> in the near future.
FWIW, as a user of both Boost C++ Libraries and Boost.Build/bjam, that is how I think of Boost.Build - "as a general purpose portable make replacement" and not just the tool for building Boost. I don't know how typical my story is among current Boost.Build users, but in my case I was not thinking that way from the very beginning, when I first learned about Boost C++ Libraries and www.boost.org. I didn't even know there was a Boost.Build, I only knew about some executable called bjam that you either download a prebuilt binary for or build yourself from tools/jam/src. And it was my impression that bjam is just a tool you need in order to build Boost, to be able to use non-header-only libraries in e.g. VS projects. And I continued living under that impression for 1.5 years or so, until some day I asked myself a question - "How do I make my projects buildable for various platforms and compilers, without needing to provide specific build files for each?" Then
it occurred to me - "Wait, Boost itself should have faced that problem in the beginning, so it must have solved that somehow already!" That way I discovered Boost.Build, read its user manual and documentation, and never looked back :)
The only thing that I regret for is not being introduced to it sooner than discovering it myself somewhat by accident happened. I would have really liked to be introduced to Boost.Build at the same time I was introduced to Boost C++ Libraries. And finally what I'm driving at by this is:
Boost.Build needs more advertisement!
For example, right in the homepage of Boost, a paragraph something like this could be inserted:
"Boost C++ Libraries are powered by Boost.Build build system - a general purpose portable make replacement. You can use it to build your own projects as well, taking advantage of its high-level expressive build specification language to succinctly specify your project's build properties, and use it to build your projects on any platform, with any compiler. It is licensed under the same license as Boost C++ Libraries - the <link>Boost Software License</link>, encouraging both commercial and non-commercial use. In fact, quite a number of companies use Boost.Build as their build system of choice for their products, and quite a number of open source projects use it too as their build system ( Note: ASL, dlib, mythos, cppgui and of course, Boost itself - these are some off the top of my head, pick whatever list you find appropriate, or better, create a page "Who's using Boost.Build" and link to it from here). Learn more <link>here</link>!"
The last link is to http://www.boost.org/boost-build2/index.html, which BTW could benefit from some effort to make it look more sexy, as it happened to Boost homepage circa Boost 1.34 release, IIRC.
The reason to do this is that Boost.Build is really cool, but not a lot of people know it exists and even less people know it's so good. That's why it needs to be more exposed to the public.
> I like bjam and I think fixing the performance
> issues would really give it a leg up on the other build systems and
> tools out there
Agreed 100%. Performance is the only aspect I could wish bjam/Boost.Build were better in. Perhaps something is wrong with me, but I am actually surprised people say they find the documentation hard and not very useful. I never had any serious issues with the documentation - I just read it almost in its entirety and started to use it for my projects with no major problems. Maybe that's because I first printed userman.pdf and read it like a book, and then did some browsing of online documentation to strengthen my understanding of it. Only when I started to play doing very complicated and unusual things with it, I found the documentation lacking, but I managed to overcome it - and if you ask me, I don't think such tricks and hacks really need to be explained in a user documentation.
But performance is rather an issue for existing Boost.Build users, who already know what is good about Boost.Build and use it in day-to-day basis. I personally find performance the worst offender when selling Boost.Build to other guys.
Just my 2c on the matter
Thanks for reading up to here and sorry for the long post!
Boost-Build list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk