What a great interview we have for you this week! John W. Eaton, THE developer of GNU Octave, and Jordi Gutiérrez, one of their main developers and organizer of the OctConf 2012 at Montréal Canada (slides and report), took time from their busy schedules to share with our readers the story behind the venerable GNU Octave and details of this still very active project. Have a great read!
F4S: Hello guys. Please, give us a brief introduction about yourselves.
[John] I’m the original author of GNU Octave and have been it’s maintainer from the beginning, in 1992. When I first started working on Octave I was post-doctoral researcher and systems administrator at the University of Texas. Then from 1995 until 2008 I was a researcher at the University of Wisconsin. But most of my time from 1992 until 2008 was spent working on Octave. Now I have my own software support company focused on supporting Octave.
[Jordi] I call myself a mathematician, coder, and quixotic hacker-errant. I have a degree and a half in mathematics, and I started using Octave during that second half of the latter degree. After some time, I found myself in Octave development, and now I want to work on making it better for everyone. My current employer is in the medical imaging processing business, and they originally hired me for helping them to integrate Octave into their pipeline.
F4S: What is GNU Octave?
[Jordi] Octave is a free numerical environment mostly compatible with Matlab. The idea is to liberate all of the code written for Matlab and make it run in Octave with as little modification as possible; optimally, with no modification. This is a very difficult task, because Matlab is a moving target and its language keeps changing. We’re always going to be at least a little behind Matlab’s changes. In a few cases historically we have implemented a feature before Matlab, but then Matlab implemented it in a slightly different way from us. This makes it very difficult to innovate too much at the language level, so we are fairly conservative about it.
For development of packages, analogous to Matlab’s toolboxes, we have Octave-Forge, which has more lax standards of contribution. We are currently trying to bring the two projects together, because we have some organisational difficulties between the two.
F4S: Why and when did GNU Octave come to be?
[John] Octave was originally intended to be companion software for an undergraduate-level textbook on chemical reactor design being written by James B. Rawlings of the University of Wisconsin-Madison and John G. Ekerdt of the University of Texas. As I recall, we started talking about writing software for the textbook in the summer of 1988 or maybe 1989. But I didn’t start working on it until after I finished my Ph.D. thesis in the beginning of 1992.
Initially, we planned to write some Fortran subroutines and distribute them with the textbook as was common at the time. But prior to writing any code for the textbook, we also became convinced that a library of Fortran subroutines would not be very successful, in part because of experiences observing undergraduate students struggle with mechanics of computational assignments. We found that they were spending too much time trying to make a Fortran program compile and run and not enough time understanding the ideas that the computations were intended to illustrate.
It was clear that we needed to make it easier to perform the computations required to solve reaction engineering problems, but we also firmly believed that we should not make the software too simplistic. For example, we quickly rejected the idea of creating some graphical software that would not allow the students to do more than vary parameters for limited example problems as we had seen in other software distributed with textbooks at the time. We were certain that it is essential that students have some understanding of programming concepts, not just data entry. We also believed that it would be beneficial for students to be able to examine all parts of the computation to see how calculations really work behind the scenes. This last point, and the objective of allowing the software to be distributed and used with or without the textbook, led us to make Octave free software.
Eventually, we settled on the idea of writing a small language suited to the numerical computations needed to illustrate the concepts of chemical reactor design. Since a growing number of our colleagues were beginning to use Matlab as their primary computational tool, we choose to use a mostly Matlab-compatible syntax so that our colleagues could use Octave without having to learn a completely new language.
The initial goal was not to create a system completely compatible with Matlab, and Octave has introduced a number of features that were not present in Matlab. However, since Octave was first released there has been steady and increasing pressure from Octave users to make it more compatible with Matlab. Now instead of trying to correct any perceived misfeatures of Matlab, the Octave community is more likely to remove the differences, making an ever larger body of existing Matlab code (much of it also free software) accessible to the community. Ideally, it should be trivial to use Octave to run code written for Matlab.
F4S: In which language(s) and platform(s) is the project developed?
[Jordi] Mostly C++ and Octave’s own scripting language, together with a bit of Fortran. Indeed, Octave started out as a wrapper to Fortran libraries, and it still does that. As of today, it’s about 600,000 lines of C++, about 100,000 lines of m-files (Octave’s own language), and about 50,000 lines of Fortran.
F4S: Does GNU Octave have sponsors?
[Jordi] The FSF handles donations for us. In the past, there have been other sponsors, but we don’t have any right now.
F4S: How are the sponsors supporting the project?
[John] So far, we’ve used funds collected by the FSF to help cover travel expenses for a meeting of Octave developers held in Montreal in July 2012. That meeting was quite productive. Bringing many of the most active contributors together has definitely helped the project.
My advisor at the University of Texas and the University of Wisconsin, Jim Rawlings, secured most of the funding to pay for my initial work on Octave through a combination of government and industrial research grants. Since leaving the University of Wisconsin, I’ve been doing contract work to support my work on the project.
With more sponsors, we might be able to pay some developers to work on Octave full time. Currently, all paid work on Octave is done by contracts with individual developers, not through the Octave project itself.
F4S: How many users you estimate GNU Octave have?
[Jordi] Based on download numbers and popularity contest reports from Ubuntu and Debian, I estimate from 10,000 to 100,000 users. I can’t do much better than a loose order of magnitude.
[John] I think there were several hundred thousand downloads of Octave 3.2.4 for Windows. I don’t think the current numbers on source-forge are correct. Anyway, I think 100,000 may be low, but I don’t really have a good idea what the number is.
F4S: Do you know where GNU Octave is used?
[Jordi] We have a healthy mix of users from academia and industry. As I said above, my own workplace also uses Octave. We regularly ask that question, and these are the responses we get:
F4S: How many team members does the project have?
[Jordi] There are 13 people currently with write access to the main repository, and we have had 296 contributors over all time. In addition, our sister project Octave-Forge has 49 users with write access, 38 of which made a commit last year.
F4S: How can people get involved with the project?
[Jordi] We have a FAQ for this:
F4S: What features are in the roadmap?
[Jordi] There are two very exciting developments: a native GUI, and JIT compiling. The GUI has taken a long time to develop properly, mostly because the core Octave developers have never really thought it was necessary. We’re finally listening to the waves of users who have always asked for a GUI, so it’s finally coming. JIT compiling is a feature that will greatly speed up non-vectorised code.
F4S: Which projects, blogs or sites related to open source software for science can you recommend?
[Jordi] I don’t know many, but I really like this blog post about how science is done right now and how it could be done:
It’s a little starry-eyed, but I’m a dreamer too.
F4S: Why do you consider free/libre open source software important for the advancement of your field?
[Jordi] It is absolutely essential for science to be *reproducible*. How often does one find results in published articles that allude to software that is never seen and instead they only give broad strokes of the algorithms used? I wish scientists treated source code with the same respect they treat publications and articles: as part of their scientific activity and something that requires careful work.
F4S: Where people can contact you and learn more about GNU Octave?
[Jordi] http://octave.org, http://planet.octave.org/, http://identi.ca/octave, and I think people are working on a Facebook and Twitter presence. We’re only starting to be more social online, so some of these are only starting.
F4S: Thank you very much John and Jordi for sharing with us more about you and GNU Octave.
GNU Octave in Action
No related posts.