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!