Search

Open Source Is Winning, and Now It's Time for People to Win Too

Teaching kids about open source? Don't forget to teach them ethics as well.

Back when I started college, in the fall of 1988, I was introduced to a
text editor called Emacs. Actually, it wasn't just called Emacs; it was
called "GNU Emacs". The "GNU" part, I soon learned, referred to
something called "free software", which was about far more than
the fact that it was free of charge. The GNU folks talked about software with
extreme intensity, as if the fate of the entire world rested on the
success of their software replacing its commercial competition.

Those of us who used such programs, either from GNU or from other,
similarly freely licensed software, knew that we were using high-quality
code. But to our colleagues at school and work, we were a bit weird,
trusting our work to software that wasn't backed by a large, commercial
company. (I still remember, as a college intern at HP, telling the
others in my group that I had compiled, installed and started to use a
new shell known as "bash", which was better than the "k shell" we
all were using. Their response was somewhere between bemusement and horror.)

As time went on, I started to use a growing number of programs that fit
into this "free software" definition—Linux, Perl and Python were the
stars, but plenty of others existed, from Emacs (which I
use to this day), sendmail (pretty much the only SMTP server at the
time), DNS libraries and the like. In 1998, Tim O'Reilly decided that
although the "free software" cause was good, it needed better coordination
and marketing. Thus, the term "open source" was popularized, stressing the
practical benefits over the philosophical and societal ones.

I was already consulting at the time, regularly fighting an uphill
battle with clients—small startups and large multinationals
alike—telling them that yes, I trusted code that didn't cost money, could be
modified by anyone and was developed by volunteers.

But marketing, believe it or not, really does work. And the term "open
source" did a great job of opening many people's minds. Slowly but
surely, things started to change: IBM announced that it would invest
huge amounts of money in Linux and open-source software. Apache, which
had started life as an httpd server, became a foundation that sponsored
a growing array of open-source projects. Netscape tumbled as quickly as
it had grown, releasing its Mozilla browser as open-source software
(and with its own foundation) before going bust. Red Hat proved that you
could have a successful open-source company based on selling
high-quality services and support. And these are just the most
prominent names.

With every announcement, the resistance to using open source in
commercial companies dropped bit more. As companies realized that
others were depending on open source, they agreed to use it too.

Fast-forward to today, and it's hard to avoid open-source software.
It's everywhere, from the smallest companies to the largest. There are
still commercial versions of UNIX, but Linux is really all anyone
expects or talks about. And Linux is indeed everywhere. My Python and
Git courses have never been in greater demand from companies that want
to teach their employees to improve their familiarity with these
technologies. Whereas it once was possible for one person to know, and to
know about, the majority of major open-source software titles, today
that's completely impossible.

Several years ago, while on a flight, my personal screen had some
problems. I asked the flight attendant for help, and she told me that
it's probably easiest just to restart the screen. Imagine my surprise
when I saw myself looking at the Linux boot sequence, in my seat at
30,000 feet! It was at this point that I realized that open source, by
virtue of being both inexpensive and open for people to examine and
modify, had indeed arrived.

What's amazing to me is how even the companies that were most against
open-source software have become advocates—not necessarily out of
love, but because that's where the market is heading. Microsoft is not
only using open source, it's also actively engaging with and supporting the
community, encouraging the use of open source, and even contributing.

So, have we made it? The answer, of course, is both yes and no.
There is no doubt that open-source software has arrived, succeeding
beyond my wildest dreams. I mostly earn my living teaching Python and
Git to companies around the world, and it's hard to exaggerate the
demand for such technologies. Companies are adopting open source as
quickly as they possibly can, simultaneously reducing costs and
increasing flexibility. Students are learning to use open-source
technologies and languages.

So yes, if measured by market penetration and the acceptance that
open-source software can compete, we have definitely won.
Sure, there's work to do on the desktop, but the achievements to date
are real, tangible and impressive.

But, it's no longer enough to be widespread or even dominant. As a few
people were prescient enough to foresee long ago, our world of
interconnected computers, phones and devices is generating enormous
quantities of data, stored beyond our reach, analyzed by algorithms we
cannot see or check, and being used to make decisions that can affect
careers, education and medical care, among other things.

Moreover, the business model that was both clever and profitable for so
long, namely advertising, has come with an enormous trade-off, in that a
number of corporations know more about us than we even know about
ourselves. What's amazing is that the advertising-supported services are
often so good and useful—and free of charge—that we ignore the
ramifications of sharing everything about ourselves with them.

From the perspective of today's young people, the internet always
has connected us, smartphones always have existed, and the apps we use on
our phones and computers always have been free of charge. And if you
have to share some of your data, then so what? People no
longer seem to be as concerned about privacy and about how much they're
sharing with these companies, as was once the case. Perhaps that's
because people are getting such obvious benefits from the services they
use. But perhaps it's because people are unaware of how their data is
being used.

The April 2019 issue of Linux Journal is all about kids, but it's also our
25th anniversary edition, so it's an appropriate time to ask "What should
we be teaching our children about open-source software?"

A few years ago, MIT changed its intro computer science course away
from the traditional (and brilliant) class that used Scheme to one that
used Python. This certainly made big waves and has influenced hundreds
of universities that now also use Python. When MIT changed the
curriculum, the professors who wrote the course indicated that for
today's software engineers, learning to code isn't enough. You also need
to learn topics such as ethics. Many programmers will be asked
to do things that are unethical, so it's important to think through
the issues before you encounter them at work. Heck, just determining
what is considered ethical is a knotty problem in and of itself—one
that many developers have probably never considered.

So yes, it's important for us to teach kids about Linux and open-source
software. But it's not enough for us to teach them about the technical
parts of things. We also need to inform them of the societal parts of
their work, and the huge influence and power that today's programmers
have. It's sometimes okay—and even preferable—for a company to
make less money deliberately, when the alternative would be to do things
that are inappropriate or illegal.

It's important to teach and discuss machine learning—not just as a
set of technologies, but also to understand how models work, how they
can be wrong, and what you need to do in order to get them right. It's
important to discuss how and when such algorithms should be shared with
the public and made available to public audit.

And, it's important to explain that no one has a perfect answer to these
issues. It's okay to have disagreements. But raising these questions and
problems is a major responsibility, and it's important that kids learn
from an early age that programming has real-world implications—some of
them potentially bad. We don't let people drive until they have
demonstrated at least the minimum understanding of how their actions can
affect others. I'm not suggesting we require programmers be
licensed, but that we raise these important points frequently.

Linux Journal has been at the forefront of the Open Source movement for
25 years now, pushing and encouraging us to imagine a world where
software is of high quality, available to all, at low or no cost, and
that invites us to experiment and tinker. I'm proud to have been writing for
this publication for much of that time—since 1996. And although this
column generally will continue to have a technical focus, I'm glad that
Linux Journal, as a publication, is focusing on the societal impacts of
our work.

Reuven Lerner teaches Python, data science and Git to companies
around the world. You can subscribe to his free, weekly "better
developers" e-mail list, and learn from his books and courses at
http://lerner.co.il. Reuven lives with his wife and children in
Modi'in, Israel.