[m-dev.] A not-very-polite rant about "grades" and the build system.

Matt Giuca matt.giuca at gmail.com
Fri Mar 13 16:56:08 AEDT 2015

Wow. I'm not on the Mercury team and I share your frustrations regarding
the build system (in fact, pretty much all of what you're saying is true),
but I gotta step in here... *this shit is not cool*.

I've been on the receiving end of some pretty pissed off entitled users in
my time, but I've never seen a rant like this about a free software
product. If you were a paying customer, you might rightly be upset, but
this would still be an inexcusable way to raise a complaint. As it is,
you're presumably just some dude on the Internet who downloaded some
software for free, got annoyed, and then swore your balls off at the
developers. That makes you an entitled jerk.

Here's a tip: when you're working with free software, the developers are
generally not obligated to do any work to either a) fix issues, or b) help
you with your problems. However, many open source projects will do (b), if
not (a), if you are polite about it. I understand the catharsis of writing
an angry rant when some software is behaving badly, but might I suggest
writing the rant, hovering over the "Send" button, considering the people
who might have to read said rant, and then deciding to rewrite it in a
polite and constructive manner?

You probably could have saved yourself some effort and made some friends if
you wrote a polite mail to this list in the first place, before you spent
two days trying to debug it yourself.

If they do fix this or update the documentation, I hope you will realise it
is *in spite of you* and not *because of you*.


PS. Your main complaint is answered in the second question in the official

On Thu, Mar 12, 2015, 8:57 PM Michael Richter <ttmrichter at gmail.com> wrote:

> Yes, this is a rant.  No it isn't polite.  And, frankly, I don't give a
> shit.  If your feelings get hurt by people using bad words to describe your
> work you have two options: curl up in a little ball and pretend the bad man
> isn't out there, or man up and FIX THE FUCKING RETARDED SHIT YOU'VE
> WRITTEN!  (Sadly, I know which of these two I expect.)
> The current system for building Mercury is an utter fucking disaster.  It
> is quite possibly the single dumbest thing ever put down in code in the
> past fifty years.  Not only does it default to building 14 "grades"
> (asm_fast.gc, asm_fast.gc.debug.stseg, asm_fast.gc.decldebug.stseg,
> asm_fast.gc.memprof, asm_fast.gc.prof, asm_fast.gc.profdeep,
> asm_fast.gc.trseg, asm_fast.gc.trseg.debug.stseg, asm_fast.par.gc.stseg,
> csharp, hlc.gc, hlc.gc.pregen, hlc.gc.trseg, hlc.par.gc, java), which means
> building the compiler by the conventional ./configure && make && sudo make
> install approach takes anywhere from 2 hours to 2 *DAYS* depending on the
> hardware, getting around this massive multiplicity of default grades
> requires advanced degrees in decoding whatever was pulled out of the
> documentation writers' asses the day the grades were "documented".
> Look at the documentation you have on the grades.  Look at it closely.
> see anywhere any slight HINT of which grades interact well with each
> other?  Any slight HINT of which grades are likely to interact with each
> other by subtly fucking your end-users over with maddening heisenbugs?
> Even a slight hint of which grades don't make any sense whatsoever?
> For example, where can I find in the docs something that tells me that
> hlc.gc.stseg doesn't make any sense?  (Protip: you can't.)  And for bonus
> points, what happens if you tell the configure script that you want
> hlc.gc.stseg?  (Hint: it merrily accepts it, as does the build, which then
> mysteriously fails with bizarre compiler errors.)
> Do you really hate your prospective users so much you won't even DOCUMENT
> your fucking "grades"!?  Like with a simple chart that shows at
> intersection points whether the combination makes sense or not?  I mean,
> I'm not even asking for code that does this fucking shit right: a
> configuration script that knows which grade combinations are
> legal/sensible/whatever, or a build system that doesn't expect to build the
> entire fucking world dozens of times up-front instead of building on
> demand.  I'm asking for a few words that explain the grades and their
> legal/sensible combinations.  Is that REALLY too much to ask after
> SEVENTEEN FUCKING YEARS of this language's existence!?
> This rant brought to you by the disgusted giving up after trying to get
> Mercury running on a slow, non-x86 system for the past two days.  I'll
> leave it so someone less furious and more diplomatic to explain why what
> utter shit you have for a build process.
> --
> "Perhaps people don't believe this, but throughout all of the discussions
> of entering China our focus has really been what's best for the Chinese
> people. It's not been about our revenue or profit or whatnot."
> --Sergey Brin, demonstrating the emptiness of the "don't be evil" mantra.
>  _______________________________________________
> developers mailing list
> developers at lists.mercurylang.org
> https://www.mercurylang.org/lists/listinfo/developers
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mercurylang.org/archives/developers/attachments/20150313/f8422994/attachment.html>

More information about the developers mailing list