Fosdem Argon7
2004 Edition Free and Open Source Software Developer's European Meeting






Interviews

2004-01-19 - Rich Kilmer

Ruby

An interview conducted by Raphael Bauduin
FOSDEM - First and traditional question : Please present yourself ...

Rich Kilmer - My name is Rich Kilmer, and I am President & CEO of InfoEther LLC in Northern Virginia, USA. InfoEther currently contracts on two DARPA projects including "Survivable Multiagent Systems" and the "Ontological Web". We use Ruby extensively in both projects to manage the testing of distributed systems and semantic web processing. Our success with using Ruby as a tool for complex tasks has confirmed that Ruby scales from the small to large problems. Prior to founding InfoEther in 2001, I was the founder and CTO of Roku Technologies which was a pioneering P2P software company. My background includes software development, technical management, technical sales and an eclectic mix of technologies from mainframes to wireless-web phones, from centralized web to distributed multi-agent systems and from C and Java to Ruby, Python and ActionScript.


FOSDEM - How, when and Why did you start working/using Ruby ?

Rich Kilmer - I started working with Ruby in the Spring of 2001. I was then the CTO of Roku Technologies and there had contributed to the development of a sophisticated P2P software middleware technology that used Java for its core developments. We began with Java in the fall of 1995 (Alpha 2) and pushed it to its limits (plus 300k+ lines of code). I was canvassing the language space in looking for a foundation for a next generation platform for our framework. One major problem we had in Java was the difficulty in dropping down into C and tying into the native OS. I looked into Perl, Python, Rebol and then found the book "Programming Ruby" by Dave Thomas and Andy Hunt. I consumed the book in about 2 days without typing in a line of code. The language was elegant, the syntax clean, and its native API met my needs for platform integration. I began work on several Ruby projects including the Jabber client library, and have not wanted to code in anything since.


FOSDEM - It looks as the develoment of Ruby is similar to the linux kernel. Matz is really indicating the direction. But how many developers are involved in the core development of Ruby?

Rich Kilmer - There are 13-14 folks that normally interact on the ruby-core list and contribute to the core libraries. There are likely more on the Japanese-side, but that is what I see from the English-side. Matz is our 'gentle dictator' and Ruby remains his unique vision. I think it's critical for that vision to be maintained by him because it holds together the elegance of the language. Matz's company in Japan pays him to work on Ruby...so Ruby is his full time job! There are many folks that work on the libraries that ship with Ruby, but the core language/interpreter development is mainly Matz and a few others.


FOSDEM - Can non core developers influence the development of Ruby?

Rich Kilmer - Absolutely. Matz is very open to ideas. He is also very open to folks helping out :-) Many of the newly included 1.8 libraries have come from authors whose libraries have gained community acceptance to the point where Matz asked that they become core. REXML and RDoc are two good examples of this. Actually, this is a great time to contribute ideas. As Matz contemplates Ruby 2.0 and Rite (see below) he is taking input from the community on changes they would like to see in both the language syntax, and ideas for implementing the next generation platform (see http://rcrchive.net). Of course, Matz holds final say on how the language evolves, but he has demonstrated an uncanny ability to 'do the right thing'.


FOSDEM - Some say the popularity of Ruby suffered from its japanese roots, few japanese developers being fluent in english. Is that true, is it getting better? Do you see Ruby getting outside of Japan?

Rich Kilmer - Ruby is popular in Japan. There are over 40 books on Ruby published there, and by that count it is more popular than Python. We have about 6 books in English and a few other languages. Ruby did not really begin to get traction here in the US prior to 2001, but the newsgroup traffic and conference sessions on Ruby demonstrate that Ruby is gaining in popularity in the US and Europe in addition to is Japanese base. Several books have been written in English on Ruby including the recent book "Code Generation in Action" by Jack Herrington which uses Ruby as a basis of a Java/C# code generation framework. This is the kind of book I expect to see more of in the coming years...practical uses of Ruby by developers to help them in their daily tasks. My company has used our Ruby expertise to get additional business because of the our ability to achieve great results quickly in complex environments.


FOSDEM - Ruby 1.8 has been released recently. What are the big improvements in this release?

Rich Kilmer - The main core change is the new allocation framework of Ruby. This is the basis for how Ruby creates new instances of objects, and the new framework gives developers more flexibility. The IO performance on Win32 was dramatically increased over 1.6. Many core classes such as Array, String, IO, Process, Thread and Module were enhanced. Existing libraries were updated or rewritten including the 'net' libraries (http, ftp, telnet and cgi). The biggest change was the inclusion of many more third party libraries in the core distribution including:

  • REXML - an incredibly easy but powerful XML parser/generator
  • dl - a Ruby interface to the dynamic linker
  • openssl - a Ruby OpenSSL wrapper w/HTTPS support
  • StringIO - ability to use a String for IO operations
  • Syck/YAML - first language to include YAML support (cross language serialization format)
  • drb - distributed Ruby (like Java RMI)
  • WEBrick - pure Ruby web service framework w/servlet support
  • xmlrpc - XMLRPC client/server library
  • test/unit - Ruby unit testing framework
  • ...and many others

    With the inclusion of all of these libraries, developers of applications or other libraries have a richer, known base of code to work with.


    FOSDEM - What's still missing in Ruby? It seems threading is not perfect.

    Rich Kilmer - Ruby is an interpreted language, and that interpreter does not use platform (native) threads. In addition, the interpreter is not thread safe. Ruby has an internal threading model that works for most IO operations (sockets, etc) allowing simple use of threading for most tasks. Lack of native thread support, however, creates havoc with integration with native platform GUI libraries. This is likely the weakest part of Ruby and because of this there is no leading GUI framework for the Ruby language (like AWT/Java, or WxPython/Python). Ruby does have good bindings to several GUIs including Tk, Fox, GTK and Win32. The Fox FXRuby bindings are probably the most mature, but Fox presents a platform neutral widget set and so does not present well under some platforms such as OS X. There is an early effort to wrap the WxWindows API, and this project is nearing initial release. Rite (Ruby 2.0's VM) will include native platform threading, so this limitation will be removed with its release.


    FOSDEM - Lots of developers who try Ruby are convinced. What would you say to a developer so that (s)he tries Ruby? A one liner?

    Rich Kilmer - "Ruby is a programmers best friend...even if you don't use it for your production development, its a powerful tool which can make you more productive in whatever you do (and have fun at the same time)."


    FOSDEM - Matz gave a presentation about Ruby 2 at RubyConf 2003. Can you give us an idea of what the goal of this complete rewrite is?

    Rich Kilmer - Well, Ruby 2 is just part of the picture and Rite is the other part. Ruby 2 is an enhancement to the language syntax/semantics which will introduce several new capabilities, and have some backwards incompatibility in syntax to make the language cleaner. Rite is a rewrite of the language runtime which will be a bytecode-based virtual machine rather than a simple interpreter. Actually, Matz's keynote where he presented this was titled "Why Ruby Sucks" and demonstrates both his sense of humor, but moreover his humility as a language designer.

    The main part of this presentation contained the syntax changes to Ruby. Matz said "...these were ideas. Don't want to give the impression that it's set in stone." One significant change was the removal of "block local" variables which Matz regrets having included in the existing Ruby implementation. There is going to be a change in the way that constants (Class/Module names) are looked-up to increase performance and simplify its understanding. Matz will introduce keyword arguments, one of the really nice things about Python that I miss. Matz is adding a new Hash literal which is cleaner (looks like anonymous objects in EcmaScript). Ruby 2 will bring method wrapping/combination into the language syntax enabling clean aspect-oriented behaviors in Ruby. In Ruby, classes and objects are open at runtime which means that core classes (String, Integer) can have their behaviors changed dynamically. This is powerful but fraught with danger. Matz is considering the use of "selector namespaces" to solve the problem whereby changes to global classes are encapsulated in a certain scope to maintain the dynamic power of Ruby, without sacrificing platform stability. Matz is considering adding a 'typing' system to method signatures. This typing system will not be Class/Module based but based on the 'duck typing' model of Ruby.

    Rite will sport better performance, and allow native threads and more simple embedding of Ruby into existing projects. Rite's bytecode interpreter will use indirect branch and superoperators and contain a generational garbage collection scheme. Rite will also handle Multilingualization (M17N) which the existing Ruby does not handle well at all.


    FOSDEM - When could we expect it to be out? 2 months? 10 years?

    Rich Kilmer - This is always a dangerous question. 1.8 is the final one-dot release for Ruby, although several 1.8.x releases are planned for bugs, minor enhancements, etc. Ruby 1.9 will be the testing ground for Ruby 2.0 ideas including the new oniguruma regular expression engine, generational garbage collection, M17N and others. I don't expect Ruby 2.0/Rite for at least two years based on past experience with upgrading from 1.6 from 1.8. Regardless of the time it takes, it will be worth it. Ruby is a great language, and Matz is one of the few who reflects honestly on his past 'mistakes' and is not afraid to fix them.


    FOSDEM - Introduce in few words what you're going to talk about during your presentation ...

    Rich Kilmer - I am going to introduce folks to the "everything is an object" world of Ruby, the syntax, semantics and overview of the core libraries. The Ruby language has been rapidly growing in use in the US and Europe over the last several years, but has actually been in development for over 10 years. This talk will show the unique capabilities of Ruby, and why learning the Ruby language is worth the investment for programmers, web developers and systems administrators. Using Ruby will not only help you be more productive, but you'll have fun in the process.


    FOSDEM - What are you expecting from your talk at FOSDEM and from the interactions with other developers present at the event?

    Rich Kilmer - I am interested in demonstrating the power of simplicity of the Ruby language, to show how Ruby is a mature platform for software development tasks that range from simple automation scripts to complex distributed applications. I am looking forward to interacting with other members of the open source community. The best thing in the world is for open source contributors to work together across their projects, and I look forward to spending time learning what others are doing. I will also be available for those that want to discuss Ruby in more detail and the kinds of projects I and others are focusing on in the Ruby community.

     







  • © FOSDEM 2003-2004 - powered by Argon7