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