You're heavily involved in GNUstep -- can you tell us about the various projects you are working on?
Nicola Pero: GNUstep is a large project, and over the years I have been working on a lot of different areas of GNUstep.
My first contributions were on the GUI library, where I did a lot of the work which originally brought it into a usable state. I then was employed by Brainstorm Computer Solutions (a company based in London) to write an Objective-C / Java interface for GNUstep (JIGS), which I did. I still continued to work on the GUI and did contributions to the backend, base and guile/test frameworks too. I also started to be involved in efforts to simplify the build process of GNUstep, and I ended up working on the gnustep-make package. I worked on it intensively and I rewrote almost all of its internals; it went from being a very slow build system to being one of the fastest. I've also been doing some work on the GCC Objective-C support. One of my last major projects has been writing Renaissance, a portable framework for generating GUI from XML files, which I consider very important for the future of GNUstep.
I've been working on a lot of very different tasks in different areas, which is one of the reasons I have been really enjoying my work on GNUstep.
Free software is wonderful because when you get interested in an area of your system, you can read the source code, think about it, discuss with the original authors about how the software is written and why, propose improvements, rewrite things, and have fun.
How did you get interested in GNUstep?
It was almost a chance. I wanted to help the GNU project produce a good desktop system, and I felt the need to contribute.
I tried working on small bits of the GNOME project, but when I sent my patches and code to the maintainers of the bits I was working on, they were very unresponsive. It is probably my own personal unlucky experience, but for me being ignored was no fun and I looked around for something else.
So I tried GNUstep, just because it was the only other major GNU desktop project, and I found that it was way behind, and the GUI was in a very bad state -- totally unusable -- but the maintainers were responsive, they read my patches, commented on them, applied them. That was fun, so I got excited and became a regular contributor.
Then I was slowly but inexorably fascinated by GNUstep. The language (Objective-C) and the API (which tries to be compatible with the OpenStep API) are beautiful.
But still, I haven't forgotten the way I got involved in GNUstep in the first place, which is not because of the language or the API, but just because I found someone who was applying my patches. Which is why I think that being responsive with new people is very important.
If you are responsive with a new contributor, and if you intelligently review his/her patches and comments, and if you are helpful and friendly, there is a high chance that he will come back and contribute something else, and then something else, and then something else, ...
One of the main problems in the activity of a free software maintainer / developer is that it's difficult to keep the same amount of dedication in terms of time during the years, and that impacts your responsiveness. As your life evolves, your personal, job and family situations all change in such a way that in some periods it's really difficult to find time to do some serious free software coding.
There are periods when I can reply to all emails and process all patches and suggestions reasonably quickly, and also do useful coding and contribute code, and there are other periods when it's difficult for me to keep up with all the things to do, and I can be very lacking in responsiveness. I feel very guilty in those periods, and I feel a need to apologize with anyone who found me unresponsive in the past.
Are you paid to work on GNUstep?
I work for a company which provides mobile services to other companies. By "mobile services" I mean services involving mobile phones, such as SMS services. My main job is not writing free software, and not working on GNUstep; it has to do with implementing and supporting the company services.
Still, we use GNUstep heavily in the implementation of the services, and whenever a feature which is missing in GNUstep is needed for the services, we implement it.
Richard Frith-Macdonald (another core GNUstep developer) works in the same company too, and the business is generally friendly with our GNUstep activity. Our GNUstep experience directly benefits the business because it means we know inside-out the platform on which the company services are running. If there is a problem, we can track it down very quickly.
I did only one large dedicated GNUstep project paid by the company: writing the Java / Objective-C interface. That can be definitely considered being paid to work on GNUstep, but it was for a limited period of time.
The software you've developed such as Renaissance and the Java-GNUstep interface (JIGS) is extremely powerful. Do you have a background in Computer Science or did you move into software from another field?
I moved into software from maths/physics. I studied Theoretical Physics at Milan university (Italy); my final work there was on quantum stochastic calculus. But I wrote software occasionally since I was a boy; writing software is fun and it used to be one of my hobbies.
What do you think the main challenges are for the free software community today, and the best way to overcome them?
The fundamental challenge is to keep growing. The "market share" of free software has grown immensely in the past few years, but it still has a great potential for growth.
There is good free software for almost all software areas, but in many cases the solutions more largely adopted are still provided by proprietary software. There is the challenge of competing with these solutions, not only in terms of bare features, but more generally as products -- that includes all parts of the consumer experience, such as features, cost, usability, availability, support. There is a considerable challenge here because the free software community has to fight with big companies which have very strong marketing support.
I still feel a big missing gap in the free software product set -- or in the available software in general -- which is that the "definitive" development environment is still missing. Producing such a definitive product is a great challenge.
By "definitive" development environment I mean the "dream" development environment -- which would be based on some sort of simple and excellent compiled OO language with introspection and dynamical capabilities, and consist of a set of carefully designed libraries, build system and tools. All this available cross-platform. It does not look like anything particularly fancy or difficult, but for one reason or another, I know of no development environment which really delivers this promise.
Java is the only development environment which gets somewhat near this objective, but it's not free software, and it's still quite unsatisfactory in many ways. The language lacks in introspection and dynamical capabilities; it is running on top of an emulator which makes it slower than it could be; the basic libraries are big and bloated and the memory foot-print is huge. Still, there are some great ideas in Java. For example, in a standard Unix system, header, libraries and resources are searched for and found by different tools using completely different mechanisms. In Java, they are all located in the same way by the same mechanism (the classpath + package name/namespace). This is possible because Java has its own compiler, its own linker and its own runtime support. But it's still a great way of doing things, because a single simple (and flexible) mechanism lets you locate any sort of resources in a consistent way. This is the sort of features I'd expect from the "definitive" development environment.
I wish GNUstep would be able to fill that gap. But it doesn't have to be GNUstep -- if something else was filling that gap properly, I'd still be very happy. :-)
The other big challenge is to spread the ideas of free software into society and to challenge the raising business trend of considering "digital ownership" the only/best way of making money in the digital era.
Nowadays information is power; in the same way as owning land or factories or ships used to be the main source of power in the past, business men think that owning information is a key source of power today. And in the same way as ownership of land or factories has been at the center of the social battles of the past, in some sense we might expect to see ownership of information at the center of some of the social battles of the future.
There is a huge difference between owning a factory or owning a piece of music; you can reasonably argue (and I'd agree with you) that owning a piece of information is a meaningless concept; nevertheless many companies and business men feel that they can make great money by "owning" digital content and forcing consumers to pay every time they use "their" digital content.
Traditional copyright in a contemporary (non-traditional) environment is the business model for such companies; and it presents all the possible advantages -- copyright prevents competition (whoever owns the copyright has an exclusive right to distribute and produce modification), which is one of the main forces which can limit companies' revenues; the contemporary digital environment reduces costs (the other main force limiting companies' revenues) to the point they are almost negligible. Having those benefits together, and almost no disadvantage, would let those companies operate in an ideal scenario: the company does nothing, spends nothing, operates almost as a monopoly for the information it "owns", and just cashes money from consumers whenever a consumer uses "their" music or images or patents or software (or ...).
But such a model in which some companies act as leeches sucking money out of every single exchange of useful information, and without doing anything useful, is clearly not good, and we can hope it will encounter considerable resistance from the rest of society.
Free software is a great inspiration for such a resistance, because it is an example and a source of ideas and methods for different business models; models where companies still make money, where wealth and information is still produced and exchanged, but where companies make money when they do something useful, and where you have a free explosion of information, and a much larger fallout on society of the benefits of the explosion.
Free software clearly demonstrates that things like open standards, peer to peer cooperation, open processes and free sharing of information do work. As free software spreads, we can hope those underlying ideas spread as well, and that the current business approach of investing money and efforts in trying to prevent people from sharing and exchanging information (to build barriers forcing consumers to pay money every time they exchange data) is replaced by an approach where money and efforts and invested in helping people to share and exchange information.
There have been some attempts to make simple "economic" theories of why people work on free software. But you and other GNUstep developers all have shown a very high-level of dedication to the project over a long period of time -- would you say that the ideas of free software are important in helping to keep you motivated?
Yes, free software ideas are very important; but they are not the only motivators.
It's certainly difficult to understand why people work on free software; moreover, different people work on it for different reasons.
And it's even more difficult to understand the reasons if you are only focused on the money issue. Some clumsy (and poor) business men (/economic models) reduce every human activity to a pure commercial transaction -- then free software is something which does not make any sense. Producing software normally costs money, so why would a good programmer write software for free ?
But not every activity can be reduced to a pure commercial transaction -- and I don't think we should be surprised if we don't fully understand why people work on free software, because the same can be said of almost any other human activity.
It's equally difficult to understand why people go climbing or write a diary or play videogames; or why you would give money to a charity or go in a third-world country to help a charity organization run a hospital. Yet a lot of people do these things.
If you consider those from a pure greedy commercial point of view, they just don't make any sense.
Free software in its purest form is a mixture of fun in enjoying doing clever things and solving problems, and of feeling you're helping and contributing to the progress of society. And there is a lot of community building and community feeling too.
Those main motivations are often mixed, depending on the case, with lots more different and personal reasons -- for example taking part in free software development might improve your programming skills very quickly; it might provide you with exciting challenges and opportunities to demonstrate your skills; it might help you meet other developers and finding a job; it could keep you up-to-date with new developments; it might simply be a good thing to boast on your CV. Or maybe you might be interested in a specific free software product simply because it is a good product; you might still have practical advantages in contributing back your improvements (for example if that makes sure they are automatically included in all future releases).
All those things are difficult to fit in economic theories or models.
Yet, I'm not at all surprised -- for example marketing or branding are equally difficult to fit in economic theories or models, as they are often very much concerned with the consumer's psychology and perception of the buying process; and still they are an essential part of doing business.
Actually, that's a good parallel. If you are trying to explain to a business man why people write GNU software for free, rather than trying to use an economic model, you could have some fun and tell him that they do because GNU is such a terribly powerful brand.
Modern branding typically is about an organization focusing on the brand and on the relationship between the consumer and the brand, rather than on the actual products (or services). The main strategy is no longer building good products or advertising the products -- it is instead establishing a relationship between the consumers and the brand, and making it as strong, powerful and intriguing and as possible; the consumer buying the products is then a natural consequence of the relationship between the consumer and the brand.
You could then say that GNU itself is a brand -- a very powerful one indeed. Richard Stallman has certainly done all it could to establish GNU as a brand and to preserve its clearly distinct and unique brand identity.
GNU is not just an organization; it's a community, a way of life, a trend, a dream of a better world; it's something touching subtly your emotions and your dreams; it's a challenge, a revolution, a spirit. Or in other words, it's a great brand.
Being part of GNU is not just about using some software products; it's about evangelizing other people about them; it's about helping other people use them; it's about documenting the products; it's about being part of a community of people who support the products; it's about living the product; it's about maintaining them and enhancing them. Or in other words, it's a great brand experience.
But the GNU brand goes further than that - it gets to the point where GNU does no longer produce any products, and the consumers produce the products themselves. GNU only does marketing and branding activities, and puts its brand on products which are actually created by its consumers.
In this funny explanation, the GNU brand of course represents the ideas of free software.
So you have a funny explanation of why people contribute to free software. Why are people writing free software to the GNU project for free ? For the same reason that other people are buying very expensive products of a specific brand, while there are other products, totally equivalent, on the same shelf and at half the price, of a different maker. From a purely greedy commercial point of view it is an equally meaningless behaviour. If you can accept the fact that branding works in causing "illogical" commercial behaviour in people, you can accept the fact that free software ideas (acting in the same way as a brand does) can do the same.
Anyway, to come back to your question, in my experience with GNUstep, people contributing to free software come from all sorts of backgrounds, and do so for all sorts of reasons. Yes, generally for most people it has something to do with team working, building a better world, helping each other, building communities, but the reasons might well vary.
GNUstep has a somewhat special story, because a large part of its users and developers sincerely believes that it is, or could be, the best environment on the planet, so there is very strong fidelity to the project, and there are strong additional reasons for many users and developers to work on it and support it. To be honest a few of those users and developers don't actually care much about free software, and are much more interested in the actual technology and in the product (which I think it's fine once they respect the rules and comply with the terms of the licenses).
Still, the ideas of free software are very important for most people; particularly at the beginning, because they often provide a strong motivation to start your free software activity.
Once you are doing it, it's very much a community experience where you just do it and you know a lot of people doing it and it's part of your life, and as with any sort of life or routine, you don't need to be continuously reminded the reasons why you are doing what you are doing -- you just do it.
Thanks for taking the time for this interview and for your work on free software!
|