RSS
Blog
Steps Toward a Great Career in Free and Open Source Software, Part 1

Steps Toward a Great Career in Free and Open Source Software, Part 1

October 21, 2021 - by Andrew Oram

A career in free and open source software can be not only satisfying, but financially rewarding. You feel the excitement of being part of intense, goal-directed communities and of furthering projects that benefit people around the world.

Because free software is independent of any particular company, you can find a new employer when it’s necessary to change jobs—and move geographically too, because the same popular free software tools can be found everywhere. (Yes, some free software projects are maintained by single firms, but "expats" from those firms can be widely found, and there are opportunities elsewhere for people who know the software.)

According to the 2020 Open Source Jobs Report from the Linux Foundation, hiring managers are 70% more likely to hire computer professionals if they know open source cloud technologies. Meanwhile, the market is begging for more people with open source skills: 93% of hiring managers report difficulty finding them.

In the early days, free software contributors would have to work in a cubicle eight hours a day for some easily forgettable company that paid the bills, then help out at some cool free software project at night. Non-programmers had almost no role to play in free software. Maybe they could use a free software tool here and there, but most of the tools were for programmers and system administrators. Only in the mid-2000 decade did jobs for non-programmers—marketing, community management, etc.—became recognized and rewarded roles.

Today, there are lots of jobs in free software—diverse types of jobs. This article lists the following steps people take to build careers in free and open source software:

  • Educate yourself.
  • Get a GNU/Linux system.
  • Be an advocate for free software.
  • Learn a programming language.
  • Contribute to a community.
  • Build up contributions on GitHub or GitLab.
  • Get certifications.

This article will cover the first four steps, and a second article in the series will cover the rest.

Educate Yourself

Here's a reality check: free software requires study. Why? First, its developers usually don't invest the effort that proprietary companies do to make simple user interfaces and user experiences. (Let me hasten to say that some user-focused projects such as KDE and GNOME have made impressive achievements.) Some conventions could baffle you at first.

As for documentation—let me assure you that documentation for both proprietary and free software is equally bad. Believe me, I've spent a long career trying to improve them. Besides the official documentation—which is normally perfunctory—There are lots of blogs postings and white papers online, and some are quite good. But most are studded with confusing passages and distractions, and nearly all the writing about free software gets outdated fast.

So don’t stint—invest in books on the topics you're interested in. Do the exercises diligently. Try out new things.

One of your goals should be to move from consumer to producer of information. Get onto forums for the tools that interest you, and learn their culture and conventions so you can smoothly join conversations. The joys and benefits of community membership will be discussed in a later section.

Get a GNU/Linux System

If you want to talk to free software developers and advocates, being comfortable with their terms and interests, you must know the GNU/Linux operating system. There's plenty of free software that runs on other systems, but the community generally revolves around GNU/Linux. (I'll use Linux as shorthand for the system in the rest of this article.)

If you're a lifelong Windows or Mac user, don't fret: after all, this is free software. It's ubiquitous and open to all. You can get familiar with the tools, concepts, and community of Linux gradually.

What if you don't own a computer at all? Linux will be your entry point to computing. Many philanthropic organizations exist to provide people with computer systems running Linux and other free software. Some organizations take old computers whose users are ready to upgrade. Dedicated hackers load free software on the discarded computers and offer them to people who need them. One example is the Huayra project in Argentina, which loads Linux into notebooks distributed to students.

If you have a personal computer running Windows, install Windows Subsystem for Linux. Microsoft joined the Linux community many years ago. They knew very well that many Windows users want to run programs available on Linux, and (like you) want to learn Linux. So Microsoft released this virtual environment where you can play with Linux.

If you run macOS on an Apple computer, transitioning to Linux may be even easier. Apple's macOS operating system runs on a kernel called Darwin, based on the same Unix roots as Linux. The most important tools that run on Linux have been ported to macOS, although the versions that run on macOS may not be as up-to-date or as carefully tested as the Linux versions. It's valuable, for instance, to familiarize yourself with some free text editor—Vim is probably the most popular—and you can do so on both macOS and Windows Subsystem for Linux. 

As soon as you can, however, start running Linux itself. Many of the activities Linux users and developers discuss, notably in regard to administering systems, require special tools and processes on different operating systems. You can't understand Linux without plunging your hands deep into it.

Besides, by running Linux every day you throw in your lot with the free software community. Let's not paint too rosy a picture: as a Linux user, you get used to activities such as searching for a free software tool that can connect with some proprietary service all your friends and colleagues are using. Well, such struggles will make you an even more ardent proponent of freedom for all.

Be an Advocate for Free Software

Many predicted in the 1980s that free software would crowd out proprietary software—and in some areas of programming it has. But proprietary software is still the top choice in some sectors, and one reason is that many people are still gripped with an ill-informed fear of free software. I recently talked to a very intelligent and idealistic programmer with some 40 years experience who spouted the same misinformation that we've been fighting during those same 40 years (for instance, that you can't get support for free software).

When you use free software, talk about your experiences with friends and colleagues. File a change request when important services aren't accessible from Linux systems or when institutions require documents in Word formats.

Be honest with your contacts. You want to advocate for the free software you respect, but you want them to be aware of potential stumbling blocks, such as the ones I just cited. People have to realize that freedom doesn't come easily.

Learn a Programming Language

Being a professional programmer is a very special discipline, and many people (including me, I have to admit) lack the right type of thinking to design large-scale programs. But a little programming language learning is not a dangerous thing, so long as you understand your limitations. Programming skill is a goal to aspire to.

The best way to learn programming is through a mixture of classes, published books, and hands-on practice as part of a free software community. If you don’t have access to classes and books—because of financial constraints, geographic location, lack of time, or some other reason—seek creative ways to get them. For instance, many communities have set up projects such as Girls Who Code, to train people who otherwise might not get access. Publishers donate computer books to libraries and non-profits who distribute them to interested readers; some of these books are outdated but still might suffice for a beginner.

If you know something about programming, you can better understand the pressures on free software, and the demands it makes on developers, testers, and users. This knowledge is useful not only for doing your own programming, but to contribute to advocacy and outreach, documentation, and project management.

Just pick up a little Python or JavaScript (or some other language that may be all the rage at a given moment). You'll learn the basic disciplines of programming, such as looking for things that could go wrong and planning for future enhancements. You can understand what's holding up some software releases or why security problems exist.

And don't assume that you have to settle for superficial knowledge. We'll see in a later section what you can accomplish if you become a good programmer.

The four steps covered in this article put you in a position to work with others and contribute to the world of free software. The second article in this series will take you through three more steps toward a career in free and open source software.
 

<< Read the previous post of this series | Read the next post of this series >>

About Andrew Oram:

Andrew Oram

Andy is a writer and editor in the computer field. His editorial projects at O'Reilly Media ranged from a legal guide covering intellectual property to a graphic novel about teenage hackers. Andy also writes often on health IT, on policy issues related to the Internet, and on trends affecting technical innovation and its effects on society. Print publications where his work has appeared include The Economist, Communications of the ACM, Copyright World, the Journal of Information Technology & Politics, Vanguardia Dossier, and Internet Law and Business. Conferences where he has presented talks include O'Reilly's Open Source Convention, FISL (Brazil), FOSDEM (Brussels), DebConf, and LibrePlanet. Andy participates in the Association for Computing Machinery's policy organization, USTPC.