<?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; yard</title>
	<atom:link href="http://gnuu.org/tag/yard/feed/" rel="self" type="application/rss+xml" />
	<link>http://gnuu.org</link>
	<description>my word against yours, fight.</description>
	<lastBuildDate>Fri, 18 Dec 2009 06:11:40 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Visualizing Class Relationships with YARD and InfoVis</title>
		<link>http://gnuu.org/2009/12/18/visualizing-class-relationships/</link>
		<comments>http://gnuu.org/2009/12/18/visualizing-class-relationships/#comments</comments>
		<pubDate>Fri, 18 Dec 2009 05:30:36 +0000</pubDate>
		<dc:creator>Loren Segal</dc:creator>
				<category><![CDATA[post]]></category>
		<category><![CDATA[class diagram]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[visualization]]></category>
		<category><![CDATA[yard]]></category>

		<guid isPermaLink="false">http://gnuu.org/?p=361</guid>
		<description><![CDATA[Note: This post requires an HTML5 capable browser. FF3.5+, Safari, Chrome (or any WebKit browser) will do the trick. That should cover most of my readers.
I love visualization toolkits, so when I found out about the JS visualization toolkit InfoVis, I had to play with it. Generally the first thing that comes to mind when [...]]]></description>
			<content:encoded><![CDATA[<p class="note"><strong>Note:</strong> This post requires an HTML5 capable browser. FF3.5+, Safari, Chrome (or any WebKit browser) will do the trick. That should cover most of my readers.</p>
<p>I love visualization toolkits, so when I found out about the JS visualization toolkit <a href="http://thejit.org">InfoVis</a>, I had to play with it. Generally the first thing that comes to mind when visualizing data is class model relationships, so I figured I’d write another snippet to export data from <a href="http://yardoc.org">YARD</a> into a JS-friendly format and see how it looked. This time, I’ll spare the show-and-tell and just do the showing, since the code to export this data is fairly trivial.</p>
<p>I basically used the few examples from the site but plugged in class relationship data from Ruby libraries to get the following visualization of YARD in particular:</p>
<h2>Visualization 1: Simple Tree View</h2>
<p><iframe src="/yardviz/viz1.html" width="605" height="605" frameborder="0"></iframe></p>
<p>Pretty simple, we can also make it look a little fancier:</p>
<h2>Visualization 2: Polar Tree View</h2>
<p><iframe src="/yardviz/viz2.html" width="605" height="605" frameborder="0"></iframe></p>
<h2>Visualization 3: Coupling</h2>
<p>It then occurred to me that visualizations like these (weighted graphs in particular) would be a good way to visualize class coupling in your library. I experimented with the concept by generating a weighted graph, but it seems InfoVis&#8217; RGraph class (which they demo a weighted graph with) isn&#8217;t really that great at really visualizing the weights, also it doesn&#8217;t seem to support weighted graphs. The end result shows some interesting data, but it&#8217;s not exactly great to really view coupling.</p>
<p class="note"><strong>Note:</strong> FF doesn&#8217;t seem to like this one. Don&#8217;t be surprised if it doesn&#8217;t work.</p>
<p><iframe src="/yardviz/viz3.html" width="605" height="605" frameborder="0"></iframe></p>
<p>Those are the visualizations I played with. There&#8217;s a <a href="/yardviz">nicer version here</a> that lets you see visualizations for Ruby&#8217;s core lib and Rails in addition to YARD&#8217;s, plus it has some extra niceties like showing methods in the current highlighted class on the side (not enough space to show it on my blog). Check it out.</p>
<p>Thanks to <strong>Josh Martin</strong> for pointing out InfoVis today, by the way.</p>]]></content:encoded>
			<wfw:commentRss>http://gnuu.org/2009/12/18/visualizing-class-relationships/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 installs, [...]]]></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 long time [...]]]></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>Auto-Generated ER Diagrams of Popular Rails Projects</title>
		<link>http://gnuu.org/2009/11/30/auto-generated-er-diagrams-of-popular-rails-projects/</link>
		<comments>http://gnuu.org/2009/11/30/auto-generated-er-diagrams-of-popular-rails-projects/#comments</comments>
		<pubDate>Tue, 01 Dec 2009 04:53:00 +0000</pubDate>
		<dc:creator>Loren Segal</dc:creator>
				<category><![CDATA[post]]></category>
		<category><![CDATA[er diagram]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[uml]]></category>
		<category><![CDATA[yard]]></category>
		<category><![CDATA[yuml]]></category>

		<guid isPermaLink="false">http://gnuu.org/?p=335</guid>
		<description><![CDATA[I discovered yUML.me today. It’s a really awesome project and allows you to hotlink UML class, activity or use-case diagrams on any page. All of the UML data is in the URL itself, so it’s real easy to embed these images anywhere without JS or API’s. I’ve always wanted to use YARD to generate ER [...]]]></description>
			<content:encoded><![CDATA[<p>I discovered <a href="http://yuml.me">yUML.me</a> today. It’s a really awesome project and allows you to hotlink UML class, activity or use-case diagrams on any page. All of the UML data is in the URL itself, so it’s real easy to embed these images anywhere without JS or API’s. I’ve always wanted to use <a href="http://yardoc.org">YARD</a> to generate <a href="http://en.wikipedia.org/wiki/Entity-relationship_model">ER diagrams</a> programmatically, and I figured this would be a great way to test out the service.</p>
<p>Since I don’t write many Rails apps, I figured I’d select some of the most popular open source rails apps out there and generate ER diagrams for those. It turned out to be an interesting exercise in visualizing database structures of some of the projects people use day to day. </p>
<p>The projects I chose were: <a href="http://github.com/parasew/instiki">Instiki</a>, <a href="http://github.com/qrush/gemcutter">Gemcutter</a>, <a href="http://github.com/desaperados/seed">Seed</a>, <a href="http://github.com/radiant/radiant">Radiant</a>, <a href="http://github.com/emk/mephisto">Mephisto</a>, <a href="http://github.com/insoshi/insoshi">Insoshi</a> and <a href="http://github.com/railsdog/spree">Spree</a>. The results range from awesome to scary, but you can judge for yourselves.</p>
<h3>Results</h3>
<h4>Instiki</h4>
<p>Nice and simple. Maybe too simple?</p>
<p><img src="http://yuml.me/diagram/scruffy/class/[Web]++-*[Page],[Web]++-*[WikiFile],[Web]++-*[Revision],[Page]++-*[Revision],[Page]++-*[WikiReference],[Page]1--Current Revision-1[Revision]" /></p>
<h4>Gemcutter</h4>
<p>Here’s a nice one. Sufficiently complex but still easy to follow. I should point out at this point that dashed lines refer to has-many-through relationships (with the attr name as the arrow label.</p>
<p><img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" src="http://yuml.me/diagram/scruffy/class/[User]++-*[Rubygem],[User]-Rubygems-.-*[Rubygem],[User]++-*[Ownership],[User]++-*[Subscription],[Version]++-*[Dependency],[Version]++-*[Download],[Rubygem]++-*[Ownership],[Rubygem]-Users-.-*[User],[Rubygem]++-*[Subscription],[Rubygem]++-*[Version],[Rubygem]1--1[Linkset],[Dependency]1--1[Rubygem]" /></p>
<h4>Seed</h4>
<p>This is probably the cleanest one. The use of STI in the models really makes this look nice.</p>
<p><img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" src="http://yuml.me/diagram/scruffy/class/[Page]++-*[Article],[Page]++-*[Newsitem],[Page]++-*[Post],[Page]++-*[Component],[Page]++-*[Event],[Role]*--*[User],[Article]++-*[Image],[Article]++-*[Document],[Article]^-[Newsitem],[Password]1--1[User],[Component]1--Source-1[Page],[Component]++-*[Document],[Article]^-[Post],[Post]++-*[Comment]" /></p>
<h4>Radiant</h4>
<p>Simple, but those recursive relationships look a little messy, don’t they? I guess it would look better if the layout was done right. Note that those labels again refer to the attribute name.</p>
<p><img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" src="http://yuml.me/diagram/scruffy/class/[User]1--Created By-1[User],[User]1--Updated By-1[User],[Layout]++-*[Page],[Layout]1--Created By-1[User],[Layout]1--Updated By-1[User],[Snippet]1--Created By-1[User],[Snippet]1--Updated By-1[User],[PagePart]1--1[Page],[Page]^-[EnvDumpPage],[Page]^-[FileNotFoundPage],[Page]++-Part-*[PagePart],[Page]1--Created By-1[User],[Page]1--Updated By-1[User]" width="590" height="410" /></p>
<h4>Mephisto</h4>
<p>Manageable.</p>
<p><img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" src="http://yuml.me/diagram/scruffy/class/[Tag]++-*[Tagging],[Site]++-*[Section],[Site]++-*[Article],[Site]++-*[Comment],[Site]++-*[Event],[Site]++-*[CachedPage],[Site]++-*[Asset],[Site]++-*[Membership],[Site]-Users-.-*[User],[User]++-*[Article],[User]++-*[Membership],[User]++-*[Site],[Asset]++-*[AssignedAsset],[Event]1--1[User],[Content]1--1[User],[Content]1--1[Site],[Tagging]1--1[Taggable],[Section]++-*[AssignedSection],[Content]^-[Article],[Content]^-[Comment],[Comment]1--1[Article],[Comment]1--1[Event],[Article]++-*[AssignedSection],[Article]++-*[Section],[Article]++-*[Event],[Article]++-*[AssignedAsset],[Article]++-*[Asset]" width="590" height="792" /></p>
<h4>Insoshi</h4>
<p>Now we&#8217;re getting crazy. yUML is starting to fail on us.</p>
<p>Click the image to see the madness</p>
<p><a style="border: 0" href="http://yuml.me/diagram/scruffy/class/[Post]++-*[Activity],[Blog]++-Post-*[BlogPost],[Photo]++-*[Activity],[Event]++-*[EventAttendee],[Event]-People-.-*[Person],[Event]++-*[Comment],[Event]++-*[Activity],[Topic]1--1[Person],[Topic]++-Post-*[ForumPost],[Topic]++-*[Activity],[Forum]++-*[Topic],[Forum]++-*[Post],[Person]1--1[Blog],[Person]++-*[EmailVerification],[Person]++-*[Comment],[Person]++-*[Connection],[Person]++-*[Contact],[Person]++-*[Photo],[Person]-Contacts-.-*[Contact],[Person]++-*[Feed],[Person]++-*[Activity],[Person]++-*[PageView],[Person]++-*[Gallery],[Person]++-*[Event],[Person]++-*[EventAttendee],[Person]-Events-.-*[Event],[Comment]1--1[Commentable],[Comment]1--Commenter-1[Person],[Comment]1--1[Post],[Comment]++-*[Activity],[Gallery]++-*[Photo],[Gallery]++-*[Activity],[Activity]1--1[Item],[Activity]++-*[Feed],[Post]^-[BlogPost],[BlogPost]1--1[Blog],[BlogPost]++-*[Comment],[Thumbnail]1--1[Photo],[Connection]1--Contact-1[Person],[Connection]++-*[Activity],[Post]^-[ForumPost],[ForumPost]1--1[Topic],[ForumPost]1--1[Person],[Person]^-[AllPerson],[Conversation]++-*[Message],[Communication]^-[Message],[Message]1--Sender-1[Person],[Message]1--Recipient-1[Person]"><img src="http://yuml.me/diagram/scruffy/class/[Post]++-*[Activity],[Blog]++-Post-*[BlogPost],[Photo]++-*[Activity],[Event]++-*[EventAttendee],[Event]-People-.-*[Person],[Event]++-*[Comment],[Event]++-*[Activity],[Topic]1--1[Person],[Topic]++-Post-*[ForumPost],[Topic]++-*[Activity],[Forum]++-*[Topic],[Forum]++-*[Post],[Person]1--1[Blog],[Person]++-*[EmailVerification],[Person]++-*[Comment],[Person]++-*[Connection],[Person]++-*[Contact],[Person]++-*[Photo],[Person]-Contacts-.-*[Contact],[Person]++-*[Feed],[Person]++-*[Activity],[Person]++-*[PageView],[Person]++-*[Gallery],[Person]++-*[Event],[Person]++-*[EventAttendee],[Person]-Events-.-*[Event],[Comment]1--1[Commentable],[Comment]1--Commenter-1[Person],[Comment]1--1[Post],[Comment]++-*[Activity],[Gallery]++-*[Photo],[Gallery]++-*[Activity],[Activity]1--1[Item],[Activity]++-*[Feed],[Post]^-[BlogPost],[BlogPost]1--1[Blog],[BlogPost]++-*[Comment],[Thumbnail]1--1[Photo],[Connection]1--Contact-1[Person],[Connection]++-*[Activity],[Post]^-[ForumPost],[ForumPost]1--1[Topic],[ForumPost]1--1[Person],[Person]^-[AllPerson],[Conversation]++-*[Message],[Communication]^-[Message],[Message]1--Sender-1[Person],[Message]1--Recipient-1[Person]" width="590" height="616" /></a></p>
<h4>Spree</h4>
<p>This one isn&#8217;t exactly fair. I think the amount of complexity here is a little out of the scope of a single UML diagram. It&#8217;s fun to look at, though.</p>
<p>Click the image to see the madness</p>
<p><a style="border: 0" href="http://yuml.me/diagram/scruffy/class/[Zone]++-*[ZoneMember],[Zone]++-*[TaxRate],[Zone]++-*[ShippingMethod],[User]++-*[Order],[User]*--*[Role],[User]1--Ship Addres-1[Addres],[User]1--Bill Addres-1[Addres],[Asset]1--1[Viewable],[Asset]^-[Image],[Order]++-*[StateEvent],[Order]++-*[LineItem],[Order]++-*[InventoryUnit],[Order]++-*[Payment],[Order]++-*[CreditcardPayment],[Order]1--1[Checkout],[Order]1--1[BillAddres],[Order]++-*[Shipment],[Order]++-*[Adjustment],[Order]++-*[Charge],[Order]++-*[Credit],[Order]++-*[ShippingCharge],[Order]++-*[TaxCharge],[Order]++-*[CouponCredit],[Order]++-Non Zero Charge-*[Charge],[State]1--1[ZoneMember],[State]1--1[Zone],[Coupon]++-*[CouponCredit],[Variant]++-*[InventoryUnit],[Variant]++-*[LineItem],[Variant]++-*[Image],[Country]++-*[State],[Country]1--1[ZoneMember],[Country]1--1[Zone],[Address]1--1[Country],[Address]1--1[State],[Address]++-*[Checkout],[Address]++-*[Shipment],[Product]++-*[ProductOptionType],[Product]++-*[OptionType],[Product]++-*[ProductProperty],[Product]++-*[Image],[Product]1--1[TaxCategory],[Product]*--*[Taxon],[Product]1--1[ShippingCategory],[Product]1--Master-1[Variant],[Product]++-*[Variant],[Product]++-Variants Including Master-*[Variant],[Shipment]1--1[Addres],[Shipment]1--1[ShippingCharge],[Property]++-*[ProductProperty],[Property]++-*[Product],[Checkout]1--Bill Addres-1[Addres],[Checkout]1--Shipments-.-1[Shipment],[Taxonomy]++-*[Taxon],[Taxonomy]1--Root-1[Taxon],[Prototype]*--*[Property],[LineItem]1--1[Product],[Adjustment]1--1[AdjustmentSource],[Calculator]1--1[Calculable],[Preference]1--1[Owner],[Preference]1--1[Group],[Creditcard]1--1[Checkout],[Creditcard]1--1[Addres],[Creditcard]++-*[CreditcardPayment],[StateEvent]1--1[User],[OptionType]++-*[OptionValue],[OptionType]++-*[ProductOptionType],[OptionType]*--*[Prototype],[ZoneMember]1--1[Zoneable],[TaxCategory]++-*[TaxRate],[OptionValue]*--*[Variant],[ProductGroup]++-*[ProductScope],[ShippingMethod]++-*[ShippingRate],[ShippingMethod]++-*[Shipment],[ShippingCategory]++-*[ShippingRate],[Configuration]^-[AppConfiguration],[Payment]^-[CreditcardPayment],[CreditcardPayment]++-*[CreditcardTxn],[Adjustment]^-[Charge],[Adjustment]^-[Credit],[Charge]^-[TaxCharge],[Credit]^-[CouponCredit],[Charge]^-[ShippingCharge]"><img src="http://yuml.me/diagram/scruffy/class/[Zone]++-*[ZoneMember],[Zone]++-*[TaxRate],[Zone]++-*[ShippingMethod],[User]++-*[Order],[User]*--*[Role],[User]1--Ship Addres-1[Addres],[User]1--Bill Addres-1[Addres],[Asset]1--1[Viewable],[Asset]^-[Image],[Order]++-*[StateEvent],[Order]++-*[LineItem],[Order]++-*[InventoryUnit],[Order]++-*[Payment],[Order]++-*[CreditcardPayment],[Order]1--1[Checkout],[Order]1--1[BillAddres],[Order]++-*[Shipment],[Order]++-*[Adjustment],[Order]++-*[Charge],[Order]++-*[Credit],[Order]++-*[ShippingCharge],[Order]++-*[TaxCharge],[Order]++-*[CouponCredit],[Order]++-Non Zero Charge-*[Charge],[State]1--1[ZoneMember],[State]1--1[Zone],[Coupon]++-*[CouponCredit],[Variant]++-*[InventoryUnit],[Variant]++-*[LineItem],[Variant]++-*[Image],[Country]++-*[State],[Country]1--1[ZoneMember],[Country]1--1[Zone],[Address]1--1[Country],[Address]1--1[State],[Address]++-*[Checkout],[Address]++-*[Shipment],[Product]++-*[ProductOptionType],[Product]++-*[OptionType],[Product]++-*[ProductProperty],[Product]++-*[Image],[Product]1--1[TaxCategory],[Product]*--*[Taxon],[Product]1--1[ShippingCategory],[Product]1--Master-1[Variant],[Product]++-*[Variant],[Product]++-Variants Including Master-*[Variant],[Shipment]1--1[Addres],[Shipment]1--1[ShippingCharge],[Property]++-*[ProductProperty],[Property]++-*[Product],[Checkout]1--Bill Addres-1[Addres],[Checkout]1--Shipments-.-1[Shipment],[Taxonomy]++-*[Taxon],[Taxonomy]1--Root-1[Taxon],[Prototype]*--*[Property],[LineItem]1--1[Product],[Adjustment]1--1[AdjustmentSource],[Calculator]1--1[Calculable],[Preference]1--1[Owner],[Preference]1--1[Group],[Creditcard]1--1[Checkout],[Creditcard]1--1[Addres],[Creditcard]++-*[CreditcardPayment],[StateEvent]1--1[User],[OptionType]++-*[OptionValue],[OptionType]++-*[ProductOptionType],[OptionType]*--*[Prototype],[ZoneMember]1--1[Zoneable],[TaxCategory]++-*[TaxRate],[OptionValue]*--*[Variant],[ProductGroup]++-*[ProductScope],[ShippingMethod]++-*[ShippingRate],[ShippingMethod]++-*[Shipment],[ShippingCategory]++-*[ShippingRate],[Configuration]^-[AppConfiguration],[Payment]^-[CreditcardPayment],[CreditcardPayment]++-*[CreditcardTxn],[Adjustment]^-[Charge],[Adjustment]^-[Credit],[Charge]^-[TaxCharge],[Credit]^-[CouponCredit],[Charge]^-[ShippingCharge]" width="590" height="351" /></a></p>
<h3>How?</h3>
<p>All of these diagrams were generated automatically with a simple <a href="http://yardoc.org">YARD</a> handler and piped into <a href="http://yuml.me">yUML</a>. The code is on gist:</p>
<p> <script src="http://gist.github.com/246017.js"></script></p>]]></content:encoded>
			<wfw:commentRss>http://gnuu.org/2009/11/30/auto-generated-er-diagrams-of-popular-rails-projects/feed/</wfw:commentRss>
		<slash:comments>0</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 at Montreal.rb</title>
		<link>http://gnuu.org/2009/06/17/yard-at-montreal-rb/</link>
		<comments>http://gnuu.org/2009/06/17/yard-at-montreal-rb/#comments</comments>
		<pubDate>Wed, 17 Jun 2009 06:05:30 +0000</pubDate>
		<dc:creator>Loren Segal</dc:creator>
				<category><![CDATA[post]]></category>
		<category><![CDATA[Montreal.rb]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[yard]]></category>

		<guid isPermaLink="false">http://gnuu.org/2009/06/17/yard-at-montreal-rb/</guid>
		<description><![CDATA[I gave a talk today at Montreal.rb. It was great to see people interested in improving Ruby documentation. You can read the slides below (direct link).
]]></description>
			<content:encoded><![CDATA[<p>I gave a talk today at <a href="http://montrealonrails.com">Montreal.rb</a>. It was great to see people interested in improving Ruby documentation. You can read the slides below (<a href="http://gnuu.org/wp-content/uploads/2009/06/yard.pdf">direct link</a>).</p>
<p></p>]]></content:encoded>
			<wfw:commentRss>http://gnuu.org/2009/06/17/yard-at-montreal-rb/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Introducing a New Blog (Design)</title>
		<link>http://gnuu.org/2009/06/01/introducing-a-new-blog-design/</link>
		<comments>http://gnuu.org/2009/06/01/introducing-a-new-blog-design/#comments</comments>
		<pubDate>Mon, 01 Jun 2009 06:32:53 +0000</pubDate>
		<dc:creator>Loren Segal</dc:creator>
				<category><![CDATA[post]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[new blog]]></category>
		<category><![CDATA[yard]]></category>

		<guid isPermaLink="false">http://gnuu.org/2009/06/01/introducing-a-new-blog-design/</guid>
		<description><![CDATA[Since YARD development has been slowing down in preparation for the 0.2.3 release coming this week, I had some time to step back from writing code and start putting together docs. I was planning on writing a bunch of design &#38; architecture overviews for yard so more people can have a sufficient set of resources [...]]]></description>
			<content:encoded><![CDATA[<p>Since <a href="http://github.com/lsegal/yard">YARD</a> development has been slowing down in preparation for the 0.2.3 release coming this week, I had some time to step back from writing code and start putting together docs. I was planning on writing a bunch of design &amp; architecture overviews for yard so more people can have a sufficient set of resources to figure out how to write plugins and such. There are actually plenty of developers that have expressed interest so far, and I’m going to be spending this entire week putting out as much information as I can. As I started doing this, though, I realized I really haven’t done any web design or written any significant web related content in a <em>really</em> long time, so this weekend I decided I would take a little break from YARD to focus on some other much needed improvements.</p>
<p>I’m referring specifically to my blog, which was becoming a complete mess of ugliness and broken HTML. I decided to completely gut it, remove a bunch of useless crap and focus on making the content clean and easy to read. This is pretty much a warm-up exercise for the coming week of writing docs and putting out the new YARD site, but it’s something I should have done long ago. Hopefully this will give me some new incentive to write more (about YARD?) </p>
<h2>It’s not a “blog” anymore</h2>
<p>You may have noticed that comments are gone. Good. Comments are often useful, but to be honest, like many other “bloggers”, I’ve discovered they often don’t add much to the conversation (I rarely get comments on my blog anyway, so styling all that HTML is a waste of my time). A lot of people will say a site is “not a blog” if it does not allow a two-way conversation between the author and the reader. Fine, then I guess this is no longer a blog. My intention for writing articles is <em>not</em> to inherently start a conversation or get feedback. I write because I want to share, not because I need validation or care that you think I’m a dumbass. Don’t get me wrong, I still like when people point out errors and omissions or insert points of view, so if you notice anything send me an email or twitter me instead, we can have the discussion there. Better yet, reply with your own article. This keeps the conversation sane, civil and keeps the signal-to-noise ratio down. I’ve noticed this trend from other blogs I visit, and I’m starting to think the future of blogging will look a lot more like magazine articles than threaded conversations. Dialog is good, but it should be controlled so that it remains on topic and relevant.</p>
<p>I mentioned <a href="http://twitter.com/lsegal">Twitter</a> is a good way to reach me. I’ve actually been using it a lot for the past 6 months; a lot more than this blog. It’s no surprise that microblogging is way easier than writing long articles, so for the past few months my Twitter account has probably been a better source of blog content than my blog (I guess this is probably why people like Tumblr). Let’s be honest, I’m probably not going to start blogging much more than I already do, but I can keep up with Twitter pretty well. Because of this, I’ve incorporated my Twitter feed into my blog and it’s prominently displayed on the front page and in the sidebar on others. I didn’t just add it as a widget to fill whitespace. Instead, expect that feed to be a major source of content for this site. Though you should probably just <a href="http://twitter.com/lsegal">follow me</a>.</p>
<p>Anyway, enough about me. Hope you like the new design.</p>]]></content:encoded>
			<wfw:commentRss>http://gnuu.org/2009/06/01/introducing-a-new-blog-design/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Practical YARD Examples 0001: Generating class diagrams with YARD &amp; Graphviz</title>
		<link>http://gnuu.org/2008/02/29/generating-class-diagrams-with-yard-and-graphviz/</link>
		<comments>http://gnuu.org/2008/02/29/generating-class-diagrams-with-yard-and-graphviz/#comments</comments>
		<pubDate>Fri, 29 Feb 2008 07:15:49 +0000</pubDate>
		<dc:creator>Loren Segal</dc:creator>
				<category><![CDATA[post]]></category>
		<category><![CDATA[class diagram]]></category>
		<category><![CDATA[graphviz]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[visualization]]></category>
		<category><![CDATA[yard]]></category>

		<guid isPermaLink="false">http://gnuu.org/2008/02/29/generating-class-diagrams-with-yard-and-graphviz/</guid>
		<description><![CDATA[So, recently I was looking at refactoring the current internal structure of YARD to improve the developer API and general stability improvements and I figured I would draw out the class diagram as a first step in figuring out what needed to stay and what needed to go. Problem was, having been away from the [...]]]></description>
			<content:encoded><![CDATA[<p>So, recently I was looking at refactoring the current internal structure of YARD to improve the developer API and general stability improvements and I figured I would draw out the class diagram as a first step in figuring out what needed to stay and what needed to go. Problem was, having been away from the project for so long, I completely forgot what YARD looked like on the inside. I did not want to dig through the source; I wanted to see the project from afar to keep my design from being influenced by the current layout (in terms of implementation details). I really needed to visualize the project from a high level. </p>
<p>Using the raw data file that <tt>yardoc</tt> generates when it is run, I mocked up a quick tool called <tt>yard-graph</tt> which allowed me to visualize my project using <a title="Open source graphing tool" href="http://www.graphviz.org/">Graphviz</a>. <em>Note that this is the same functionality that I described any developer could take advantage of in <a title="YARD Alpha Release 0.1a" href="http://yard.soen.ca/yard-release-0-1a">YARD&#8217;s very first release</a></em>. Doing things like this <strong>is what YARD is all about</strong>. The results aren&#8217;t quite perfect due to both the incompleteness of the graph tool and the limitations of <em>Graphviz</em>, like how hierarchical mode is extremely strict about hierarchy and likes to make <em>extremely wide graphs</em>, but they&#8217;re highly suitable for my needs; actually, I would call them quite excellent for my needs. <em>Take a look!</em></p>
<p><a href="http://yard.soen.ca/docs/yard-0.2.1/yard-simple.pdf"><img height="255" alt="Click for the full diagram" src="http://www.gnuu.org/wp-content/uploads/2008/02/PracticalYARDExamples_171D/yardsimplecrop.png" width="350" /></a> </p>
<p>As an excercise, I also implemented the ability to show module dependencies (via <tt>include</tt>) and the public class API. This is what that looks like:</p>
<p><a href="http://yard.soen.ca/docs/yard-0.2.1/yard.pdf"><img height="178" alt="Click for the full class diagram. This one's a doozy." src="http://www.gnuu.org/wp-content/uploads/2008/02/PracticalYARDExamples_171D/yardcrop.png" width="350" /></a> </p>
<p>For those interested, this code lives in the <a title="YARD on Github: diagram banch" href="http://github.com/lsegal/yard/tree/diagram">diagram branch</a> in Github (yea, I got a free invite and decided to try it out; I forgot / have no idea who invited me&#8211; please email me so I can thank you, by the way). After a <tt>rake install</tt> of the gem, you can run (in your root project directory, or maybe <tt>lib/</tt> to ignore tests):</p>
<pre class="dark">yard-graph --dependencies --empty-mixins --full | dot -T pdf -o diagram.pdf</pre>
<p>This requires <tt>dot</tt> (part of <em>Graphviz</em>) and generates the diagrams with all the above options, module dependencies (<tt>&#45;-dependencies</tt>) and <tt>&#45;-full</tt> for the class/instance methods, constants and attributes info. The <tt>&#45;-empty-mixins</tt> flag shows empty modules as nodes instead of subgraphs (the delimiting boxes), since by default <em>Graphviz</em> ignores empty subgraphs. If you use modules as mixins and not just a way to namespace classes, you&#8217;ll want this on or you won&#8217;t see your modules.</p>
<p>I also highly suggest using a vector format for output like pdf as in the above example. Bitmap files can get <em>really big</em>. If you want proof, check out <a title="It&#39;s so BIG it doesn't even load with Adobe's PDF viewer!" href="http://yard.soen.ca/docs/actionpack-2.0.2/rails.pdf">the full class diagram of the rails source</a> I generated and imagine that as a bitmap.</p>
<p>Hopefully I can get some more practical uses of YARD up in the next coming weeks for people to see how awesome it is!</p>]]></content:encoded>
			<wfw:commentRss>http://gnuu.org/2008/02/29/generating-class-diagrams-with-yard-and-graphviz/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 &#8216;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>
