<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>gnuu.org &#187; documentation</title>
	<atom:link href="http://gnuu.org/tag/documentation/feed/" rel="self" type="application/rss+xml" />
	<link>http://gnuu.org</link>
	<description>my word against yours, fight.</description>
	<lastBuildDate>Fri, 16 Jul 2010 22:12:52 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>YARD Object Oriented Diffing</title>
		<link>http://gnuu.org/2010/06/26/yard-object-oriented-diffing/</link>
		<comments>http://gnuu.org/2010/06/26/yard-object-oriented-diffing/#comments</comments>
		<pubDate>Sat, 26 Jun 2010 23:19:52 +0000</pubDate>
		<dc:creator>Loren Segal</dc:creator>
				<category><![CDATA[post]]></category>
		<category><![CDATA[diff]]></category>
		<category><![CDATA[documentation]]></category>
		<category><![CDATA[object oriented]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[yard]]></category>

		<guid isPermaLink="false">http://gnuu.org/2010/06/26/yard-object-oriented-diffing/</guid>
		<description><![CDATA[Yesterday I tweeted a bunch about a new command in the upcoming YARD 0.6 release called yard diff which lets you perform object-aware diffs across two versions of a project/library/gem. I wanted to summarize exactly what&#8217;s going on and why I wrote it in a short article on the subject.]]></description>
			<content:encoded><![CDATA[<p>Yesterday I tweeted a bunch about a new command in the upcoming YARD 0.6 release called <code>yard diff</code> which lets you perform object-aware diffs across two versions of a project/library/gem. I wanted to summarize exactly what&#8217;s going on and why I wrote it in a short article on the subject.</p>
<p></p>]]></content:encoded>
			<wfw:commentRss>http://gnuu.org/2010/06/26/yard-object-oriented-diffing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Preview of YARD 0.6 Features</title>
		<link>http://gnuu.org/2010/06/16/preview-of-yard-0-6-features/</link>
		<comments>http://gnuu.org/2010/06/16/preview-of-yard-0-6-features/#comments</comments>
		<pubDate>Wed, 16 Jun 2010 19:37:44 +0000</pubDate>
		<dc:creator>Loren Segal</dc:creator>
				<category><![CDATA[post]]></category>
		<category><![CDATA[0.6]]></category>
		<category><![CDATA[documentation]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[yard]]></category>

		<guid isPermaLink="false">http://gnuu.org/2010/06/16/preview-of-yard-0-6-features/</guid>
		<description><![CDATA[YARD 0.5.7 is currently in the works and is possibly a week or so from release. After that version is put out there (pending no serious issues), all &#34;yardwork&#34; will be exclusively dedicated to the 0.6 release. There are some really cool and exciting new features in 0.6, so I felt like blogging about them. [...]]]></description>
			<content:encoded><![CDATA[<p>YARD 0.5.7 is currently in the works and is possibly a week or so from release. After that version is put out there (pending no serious issues), all &quot;yardwork&quot; will be exclusively dedicated to the 0.6 release. There are some really cool and exciting new features in 0.6, so I felt like blogging about them. Let&#8217;s go:</p>
<h2>1. A Local Documentation Server</h2>
<p> <img title="yardoc.org/docs screenshot" alt="yardoc.org/docs screenshot" align="right" src="http://yardoc.org/images/yardocorg.png" width="332" height="233" />
<p>RubyGems has <tt>gem server</tt> to serve static docs of your gems. The problem here, again, is that to get these static .html files we need to force our users to generate docs when the gem installs, and this is often a painfully slow process (especially with behemoths like Rails). YARD takes a different approach to this, only parsing out the source and saving an intermediate dump file when a gem installs. This is pretty fast (~2 seconds under 1.9 for YARD&#8217;s codebase). Not only can a developer use this data to their heart&#8217;s content, but it allows YARD to generate HTML/PDF/LaTeX on demand, and that&#8217;s exactly what 0.6 is going to do.</p>
<p>The <tt>yard server</tt> command coming in 0.6 will generate HTML documentation for gems on demand from the parsed source (perhaps even parsing on demand). This means your CPU will never be used to generate static files that you never look at. If you only need to access 10% of the documentation of 1% of your gems, YARD will only generate that 0.1%. Big win.</p>
<p>Not to mention you get all the benefits a YARD template provides, including full class hierarchy, less obtrusive layouts, markdown support, and even full method/class name searching with the potential of having full-text searching in the future, since this is all running in a Webrick/Rack adapter.</p>
<p>All of this stuff is currently being ported from the existing <a href="http://yardoc.org/docs">yardoc.org/docs</a> site, so it will basically look like that. The existing code is in the <a href="http://github.com/lsegal/yard/tree/docserver">docserver</a> branch of YARD&#8217;s github and is being tracked as <a href="http://github.com/lsegal/yard/issues/issue/139">gh-139</a>.</p>
<h2>2. Method Listing by Groups</h2>
<p> <img title="Mac OSX documentation for NSString" border="0" alt="Mac OSX documentation for NSString" align="right" src="http://gnuu.org/wp-content/uploads/2010/06/image_thumb.png" width="264" height="183" />
<p>We&#8217;ve seen this in Apple&#8217;s docs, doxygen docs and a few others. The ability to organize methods in a large class by functionality rather than alphabet is often far more helpful to your users. YARD 0.6 will be introducing a <tt>@group</tt> freeform tag to identify methods under a specific organizational header which will be used in the templates. Still working on the exact syntax of this one, trying to make it as easy to use and remove as much duplication as possible. This feature is being tracked as <a href="http://github.com/lsegal/yard/issues/issue/143">gh-143</a>.</p>
<h2>3. Generate Documentation for Single File Scripts</h2>
<p>RDoc has a <tt>--one-file</tt> option that is occasionally used for small Ruby scripts. YARD has always lacked this option. Though it&#8217;s kind of simple to roll your own with templates, 0.6 will have built-in templates for generating a single HTML document. Not really sure what it&#8217;s going to look like just yet, but if you have ideas or want to help out, the feature is being tracked as <a href="http://github.com/lsegal/yard/issues/issue/115">gh-115</a>.</p>
<h2>4. New <tt>yard</tt> CLI executable</h2>
<p>YARD is growing into a tool that does much more than just parse source. This means that having a single executable is not enough, and spreading out the functionality over multiple executables is just messy. YARD currently uses the <tt>yard-graph</tt> tool to generate Graphviz dot files. In YARD 0.6, all of these tools, including the new documentation server, will all be merged into a single executable called <tt>yard</tt> with respective subcommands (doc, graph, server, etc.). The goal here is to open this up for plugins to add commands just like they do in RubyGems without resorting to new executable names. And don&#8217;t worry, the <tt>yardoc</tt> executable will probably stick around for legacy support. This feature is being tracked as <a href="http://github.com/lsegal/yard/issues/issue/140">gh-140</a>.</p>
<h2>5. Improved Template APIs</h2>
<p>If you&#8217;ve ever written or overridden a template in YARD you know that it can be hard to figure out what section to override with the <tt>sections</tt> command. YARD has a <tt>sections.place(:foo).before(:bar)</tt> idiom, but it does not help with subsections. In 0.6, the sections will be redesigned from being Array objects to a more proper tree-like structure in order to handle accessing subsections. Now instead of:</p>
<pre><code>def init
  sections.first.last.place(:foo).before(:bar)
end</code></pre>
<p>You will have the ability to do the following:</p>
<pre><code>def init
  sections.first.subsections.place(:foo).before(:bar)
  # or even:
  sections.place(:foo).before_first(:bar)
end</pre>
<p></code></p>
<p>The last method will look for any "bar" inside sections or subsections within the tree. All in all, this should make it more effective to override a template. This feature is being tracked as <a href="http://github.com/lsegal/yard/issues/issue/58">gh-58</a>.</p>
<h2>6. Documentation for DSL Handlers and Other Use Cases</h2>
<p>YARD packs in a lot of functionality, and many users have complained that they had to dig into source to find out how to do some relatively simple things like writing handlers for DSL syntaxes. Although YARD does have documentation on many things, including writing handlers in general, there are few "use-case specific" documents that describe how to do specific things with YARD. 0.6 will introduce improved documentation for some of these use cases, most importantly extending YARD for custom DSL syntaxes. It's possible this may start as a project in the Github Wiki as a set of how-to guides.</p>
<p>So there they are, the major new features coming to 0.6. Let me know if you have any suggestions about other features. And if you have time to donate to the project that would be great, see the above Github issue links and help out. Money would also be appreciated; I wrote YARD because I want to improve docs in the community, not because I want money, but I need to eat. You can donate below:</p>
<p><a href="http://www.pledgie.com/campaigns/940"><img alt="Click here to lend your support to: yard and make a donation at www.pledgie.com !" src="http://www.pledgie.com/campaigns/940.png?skin_name=chrome" border="0" /></a></p>
<p>The release plan for YARD 0.6 is: "soon". It's hard to say when it will be out, but things are certainly rolling in that direction.</p>]]></content:encoded>
			<wfw:commentRss>http://gnuu.org/2010/06/16/preview-of-yard-0-6-features/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Using yri for Ruby Core Classes</title>
		<link>http://gnuu.org/2009/12/15/using-yri-for-ruby-core-classes/</link>
		<comments>http://gnuu.org/2009/12/15/using-yri-for-ruby-core-classes/#comments</comments>
		<pubDate>Tue, 15 Dec 2009 22:55:44 +0000</pubDate>
		<dc:creator>Loren Segal</dc:creator>
				<category><![CDATA[post]]></category>
		<category><![CDATA[0.5.1]]></category>
		<category><![CDATA[core]]></category>
		<category><![CDATA[documentation]]></category>
		<category><![CDATA[gem]]></category>
		<category><![CDATA[stdlib]]></category>
		<category><![CDATA[yard]]></category>
		<category><![CDATA[yardoc]]></category>
		<category><![CDATA[yri]]></category>

		<guid isPermaLink="false">http://gnuu.org/2009/12/15/using-yri-for-ruby-core-classes/</guid>
		<description><![CDATA[This functionality requires a couple of changes made in 0.5.1 (released today), so be sure to update yard to the latest release. You can now use yri with Ruby core classes. This is relatively old news (as of yesterday) since YARD can now parse core classes, but Ruby source is generally not available on all [...]]]></description>
			<content:encoded><![CDATA[<p class="note">This functionality requires a couple of changes made in 0.5.1 (released today), so be sure to update yard to the latest release.</p>
<p>You can now use yri with Ruby core classes. This is relatively old news (as of yesterday) since YARD can now parse core classes, but Ruby source is generally not available on all installs, so building the .yardoc database is not always an option.</p>
<p>In YARD 0.5.1 (released today), instead of downloading and parsing the Ruby source manually, you can now download a pre-built gem containing the .yardoc files for a bunch of Ruby versions (1.8.6, 1.8.7, 1.9.1). Simply use:</p>
<pre>$ gem install yard-doc-core</pre>
<p>You should now be able to use something like <tt>yri String#split</tt>. By default this will install docs for 1.9.1, but if you need docs for a specific version of Ruby, add <tt>-v VERSION</tt> to your gem install command:</p>
<pre>$ gem install yard-doc-core -v 1.8.7</pre>
<p>The stdlib package (<tt>yard-doc-stdlib</tt>) will be coming soon.</p>]]></content:encoded>
			<wfw:commentRss>http://gnuu.org/2009/12/15/using-yri-for-ruby-core-classes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Announcing The Longest YARD: 0.5.0</title>
		<link>http://gnuu.org/2009/12/14/announcing-the-longest-yard-0-5-0/</link>
		<comments>http://gnuu.org/2009/12/14/announcing-the-longest-yard-0-5-0/#comments</comments>
		<pubDate>Tue, 15 Dec 2009 01:17:12 +0000</pubDate>
		<dc:creator>Loren Segal</dc:creator>
				<category><![CDATA[post]]></category>
		<category><![CDATA[0.5.0]]></category>
		<category><![CDATA[documentation]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[ruby 1.9]]></category>
		<category><![CDATA[tool]]></category>
		<category><![CDATA[yard]]></category>

		<guid isPermaLink="false">http://gnuu.org/2009/12/14/announcing-the-longest-yard-0-5-0/</guid>
		<description><![CDATA[YARD 0.5.0 (“The Longest”) was just released today. It features a bunch of new things, but some of the most awesome are: Support for documenting native Ruby C code Incremental file parsing and HTML generation Improved yri tool with support for linking gems Support for Documenting Native Ruby C Code This one was certainly a [...]]]></description>
			<content:encoded><![CDATA[<p>YARD 0.5.0 (<em>“The Longest”</em>) was just released today. It features a bunch of new things, but some of the most awesome are:</p>
<ol>
<li>Support for documenting native Ruby C code </li>
<li>Incremental file parsing and HTML generation </li>
<li>Improved yri tool with support for linking gems </li>
</ol>
<h2>Support for Documenting Native Ruby C Code</h2>
<p>This one was certainly a long time coming. YARD has always planned to support native Ruby code. This was probably the last &quot;big&quot; feature that RDoc could do and YARD could not. Now, YARD can.</p>
<p>The best part of this feature is that YARD can now parse Ruby&#8217;s core codebase and the stdlib, meaning <a href="http://yardoc.org">yardoc.org</a> can now host Ruby-core docs. And it now does: <a href="http://yardoc.org/docs/ruby-core">http://yardoc.org/docs/ruby-core</a>. The stdlib will be added soon.</p>
<h2>Incremental file parsing and HTML generation</h2>
<p>One annoying thing about documenting code with YARD for larger projects is the time it takes to generate HTML. This makes the documentation development cycle slow for previewing small documentation changes. YARD 0.5.0 introduces incremental parsing and HTML generation to parse and generate HTML for only the files that were modified since the last running of <tt>yardoc</tt>, which makes for super-fast previews. To use the incremental parsing feature, simply add <tt>-c</tt> or <tt>--use-cache</tt> and YARD will use the available .yardoc cache.</p>
<pre>$ yardoc --use-cache</pre>
<h2>Improved yri tool with support for linking gems</h2>
<p>The <tt>yri</tt> tool that bundled with YARD prior to this release only worked for the .yardoc file in the local directory. In YARD 0.5.0, <tt>yri</tt> will now perform a lookup on all installed gems on your system. To use this, you&#8217;ll first need to build the .yardoc files for your gems, and you can do this with <tt>yardoc --build-gems</tt>. After that, you can use yri as normal:</p>
<pre>$ yri JSON#load</pre>
<h2>More?</h2>
<p>You can see more new toys in the <a href="http://yardoc.org/docs/yard/file:WhatsNew.md">What’s New</a> document on <a href="http://yardoc.org">yardoc.org</a>. You can also install YARD:</p>
<pre>$ gem install yard</pre>
<p>Enjoy!</p>]]></content:encoded>
			<wfw:commentRss>http://gnuu.org/2009/12/14/announcing-the-longest-yard-0-5-0/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>YARD 0.4.0 (The Whole Nine) Released Today</title>
		<link>http://gnuu.org/2009/11/15/yard-0-4-0-the-whole-nine/</link>
		<comments>http://gnuu.org/2009/11/15/yard-0-4-0-the-whole-nine/#comments</comments>
		<pubDate>Sun, 15 Nov 2009 18:04:33 +0000</pubDate>
		<dc:creator>Loren Segal</dc:creator>
				<category><![CDATA[post]]></category>
		<category><![CDATA[developer tools]]></category>
		<category><![CDATA[documentation]]></category>
		<category><![CDATA[release]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[ruby 1.9]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[yard]]></category>

		<guid isPermaLink="false">http://gnuu.org/?p=317</guid>
		<description><![CDATA[YARD 0.4.0 (codenamed The Whole Nine) was just released today. It’s by far the biggest release since I started writing YARD in 2007. For those who don’t know, YARD is a Ruby documentation tool that surpasses the features of RDoc to bring much richer docs and extensibility to documenteurs. There’s plenty of new features to [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://yardoc.org">YARD 0.4.0</a> (codenamed The Whole Nine) was just released today. It’s by far the biggest release since I started writing YARD in 2007. For those who don’t know, YARD is a Ruby documentation tool that surpasses the features of RDoc to bring much richer docs and extensibility to documenteurs. There’s plenty of new features to discuss and plenty of new toys to show off (new templates, live doc server with user comments, new APIs, plugin support), so let’s get started.</p>
<p> </p>]]></content:encoded>
			<wfw:commentRss>http://gnuu.org/2009/11/15/yard-0-4-0-the-whole-nine/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>YARD can parse Rails</title>
		<link>http://gnuu.org/2008/02/25/yard-can-parse-rails/</link>
		<comments>http://gnuu.org/2008/02/25/yard-can-parse-rails/#comments</comments>
		<pubDate>Mon, 25 Feb 2008 08:59:07 +0000</pubDate>
		<dc:creator>Loren Segal</dc:creator>
				<category><![CDATA[post]]></category>
		<category><![CDATA[documentation]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[yard]]></category>

		<guid isPermaLink="false">http://gnuu.org/2008/02/25/yard-can-parse-rails/</guid>
		<description><![CDATA[With just a few tweaks, I just ran successfully YARD over actionpack, activesupport, and activerecord with just one error (repeated in a few spots) in the template generation process. I&#8217;m starting to realize that the parser isn&#8217;t as bad as I thought&#8211; there was one noticeable parser issue, which will be fixed in the coming [...]]]></description>
			<content:encoded><![CDATA[<p>With just a few tweaks, I just ran successfully YARD over <em>actionpack</em>, <em>activesupport</em>, and <em>activerecord</em> with just one error (repeated in a few spots) in the template generation process. I&#8217;m starting to realize that the parser isn&#8217;t as bad as I thought&#8211; there was one noticeable parser issue, which will be fixed in the coming weeks. I am still, however, looking closely at the <em>ruby2ruby</em> and <em>ruby_parser</em> projects&#8211; ruby_parser is useless to yard until it starts supporting line numbers, but I&#8217;m waiting anxiously to see where <a title="Zenspider / Ryan Davis&#39; blog" href="http://blog.zenspider.com/">Ryan Davis</a> is going to get with it.</p>
<p>You can check out the docs <a title="YARD Generated Docs" href="http://yard.soen.ca/docs">over here</a> but remember they&#8217;re not supposed to <em>look</em> nice yet.</p>
<p>And for those interested, the Subversion repository for YARD is at</p>
<pre class="dark">svn co http://soen.ca/svn/projects/ruby/yard/trunk</pre>]]></content:encoded>
			<wfw:commentRss>http://gnuu.org/2008/02/25/yard-can-parse-rails/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The YARD Roadmap to 1.0</title>
		<link>http://gnuu.org/2008/02/22/the-yard-roadmap-to-10/</link>
		<comments>http://gnuu.org/2008/02/22/the-yard-roadmap-to-10/#comments</comments>
		<pubDate>Fri, 22 Feb 2008 09:45:26 +0000</pubDate>
		<dc:creator>Loren Segal</dc:creator>
				<category><![CDATA[post]]></category>
		<category><![CDATA[documentation]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[yard]]></category>

		<guid isPermaLink="false">http://gnuu.org/2008/02/22/the-yard-roadmap-to-10/</guid>
		<description><![CDATA[It&#8217;s been almost a year now since the last release, but today I released a new version of my Ruby documentation tool, YARD 0.2.1. This release gives the tool a surprising amount of robustness for the little code I changed and should make it easier for people to play around with, since it can currently [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s been almost a year now since the last release, but today I released a new version of my Ruby documentation tool, <a title="The very un-updated YARD page" href="http://yard.soen.ca">YARD</a> 0.2.1. This release gives the tool a surprising amount of robustness for the little code I changed and should make it easier for people to play around with, since it can currently parse the following gems without exploding: <em>merb-core</em>, <em>merb-more</em>, <em>datamapper </em>and obviously <em>yard</em>. You can actually <a title="Various YARD generated documentation" href="http://yard.soen.ca/docs">see them here</a>, but <strong>don&#8217;t judge them for aesthetic merit</strong>&#8211; the templates were hacked together to show off the introspective power of the documentation, not the visual results. In fact, the only docs worth looking at are the yard docs, because without the Yardoc formatting, a lot of the point is lost. I believe it works with <em>active_record</em> too but I haven&#8217;t tried it recently. You can install YARD with a simple:</p>
<pre>sudo gem install yard</pre>
<p>To run this tool against your Ruby code just type in <tt>yardoc</tt> in your root directory; a <tt>doc</tt> directory will be created with an index.html file you can run to see the results, providing it didn&#8217;t crash in the process. <em>Note:</em> <em>It still is horribly buggy. </em></p>
<p>For those who don&#8217;t know (and haven&#8217;t clicked the above link to YARD&#8217;s homepage), YARD is a Ruby documentation tool meant to fix all the problems with RDoc. There are plenty, and I outlined them all on the YARD site, so read up. After you read up, close that page, because it&#8217;s horribly out of date.</p>
<h3>Where I&#8217;ve been</h3>
<p>This gem update was a long time coming. A long time thinking, and a long time pondering over what YARD would be and where it would go. I was very disappointed with the state of the code (read: parser) when I gave up, and I also got a little sidetracked over last summer with an internship at Apple, so I kind of abandoned it knowing I would eventually come back. Between having people actually ask me about my progress, and <a title="Merb Documentation. Check the Return types and such" href="http://www.merbivore.com/documentation/merb-core/head/index.html?a=M000286&amp;name=framework_root">Merb&#8217;s docs</a> using a format very similar to the one I created, I think it&#8217;s becoming increasingly clear that the time is either now or very soon. </p>
<p>And so, I had a chance to look at the <em>yard</em> source again recently and realized it actually works a lot better than I thought it did. I applied a few patches, and here we are.</p>
<h3>But there is still plenty of work to be done.</h3>
<p>I&#8217;ve actually known how I wanted to get to 1.0 for a while now. This week I bumped into a colleague of mine on the same flight as me to Seattle (well, he was going to Frisco for GDC, me to Redmond for a MS interview, more on that later) and we got to chatting about a bunch of projects we&#8217;ve been working ended up discussing how we plan our milestones for projects. I actually laid out my entire roadmap to him right there, so I figure I&#8217;ll make it more official and put it out on my blog for those interested in developments.</p>
<h3>The Roadmap</h3>
<p>I plan on dividing my releases in &#8217;0.x.0 &#8211; 0.x.9&#8242; segments to target one specific design feature all the way up to 1.0. There will be a number of iterations for each design feature, but for the most part each feature will be able to be developed independently/concurrently. That is to say, I plan on seeing through development of 0.3.x potentially before even finishing 0.2.x. As for what each exact release will be, that will depend on how development goes. I can&#8217;t get <em>that</em> detailed just yet.</p>
<h4>0.2.0 &#8211; 0.2.9: Parser fixes / complete parser rewrite</h4>
<p>The parser is horrid and needs to be fixed. On the other hand, every parser is horrid, so I&#8217;ll live with it the horridness. What I can&#8217;t live with is the <strong>bugginess</strong>. My only wish is that I define the grammar formally using some parser generator, that way I don&#8217;t have to look at the ugly part of the code. <a title="Ragel is a state machine compiler" href="http://www.cs.queensu.ca/~thurston/ragel/">Ragel</a> is currently my top choice, but <a title="Author of Ragel, Adrian Thurston" href="http://www.cs.queensu.ca/~thurston/">Adrian Thurston</a> personally recommended I look at <a href="http://www.cs.queensu.ca/home/cordy/Papers/CASCON03_MultiParsing.pdf">Island parsing</a>. There&#8217;s a lot of reading to do, and a lot of time to do it in. This code will need to change as Ruby does (going from 1.8 to 2.0) and there is a lot of testing that has to go through to get it working right. <em>This iteration will probably take a long time.</em> We can potentially use the Ruby lex file to do the lexing, but I don&#8217;t know much about hacking with that. <em>Help.</em></p>
<h4>0.3.0 &#8211; 0.3.9: Fixing the developer API</h4>
<p>YARD holds itself on being an extensible / modular piece of code that could easily support the documentation of various Ruby DSL&#8217;s through plugins. The code is not as elegant as it could be, but there is a general framework in place that can be whipped up into something much more usable. Once this is done, YARD can start talking to framework developers to write YARD plugins and use Yardoc formatting. Merb would be a great place to start since they&#8217;re already going in that direction.</p>
<h4>0.4.0 &#8211; 0.4.9: Revamping the templates</h4>
<p>Currently YARD was prototyped with a basic Javadoc-style template just to show off some of the inheritance features it has over RDoc doc templates. <em>It&#8217;s not meant to be pretty right now</em>. That needs to change eventually, but should be easy once the API is tacked down. YARD can potentially provide a number of templates for different peoples&#8217; tastes, from Javadoc (for JRuby guys) to a more Ruby feel, and everything in between. Output will not be limited to XHTML of course, and can be done in plaintext, man files, etc. </p>
<h4>0.5.0 &#8211; 0.5.9: Bring it to the community / design review &amp; feature requests</h4>
<p>As much as I have my say in software I make, other people have their own. It&#8217;s important to hear them out. This will be a good time to get the name out and start getting users using the software and evangelizing the benefits of YARD / structured documentation. I&#8217;ll be able to see what people can and can&#8217;t live with from a high level, and make some changes before it&#8217;s too late. Documentation, tutorials, howtos and basic written word can be fleshed out at this point, to give people better ways to access YARD&#8217;s internals.</p>
<h4>0.6.0 &#8211; 0.6.9: Extend on API with optimization focus on raw data storage, consider database adapters.</h4>
<p>One of the other goals of YARD is to provide a raw format for all the information that YARD collects about your source code. This enables developers to perform analysis on documentation through auditing tools, or simply provide a way to serialize the documentation data to another format that may not directly be for human consumption: YAML, XML, etc. This would also mean providing a way for developers to pull the contents from the raw data file to a database, which could enable developers to write interactive documentation applications for their frameworks/code (<em>what caboo.se is currently attempting to do&#8211; but manually, or even <a title="RailsLodge is a documentation site with a misleading name." href="http://www.railslodge.com/about_us">RailsLodge</a></em>). This could even mean allowing YARD to store data directly to a database of choice using various SQL adapters.</p>
<h4>0.7.0 &#8211; 0.7.9: Make YARD work with everyone&#8217;s code, up to 2.0</h4>
<p>By this point the parser should be far superior to the current 0.2.1 state. Now it should be parsing Ruby&#8217;s source tree, Rails, Merb, etc. without issues. At this point we can pre-emptively start adding compatibility for Ruby1.9.x since this will need changes to the parser. Better now than after Ruby1.9.x is finalized.</p>
<h4>0.8.0 &#8211; 0.8.9: Integrate YARD with Gems/Ruby</h4>
<p>Currently when you release a gem you can have it generate RDoc. We&#8217;re going to want to change that&#8211; well, not change, just allow Yardoc generation. This will require some cross-patching, and a little convincing the gems guys that YARD is awesome. It should be at this point. Also, we want to have YARD generating Yardoc files for Ruby&#8217;s source tree when it installs at this point so that you can <tt>yri String</tt>, for instance, or link to the String class from your applications documentation.</p>
<p>This is where we would need to start converting Ruby&#8217;s RDoc format to Yardoc in preparation for the 1.0. This will take a while and extend all the way through the 0.9.x run as well.</p>
<h4>0.9.0 &#8211; 0.9.9: Run a round of stability patches and general bugfixes, feature-set should be stable.</h4>
<p>Have another iteration of community feedback, last minute minor changes to the source for small fixes, minor feature additions/removals, but nothing too grand. YARD should already be awesome and integrated at this point, right? We should also be continuing to convert Ruby docs here.</p>
<h2>1.0!</h2>
<p>Matz pulls YARD into Ruby as a standard module replacing RDoc. I can dream, right?</p>
<h3>Help me dammit!</h3>
<p>This project needs developers. Rewriting a parser isn&#8217;t easy, and that&#8217;s just one of the many steps involved. If anyone finds any shred of motivation to help in any way they can, <em>pleasepleaseplease</em> contact me [l s e g a l (a t) s o e n . c a]. I&#8217;m not usually the type to ask for help but it would be extremely healthy for <strike>this</strike> <em>any</em> project not to hinge on just one person. If there&#8217;s any set of features listed above that you think you can tackle and you actually want to see this get done, get in touch. Stuff like template design, coding, writing documentation, testing, or even just blogging about the project / making a screencast (when there&#8217;s something to screencast, of course), it all helps.</p>]]></content:encoded>
			<wfw:commentRss>http://gnuu.org/2008/02/22/the-yard-roadmap-to-10/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
