Nick Sieger: RubyConf: Matz Keynote tag:blog.nicksieger.com,2005:Typo Typo 2010-11-22T18:17:31+00:00 Nick Sieger urn:uuid:84824f7d-b010-4850-8e33-4f41df8179f7 2006-10-22T03:41:22+00:00 2010-11-22T18:17:31+00:00 RubyConf: Matz Keynote <h1>The Return of the Bikeshed</h1> <h3>or Nuclear Plant in the Backyard</h3> <h2>Ruby is</h2> <ul> <li>Scripting (some people outside of Japan don&#8217;t like this one)</li> <li>Programming (sure, it is)</li> <li>Lightweight (see <a href="/articles/2006/10/20/rubyconf-history-of-ruby">Takahashi&#45;san&#8217;s history</a> &#45;&#45; LL is a popular term in Japan)</li> <li>Dynamic</li> </ul> <p>The agile manifesto claims 4 values&#46; It encourages developers to act responsibly&#46; What if these values were applied to programming languages?</p> <ul> <li>Individuals and interactions: language design should focus on users (i&#46;e&#46;, developers)&#46;</li> <li>Working software: language should encourage readability</li> <li>Collaboration over contracts: expressive language, which helps communication&#46;</li> <li>Responding to change: language should embrace change</li> </ul> <p>Thus, Ruby is:</p> <h1>The Agile Language</h1> <h3>The Good, Bad, Ugly of Ruby</h3> <h2>Good</h2> <ul> <li>Sweet language</li> <li>RoR</li> <li>Ruby people are nice (Martin Fowler &#45;&#45; &#8220;because Matz is nice&#8221;)</li> </ul> <h2>Ugly</h2> <ul> <li>eval&#46;c</li> <li>parse&#46;y</li> </ul> <h2>Bad</h2> <ul> <li>Ruby 2 vaporware &#45;&#45; close to longest in open source (Rite > Perl6)</li> </ul> <h2>Bikeshed</h2> <p>What is the bikeshed? (FreeBSD people hate the bikeshed&#46;)</p> <p>People tend to argue about little things that they know enough to do so&#46; The amount of noise related to change is inversely proportional to the complexity of the change&#46; Thus leaving important things behind&#46;</p> <p>The nuclear plant is too complex, so we leave it up to experts to think about it&#46; As a result, we spend time on unimportant things&#46;</p> <ul> <li>Symbol &lt; String</li> <li>#lines</li> <li>removing private and protected</li> </ul> <p>Thus leading to suggest that Ruby is a&#46;&#46;&#46;</p> <h2>Fragile language</h2> <ul> <li>Ruby 1&#46;8 is good enough! We&#8217;re not in a hurry&#46;</li> <li>Extreme arguing &#45;&#45; why not make everything easy enough to be argued by everyone?</li> </ul> <h2>Design game</h2> <ul> <li>Gather wild ideas</li> <li>Try to make it the best language ever? (We feel good about Ruby, but I don&#8217;t know why&#46;)</li> <li>Shed light on undefined corners of Ruby</li> <li>Document a specification</li> </ul> <p><a href="http://www.rcrchive.net/">RCRchive</a> so far hasn&#8217;t worked out, because a few people took it too seriously&#46;</p> <ul> <li>Ruby will stay Ruby, but it shouldn&#8217;t be a vague idea&#46; Rationale, analysis, discussion, with a prototype implementation</li> <li>I (Matz) will stay the benevolent dictator, but will promise to be as open as possible&#46;</li> <li>80&#45;90% compatibility&#46; It can break, but we have to keep the same philosophy that we love&#46;</li> </ul> <p><em>Hey, we need optional explicit typing in Ruby!</em> So what!</p> <p>Look at Python, it has a very organized (ahem, strict, something [laughter]) PEP system that seems to be working well&#46; Mailing lists are more suitable for discussion&#46; Use RCRchive as a starting point, but use a new system/channel for each proposal&#46; Prototypes are needed&#46; Running code accelerates the discussion&#46;</p> <p>Why should we start this game? I want to share language design with the community&#46; I&#8217;m tired of the slow evolution of Ruby&#46; We&#8217;re using 3&#45;year&#45;old technology&#46; We need to catch up, so that people aren&#8217;t saying &#8220;Ruby, we had that language a long time ago!&#8221; Educating the developer community is a great venue for learning about language design&#46;</p> <p>I may be hit by a truck someday, in which case Ruby will be Ruby 1&#46;8 forever! In that case you can do whatever you want with 1&#46;9&#46;</p> <p>Considering a submission deadline &#45;&#45; 2007&#45;04&#45;30, but it might not be needed&#46; Classify proposals under GBU (Good, bad ugly), plus version (1&#46;9 or 2&#46;0)&#46; Implement them&#46; Merge them&#46; If it doesn&#8217;t work out, we&#8217;ll try another thing&#46; We lose nothing but time&#46; See you next year, hopefully with good news! Ruby 1&#46;9&#46;1 stable (but bleeding edge) will be out Christmas 2007&#46;</p> <h2>Q &amp; A</h2> <p><em>Q&#46; Following the Agile tenets, perhaps we should submit tests and specs that document the feature?</em> [Missed the answer, perhaps it was agreement on the part of Matz?]</p> <p><em>Q&#46; Maybe you should leave 1&#46;8 for others to maintain?</em> I&#8217;ll stay on 1&#46;8 and there will be contributors to help with the new features going forward&#46;</p> <p><em>Q&#46; You mentioned parse&#46;y as ugly &#45;&#45; how would the parser become more accessible?</em> I have no concrete plan, but I&#8217;d like to create a simpler parser&#46; <em>Would you be open to non&#45;BC parser changes?</em> If someone raises their hand to make a new parser, I&#8217;ll discuss the compromises needed&#46; <em>What about participation of the VM design? (e&#46;g&#46;, I like Smalltalk can I try that out?)</em> I have no opposition to alternate implementations of 1&#46;8 or 1&#46;9, but it&#8217;s difficult to target 1&#46;9 (moving target)&#46; Koichi took his role as chasing the moving target, and he suffers a lot&#46; I&#8217;m sorry for him&#46;</p> <p><em>Q&#46; With corporate support and alternative implementations, how worried are you about fragmentation?</em> I don&#8217;t worry about it&#46; I don&#8217;t have any trademark on Ruby or any business on it&#46; It&#8217;s more like a competition &#45;&#45; may the best interpreter win&#46; Some will be fast, some will be stable, we can compare them&#46;</p> <p><em>Q&#46; I like the aesthetic in Ruby&#46; Can you push forward the beauty of the language, or are you happy as it is?</em> I&#8217;m not sure how much room we have left&#46; 1&#46;8 may be good enough&#46; During the discussion, we&#8217;ll see&#46;</p>