Hi all,
just talked to Niclas about Qi4j and the documentation pains in OSS
projects. Actually, at neo4j.org we bit the bullet to put a REAL
documentation toolchain into place consisting of
Source->Graphviz->AsciiDoc->Docbook->Latex->PDF or -> HTML etc etc.

What is generated is at http://docs.neo4j.org/chunked/snapshot/ resp
http://neo4j.org/get?file=neo4j-manual-stable.pdf

See an short example of documentation (documenting a part of the REST
API in a functional test):

https://github.com/neo4j/cypher-plugin/blob/master/src/test/java/org/neo4j/server/plugin/cypher/CypherPluginFunctionalTest.java#L45

results in the docs:

http://docs.neo4j.org/chunked/snapshot/cypher-plugin.html#rest-api-send-a-query


For a more comrehensive example containing a number of code snippets,
formatted output, images (can be of course be replaced by
autogenerated content) and others:

https://github.com/neo4j/community/blob/master/embedded-examples/src/test/java/org/neo4j/examples/RolesTest.java#L42

becomes

http://docs.neo4j.org/chunked/snapshot/examples-user-roles-in-graphs.html

The key here is that all code and documentation is kept together as
close as possible, while still making very demanding toolchains like
docbook, that can produce real output like books with crosslinks and
TOC, possible.

The manual is then assembled, built, versioned and deployed as a first
class citizen together with the build and will stay up to date, since
all moving parts are generated from actually testing code. Try for
instance the different version of

http://docs.neo4j.org/chunked/snapshot/rest-api-service-root.html

vs a few versions back,

http://docs.neo4j.org/chunked/1.4.1/rest-api-service-root.html

and you will see what I mean. Same goes for the PDF versions.

So, now the developers actually look into the manual to discover and
check if their stuff looks right. And I am starting to look into what
I call Test Driven Blogging - produce documentation that is as good as
a blog, but will stay up-to-date and get better over time. Look at the
first prototype at

https://github.com/neo4j/community/blob/master/embedded-examples/src/test/java/org/neo4j/examples/AclExampleTest.java

Becoming

http://docs.neo4j.org/chunked/snapshot/examples-acl-structures-in-graphs.html

This blog is not yet done. Why? Because the last example in Cypher
results in really ugly output. Before tree structures are handled
better, the developers don't want to point people to it. Still, in its
current form, it is accurate and documenting.

Thought you might be interested.

Cheers,

/peter neubauer

GTalk:      neubauer.peter
Skype       peter.neubauer
Phone       +46 704 106975
LinkedIn   http://www.linkedin.com/in/neubauer
Twitter      http://twitter.com/peterneubauer

http://www.neo4j.org               - Your high performance graph database.
http://startupbootcamp.org/    - Öresund - Innovation happens HERE.
http://www.thoughtmade.com - Scandinavia's coolest Bring-a-Thing party.

_______________________________________________
qi4j-dev mailing list
[email protected]
http://lists.ops4j.org/mailman/listinfo/qi4j-dev

Reply via email to