Plastic Surgery for RDOC

I dont know about you guys, but personally I think the standard Rails
documentation leaves much to be desired. The blue header, the vanilla
code examples... the whole iframes thing. You can tell it was designed
by a programmer... which is not bad in and of itself, but as a
designer I feel the CSS and overall GUI needs some love.

Some ideas worth mentioning:

Easier Navigation

· Tabbed navigation using javascript tabs for fast switching.
· Use of access keys (1-5 for top row 6-8 for bottom row)
· Live Search via AJAX

Increased Readability

· Code snippets in color
· Clean, Legible Headers and heirarchy of data

CSS Style Switching

Theme #1 - Classic: Standard API style for those who like the old
school.
Theme #2 - Shiny: Style that is consistent with 37 Signals and RoR
Brand.
<img src="http://www.funkysoulrebels.com/rails/Yang.jpg" />
Theme #3 - Twilight: Inverted scheme for those of us who prefer dark
screens and light text. (see attachment)
<img src="http://www.funkysoulrebels.com/rails/Yin.jpg" />

The HTML/CSS for this is nothing I can'thandle.. the real challenge is
making rdoc spit out more customizeable code. I spoke to DHH about
this challenge and he really liked the ideas. His advice was to
connect with experienced Rubyists who would be willing to tackle the
inner workings of rdoc.

This post is my call-to-arms for any experienced programmers who would
be interested in giving the docs a well-deserved kick in the ass.

Any feedback/critiques are welcome.

I really REALLY like the "Yang" version.

For my Google Summer of Code project, I'm doing a documentation
coverage analyzer. My mentor, Chad Fowler, and I are looking at what
we can do to refactor RDoc to make my project easier. Maybe we could
figure out some nice refactoring work that would accomplish both
goals...

--Jeremy

That would rock so hardcore if you and Chad could figure this pickle
out. I am pretty busy these days, but the prospect of you two tackling
this has me stoked enough to start slicing up some GIFs and mapping
out my coding strategy (I like my html/css lean, mean and STRICT).

I will post my progress in this thread. As added motivation, I will be
coding the Yang scheme first :wink:

... the standard Rails documentation leaves much to be desired.

+1 However, I would submit that your critique and proposals do not
go nearly far enough. The Arti (http://arti-ar.cfcl.com) overview
page covers some complimentary topics:

As a dynamic programming language, Ruby is not an easy target
for documentation generators. Almost any part of a Ruby program
can be (re)defined at run time, so static code analysis may fail
to gather critical information. Systems such as Rails, which
make extensive and intricate use of Ruby's dynamic capabilities,
are particularly hard to analyze.

RDoc, designed by Dave Thomas, is the de facto standard for Ruby
documentation tools. It analyzes Ruby source code and collects
embedded comments, generating a structured collection of pages
for Ruby files, objects, and methods. RDoc is included as part
of the Ruby core distribution; commands to use it (e.g.,
"rake doc:app") are built into Rails.

Nonetheless, the RDoc support in Rails is not very extensive, let
alone well integrated into the toolkit. Only the application
code is analyzed; libraries (whether for Rails or other Ruby
topics) are not documented by default. Also, RDoc takes no
advantage of the extremely regular structure and naming conventions
of Rails. So, it knows nothing about actions, environments,
controllers, helpers, layouts, models, partials, tests, views, etc.

The Ruby support could also use improvement. Although syntax
coloring is provided for the source code snippets, no support is
provided for linking from (say) method calls to their definitions.
Nor, by default, can the full source code of the application be
perused through the RDoc interface.

Finally, because RDoc's design and implementation predate Rails,
it generates static web pages that cannot be browsed through Rails,
let alone take advantage of Rails' dynamic capabilities. Although>
RDoc has taken us a long way, it is clearly time to put in some more
work on the problem.

So, Arti is clearly fishing in the same pond (and will happily take
advantage of any improvements that come along!). The Arti overview
also mentions several other interesting technologies. Many of these
use a "load, then introspect" strategy which can gather information
that is difficult for static analysis to gather.

YARD (http://www.soen.ca), in particular, has an interesting take on
extensible data collection. In summary, I applaud your efforts, but
hope that your efforts can benefit (and benefit from) other projects
in this space.

-r

I finally (D'oh) looked at the Yin and Yang layouts. I like
the general approach; here are some suggestions:

  * For those of us who think that black backgrounds are a
     Bad Idea, neither Yin nor Yang wins. You might want to
     allow separate control of both the overall coloring and
     the coloring of code snippets.

  * In the "Files" tab, I'd like to have the ability to see
     the entire code for each file. It might also be nice
     to add line numbering, disclosure triangles, etc. Take
     a look at TextMate for ideas...

  * I'm not a big fan of using up large amounts of space on
     repeated information. So, I'd replace

       ActionController
       ActionController::AbstractRequest
       ActionController::Assertions::DomAssertions
       ActionController::Assertions::ModelAssertions
       ...

     with

       ActionController
       > AbstractRequest
       > Assertions
       > > DomAssertions
       > > ModelAssertions
       ...

     Again, disclosure triangles (and perhaps "more" links)
     could be used to shorten long lists.

Finally, please set up some web pages for ActiveDocs, so that
there's an "official" place to refer folks to...

-r

Great stuff!

I will be be clearing up my online storage a bit to make way for an
activedocs section shortly

This is precisely the feedback I was looking for.. thanks for taking
the time to post this