On Thursday, 31 December 2015 at 00:04:03 UTC, bachmeier wrote:
It's the process that requires so much overhead that nobody
wants to contribute. I really tried to do so myself, but I'm
busy, and it is senseless that 95% (or more) of the time I
spend on it is wasted due to a system that is flawed from top
to bottom. The only thing that surprises me is that there are
Exactly. I've put my time into ddoc. Let me give you a brief
history of my efforts:
~2010: I had just written this awesome dom.d library and wanted
to document it and release it to the world. I write stuff like:
/// Returns the text in the element. For example, innerText of
<span>foo<span> is "foo" (without quotes)
And it came out mangled because of ddocs embedded HTML "feature"
which doesn't encode the output. I proposed a fix, using ddoc's
existing ESCAPES macro, and wrote the patch for dmd. Embedded
html would be automatically encoded, but you can still define it
in macro definitions, which can be inline with the comment, so it
isn't hard to use when you want it.
It was rejected. Walter didn't see what the problem was and I was
told to just write $(LT)span$(GT)foo$(LT)/span$(GT). Seriously.
Well, that was unacceptable so I decided to take matters into my
own hands. On Feb 20, 2010, I registered dpldocs.info and started
writing my own web service to delver dom.d's docs, encoding the
output correctly, getting the docs out of dmd's JSON output,
using -D -X.
Well, it worked, but it sucked. The JSON output didn't give me
enough information to do cross referencing, so I wrote a little
search engine to paper over it... and that didn't help much.
I moved on to other things, every so often still advocating to
fix ddoc's escaping, but mostly just writing my docs such that
they were readable in the source code and not bothering with
generating them at all. (I'm told my source tends to be fairly
readable anyway and I like to narrate my thoughts a bit in the
comments including of implementation details so they understand
the pros and cons of my decisions.)
contents for the D website (then hosted at digitalmars.com still)
- the infamous "Jump list". This was meant to be a temporary
measure until ddoc got proper table of contents support.
2011: We had a proposal for a website redesign. Remember this
The jump list hack garnered a lot of hate. It was a blob of text
that we couldn't read, but ddoc's design made a user-defined
table of contents extremely difficult to implement. A few
attempts were started, but none finished.
I wrote a program, called improveddoc.d, still on the 'net:
http://arsdnet.net/d-web-site/improveddoc.d that post-processed
the generated HTML to create a cheat-sheet table.
This is what it made of std.algorithm at the time:
I offered to integrate it into the website tools... and got my
first look at the horror that is that build process.
Nevertheless, running a little post process script to run that on
the html was doable. It also would read tag macros and use them
to organize the content.
The idea (and working program) was rejected because the team felt
a post-processor was the wrong way to do it.
Instead, Andrei manually wrote a std.algorithm cheat sheet and we
added a bullet between the links in the jump list hack. Both of
these have remained basically unchanged to this day and dmd still
cannot generate a table of contents in ddoc.
We did get a website redesign after that,
d-programming-language.org was launched, and Vladimir's forum got
integrated (I wrote one too but his was so much better than mine
that I gladly yielded). ddoc, however, barely changed.
For the next couple years, despite ddoc being unusable for half
my libraries because they are web libs and showing HTML examples
was practically impossible, I still was basically on its side,
while still working on improving the json support. I had tried
the json thing and found the compiler approach to be better, but
the json output is good for a few things and Ddoc's syntax isn't
all that bad if you aim for source readability and clever use of
recursive macros can do some pretty cool things.
I put my support behind dmd. With the vibe.d team also pushing
for improved json support, a few things happened there... though
little of consequence. My opinion of the json output hasn't
significantly changed since 2010: cool for a few things, I like
that we have it, but it is not a substitute for
We got another website redesign in these years, and moved to
dlang.org. The build process finally got documented after I and
others complained for a while, but it was never actually cleaned
At the end of 2014, yea, even a year before this writing, people
were complaining about ddoc's syntax again and asking for some
Markdown variant to be introduced. Seeing an opportunity to
revive my old encoding problem and finally write some ddoc for
myself, I jumped on the `code` syntax and implemented it,
including proper encoding of the output. Finally, I can write
`<span>foo</span>` and have it legible to the user!
And with it also alleviating the pressure for syntax sugar from
the community... this patch was actually accepted this time! For
the first time in five years, I was excited about ddoc again.
I started using it to write This Week in D (and noticing the
limits the macro syntax place on legible prose source...) and
wrote at some length about my simpledisplay.d, cgi.d, and others
(though not really much on dom.d, ironically. I still haven't
gotten around to updating that.)
Just a few months ago, I got the simpledisplay docs looking
pretty good with ddoc: http://arsdnet.net/arsd/simpledisplay.html
2015 was a good year for ddoc and I, we basically got along,
despite its warts.
Then, October rolls around. A friend of a friend is looking for
work and I say maybe you can help me with some D stuff. Don't
know D? Not a problem, it is easy!
It wasn't easy. From installation, problems arose. I'd then show
how to fix it and explain why.
She'd say "I understand now, but why don't the docs just say what
you just said?"
Good question. I decide to start editing it in... and quickly hit
a brick wall that kills my momentum. I couldn't get through the
nonsense before having to get back to work.
I handle hundreds of D support requests in a year. Sometimes, I
spend so much time on the chat, the learn forum, or Stack
Overflow that I feel like I'm a full-time D support engineer.
Time and time again, people ask things that ought to be pretty
easy to find, yet they ask us anyway.
Maybe they just don't like searching and ask first. I actually
don't mind that - I tell my coworkers that if their attempts at
Google don't yield results in one minute, send me an IM or email
(and continue looking). There's a good chance I'll have an answer
in my brain somewhere, or at least a helpful pointer, and I don't
mind the interruptions at all (if I didn't want them, I'd just
close the chat client!). Better to ping me than waste hours on a
But still, some people say "I tried searching and couldn't find
it"... and I totally believe that with D. I used it think it was
just because we were young, but it has now been almost SIX YEARS
since my first dive into the website issues and it has barely
changed. There must be something systemic.
Fast-forward to December. We have that base64 question. I go to
edit the site and get stopped by the process again. Nevertheless,
I blamed the makefile and saw new documentation Andrei wrote on
this. Maybe there's still hope.
Then another friend of mine tells me he finally started looking
at the D Cookbook I gave him last year and is writing some code.
I watch him work through a couple problems... and notice that the
website was only useful to him insofar as he could copy/paste
examples. As soon as he modified them and got an error message or
tried to put functions together without pre-written examples,
he'd slow way down. He'd get through it but not easily.
The D leaders know how important examples are. We are often told
adding more is low hanging fruit. I completely agree. But that's
not ALL we need. He wants examples to get started, yes, but he
also wants understanding to go beyond examples. That's where text
helps. That's where understanding the function signatures help.
Eventually, when people go to write their own libraries, they
might want to do Phobos style genericity. You can't do that
without understanding the function signatures... and those blobs
of text are not understandable.
Shift to the forum. We got talking about website redesign on the
forum again a couple weeks ago and I remark how I think just
whitespace formatting of the constraints would help a lot and
almost went in dmd to implement it.
I just got sidetracked doing a quick paragraph fix for Andrei...
and then wanted to see how far I could go. I got it working,
despite the obstacles that ddoc's freeform macros bring, and
surprise, it was rejected. Even the simpler patch that just
collapses blank lines sits unanswered. A tool to look for broken
links sits unanswered. There's always a call to contributions,
but when you do push through the painful process to get the code
up (and the tester, the f$^%$^ing tester), nobody seems to care.
The combined experience over these last six years tells me that
the website sucks and it keeps sucking because changing it sucks
even more than using it. A new strategy was required.
And here we are.
I still need to figure out how I want to add new docs and link
them all in, but I guarantee you it won't consist of editing SRCS
and MANIFEST and posix.mak and win32.mak and std.ddoc and
latex.ddoc and <voice trails off>...