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.