The role of Tango
David B. Held
dheld at codelogicconsulting.com
Sun Nov 18 19:35:58 PST 2007
Kris wrote:
> "renoX" <renosky at free.fr> wrote
>
>> when contributors add new code in a project, reusing the same style as the
>> other code is a sign of professional/mature programmers (ok, amateurish
>> was too strong sorry)
>
> Sure, RenoX. I agree completely. But the thing is, Tango was never intended
> to be a contribution to any other library. It is not a part of phobos. In
> fact, phobos is currently being reworked to have parts of Tango instead. So
> your point simply doesn't apply. You see the distinction? The outcome is
> that you're calling people "amateurish" and so on for no valid reason
> whatsoever.
> [...]
I think it's always worthwhile to look back on the work of others who
have gone before. If I were to compare Tango to anything, I would
compare it to Boost. In some ways, that is appropriate, and others, it
is very generous. Like Tango, Boost was intended as a free,
open-source, community-contributed library designed to improve the
language community for which it was created. Unlike Tango, when Boost
had to choose a naming convention, guess what they did? They said:
"Ultimately, we have the ambition for this code to end up in the
standard library. Thus, it must look like the standard library *now*."
What they *didn't* say is: "Our code is so good, when the standard
library includes it, it just better put up or shut up, yo!"
Now, the folks who started Boost were no small fry. They weren't garage
programmers fresh out of high school with a keyboard and a CRT and a ton
of attitude. They were world-class, respected programmers with decades
of experience and enough clout and political capital to say: "We're
going to do things differently and we're right". But they didn't. They
stuck with the established, standard C++ conventions, and that alone
lends additional legitimacy to the effort.
This is not to say that Tango made the wrong choice, or that camelCase
is evil (I go both ways on the issue). However, the conceit that Tango
is independent of Phobos, and that Phobos is borrowing from it, so it
just has to put up or shut up is a very different reaction and attitude
from Boost "lending" libraries to standard C++.
One thing you learn very quickly when participating in the Boost
community is that these people take C++ very seriously. If your library
doesn't take into account every minute detail of the language, you are
virtually guaranteed that some expert somewhere in the world is going to
point this out and make a big deal about it. At first, it seems petty
and overbearing. But after a while, you see that the scrutiny is a
trial by fire, and that reviewed libraries themselves gain extra
credibility by taking into account the criticisms and feedback of what
are truly world-class experts (and sometimes you can't tell the experts
from the non-experts, but usually that doesn't matter because the truth
has a way of bubbling up rather quickly).
What you especially learn is that there are definite best practices in
the C++ community, and if you deviate from those, you had better have an
excellent reason. Conformity is King. Your code had better *look* like
Boost code, regardless of its quality otherwise. Your documentation had
better *look* like Boost documentation if you want to be taken
seriously. You had better have a full set of regression tests using the
Boost.Test framework so your library will show up properly in the full
regression results. Miss any of these details, or try to be an
"innovator", and you risk having your library rejected. This isn't high
school. This is conformity with a purpose.
When a Boost reviewer says: "I think you choose a poor name for this
function. Please explain why you made that choice or try this suggested
name instead", the author does not say: "Hey, jump on my IRC channel and
we can discuss it." That would be considered..."unprofessional"...to
put it politely. At work, when people have problems with some tools,
the tool authors say: "Well, just file a bug report on our forums."
Unfortunately, that says: "I can't be bothered to file a bug report on
your behalf, even though you spelled out the details in an email."
That's not to say that IRC is a bad communications medium; merely that
it has a certain barrier to entry (not everyone has an IRC client
installed by default, or would know how to use one).
At the end of the day, a Boost library author has to *defend* the
library under review for it to be accepted. Even though the author is
the one contributing free work, it is ultimately the clients who get to
decide whether it meets the bar of quality. At no point would a Boost
library author get away with saying: "No, you tell *me* why you think
it's wrong. My library rocks. Capisce?" Rather, the reality is that
authors are more likely to run to the standard and quote chapter and
verse to demonstrate that they made the right choice. The onus is on
the library writer to show that the library is well-designed.
As Alex mentioned, it's about selling. Whether you like your customers
or hate them, they are your customers, and will ultimately influence
your success, even if they do nothing but elicit your unsavory side.
The D community is not the Boost community, and has a long way to go to
reach that level of experience (because D is a much younger language, to
be sure). But that doesn't mean we can't get a head start and take the
language and its users as seriously as if there were a million D
programmers in the world, with users in major Fortune 500 companies, and
that most of them read the D forums as religiously as c.l.c++.m.
Reputations take a very long time to build, but are quite easily
destroyed, and often by oneself (ask James Watson about that).
Dave
More information about the Digitalmars-d
mailing list