Plaintext
OPEN SOURCE YEARBOOK
2018
.................... Opensource.com
Opensource.com publishes stories about creating, adopting, and sharing
open source solutions. Visit Opensource.com to learn more about how the
open source way is improving technologies, education, business, government,
health, law, entertainment, humanitarian efforts, and more.
Submit a story idea: https://opensource.com/story
Email us: open@opensource.com
Open Source Yearbook 2018 . CC BY-SA 4.0 . Opensource.com 3
Open Source Cheat Sheets
Visit our cheat sheets collection for
free downloads, including:
Blender: Discover the most commonly and frequently used
hotkeys and mouse button presses.
Containers: Learn the lingo and get the basics in this quick and
easy containers primer.
Go: Find out about many uses of the go executable and the most
important packages in the Go standard library.
Inkscape: Inkscape is an incredibly powerful
vector graphics program that you can use to draw
scaleable illustrations or edit vector artwork that
other people have created.
Linux Networking: In this downloadable PDF cheat
sheet, get a list of Linux utilities and commands for
managing servers and networks.
Python 3.7: This cheat sheet rounds up a few
built-in pieces to get new Python programmers
started.
Raspberry Pi: See what you need to
boot your Pi, how to install the operating
system, how to enable SSH and connect
to WiFi, how to install software and update
your system, and links for where to get
further help.
SSH: Most people know SSH as a tool for
remote login, which it is, but it can be used
in many other ways.
. ........
... .. ...
o p e n s o u r c e . c o m.. .. .. ....
. .
C A L L F O R P A PERS
.............. ..
.............
We’re looking for contributors
Here’s how to write for Opensource.com.
Opensource.com publishes stories about creating, adopting, and sharing open source
solutions. In 2018, we published more than 1,000 articles by talented people in tech from
diverse backgrounds and with a variety of skills.
We welcome article proposals and submissions from subject matter users or experts on
a range of topics [1] about open source. To view our editorial calendar and other writer
resources, visit: opensource.com/writers [2]
• Alternatives: Open source vs. proprietary
• Automation: Ansible, Bash, Perl, and others
• Command line: Tools, tutorials, and tips for Linux
• Data science: Python and more
• DevOps: Tools and lessons learned
• Hardware: Tutorials for the Raspberry Pi, Arduino, and more
• IoT (Internet of Things): Home automation projects and more
• Java: Tutorials, tips, tools
• Linux: Getting started with a Linux command or distro
• Machine learning / AI: How to get started with a tool
• Multimedia: Music, audio, video, editing, 3D rendering, and more
• Networking: Tutorials, introductions, and recommendations
• Personal stories: Open source / Linux experiences, tips, and more
• Productivity tools: Linux, open source, and more
• Programming: Go, TensorFlow, Perl, JavaScript, MySQL, Rust, and more
• Python: Tutorials, tips, tools
• Systems administration: Sysadmin tools, tips, and more
• Tools: Tell us what it’s for, how it works, and where to learn more
• You tell us: What’s important for people in tech to know more about?
To send us your article idea or draft for review, use our webform [3] or email [4].
Before sending in your proposal, review our article submission and style guide [5] for best
practices. If you are writing a technical or how-to article, review our technical style guide [6].
The Opensource.com team provides copy editing and lead images for your article. We also
promote articles on our social media channels. If you haven’t written before, learn more
about how writing can change your career [7] for the better.
Have more questions? Email us at open@opensource.com.
Links
[1] https://opensource.com/article/19/1/write-for-us [5] https://opensource.com/submission-style-guide
[2] https://opensource.com/writers [6] http://stylepedia.net/
[3] https://opensource.com/how-submit-article [7]
https://opensource.com/life/15/7/7-big-reasons-
[4] Email: open@opensource.com contribute-opensourcecom
Open Source Yearbook 2018 . CC BY-SA 4.0 . Opensource.com 5
. ........
... .. ...
o p e n s o u r c e . c o m .. .. .. ....
. .
W r i t e fo r U s
.............. ..
.............
7 big reasons to contribute to Opensource.com:
1 Career benefits: “I probably would not have gotten my most recent job if it had not
been for my articles on Opensource.com.”
2 Raise awareness: “The platform and publicity that is available through Opensource.
com is extremely valuable.”
3 Grow your network: “I met a lot of interesting people after that, boosted my blog stats
immediately, and even got some business offers!”
4 Contribute back to open source communities: “Writing for Opensource.com has
allowed me to give back to a community of users and developers from whom I have
truly benefited for many years.”
5 Receive free, professional editing services: “The team helps me, through feedback, on
improving my writing skills.”
6 We’re loveable: “I love the Opensource.com team. I have known some of them for
years and they are good people.”
7 Writing for us is easy: “I couldn't have been more pleased with my writing experience.”
Email us to learn more or to share your feedback about writing for us: https://opensource.com/story
Visit our Participate page to more about joining in the Opensource.com community:
https://opensource.com/participate
F ollow U s
.............. ..
.............
Stay up on what's going on with Opensource.com by subscribing to our
highlights newsletter: https://opensource.com/email-newsletter
Twitter @opensourceway: https://twitter.com/opensourceway
Facebook: https://www.facebook.com/opensourceway
All lead images by Opensource.com or the author under CC BY-SA 4.0 unless otherwise noted.
6 Open Source Yearbook 2018 . CC BY-SA 4.0 . Opensource.com
From the
. ........
... .. ...
E d i t o r .. .. .. ....
. .
Dear Open Source Yearbook reader,
In 2018 we celebrated 20 years of “open source” and the 20-year anniversary of the Open
Source Initiative (OSI). On Opensource.com, we were excited to join the celebration with
an article by Christine Peterson, who coined the phrase “open source software,” and I
think it’s fitting that we kick off the annual yearbook with this story. Then Opensource.com
managing editor Jen Wike Huger rounds up 30 Linux installation tales in which our readers
and writers tell their tales.
Throughout this issue, you’ll notice that old favorite technologies, including Python,
Bash, Unix, GNOME, and Slackware, are still relevant today, while also leaving room
for newer technologies and trends, including Flutter, Kubernetes, Raspberry Pi, AI, and
serverless computing.
The past year also saw a lot of changes in open source communities. Diversity and
inclusion efforts continued expanding, which is illustrated throughout these pages with
articles on how to welcome newcomers, community metrics, how programmers in
underrepresented countries can get ahead, gracefully receiving and giving code feedback,
and a new film series that highlights women in technology.
We wrap up the 2018 Open Source Yearbook with a look back at pivotal moments in
open source history, the anniversaries of Git and GNOME, an insider’s look at drafting the
GPLv3 license, and 25 years of Slackware, and then we look ahead at 2019 conferences
and resolutions for open source project maintainers.
In 2018, Opensource.com published 1,075 articles and welcomed more than 250 new writers.
The annual Open Source Yearbook offers only a small snapshot of the larger open source
story, and we’re not able to fit all the hundreds of articles and writers into these few pages.
As we begin our ninth year of Opensource.com, our team thanks our writers, readers,
moderators, and community for sharing the stories, tools, and solutions that make up our
wild and wonderful open source world.
Would you like to be part of Opensource.com? We’ll help you get started:
http://opensource.com/story
Best regards,
Rikki Endsley
Opensource.com community manager
Open Source Yearbook 2018 . CC BY-SA 4.0 . Opensource.com 7
Co n t e n t s
..............
.. ... .
.. .. .....
W o r k i n g
.............. ..
.............
10 H‘open
ow I coined the term
source’
Christine Peterson
24
Power(Shell) to the people Yev Bronshteyn
Type less, write cleaner scripts, run consistently across
platforms, and other reasons why Linux and OS X users can
C hristine Peterson finally publishes her account of that
fateful day, 20 years ago. fall in love with PowerShell.
13 F30irstinstallation
time with Linux:
tales
Jen Wike Huger
27 Ronunning a Python application
Kubernetes
Joannah Nanjekye
The Linux kernel turned another year older on August 25. This step-by-step tutorial takes you through the process of
18 15 open source applications for macOS
deploying a simple Python application on Kubernetes.
30 Bcryptocurrency
Don Watkins
edicated open source users won’t find it hard to use their
D lockchain: Not just for Kate Chapman
favorite applications on non-Linux operating systems.
20 4development
There’s a lot more to blockchain than Bitcoin.
ways Flutter makes mobile app Emily Fortuna
delightful
pen source mobile SDK simplifies and speeds iOS and
O
Android app development.
Colla b o r a t i n g
.............. ..
.............
34 HAowguideto avoid humiliating newcomers:
for advanced developers
A. Jesse
49 8forunusual FOSS tools
agile teams
Marianne Feifer and Jen Krieger
To sustain an open source community’s growth, we need to In this list, there are no project management apps, no
welcome new developers. Unfortunately, we are not always a checklists, and no integrations with GitHub. Just simple
welcoming bunch. ways to organize your thoughts and promote team
37 Cbehind
communication.
51
ommunity metrics: The challenge Ildiko Vancsa
the numbers Is BDFL a death sentence? Jason Baker
Although metrics are an important way to understand What happens when a Benevolent Dictator For Life moves on
community members’ effectiveness, they’re only one piece of from an open source project?
the puzzle.
39 6underrepresented
ways programmers from
countries can get ahead
Ivange Larry
It’s harder for programmers from less-privileged nations
trying to achieve success alongside people from countries Best Couple
with many material advantages. Coupled commands with
42 10 principles of resilience or women
in tech
Jennifer Cloer control operators in Bash
David Both
We need everyone at the table, in the lab, at the conference
and in the boardroom.
32 Add
logic to the command line with control
45 6yourtipsopen
for receiving feedback on
source contributions
VM (Vicky) Brasseur operators in compound commands.
Receiving feedback can be hard. These tips will help.
47 4 best practices for giving
open source code feedback
VM (Vicky) Brasseur
A few simple guidelines can help you provide better feedback.
8 Open Source Yearbook 2018 . CC BY-SA 4.0 . Opensource.com
Learning
.............. ..
.............
52 1your
0 Hello World programs for
Raspberry Pi
Ben Nuttall
59 7withopenserverless
source platforms to get started
computing
Daniel Oh
“Hello world” is the beginning of everything when it comes to Serverless computing is transforming traditional software
computing and programming. development. These open source platforms will help you get
56 How to get started in AI
started.
Gordon Haff
efore you can begin working in artificial intelligence, you
B
need to acquire some human intelligence.
CRE A T i n g
.............. ..
............. F UTURE
.............. ..
.............
62 Tediting
he current state of Linux video
2018
Seth Kenlon
82 Ttoopattend
8 Python conferences
in 2019
Nicholas Hunt-Walker
Linux is a big deal in modern movie-making. Whether you’re Resolve to expand your Python knowledge and network at
a hobbyist or a professional, you can find Linux software that these events.
85 4conferences
meets your needs.
0 top Linux and open source Rikki Endsley
O l d S c h ool
.............. ..
............. attend in 2019.
in 2019
We’ve rounded up a few favorite picks for conferences to
68 6history
pivotal moments in open source Dave Neary 89 5project
resolutions for open source
maintainers
Ben Cotton
No matter how you say it, good communication is essential
Here’s how open source developed from a printer jam to strong open source communities.
solution at MIT to a major development model in the tech
industry today.
70 13 Git tips for Git’s 13th birthday John SJ Anderson
ake your revision-control experience more useful and
M
powerful with these 13 tricks and tips for Git.
74 Happy birthday, GNOME: 8 reasons Jay LaCroix
to love this Linux desktop
On GNOME’s 21st birthday, we highlight some of the features
we enjoy the most.
5 Call for Papers
76 Athen insider’s look at drafting
GPLv3 license
Richard Fontana 6 7 Reasons to Write for Us / Follow Us
On the 11th anniversary of the GPLv3 license, learn about its
lasting contributions to free and open source software. 7 From the Editor
79 Rinevisiting
2018
the Unix philosophy Michael Hausenblas
The old strategy of building small, focused applications is
new again in the modern microservices environment.
81 TSlackware,
he oldest, active Linux distro,
turns 25
Ben Cotton
All lead images by Opensource.com or the author under CC BY-SA 4.0
Slackware boasts a unique history and a loyal user base. unless otherwise noted.
Open Source Yearbook 2018 . CC BY-SA 4.0 . Opensource.com 9
W o r k i n g
.............. ..
.............
How I coined the term
‘open source’
by Christine Peterson
Christine Peterson finally publishes her account of that fateful day, 20 years ago.
February 3, 2018, was the 20th
anniversary of
the introduction of the term [1] “open source software.” As
but that—to newcomers—its seeming focus on price is
distracting. A term was needed that focuses on the key
issue of source code and that does not immediately con-
open source software grows in popularity and powers some fuse those new to the concept. The first term that came
of the most robust and important innovations of our time, we along at the right time and fulfilled these requirements
reflect on its rise to prominence. was rapidly adopted: open source.
I am the originator of the term “open source software” This term had long been used in an “intelligence” (i.e.,
and came up with it while executive director at Foresight In- spying) context, but to my knowledge, use of the term with
stitute. Not a software developer like the rest, I thank Linux respect to software prior to 1998 has not been confirmed.
programmer Todd Anderson for supporting the term and The account below describes how the term open source
proposing it to the group. software [2] caught on and became the name of both an
This is my account of how I came up with it, how it industry and a movement.
was proposed, and the subsequent reactions. Of course,
there are a number of accounts of the coining of the term, Meetings on computer security
for example by Eric Raymond and Richard Stallman, In late 1997, weekly meetings were being held at Foresight
yet this is mine, written on Institute to discuss computer
January 2, 2006. security. Foresight is a non-
It has never been pub- profit think tank focused on
lished, until today. nanotechnology and artificial
The introduction of the intelligence, and software se-
term “open source soft- curity is regarded as central
ware” was a deliberate to the reliability and security
effort to make this field of both. We had identified
of endeavor more under- free software as a promising
standable to newcomers approach to improving soft-
and to business, which ware security and reliability
was viewed as necessary and were looking for ways
to its spread to a broader to promote it. Interest in free
community of users. The problem with the main earlier software was starting to grow outside the programming com-
label, “free software,” was not its political connotations, munity, and it was increasingly clear that an opportunity was
10 Open Source Yearbook 2018 . CC BY-SA 4.0 . Opensource.com
coming to change the world. However, just how to do this The key meeting
was unclear, and we were groping for strategies. Later that week, on February 5, 1998, a group was assem-
At these meetings, we discussed the need for a new term bled at VA Research to brainstorm on strategy. Attend-
due to the confusion factor. The argument was as follows: ing—in addition to Eric Raymond, Todd, and me—were
those new to the term “free software” assume it is referring Larry Augustin, Sam Ockman, and attending by phone,
to the price. Old-timers must then launch into an explana- Jon “maddog” Hall.
tion, usually given as follows: “We mean free as in freedom, The primary topic was promotion strategy, especially
not free as in beer.” At this point, a discussion on software which companies to approach. I said little, but was looking
has turned into one about the price of an alcoholic beverage. for an opportunity to introduce the proposed term. I felt that
The problem was not that explaining the meaning is impos- it wouldn’t work for me to just blurt out, “All you technical
sible—the problem was that the name for an important idea people should start using my new term.” Most of those at-
should not be so confusing to newcomers. A clearer term tending didn’t know me, and for all I knew, they might not
was needed. No political issues were raised regarding the even agree that a new term was greatly needed, or even
free software term; the issue was its lack of clarity to those somewhat desirable.
new to the concept. Fortunately, Todd was on the ball. Instead of making an
assertion that the community should use this specific new
Releasing Netscape term, he did something less directive—a smart thing to do
On February 2, 1998, Eric Raymond arrived on a visit to work with this community of strong-willed individuals. He simply
with Netscape on the plan to release the browser code under used the term in a sentence on another topic—just dropped
a free-software-style license. We held a meeting that night it into the conversation to see what happened. I went on
at Foresight’s office in Los Altos to strategize and refine our alert, hoping for a response, but there was none at first. The
message. In addition to Eric and me, active participants in- discussion continued on the original topic. It seemed only he
cluded Brian Behlendorf, Michael Tiemann, Todd Anderson, and I had noticed the usage.
Mark S. Miller, and Ka-Ping Yee. But at that meeting, the Not so—memetic evolution was in action. A few minutes
field was still described as free software or, by Brian, “source later, one of the others used the term, evidently without no-
code available” software. ticing, still discussing a topic other than terminology. Todd
While in town, Eric used Foresight as a base of oper- and I looked at each other out of the corners of our eyes
ations. At one point during his visit, he was called to the to check: yes, we had both noticed what happened. I was
phone to talk with a couple of Netscape legal and/or mar- excited—it might work! But I kept quiet: I still had low status
keting staff. When he was finished, I asked to be put on in this group. Probably some were wondering why Eric had
the phone with them—one man and one woman, perhaps invited me at all.
Mitchell Baker—so I could bring up the need for a new Toward the end of the meeting, the question of terminol-
term. They agreed in principle immediately, but no specific ogy [3] was brought up explicitly, probably by Todd or Eric.
term was agreed upon. Maddog mentioned “freely distributable” as an earlier term,
Between meetings that week, I was still focused on the and “cooperatively developed” as a newer term. Eric listed
need for a better name and came up with the term “open “free software,” “open source,” and “sourceware” as the
source software.” While not ideal, it struck me as good main options. Todd advocated the “open source” model, and
enough. I ran it by at least four others: Eric Drexler, Mark Eric endorsed this. I didn’t say much, letting Todd and Eric
Miller, and Todd Anderson liked it, while a friend in mar- pull the (loose, informal) consensus together around the
keting and public relations felt the term “open” had been open source name. It was clear that to most of those at the
overused and abused and believed we could do better. He meeting, the name change was not the most important thing
was right in theory; however, I didn’t have a better idea, so discussed there; a relatively minor issue. Only about 10% of
I thought I would try to go ahead and introduce it. In hind- my notes from this meeting are on the terminology question.
sight, I should have simply proposed it to Eric Raymond, But I was elated. These were some key leaders in the
but I didn’t know him well at the time, so I took an indirect community, and they liked the new name, or at least didn’t
strategy instead. object. This was a very good sign. There was probably not
Todd had agreed strongly about the need for a new term much more I could do to help; Eric Raymond was far bet-
and offered to assist in getting the term introduced. This ter positioned to spread the new meme, and he did. Bruce
was helpful because, as a non-programmer, my influence Perens signed on to the effort immediately, helping set up
within the free software community was weak. My work in Opensource.org [4] and playing a key role in spreading the
nanotechnology education at Foresight was a plus, but not new term.
enough for me to be taken very seriously on free software For the name to succeed, it was necessary, or at least
questions. As a Linux programmer, Todd would be listened highly desirable, that Tim O’Reilly agree and actively use
to more closely. it in his many projects on behalf of the community. Also
Open Source Yearbook 2018 . CC BY-SA 4.0 . Opensource.com 11
W o r k i n g
.............. ..
.............
helpful would be use of the term in the upcoming official [3] https://wiki2.org/en/Alternative_terms_for_free_software
release of the Netscape Navigator code. By late February, [4] https://opensource.org/
both O’Reilly & Associates and Netscape had started to use [5] http://www.oreilly.com/pub/pr/636
the term. [6] http://www.oreilly.com/pub/pr/796
[7] https://ipfs.io/ipfs/QmXoypizjW3WknFiJnKLwHCnL72
Getting the name out vedxjQkDDP1mXWo6uco/wiki/Alternative_terms_for_
After this, there was a period during which the term was free_software.html
promoted by Eric Raymond to the media, by Tim O’Reilly [8] http://intelligence.org/
to business, and by both to the programming community. It [9] http://blueribbonnano.org/
seemed to spread very quickly. [10] https://nasasearch.nasa.gov/search?query=nanotech+
On April 7, 1998, Tim O’Reilly held a meeting of key lead- briefs&affiliate=nasa&utf8=%E2%9C%93/
ers in the field. Announced in advance as the first “Freeware [11] https://www.foresight.org/Conferences/index.html
Summit,” [5] by April 14 it was referred to as the first “Open [12] https://www.foresight.org/about/fi_spons.html
Source Summit.” [6] [13] https://www.foresight.org/SrAssoc/spring2002/
These months were extremely exciting for open source. index.html
Every week, it seemed, a new company announced plans [14] http://www.oreilly.com/openbook/freedom/ch11.html
to participate. Reading Slashdot became a necessity, even [15] https://www.foresight.org/UTF/Unbound_LBW/
for those like me who were only peripherally involved. I index.html
strongly believe that the new term was helpful in enabling [16] https://www.foresight.org/SrAssoc/99Gathering/
this rapid spread into business, which then enabled wider lta_toc.html
use by the public.
A quick Google search indicates that “open source” ap- Author
pears more often than “free software,” but there still is sub- Christine Peterson writes, lectures, and briefs the media on
stantial use of the free software term, which remains useful coming powerful technologies, especially nanotechnology,
and should be included when communicating with audiences artificial intelligence, and longevity. She is cofounder and
who prefer it. past president of Foresight Institute, the leading nanotech
public interest group. Foresight educates the public, techni-
A happy twinge cal community, and policymakers on coming powerful tech-
When an early account [7] of the terminology change written nologies and how to guide their long-term impact.
by Eric Raymond was posted on the Open Source Initiative She serves on the Advisory Board of the Machine Intelli-
website, I was listed as being at the VA brainstorming meet- gence Research Institute [8], and has served on California’s
ing, but not as the originator of the term. This was my own Blue Ribbon Task Force on Nanotechnology [9] and the Edi-
fault; I had neglected to tell Eric the details. My impulse was torial Advisory Board of NASA’s Nanotech Briefs [10].
to let it pass and stay in the background, but Todd felt oth- She has often directed Foresight Conferences on Molecular
erwise. He suggested to me that one day I would be glad to Nanotechnology [11], organized Foresight Institute Feynman
be known as the person who coined the name “open source Prizes [12], and chaired Foresight Vision Weekends [13].
software.” He explained the situation to Eric, who promptly She lectures on technology topics to a wide variety of au-
updated his site. diences, focusing on making complex fields understandable.
Coming up with a phrase is a small contribution, but I ad- Her work is motivated by a desire to help Earth’s envi-
mit to being grateful to those who remember to credit me ronment and traditional human communities avoid harm
with it. Every time I hear it, which is very often now, it gives and instead benefit from expected dramatic advances in
me a little happy twinge. technology. This goal of spreading benefits led to an in-
The big credit for persuading the community goes to Eric terest in new varieties of intellectual property including
Raymond and Tim O’Reilly, who made it happen. Thanks open source software [14], a term she is credited with
to them for crediting me, and to Todd Anderson for his role originating.
throughout. The above is not a complete account of open Wearing her for-profit hat, she chairs the Personalized
source history; apologies to the many key players whose Life Extension Conf erence series. In 1991 she coauthored
names do not appear. Those seeking a more complete ac- Unbounding the Future: the Nanotechnology Revolution
count should refer to the links in this article and elsewhere (Morrow, full text online [15]), which sketches nanotech-
on the net. nology’s potential environmental and medical benefits as
well as possible abuses. An interest in group process led
Links to coauthoring Leaping the Abyss: Putting Group Genius
[1] https://opensource.com/resources/what-open-source to Work (knOwhere Press, 1997, full text online [16]) with
[2] https://opensource.org/osd Gayle Pergamit.
12 Open Source Yearbook 2018 . CC BY-SA 4.0 . Opensource.com
.................... W o r k i n g
First time with Linux:
30 installation tales
by Jen Wike Huger
The Linux kernel turns another year older on August 25.
The Linux [1] kernel turned another year older
on Saturday, August 25. Twenty-six
years ago it may have felt to the creator and BDFL [2] Li-
gave up. I would come back Linux on 2.6.8 with Ubun-
tu 4.10 Warty Warthog. With this release, Linux gained a
permanent foothold in my house, and it would eventually
nus Torvalds that Linux would only amount to satisfying the launch its domination of my
needs of one. But today we know it has changed the lives infrastructure and eventually
of many. my personal computers. By
To celebrate, thirty of our readers share what their first 2006, I was running Linux on
I was running Linux
Linux distro and installation was like. Some of their stories everything I could. on everything I
are magical, some maniacal. And, it’s no surprise that the
tension and passion of these could.
Linux lovers is palpable.
Read on for their stories. Linux
Matthew Helmke [4] writes:
30 firsts with Linux I installed Linux 2.2 on
a server I did not own, and
Gentoo version 2.6 was the first that
Steve Ovens [3] writes: I successfully installed my-
My first Linux kernel ver- self. My installation involved
sion was 2.6.3. It was Gentoo lots of invocations, muttering,
with Gnome 2. It took more driver source downloads,
than four days to compile and compilation. In retro-
on my computer at the time. spect, I learned it was be-
I prayed there wasn’t a power outage or failure halfway cause I made a poor hard-
through. I remember spending all that time compiling ware choice at the time. My
the OS and getting to the desktop and thinking “Great! My second install second was a breeze.
Now what?” Having used only Windows previous to this was a breeze. Jet Anderson [5] writes:
adventure with Gentoo, so I didn’t really understand how It was 1992 if I remember
getting software worked. I couldn’t just download pack- correctly. I had a spare box of parts sitting near my desk in a
ages, and I wasn’t particularly motivated to do anything design company where I supported their fleet of Macs. I paid
in-depth. The system only lasted a few months before I about $60 for the book “Yggradsil Computing ‘Plug-n-Play’
Open Source Yearbook 2018 . CC BY-SA 4.0 . Opensource.com 13
W o r k i n g
.............. ..
.............
How hard can this Linux Linux” with accom- The first kernel I remember compiling was 2.0.32. It was
panying bootable in- on a Red Hat Linux 5.0, and I needed to recompile the
thing be anyway? staller CD. I thought... kernel to get a driver for the ethernet card working. It took
“How hard can this me a full day, with the help of a friend. It had fvwm95 as
Linux thing be anyway? Besides, it’s bootable!” So, I put in a the window manager. It was a lot of fun and a great learn-
graphics card, a hard drive (40 MB if I remember correctly), ing experience. I was on my hands and knees, with the
and installed some ram... a whole 4 MB. That should be plen- back of the comput-
ty right? Everything went downhill from there. The graphics er off, trying to see
card was unsupported. Did I mention the drives were SCSI what the chip was
not IDE? Thankfully I had ethernet based access to the in- on the ethernet card.
I don’t think I could have
ternet or I’d have been in the sad world of trying to configure As I recall, it was done it without a friend.
a modem to download updated drivers for everything. After a D-Link DE-220.
about a week of wrestling, I finally got the drive formatted, Then I remember having to figure out what the modeline
kernel installed, and X running. It felt like an incredibly heroic was for my screen. I hedged my bets and got my comput-
thing I’d just accomplished. Sitting there with my very first er dual booting with lilo. I don’t think I could have done
terminal window open I typed “dir” and got... “dir: command it without a friend who could help me figure out the next
not found.” It was time to start learning. thing I needed to learn about!
Steve Ellis [6] writes: Greg Pittman [11] writes:
My first Linux install was 1.3 back in 1996 using the DR1 My first Linux was with Red Hat 5.1, or 2.0.34 kernel ver-
release of MkLinux on an early PowerPC 601 based Power sion, according to Wikipedia. The install went pretty well,
Macintosh. The installer was remarkably like early versions of it seemed to be well-documented, but it was all about the
Red Hat Linux. We were given a CD at Apple’s 1996 WWDC drivers: video chip drivers, printer drivers, modem drivers
and it took me a couple of months to persuade my boss that (remember modems?). Not only that, you had to manually
I wouldn’t totally destroy one of our developer workstations edit the config file. This was on a Gateway laptop, where I
trying it out. Suddenly, I had a Linux/Unix workstation that had set up a dual-boot situation. Gateway was of course, no
was faster than our aging RS/6000 and pretty much never help, so you had to research it yourself and find somebody
looked back from a Linux adoption perspective. that talked about a driver
Gary Smith [7] writes: for your hardware. Also,
My first Linux install was Yggdrasil Linux Plug and Play, in since I didn’t have a mo-
1993. I still have the CDs for nostalgia’s sake. dem working in Linux, I had Life was good.
to keep rebooting to Win-
PowerPC Linux dows to do the research, download the drivers, and save
John Anderson [8] writes: them on a floppy. One of the happiest days of my life was
My first Linux install was PowerPC Linux onto a Power- about two weeks after the install when I FINALLY got X-win-
Mac 7500. I downloaded the install media in my University dows working. Life was good.
lab and carried it home on a stack of zip disks, and I set up Jay LaCroix [12] writes:
the PowerMac to dual-boot MacOS 9 and PPC Linux. I only My first installation was Red Hat 7.1 or 7.2, probably 2002
had the one computer, and the thing I remember most is how or thereabouts. I was using it on a 300Mhz Pentium III PC
incredibly overjoyed I was when with very limited resources. GNOME wouldnít even start on
I got PPP dial-up working on the it, but I was able to get KDE to work. It was the installation
Linux side so I could search for I used while taking a Linux course at a community college.
I carried it home on stuff without having to reboot Ben Cotton [13] writes:
a stack of zip disks. back into MacOS! My first Linux kernel version was 2.4.18 or so—whatever
was shipping in Red Hat Linux 8 at the time. My first Li-
Red Hat Linux nux install was a dual boot on my desktop my sophomore
Don Watkins [9] writes: year of college. I’d been frustrated with my Windows 2000
My first Linux install was Red Hat 5.0. I don’t know the ker- installation and
nel version. I think it came on floppies. I could not get a GUI my friend sug-
and didn’t like it. I thought it was like MS-DOS. The second gested I try this I didn’t really know what
install was with a CD on Red Hat 6.1, and that was kernel “Linux” thing.
version 2.2.12-20, according to Wikipedia. I liked the install It was a pretty
I was doing at the time.
experience, and it was my first successful install with a GUI. basic desktop. I didn’t really know what I was doing at the
I think it was GNOME, but I’m not sure. time, but I had just started learning my way around FreeBSD
Dave Neary [10] writes: for my part-time job, so it felt pretty cool to run something
14 Open Source Yearbook 2018 . CC BY-SA 4.0 . Opensource.com
non-Windows. I remember taking my computer home for the Linux/Fedora since then. A funny story: I remember jump-
summer and not being able to get the modem working, so I ing on an IRC server and going to ask for help. And I typed
couldn’t get online. My parents still had dial-up then. something like “I need help getting Xwindows working on
Alan Formy-Duval [14] writes: my PC.” I was kicked out of the channel with a reason: It is
The first kernel I actually compiled myself seems like the not Xwindows, but Xwindow... so, yeah... open source folks
most appropriate answer. I believe it was probably 2.0.32 can be tough!
or 2.0.33. I was running Red Hat Linux 5.X as my first dis-
tribution. My first installation was onto a basic Dell Optiplex SCO Openserver
desktop machine. There were always a few necessary steps Jim Salter [18] writes:
after performing the installation. Those were to complete the A rough guess for which version is 1.2.0. I can’t find a de-
network configuration, configure X-Windows, and compile finitive answer on the kernel it shipped with, but 1.2.0 would
the latest kernel. For the kernel, I would head over to kernel. have been pretty current when SCO OpenServer 5 shipped.
org and download the latest version. I remember (mostly) The install was absolutely horrible. Did I mention it was SCO
the command used to run the compilation as something like OpenServer? Horrible. This was the foundation of a very
“make dep clean bzlilo modules modules_install.” It seems spendy telemarketing predictive dialing system, with SCO
like the compile took an hour or two. OpenServer 5.0 as the OS and a proprietary application run-
David Both [15] writes: ning the phones over a T-1. Mostly I remember thinking that
My first was probably kernel 2.0.32 in Red Hat Linux 5.0 I was for absolute certain going to be a FreeBSD person, not
in late 1997. My first install was long and slow on my IBM a Linux person. And for quite a while, I was. There wasn’t
ThinkPad—which was even then quite old—with a CD. It re- really any doubt in my mind then or now that FreeBSD was a
quired me to make a number of choices that I did not then superior system in pretty much every way in the mid-90s; but
understand, including ones about hardware and the list of at some point in the 2000s Linux blew the doors off and has
software to install. As I recall, there were no groups of soft- been gaining more steam ever since.
ware that would install required prerequisites so after the
basic installation I had to endure hours of dependency-hell
to install a few additional top-level packages. Package man- I remember thinking I was for
agement with RPM was a nightmare because it did not deal
at all with finding and installing dependencies like YUM and
absolute certain going to be a
DNF. It must have been even worse before RPM. I never did FreeBSD person, not a Linux person.
get the display on my ThinkPad to switch to graphics mode.
But that was probably excellent as it forced me to learn how Slackware
to use the Linux command line, and I have been a CLI fan Tony McCormick [19] writes:
ever since. It was exciting to be able to use a Unix like OS at home
Chris Hermansen [16] writes: so I could run Perl and Bash scripts. During the installation,
My first kernel version would have been around 2.2.12. there were lots of 3 1/2” floppy drives and flipping through
I remember getting Red Hat Linux on floppies shortly after the Yggdrasil Linux book to figure out how to compile things.
returning home from my first visit to Chile in November 1999. Getting dial-up working so I could login at to the office was
If I recall correctly, the first install did not go at all well—it was fun too, but great.
on a Thinkpad. The second was on a desktop and it seems Peter Czanik [20] writes:
to me that worked just fine. The thing that struck me about My first Linux kernel version was 0.99.11 or 0.99.13. Of
that first brush with Linux, once I got past the huge packet of course, I don’t remember by heart, but it was Slackware, and
floppies, was how generally decent it was compared to my it was not yet kernel 1.0. It was a pretty basic installation, as
work machine which at the time was a Sun SPARCStation my machine did not have much RAM. It was good enough
something or other. for a text console and to learn the basics: bash, init scripts,
Anderson Silva [17] writes: server applications, reading tons of man pages. My first Li-
Red Hat Linux 3.0.3 (Picasso), kernel 1.2.13. My first in- nux install involved many floppy disks. And, I actually had to
stall was a total failure. I had to open up my Packard Bell reinstall it a couple of times as DR-DOS (the other OS on
computer, to see if I could identi- the machine) and rearrange partition numbers on each boot.
fy if my CD-ROM was Primary or Steve Morris [21] writes:
My first install was Secondary Master or Slave, as I was another of those early Slackware users; I picked it up
a total failure. my BIOS wouldn’t tell me, and at a local Comdex show in Vancouver. I rushed home and
Linux didn’t auto-detect it, and proceeded to install the 24 or so floppy disks on my PC.
then it died on the X install. I only tried the install again six After what seemed like hours later, I was left with a com-
months later, successfully. I’ve been running on Red Hat mand-line shell. All I could remember about that first expe-
Open Source Yearbook 2018 . CC BY-SA 4.0 . Opensource.com 15
W o r k i n g
.............. ..
.............
rience is, “Now what do I Now what do I do? those?) that I had to download with my super fast 9k6 US Ro-
do?” It lasted on the ma- botics modem. Those
chine for about three months before it was mothballed and I were the days.
purchased a copy of Red Hat Linux 5.0 on CD. Eric Eslinger [28] There were 24 floppy
Kevin Cole [22] writes: writes:
I started with an ancient Slackware distribution sold by a I installed some
disks (remember those?)
company called Trans-America. I cannot recall the kernel but version of Linux in the 0.99 kernel version time (definitely
the era was circa 1993-1994. The thing I remember most prior to 1.0), using SLS, in or around 1993. It was a mo-
was that halfway through the install, I had to switch CDs and ment of spontaneous magic for me. A friend helped me do
when I did, it said: “What’s a CD?” (It could no longer find the things like bring up an xterm, change my shell to the very
driver.) Thankfully, even back then, there was an online com- cool csh, and learn how to set DISPLAY environment vari-
munity willing to help and someone lent me to a floppy that ables to run graphical applications on my personal comput-
would allow me to continue. That first install was... “OMG, er while running the code on
I’ve got a friggin’ mainframe on my desk!” I wrote more about a server. It was transformative
that adventure in this article [23]. for me to have an OS I could
Andy Thornton [24] writes:
It was a moment not only understand but also
Pre-version 2, I remember the buzz around a new 2.0 kernel of spontaneous write code for directly.
coming out! I installed Slackware because I had met a mate Yedidyah Bar David [29]
in Boston who showed me around it, and I had to build a box magic for me. writes:
when I got home. I used it entirely from the shell and it went on My first kernel booted was
to be a MUD server I hosted out of my bedroom. I had a script 0.99.11 or so in SLS, but I failed to install it. My first kernel
to dial my internet provider during off-peak hours to save on bills used was IIRC 0.99.10, from MCC Interim Linux, which
(this was in the UK). I spent an entire weekend downloading the managed to install with just 2 MB RAM (because it had a
equivalent of 80 floppy disks on a 54k modem, and once I had it documented option to not use a ramdisk, but directly from
all down, I transferred it to a Jazz drive from Iomega so I had a a floppy). This install was hard and took several weeks!
copy. I would pray no one rang the house during the download I remember that SLS (which is what was recommended
as it would break and I would have to recover it or start all over to me at the time, in 1993) didn’t install with 2 MB RAM.
again. I will admit, it was a fun weekend. So, I consulted people, tried HJ Lu’s Boot/Root floppies
which did boot and work, then found MCC and installed
it, which worked. Shortly thereafter, I compiled a kernel
I would pray no one rang the (0.99.14?), which took around 24 hours, then I bought
another 2 MB RAM for my machine. Then, the compile
house during the download. took about an hour. I used MCC for some time, then tried
SLS again. SLS’s installation with 4 MB RAM was reason-
Daniel Oh [25] writes: able, but somewhat ugly with white on black and question
My first install was Slackware, and it took a lot of time for prompts and answers. A few months later a friend told me
me to stand up Linux. I got used to doing hands-on stuff he installed Slackware, and “it was so much nicer!,” which
with Windows, but it was so exciting to try out open source indeed it was true. It was in color and fullscreen, though
technology. There were many floppy drives involved with my still in text mode. So, I moved to Slackware for two years,
first installation, and I had to use a few Linux books to learn then finally installed Debian, and stayed with it until two
how to build, install, and configure all matters of the OS pro- years ago. Also, I used it on my first laptop as an employ-
grams. It took a lot of time but it was really fun for me. ee at Red Hat. Three years later, I decided it was time to
move to RHEL!
Softlanding Linux System
Jim Hall [26] writes: Ubuntu
My first Linux distribution was Softlanding Linux System Kedar Vijay Kulkarni [30] writes:
(SLS) 1.03, with Linux kernel 0.99 alpha patch level 11. In- My first Linux was Ubuntu. I had to install it as it was
stallation required a whopping 2 MB of RAM, or 4 MB if you mandated in our curriculum at MIT College of Engineering
wanted to compile programs, and 8 MB to run X Windows. in Pune, India. The installation itself was very easy and
Linux added modules in 1.0, so this was pre-modules. Ev- straightforward. The only option I had to get right was
erything had to be compiled in. “Install Ubuntu alongside Windows” in order to make sure
Michael Schulz [27] writes: I didn’t wipe out my Windows partition. Something that I
IIRC, my first version was 0.98-4 pl 10 on the SLS distro. distinctly remember about my first Linux install was learn-
There were twenty-four 1.44 MB floppy disks (remember ing how to create a bootable USB drive and learning what
16 Open Source Yearbook 2018 . CC BY-SA 4.0 . Opensource.com
dual partition is and looks like. I remember all the excite- Links
ment of getting a whole new operating system entirely [1] https://opensource.com//resources/linux
for free. Plus, the Unity GUI was a refreshing break from [2] https://opensource.com//article/18/7/bdfl
Windows XP. [3] https://opensource.com/users/stratusss
Brian Whetten [31] writes: [4] https://opensource.com/users/matthew-helmke
My first Linux kernel version was 2.6.32 as part of Lucid [5] https://opensource.com/users/thatsjet
Lynx Ubuntu version 10.04. My first Linux install was mem- [6] https://opensource.com/users/steven-ellis
orable because after helping others install Windows XP and [7] https://opensource.com/users/greptile
older versions of MacOS, Linux installed the fastest. Even [8] https://opensource.com/users/genehack
though I was only in junior high at the time, I knew that I had [9] https://opensource.com/users/don-watkins
found something special. It was snappier than any computer [10] https://opensource.com/users/dneary
I had used at school or home (with the exception of some [11] https://opensource.com/users/greg-p
video acceleration issues). I was just excited to finally have [12] https://opensource.com/users/jlacroix
a machine I could freely learn and explore in, with no knowl- [13] https://opensource.com/users/bcotton
edge blocks and great searchable documentation. Blender [14] https://opensource.com/users/alanfdoss
ran incredibly well on it versus the comparable Mac my fam- [15] https://opensource.com/users/dboth
ily-owned computer. [16] https://opensource.com/users/clhermansen
David Clinton [32] writes: [17] https://opensource.com/users/ansilva
My first Linux experience was installing Ubuntu 7.10 (ker- [18] https://opensource.com/users/jim-salter
nel version 2.6.22) from Windows XP using Wubi. That part [19] https://opensource.com/users/tmccormick
was easy. Getting it to work as an LTSP server for a network [20] https://opensource.com/users/czanik
of thin clients booting via PXE was considerably more com- [21] https://opensource.com/users/smorris12
plicated. I can’t remember whether I actually got it all running [22] https://opensource.com/users/kjcole
from the Wubi version or whether that had to wait until my [23] https://opensource.com/life/15/11/my-open-source-story-
first full install, but the triumph of success was worth the ef- kevin-cole
fort... even if it first required diagnosing a flaky port on the old [24] https://opensource.com/users/andrew-thornton
network switch I was using. [25] https://opensource.com/users/daniel-oh
Kyle Conway [33] writes: [26] https://opensource.com/users/jim-hall
My first install was Ubuntu 8.04, Hardy Heron, which [27] https://opensource.com/users/mschulz
seems to have run Linux kernel 2.6.24. It was a WUBI in- [28] https://opensource.com/users/eric-eslinger
stall (the relative simplicity of an *.exe that wouldn’t “break” [29] https://opensource.com/users/didib
my computer convinced me to give it a try). There’s a great [30] https://opensource.com/users/kkulkarn
[31] https://opensource.com/users/classywhetten
[32] https://opensource.com/users/dbclinton
It didn’t require license [33] https://opensource.com/users/kreyc
keys—it just worked.
Author
thread on the Ubuntu forums where I got the help I needed Jen has been an editor on the Opensource.com team for six
(getting my WUBI install back) and move fulltime to Linux. years. In that time, she’s worked with countless developers
I’m coming up on a decade! It was unbelievable to me that I and engineers, helping them with the magic of turning their
could download this at no cost, that it ran many of the appli- technical expertise and experience into written form. On any
cations that I already used (e.g. Firefox), that I could share given day, you’ll find her managing the website’s publication
it with others, that it had useful software installed by default, schedule and editorial workflow (on kanban boards), as well
and that it didn’t require license keys—it just worked. as brainstorming the next big article.
Open Source Yearbook 2018 . CC BY-SA 4.0 . Opensource.com 17
W o r k i n g
.............. ..
.............
15 open source applications
for macOS
by Don Watkins
Dedicated open source users won’t find it hard to use their
favorite applications on non-Linux operating systems.
I use open source tools whenever
and wherever I
can. I returned to college a while ago to earn a master’s de-
little cost. Most of them were surprised and amazed be-
cause, as we all know, open source software doesn’t have
a marketing team except users like you and me.
gree in educational leadership. Even though I switched from
my favorite Linux laptop to a MacBook Pro (since I wasn’t sure My macOS learning curve
Linux would be accepted on campus), I decided I would keep Through this process, I learned some of the nuances of
using my favorite tools, even on macOS, as much as I could. macOS. While most of the open source tools worked as I
Fortunately, it was easy, and no professor ever questioned was used to, others required different installation methods.
what software I used. Even so, I couldn’t keep a secret. Tools like yum [1], DNF [2], and [3] do not exist in the macOS
I knew some of my classmates would eventually assume world—and I really missed them.
leadership positions in school districts, so I shared informa- Some macOS applications required dependencies and
tion about the open source applications described below installations that were more difficult than what I was accus-
with many of my macOS or Windows-using classmates. tomed to with Linux. Nonetheless, I persisted. In the process,
After all, open source software is really about freedom and I learned how I could keep the best software on my new plat-
goodwill. I also wanted them to know that it would be easy form. Even much of macOS’s core is open source [4].
to provide their students with world-class applications at Also, my Linux background made it easy to get comfort-
able with the macOS command line. I still use it to create and
copy files, add users, and use other utilities [5] like cat, tac,
more, less, and tail.
15 great open source applications for macOS
• T
he college required that I submit most of my work elec-
tronically in DOCX format, and I did that easily, first with
OpenOffice [6] and later using LibreOffice [7] to produce
my papers.
• When I needed to produce graphics for presentations,
I used my favorite graphics applications, GIMP [8] and
Inkscape [9].
18 Open Source Yearbook 2018 . CC BY-SA 4.0 . Opensource.com
• M y favorite podcast creation tool is Audacity [10]. It’s Links
much simpler to use than the proprietary application that [1] https://en.wikipedia.org/wiki/Yum_(software)
ships with the Mac. I use it to record interviews and create [2] https://en.wikipedia.org/wiki/DNF_(software)
soundtracks for video presentations. [3] https://en.wikipedia.org/wiki/APT_(Debian)APT
• I discovered early on that I could use the VideoLan [11] [4] https://developer.apple.com/library/archive/documentation/
(VLC) media player on macOS. MacOSX/Conceptual/OSX_Technology_Overview/
• macOS’s built-in proprietary video creation tool is a good SystemTechnology/SystemTechnology.html
product, but you can easily install and use OpenShot [12], [5] https://www.gnu.org/software/coreutils/coreutils.html
which is a great content creation tool. [6] https://www.openoffice.org/
• When I need to analyze networks for my clients, I use [7] https://www.libreoffice.org/
the easy-to-install Nmap [13] (Network Mapper) and Wire- [8] https://www.gimp.org/
shark [14] tools on my Mac. [9] https://inkscape.org/en/
• I use VirtualBox [15] for macOS to demonstrate Raspbi- [10] https://www.audacityteam.org/
an, Fedora, Ubuntu, and other Linux distributions, as well [11] https://www.videolan.org/index.html
as Moodle, WordPress, Drupal, and Koha when I provide [12] https://www.openshot.org/
training for librarians and other educators. [13] https://nmap.org/
• I make boot drives on my MacBook using Etcher.io [16]. I [14] https://www.wireshark.org/
just download the ISO file and burn it on a USB stick drive. [15] h ttps://www.virtualbox.org/
• I think Firefox [17] is easier and more secure to use than [16] https://etcher.io/
the proprietary browser that comes with the MacBook Pro, [17] https://www.mozilla.org/en-US/firefox/new/
and it allows me to synchronize my bookmarks across op- [18] https://calibre-ebook.com/
erating systems. [19] https://opensource.com/article/17/6/raspberrypi-ebook-
• When it comes to eBook readers, Calibre [18] cannot be server
beaten. It is easy to download and install, and you can [20] https://www.python.org/downloads/release/python-370/
even configure it for a classroom eBook server [19] with [21] https://opensource.com/article/18/4/getting-started-
a few clicks. anaconda-python
• Recently I have been teaching Python to middle school stu- [22] https://www.anaconda.com/download/#macos
dents, I have found it is easy to download and install Python [23] https://handbrake.fr/
3 and the IDLE3 editor from Python.org [20]. I have also en- [24] https://kodi.tv/download
joyed learning about data science and sharing that with stu-
dents. Whether you’re interested in Python or R, I recommend Author
you download and install [21] the Anaconda distribution [22]. Don is an educator, education technology specialist, en-
It contains the great iPython editor, RStudio, Jupyter Note- trepreneur, and open source advocate. He holds an M.A.
books, and JupyterLab, along with some other applications. in Educational Psychology and an MSED in Educational
• HandBrake [23] is a great way to turn your old home video Leadership. As a Linux system administrator and CCNA,
DVDs into MP4s, which you can share on YouTube, Vimeo, he is an expert at virtualization using Virtual Box. Follow
or your own Kodi [24] server on macOS. him at @Don_Watkins
Open Source Yearbook 2018 . CC BY-SA 4.0 . Opensource.com 19
W o r k i n g
.............. ..
.............
4
ways Flutter
makes mobile app
development delightful
by Emily Fortuna
Open source mobile SDK simplifies and speeds iOS and Android app development.
Lightning-fast development cycle
I’m going to let you in on a secret: For years I
hated mobile development. I
wanted to like it—mobile was the future! It was cool! It was
Traditional compilers are trouble. You know how it goes: You
hit “compile,” and the next thing you know you’re 10 tabs
low-power! It was a way to connect with users whose first deep into cute kitten photos—and it’s lunchtime. Fortunately,
exposure to computers did not come from traditional desk- when I worked on the web, interpreters and Just In Time
top platforms! And yet… development was a slow, frustrating (JIT) compilers saved me from my kitten tendencies, making
experience for me. Instead, I sequestered myself over in the “edit, save, refresh” the name of the game.
entirely problem-free area of web development and mourned Flutter takes this quick development idea one step further:
the disappearance of the HTML blink tag (kidding). “edit, save.” Although it’s not a web technology, you can see
Then, I discovered Flutter [1], an open source mobile your changes on your mobile device’s screen in less than
app SDK developed by Goo- a second, thanks to Flutter’s
gle that enables developers hot reload.
to use the same codebase Typically you get this fast
to create mobile apps for iOS development cycle by using
and Android. fancy, dynamically typed
Once I found Flutter, I scripting languages, with
found that mobile develop- the downside of pushing er-
ment could be joyful. rors to runtime rather than
Yes, joyful. catching them beforehand
How, you ask? To show at compile-time. The second
you what I mean, let’s walk common drawback is their
through writing a very simple performance is not as zippy
Flutter app that queries Stack as compiled languages. By
Overflow. As the self-respect- using Dart as its program-
ing open source developer that you are, I’m sure you want to ming language of choice, Flutter can sidestep both of these
keep on top of the questions people are asking about your issues. Dart has a strong, sound type system that allows you
software on Stack Overflow. This app allows you to search to catch problems before demoing That Part of the Code-
for questions about a specific topic. base With Less Than Ideal Test Coverage.
20 Open Source Yearbook 2018 . CC BY-SA 4.0 . Opensource.com
Second, Dart has two modes: app, we’ll create a Stream where we can listen for updates on
1. running in “interpreted” mode on the Dart virtual machine, our Stack Overflow questions of interest. Since the Stack Over-
which allows that joyful, hot reload experience, and; flow API doesn’t provide push notifications out of the box, we
2. compiled mode, which compiles your app down to native construct our own stream using a StreamController and add
machine code when you’re ready to release your app. updated Stack Overflow information whenever we get it:
Given these features, Dart is uniquely suited to provide de-
velopers with great development and release experiences final controller = StreamController<List<String>>();
for Flutter.
Finally, Dart was designed to be easy to learn, so if you’ve void refreshQuestions() async {
worked with any C-style language like Java, C++, or JavaS- var result = await http.get(url);
cript, it will feel familiar. Map decoded = json.decode(result.body);
List items = decoded['items'];
Cool features, such as Streams and Futures controller.add(items
Time to start coding! Our app will use the Stack Overflow .where((item) => !item['is_answered'])
API to look for questions about Flutter that need responses, .map<String>((item) => item['title'])
so that you, the intrepid open source project owner that you .toList());
are, can help your community by keeping them informed. }
The simplest way to get that information in Dart is with an
asynchronous request: In refreshQuestions, we make a new call to the Stack Over-
flow API, then filter the results so we’re only looking at ques-
final url = 'https://api.stackexchange.com/2.2/questions? tions that have not been answered. From those results, we
order=desc&sort=activity&tagged=flutter&site=stackoverflow'; pull out the titles of the questions to display them in our app.
var result = await http.get(url); Flutter conveniently provides a StreamBuilder widget
print(result.body); that can automatically update what the user sees in the app
based on the contents of a stream. In this case, we provide
The result prints out some JSON, looking something like this: the input stream source (controller.stream) and display
different results de-
{ pending on whether
"items": [ we successfully re- StreamBuilder also
ceived data or not
{
"tags": [ (in this case building
conveniently takes care
"android", terribly exciting Text of unsubscribing itself
widgets). Stream-
"ios",
"flutter" Builder also conve- from the stream and
], niently takes care of cleaning up after itself.
"owner": { unsubscribing itself
"reputation": 1, from the stream and cleaning up after itself.
...
}, StreamBuilder(
is_answered: false, stream: controller.stream,
"view_count": 1337, builder: (BuildContext context, AsyncSnapshot<List<String>>
"title": "How to make a pretty Flutter app?" snapshot) {
... if (snapshot.hasError)
} return Text('Error ${snapshot.error}');
else if (
snapshot.connectionState == ConnectionState.
In this code snippet, http.get is returning a Future<Request>, waiting) {
which means that the result will be available in the future of type return Text('Receiving questions...');
(Http)Request. Even though we’re making a round trip to the }
server, we don’t need to pass in a callback; we can just use return Expanded(
the await keyword to wait for a response. Flutter has Future- child: ListView(
Builder and StreamBuilder widgets to build corresponding children: snapshot.data
UI components, given the results of a Future or a Stream. .map<Widget>((info) => Text(info))
A Stream is just like a Future, except that it can provide re- .toList()));
sults asynchronously multiple times instead of just once. In our });
Open Source Yearbook 2018 . CC BY-SA 4.0 . Opensource.com 21
W o r k i n g
.............. ..
.............
The result of the previous code. (I don’t understand why no return CupertinoButton(
design school would accept me.) child: child,
onPressed: onPressed,
);
} else {
return FloatingActionButton(
icon: icon,
onPressed: onPressed,
);
}
}
}
Then, in our Flutter app, we can simply construct:
return PlatformAdaptiveButton(
child: const Text('Refresh'),
icon: const Icon(Icons.refresh),
onPressed: refreshQuestions);
Which, when pressed, requests updates from the Stack
Overflow API. Flutter’s roadmap calls for more built-in
ways to have platform adaptive components in your code,
so stay tuned.
A handful of other app development systems provides
cross-platform functionality, too: React Native, Xamarin,
One technology for both iOS and Android and Ionic, to name a few. With React Native and Ionic, you
”Don’t Repeat Yourself” is a common software engineering develop in JavaScript, which has the potential for less type
mantra, yet the mobile development world seems to be in safety (and therefore more unwanted surprises at runtime),
denial. All too often, companies spin up separate iOS and and the code is interpreted or JITed. With Xamarin, you get
Android app teams, each of which needs to solve the same strong type-safety guarantees with C# and, depending on
problems twice. With Flutter, you can write in Dart and de- the target platform, the code is compiled to native, JITed,
ploy natively to both iOS and Android. Scrolling behavior, or run on a virtual machine. Flutter compiles down to native
system fonts, and other fundamental interaction compo- machine code on both iOS and Android, giving it predict-
nents automatically default for the platform you’re using. At a able, speedy performance.
higher level, Flutter provides Cupertino and Material Design
widget libraries to get the look and feel users expect on their Customization
platform of choice. ”But Emily,” you say. “I work at an agency and I simply can’t
In our Stack Overflow app, we want to have a “Get New have all the apps I create look the same! I need them to
Results” button to see if there are new questions that need look distinctive and add those stylish touches, like my signa-
our attention. We’ll write a PlatformAdaptiveButton whose ture, tasteful usage of Comic Sans!” Never fear, my aesthete
behavior depends on the platform we’re running on: friends. Flutter really shines in this area.
Because Flutter is drawing every pixel to the screen, ev-
class PlatformAdaptiveButton extends StatelessWidget { erything is customizable. Don’t like how that built-in Cuper-
final Widget child; tinoButton is behaving? Make a subclass and design it
final Widget icon; yourself. Think solid-color app bars are so passé? Write your
final VoidCallback onPressed; own widget. In our Stack Overflow app, I wrote a custom app
PlatformAdaptiveButton({
Key key, this.child, this.icon, this. bar that has a custom font and a gradient color scheme to
onPressed}) distinguish it from all those other boring app bars—and it’s
: super(key: key); not even much code:
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
if (Theme.of(context).platform == TargetPlatform.iOS) { final double statusBarHeight = MediaQuery.of(context).padding.top;
22 Open Source Yearbook 2018 . CC BY-SA 4.0 . Opensource.com
return Container( You can see the final result below.
padding: EdgeInsets.only(top: statusBarHeight), All the code I wrote for this article can be found on GitHub
height: statusBarHeight * 4, at Stack Overflow Viewer [2].
child: Center(
child: Text( Intrigued?
title, There is so much more we can do! However, further
style: const TextStyle( customization is left as an exercise to the reader.
color: Colors.white, fontFamily: 'Kranky', fontSize: 36.0),
), Links
), [1] ttps://flutter.io
h
decoration: BoxDecoration( [2] https://github.com/efortuna/stack_overflow_viewer
gradient: LinearGradient(
colors: [
Colors.deepOrange, Author
Colors.orangeAccent, Emily Fortuna is a senior software engineer on the Dart team
], at Google. When not hacking on compilers and evangeliz-
), ing the awesomeness of Flutter, she can be found working
), on improving fairness in machine learning or acting on the
); stage and screen. She is an avid member of the nerdy joke
} appreciation society.
Open Source Yearbook 2018 . CC BY-SA 4.0 . Opensource.com 23
W o r k i n g
.............. ..
.............
Power(Shell) to the people
by Yev Bronshteyn
Type less, write cleaner scripts, run consistently across platforms, and other reasons why Linux and
OS X users can fall in love with PowerShell.
In 2018, PowerShell Core [1] became generally
available [2] under an Open Source
(MIT [3]) license. PowerShell is hardly a new technology.
From its first release for Windows in 2006, PowerShell’s
creators sought [4] to incorporate the power and flexibility
of Unix shells while remedying their perceived deficien-
cies, particularly the need for text manipulation to derive
value from combining commands.
Five major releases later, PowerShell Core allows the
same innovative shell and command environment to run
natively on all major operating systems, including OS X and
Linux. Some (read: almost everyone) may still scoff at the
audacity and/or the temerity of this Windows-born interlop-
er to offer itself to platforms that have had strong shell en- date -v -1d
vironments since time immemorial (at least as defined by a
millennial). In this post, I hope to make the case that Pow- Because PowerShell is licensed under a permissive license
erShell can provide advantages to even seasoned users. and built for all platforms, you can ship it with your application.
Thus, when your scripts run in the target environment, they’ll
Consistency across platforms be running on the same shell using the same command imple-
If you plan to port your scripts from one execution environ- mentations as the environment in which you tested your scripts.
ment to another, you need to make sure you use only the
commands and syntaxes that work. For example, on GNU Objects and structured data
systems, you would obtain yesterday’s date as follows: *nix commands and utilities rely on your ability to consume
and manipulate unstructured data. Those who have lived
date --date="1 day ago" for years with sed grep and awk may be unbothered by this
statement, but there is a better way.
On BSD systems (such as OS X), the above syntax Let’s redo the yesterday’s date example in PowerShell. To
wouldn’t work, as the BSD date utility requires the fol- get the current date, run the Get-Date cmdlet (pronounced
lowing syntax: “commandlet”):
24 Open Source Yearbook 2018 . CC BY-SA 4.0 . Opensource.com
> Get-Date To do something slightly more exciting, let’s call Yahoo’s
weather service (because it doesn’t require an API token)
Sunday, January 21, 2018 8:12:41 PM and get your local weather.
The output you see isn’t really a string of text. Rather, it is $city="Boston"
a string representation of a .Net Core object. Just like any $state="MA"
other object in any other OOP environment, it has a type and $url="
https://query.yahooapis.com/v1/public/
most often, methods you can call. yql?q=select%20*%20from%20weather.forecast%20
Let’s prove this: where%20woeid%20in%20(select%20woeid%20from%20
geo.places(1)%20where%20text%3D%22${city}%2C%20
> $(Get-Date).GetType().FullName ${state}%22)&format=json&env=store%3A%2F%2Fdatatables.
System.DateTime org%2Falltableswithkeys"
The $(...) syntax behaves exactly as you’d expect from Now, we could do things the old-fashioned way and just run
POSIX shells—the result of the evaluation of the command curl $url to get a giant blob of JSON, or...
in parentheses is substituted for the entire expression. In
PowerShell, however, the $ is strictly optional in such ex- $weather=(Invoke-RestMethod $url)
pressions. And, most importantly, the result is a .Net object,
not text. So we can call the GetType() method on that object If you look at the type of $weather (by running echo $weather.
to get its type object (similar to Class object in Java), and the GetType().FullName), you will see that it’s a PSCustomObject.
FullName property [5] to get the full name of the type. It’s a dynamic object that reflects the structure of the JSON.
So, how does this object-orientedness make your life easier? And PowerShell will be thrilled to help you navigate
First, you can pipe any object to the Get-Member cmdlet to through it with its tab completion. Just type $weather. (mak-
see all the methods and properties it has to offer. ing sure to include the “.”) and press Tab. You will see all the
root-level JSON keys. Type one, followed by a “.”, press Tab
> (Get-Date) | Get-Member again, and you’ll see its children (if any).
PS
/home/yevster/Documents/ArticlesInProgress> $(Get-Date) | Thus, you can easily navigate to the data you want:
Get-Member
> echo $weather.query.results.channel.atmosphere.pressure
TypeName: System.DateTime 1019.0
Name MemberType Definition > echo $weather.query.results.channel.wind.chill
---- ---------- ---------- 41
Add Method datetime Add(timespan value)
AddDays Method datetime AddDays(double value) And if you have JSON or CSV lying around (or returned by
AddHours Method datetime AddHours(double value) an outside command) as unstructured data, just pipe it into
AddMilliseconds Method
datetime AddMilliseconds(double the ConvertFrom-Json or ConvertFrom-CSV cmdlet, re-
value) spectively, and you can have your data in nice clean objects.
AddMinutes Method
datetime AddMinutes(double
value)
AddMonths Method datetime AddMonths(int months) Computing vs. automation
AddSeconds Method
datetime AddSeconds(double We use shells for two purposes. One is for computing,
value) to run individual commands and to manually respond to
AddTicks Method datetime AddTicks(long value) their output. The other is automation, to write scripts that
AddYears Method datetime AddYears(int value) execute multiple commands and respond to their output
CompareTo Method
int CompareTo(System.Object programmatically.
value), int ... A problem that most of us have learned to overlook is that
these two purposes place different and conflicting require-
You can quickly see that the DateTime object has an AddDays ments on the shell. Computing requires the shell to be la-
that you can quickly use to get yesterday’s date: conic. The fewer keystrokes a user can get away with, the
better. It’s unimportant if what the user has typed is barely
> (Get-Date).AddDays(-1) legible to another human being. Scripts, on the other hand,
are code. Readability and maintainability are key. And here,
Saturday, January 20, 2018 8:24:42 PM POSIX utilities often fail us. While some commands do offer
Open Source Yearbook 2018 . CC BY-SA 4.0 . Opensource.com 25
W o r k i n g
.............. ..
.............
both laconic and readable syntaxes (e.g. -f and --force) automatic and consistent parameter name truncation, while
for some of their parameters, the command names them- still enjoying a rich, readable syntax for scripting.
selves err on the side of brevity, not readability.
PowerShell includes several mechanisms to eliminate that So... friends?
Faustian tradeoff. There are just some of the advantages of PowerShell. There
First, tab completion eliminates typing of argument names. are more features and cmdlets I haven’t discussed (check
For instance, type Get-Random -Mi, press Tab and Power- out Where-Object [6] or its alias ? if you want to make grep
Shell will complete the argument for you: Get-Random -Min- cry). And hey, if you really feel homesick, PowerShell will
imum. But if you really want to be laconic, you don’t even be happy to launch your old native utilities for you. But give
need to press Tab. For instance, PowerShell will understand yourself enough time to get acclimated in PowerShell’s ob-
ject-oriented cmdlet world, and you may find yourself choos-
Get-Random -Mi 1 -Ma 10 ing to forget the way back.
because Mi and Ma each have unique completions. Links
You may have noticed that all PowerShell cmdlet names [1] https://github.com/PowerShell/PowerShell/blob/master/
have a verb-noun structure. This can help script readability, README.md
but you probably don’t want to keep typing Get- over and [2] https://blogs.msdn.microsoft.com/powershell/2018/01/10/
over in the command line. So don’t! If you type a noun with- powershell-core-6-0-generally-available-ga-and-
out a verb, PowerShell will look for a Get- command with supported/
that noun. [3] https://spdx.org/licenses/MIT
Caution: although PowerShell is not case-sensitive, it’s a [4] http://www.jsnover.com/Docs/MonadManifesto.pdf
good practice to capitalize the first letter of the noun when [5] https://docs.microsoft.com/en-us/dotnet/csharp/
you intend to use a PowerShell command. For example, typ- programming-guide/classes-and-structs/properties
ing date will call your system’s date utility. Typing Date will [6] https://docs.microsoft.com/en-us/powershell/
call PowerShell’s Get-Date cmdlet. module/microsoft.powershell.core/where-
And if that’s not enough, PowerShell has aliases to create object?view=powershell-6
simple names. For example, if you type alias -name cd,
you will discover the cd command in PowerShell is itself an Author
alias for the Set-Location command. Yev Bronshteyn is a software engineer with an open source
So to review—you get powerful tab completion, aliases, governance bend, and an occasional developer outreacher.
and noun completions to keep your command names short, All opinions are my own. Brain droppings here.
26 Open Source Yearbook 2018 . CC BY-SA 4.0 . Opensource.com
.................... W o r k i n g
Running a Python
application on Kubernetes
by Joannah Nanjekye
This step-by-step tutorial takes you through the process of
deploying a simple Python application on Kubernetes.
Requirements
Kubernetes is an open source platform
that offers deployment, main-
tenance, and scaling features. It simplifies management of
You will need Docker, kubectl, and this source code [1].
Docker is an open platform to build and ship distributed
containerized Python applications while providing portability, applications. To install Docker, follow the official documenta-
extensibility, and self-healing capabilities. tion [2]. To verify that Docker runs your system:
Whether your Python applications are simple or more
complex, Kubernetes lets you efficiently deploy and scale $ docker info
them, seamlessly rolling out new features while limiting re- Containers: 0
sources to only those required. Images: 289
In this article, I will describe the process of deploying a Storage Driver: aufs
simple Python application to Kubernetes, including: Root Dir: /var/lib/docker/aufs
• Creating Python container images Dirs: 289
• Publishing the container images to an image registry Execution Driver: native-0.2
• Working with persistent volume Kernel Version: 3.16.0-4-amd64
• Deploying the Python application to Kubernetes Operating System: Debian GNU/Linux 8 (jessie)
WARNING: No memory limit support
WARNING: No swap limit support
kubectl is a command-line interface for executing commands
against a Kubernetes cluster. Run the shell script below to
install kubectl:
curl -LO https://storage.googleapis.com/kubernetes-release/
release/$(curl -s https://storage.googleapis.com/kubernetes-
release/release/stable.txt)/bin/linux/amd64/kubectl
Deploying to Kubernetes requires a containerized applica-
tion. Let’s review containerizing Python applications.
Open Source Yearbook 2018 . CC BY-SA 4.0 . Opensource.com 27
W o r k i n g
.............. ..
.............
Containerization at a glance Publish the container images
Containerization involves enclosing an application in a con- We can publish our Python container image to different pri-
tainer with its own operating system. This full machine virtual- vate/public cloud repositories, like Docker Hub, AWS ECR,
ization option has the advantage of being able to run an appli- Google Container Registry, etc. For this tutorial, we’ll use
cation on any machine without concerns about dependencies. Docker Hub.
Roman Gaponov’s article [3] serves as a reference. Let’s Before publishing the image, we need to tag it to a version:
start by creating a container image for our Python code.
do
cker tag k8s_python_sample_code:latest k8s_python_sample_
Create a Python container image code:0.1
To create these images, we will use Docker, which enables
us to deploy applications inside isolated Linux software con- Push the image to a cloud repository
tainers. Docker is able to automatically build images using Using a Docker registry other than Docker Hub to store im-
instructions from a Docker file. ages requires you to add that container registry to the local
This is a Docker file for our Python application: Docker daemon and Kubernetes Docker daemons. You can
look up this information for the different cloud registries. We’ll
FROM python:3.6 use Docker Hub in this example.
MAINTAINER XenonStack Execute this Docker command to push the image:
# Creating Application Source Code Directory docker push k8s_python_sample_code
RUN mkdir -p /k8s_python_sample_code/src
Working with CephFS persistent storage
# Setting Home Directory for containers Kubernetes supports many persistent storage provid-
WORKDIR /k8s_python_sample_code/src ers, including AWS EBS, CephFS, GlusterFS, Azure Disk,
NFS, etc. I will cover Kubernetes persistence storage with
# Installing python dependencies CephFS.
COPY requirements.txt /k8s_python_sample_code/src To use CephFS for persistent data to Kubernetes contain-
RUN pip install --no-cache-dir -r requirements.txt ers, we will create two files:
# Copying src code to Container persistent-volume.yml
COPY . /k8s_python_sample_code/src/app
apiVersion: v1
# Application Environment variables kind: PersistentVolume
ENV APP_ENV development metadata:
name: app-disk1
# Exposing Ports namespace: k8s_python_sample_code
EXPOSE 5035 spec:
capacity:
# Setting Persistent data storage: 50Gi
VOLUME ["/app-data"] accessModes:
- ReadWriteMany
# Running Python Application cephfs:
CMD ["python", "app.py"] monitors:
- "172.17.0.1:6789"
This Docker file contains instructions to run our sample Py- user: admin
thon code. It uses the Python 3.5 development environment. secretRef:
name: ceph-secret
Build a Python Docker image readOnly: false
We can now build the Docker image from these instructions
using this command: persistent_volume_claim.yaml
docker build -t k8s_python_sample_code . apiVersion: v1
kind: PersistentVolumeClaim
This command creates a Docker image for our Python metadata:
application. name: appclaim1
28 Open Source Yearbook 2018 . CC BY-SA 4.0 . Opensource.com
namespace: k8s_python_sample_code metadata:
spec: labels:
accessModes: k8s-app: k8s_python_sample_code
- ReadWriteMany spec:
resources: containers:
requests: - name: k8s_python_sample_code
storage: 10Gi image: k8s_python_sample_code:0.1
imagePullPolicy: "IfNotPresent"
We can now use kubectl to add the persistent volume and ports:
claim to the Kubernetes cluster: - containerPort: 5035
volumeMounts:
$ kubectl create -f persistent-volume.yml - mountPath: /app-data
$ kubectl create -f persistent-volume-claim.yml name: k8s_python_sample_code
volumes:
We are now ready to deploy to Kubernetes. - name: <name of application>
persistentVolumeClaim:
Deploy the application to Kubernetes claimName: appclaim1
To manage the last mile of deploying the application to Ku-
bernetes, we will create two important files: a service file and Finally, use kubectl to deploy the application to Kubernetes:
a deployment file.
Create a file and name it k8s_python_sample_code.ser- $
kubectl create -f k8s_python_sample_code.deployment.yml
vice.yml with the following content: $ kubectl create -f k8s_python_sample_code.service.yml
apiVersion: v1 Your application was successfully deployed to Kubernetes.
kind: Service You can verify whether your application is running by in-
metadata: specting the running services:
labels:
k8s-app: k8s_python_sample_code kubectl get services
name: k8s_python_sample_code
namespace: k8s_python_sample_code May Kubernetes free you from future deployment hassles!
spec:
type: NodePort Want to learn more about Python? Nanjekye’s book, Py-
ports: thon 2 and 3 Compatibility [4] offers clean ways to write code
- port: 5035 that will run on both Python 2 and 3, including detailed exam-
selector: ples of how to convert existing Python 2-compatible code to
k8s-app: k8s_python_sample_code code that will run reliably on both Python 2 and 3.
Create a file and name it k8s_python_sample_code.deploy- Links
ment.yml with the following content: [1] https://github.com/jnanjekye/k8s_python_sample_code/
tree/master
apiVersion: extensions/v1beta1 [2] https://docs.docker.com/engine/installation/
kind: Deployment [3] https://hackernoon.com/docker-tutorial-getting-started-
metadata: with-python-redis-and-nginx-81a9d740d091
name: k8s_python_sample_code [4] https://www.apress.com/gp/book/9781484229545
namespace: k8s_python_sample_code
spec: Author
replicas: 1 Straight outta 256, Joannah chooses results over reasons.
template: She is a passionate aviator. Show me the code!
Open Source Yearbook 2018 . CC BY-SA 4.0 . Opensource.com 29
W o r k i n g
.............. ..
.............
Blockchain: Not just
for cryptocurrency
by Kate Chapman
There’s a lot more to blockchain than Bitcoin.
I don’t remember the first time
I heard about
blockchain. I do, however, remember when I began to
hear about it frequently. A couple of years ago, I was
working on building tools for community land rights [1],
when our partners and people at conferences began to
ask us about it. A colleague and I sat down and said,
“we need to figure out this blockchain thing,” because
we didn’t even know how it was relevant, let alone what
problems it might be able to fix. Before we started our
research, I used to describe blockchain as “the technol-
ogy that powers Bitcoin.” Although this is accurate, it’s
not very instructive because most people haven’t really an individual block is accurate using hashing and cryptogra-
considered how Bitcoin works. phy. Each block is created from a hash of some information.
Anyone who has that same information can create the same
Blockchain basics hash to verify the block; however, they cannot go backward
A blockchain is a distributed set of data that uses cryptogra- from the hash to re-create the data the block is about. Each
phy to verify and secure that information. Each piece of data person updating the blockchain uses a key that verifies that
in a blockchain is called a block, and the blockchain is the they are who they say they are.
entire set of that data.
Public vs. private blockchains
We have said everyone has a copy of the blockchain, but
A blockchain is a distributed set we haven’t talked about who is “everyone.” In a public block-
chain, it could literally be everyone, as anyone can partic-
of data that uses cryptography to ipate. Bitcoin and other cryptocurrencies are examples of
verify and secure that information. public blockchains. Anyone can obtain Bitcoin (although
whether they have enough knowledge or if it is practical is
Rather than having a central database server to store the another story). They can purchase Bitcoin through another
data, everyone involved in the blockchain has a copy of the currency, sell something and get paid in Bitcoin, or mine
information. This enables each involved party to verify that Bitcoin themselves.
30 Open Source Yearbook 2018 . CC BY-SA 4.0 . Opensource.com
Private blockchains define who can participate [2]. A One thesis discussed by Oxford Internet Institute pro-
participant can either be approved by whoever set up the fessor Vili Lehdonvirta is that blockchain will have its own
blockchain or through a set of rules that define if someone governance issues [7], and if governance issues are fixed,
is approved. Private blockchains permit uses that might not blockchain might not be needed at all. He might have a
work in a public blockchain, such as a bank verifying some- point, as many of the issues I saw in the land rights sec-
one’s identity [3]. tor were attempts to skirt existing governance issues like
corruption. If those issues were fixed, there would be little
Advanced blockchain applications need for the technology.
Advanced blockchain moves beyond simply recording and Governance challenges are something many of us in
verifying transactions. Ethereum [4] is an example of an ad- open source are all too familiar with. Unfortunately, there
vanced use case. Because code can be executed on the are seldom easy solutions.
Ethereum blockchain, it enables applications beyond those
of a simple blockchain. One such use case is smart con- Links
tracts [5]. Let’s say you want to buy an item from me, but we [1] https://opensource.com/article/17/1/land-rights-
don’t know each other. Instead of just trusting each other, we documentation-Cadasta
could utilize blockchain technology to enable the transaction [2] https://www.ibm.com/blogs/blockchain/2017/05/the-
by using the following steps: difference-between-public-and-private-blockchain/
[3] https://medium.com/blockchain-review/private-blockchain-
1. ou put the agreed upon payment into an account.
Y or-database-whats-the-difference-523e7d42edc
2. Code is executed verifying that the payment is there. [4] https://www.ethereum.org/
3. I ship the item to you. [5] https://bitsonblocks.net/2016/02/01/a-gentle-introduction-
4. You verify that the item arrived. to-smart-contracts/
5. Payment is released into my account. [6] https://www.wired.com/story/bitcoin-global-warming/
[7] http://blogs.oii.ox.ac.uk/policy/the-blockchain-paradox-
All these steps could be turned into algorithms and run to why-distributed-ledger-technologies-may-do-little-to-
verify each step in the transaction. When individuals sell transform-the-economy/
something small, it’s uncommon to make up a traditional
contract, although they could. Much more complicated con-
tracts, such as buying a house or executing a will, could be Author
codified in the same way, using algorithms that verify the ex- Kate Chapman has worked at the intersection of technol-
ecution of the contract. ogy and nonprofits for the last decade. Currently, she is a
principal at Cascadia Technical Mentorship, a consultancy
Future blockchain applications she started with Chris Daley. Kate specializes in formal-
Blockchain shows a lot of promise, but it is not without warn- izing communities into organizational structures, product
ings. When many people participate in a blockchain, the management, technical strategy, and building open com-
transaction costs can become quite high. Bitcoin is already munities. Her mantra is “people before data.” Kate also
running into these issues [6]. Many non-cryptocurrency ap- serves as the chairperson of the Board of Directors of the
plications are being tested in promising pilots, but none has OpenStreetMap Foundation and is a board member of the
yet reached scale. Software Freedom Conservancy.
Open Source Yearbook 2018 . CC BY-SA 4.0 . Opensource.com 31
Best Couple
Coupled commands with
control operators in Bash
by David Both
Add logic to the command line with control operators in
compound commands.
Best
Simple compound commands—such as stringing sever-
al commands together in a sequence on the
This works because
every command re- Couple
command line—are used often. Such commands are sepa-
rated by semicolons, which define the end of a command. To
turns a code to the
shell that indicates 2018
create a simple series of shell commands on a single line, whether it completed
simply separate each command using a semicolon, like this: successfully or failed
during execution. By con-
command1 ; command2 ; command3 ; command4 ; vention, a return code (RC)
of 0 (zero) indicates suc-
You don’t need to add a final semicolon because pressing cess and any positive
the Enter key implies the end of the final command, but it’s number indicates some
fine to add it for consistency. type of failure. Some
All the commands will run without a problem—as long as sysadmin tools just
no error occurs. But what happens if an error happens? We return a 1 to indi-
can anticipate and allow for errors using the && and || control cate any failure,
operators built into Bash. These two control operators pro- but many use other positive
vide some flow control and enable us to alter the code-exe- numerical codes to indicate the
cution sequence. The semicolon and the newline character type of failure.
are also considered to be Bash control operators. The Bash shell’s $? variable can be checked very easily
The && operator simply says “if command1 is success- by a script, by the next command in a list of commands, or
ful, then run command2.” If command1 fails for any reason, even directly by a sysadmin. Let’s look at RCs. We can run a
command2 won’t run. That syntax looks like: simple command and immediately check the RC, which will
always pertain to the last command that ran.
command1 && command2
[student@studentvm1 ~]$ ll ; echo "RC = $?"
total 284
-rw-rw-r-- 1 student student 130 Sep 15 16:21 ascii-program.sh
drwxrwxr-x 2 student student 4096 Nov 10 11:09 bin
<snip>
drwxr-xr-x. 2 student student 4096 Aug 18 10:21 Videos
RC = 0
[student@studentvm1 ~]$
This RC is 0, which means the command completed suc-
cessfully. Now try the same command on a directory where
we don’t have permissions.
32 Open Source Yearbook 2018 . CC BY-SA 4.0 . Opensource.com
[student@studentvm1 ~]$ ll /root ; echo "RC = $?" compounding and making a real mess of things. But let’s
ls: cannot open directory '/root': Permission denied make it a little more complicated.
RC = 2 The || control operator allows us to add another command
[student@studentvm1 ~]$ that executes when the initial program statement returns a
code larger than zero.
This RC’s meaning can be found in the ls command’s man
page [1]. [s
tudent@studentvm1 ~]$ mkdir ~/testdir/testdir3 && touch
Let’s try the && control operator as it might be used in a ~/testdir/testdir3/testfile1 || echo "An error occurred while
command-line program. We’ll start with something simple: creating the directory."
Create a new directory and, if that is successful, create a mk
dir: cannot create directory
new file in it. '/home/student/testdir/testdir3': Permission denied
We need a directory where we can create other directo- An error occurred while creating the directory.
ries. First, create a temporary directory in your home directo- [student@studentvm1 ~]$
ry where you can do some testing.
Our compound command syntax using flow control takes this
[student@studentvm1 ~]$ cd ; mkdir testdir general form when we use the && and || control operators:
Create a new directory in ~/testdir, which should be empty pr
eceding commands ; command1 && command2 || command3 ;
because you just created it, and then create a new, emp- following commands
ty file in that new directory. The following command will do
those tasks. The compound command using the control operators may
be preceded and followed by other commands that can be
[student@studentvm1 ~]$ mkdir ~/testdir/testdir2 && touch ~/ related to the ones in the flow-control section but which are
testdir/testdir2/testfile1 unaffected by the flow control. All of those commands will
[student@studentvm1 ~]$ ll ~/testdir/testdir2/ execute without regard to anything that takes place inside
total 0 the flow-control compound command.
-rw-rw-r-- 1 student student 0 Nov 12 14:13 testfile1 These flow-control operators can make working at the
[student@studentvm1 ~]$ command line more efficient by handling decisions and let-
ting us know when a problem has occurred. I use them di-
We know everything worked as it should because the test- rectly on the command line as well as in scripts.
dir directory is accessible and writable. Change the permis- You can clean up as the root user to delete the directory
sions on testdir so it is no longer accessible to the user and its contents.
student as follows:
[root@studentvm1 ~]# rm -rf /home/student/testdir
[student@studentvm1 ~]$ chmod 076 testdir ; ll | grep testdir
d---rwxrw-. 3 student student 4096 Nov 12 14:13 testdir Links
[student@studentvm1 ~]$ [1]
http://man7.org/linux/man-pages/man1/ls.1.html
Using the grep command after the long list (ll) shows the
listing for testdir. You can see that the user student no Author
longer has access to the testdir directory. Now let’s run David Both is a Linux and Open Source advocate who
almost the same command as before but change it to create resides in Raleigh, North Carolina. He has been in the
a different directory name inside testdir. IT industry for over forty years and taught OS/2 for IBM
Ribbon Image: Graphics Provided by vecteezy.com
where he worked for over 20 years. While at IBM, he
[student@studentvm1 ~]$ mkdir ~/testdir/testdir3 && touch ~/ wrote the first training course for the original IBM PC
testdir/testdir3/testfile1 in 1981. He has taught RHCE classes for Red Hat and
mk
dir: cannot create directory '/home/student/testdir/ has worked at MCI Worldcom, Cisco, and the State of
testdir3': Permission denied North Carolina. He has been working with Linux and
[student@studentvm1 ~]$ Open Source Software for almost 20 years. David has
written articles for OS/2 Magazine, Linux Magazine, Li-
Although we received an error message, using the && con- nux Journal and OpenSource.com. His article “Complete
trol operator prevents the touch command from running be- Kickstart,” co-authored with a colleague at Cisco, was
cause there was an error in creating testdir3. This type of ranked 9th in the Linux Magazine Top Ten Best System
command-line logical flow control can prevent errors from Administration Articles list for 2008.
Open Source Yearbook 2018 . CC BY-SA 4.0 . Opensource.com 33
Coll aborating
.............. ..
.............
How to avoid humiliating
newcomers: A guide for
advanced developers
by A. Jesse
To sustain an open source community’s growth, we need to welcome new
developers. Unfortunately, we are not always a welcoming bunch.
Every year in New York City, a few thousand
young men come to town, dress
up like Santa Claus, and do a pub crawl. One year during
to be generous when we answer new programmers’ ques-
tions, and every day our generosity turns to rage. Why?
this SantaCon event, I was walking on the sidewalk and My cruelty
minding my own business, when I saw an extraordinary I’m reminded of my own bad behavior in the past. I was
scene. There was a man dressed up in a red hat and red hanging out on my company’s Slack when a new colleague
jacket, and he was talking to a homeless man who was sit- asked a question.
ting in a wheelchair. The homeless man asked Santa Claus,
“Can you spare some change?” Santa dug into his pocket New Colleague: Hey, does anyone know how to do such-
and brought out a $5 bill. He hesitated, then gave it to the and-such with MongoDB?
homeless man. The homeless man put the bill in his pocket. Jesse: That’s going to be implemented in the next release.
In an instant, something went wrong. Santa yelled at the New Colleague: What’s the ticket number for that feature?
homeless man, “I gave you $5. I wanted to give you one dollar, Jesse: I memorize all ticket numbers. It’s #12345.
but five is the smallest I had, so you oughtta be grateful. This New Colleague: Are you sure? I can’t find ticket 12345.
is your lucky day, man. You should at least say thank you!”
This was a terrible scene to witness. First, the power differ- He had missed my sarcasm, and his mistake embar-
ence was terrible: Santa was an able-bodied white man with rassed him in front of his peers. I laughed to myself, and
money and a home, and the other man was black, home- then I felt terrible. As one of the most senior program-
less, and using a wheelchair. mers at MongoDB, I should
It was also terrible because not have been setting this
Santa Claus was dressed example. And yet, such
like the very symbol of gen- behavior is commonplace
erosity! And he was behaving among programmers ev-
like Santa until, in an instant, erywhere: We get sarcastic
something went wrong and with newcomers, and we
he became cruel. humiliate them.
This is not merely a story
about Drunk Santa, however; Why does it matter?
this is a story about technolo- Perhaps you are not here to
gy communities. We, too, try make friends; you are here
34 Open Source Yearbook 2018 . CC BY-SA 4.0 . Opensource.com
to write code. If the code works, does it matter if we are nice The message is plain: If you are asking a question this stu-
to each other or not? pid, you are doomed. Get out.
A few months ago on the Stack Overflow blog, David I immediately found another example of bad behavior:
Robinson showed that Python has been growing dramat-
ically [1], and it is now the top language that people view
questions about on Stack Overflow. Even in the most pes-
simistic forecast, it will far outgrow the other languages
this year.
Who has never been confused by Unicode in Python? Yet
the message is clear: You do not belong here. Get out.
Do you remember how it felt when you needed help and
someone insulted you? It feels terrible. And it decimates the
community. Some of our best experts leave every day be-
cause they see us treating each other this way. Maybe they
still program Python, but they are no longer participating in
conversations online. This cruelty drives away newcomers,
too, particularly members of groups underrepresented in
tech who might not be confident they belong. People who
If you are a Python expert, then the line surging up and to the could have become the great Python programmers of the
right is good news for you. It does not represent competition, next generation, but if they ask a question and somebody is
but confirmation. As more new programmers learn Python, cruel to them, they leave.
our expertise becomes ever more valuable, and we will see This is not in our interest. It hurts our community, and it
that reflected in our salaries, our job opportunities, and our makes our skills less valuable because we drive people out.
job security. So, why do we act against our own interests?
But there is a danger. There are soon to be more new Py-
thon programmers than ever before. To sustain this growth, Why generosity turns to rage
we must welcome them, and we are not always a welcoming There are a few scenarios that really push my buttons. One
bunch. is when I act generously but don’t get the acknowledgment I
expect. (I am not the only person with this resentment: This
The trouble with Stack Overflow is probably why Drunk Santa snapped when he gave a $5 bill
I searched Stack Overflow for rude answers to beginners’ to a homeless man and did not receive any thanks.)
questions, and they were not hard to find. Another is when answering requires more effort than I ex-
pect. An example is when my colleague asked a question
on Slack and followed-up with, “What’s the ticket number?” I
had judged how long it would take to help him, and when he
asked for more help, I lost my temper.
These scenarios boil down to one problem: I have expec-
tations for how things are going to go, and when those ex-
pectations are violated, I get angry.
I’ve been studying Buddhism for years, so my understand-
ing of this topic is based in Buddhism. I like to think that
the Buddha discussed the problem of expectations in his
first tech talk when, in his mid-30s, he experienced a break-
through after years of meditation and convened a small con-
ference to discuss his findings. He had not rented a ven-
ue, so he sat under a tree. The attendees were a handful
Open Source Yearbook 2018 . CC BY-SA 4.0 . Opensource.com 35
Coll aborating
.............. ..
.............
of meditators the Buddha had met during his wanderings in when we use computers, we lose awareness of our bodies.
northern India. The Buddha explained that he had discov- I can be angry and type a sarcastic message without even
ered four truths: knowing I am angry. I do not feel my heart pound and my
• First, that to be alive is to be dissatisfied—to want things to neck grow tense. So, the most important step is to ask my-
be better than they are now. self, “How do I feel?”
• Second, this dissatisfaction is caused by wants; specifi- If I am too angry to answer, I can usually walk away. As
cally, by our expectation that if we acquire what we want Thumper learned in Bambi [3], “If you can’t say something
and eliminate what we do not want, it will make us happy nice, don’t say nothing at all.”
for a long time. This expectation is unrealistic: If I get a
promotion or if I delete 10 emails, it is temporarily satis- The reward
fying, but it does not make me happy over the long-term. Helping a newcomer is its own reward, whether you receive
We are dissatisfied because every material thing quickly thanks or not. But it does not hurt to treat yourself to a glass
disappoints us. of whiskey or a chocolate, or just a sigh of satisfaction after
• The third truth is that we can be liberated from this dissat- your good deed.
isfaction by accepting our lives as they are. But besides our personal rewards, the payoff for the Python
• The fourth truth is that the way to transform ourselves community is immense. We keep the line surging up and to
is to understand our minds and to live a generous and the right. Python continues growing, and that makes our own
ethical life. skills more valuable. We welcome new members, people who
I still get angry at people on the internet. It happened to might not be sure they belong with us, by reassuring them that
me recently, when someone posted a comment on a video there is no such thing as a stupid question. We use Python
I published about Python co-routines [2]. It had taken me to create an inclusive and diverse community around writing
months of research and preparation to create this video, and code. And besides, it simply feels good to be part of a commu-
then a newcomer commented, “I want to master python what nity where people treat each other with respect. It is the kind
should I do.” of community that I want to be a member of.
The three-breath vow
There is one idea I hope you remember from this article: To
control our behavior online, we must occasionally pause and
notice our feelings. I invite you, if you so choose, to repeat
the following vow out loud:
I vow
to take three breaths
before I answer a question online.
This article is based on a talk, Why Generosity Turns To Rage,
and What To Do About It, that Jesse gave at PyTennessee
This infuriated me. My first impulse was to be sarcastic, in February.
“For starters, maybe you could spell Python with a capital
P and end a question with a question mark.” Fortunately, I Links
recognized my anger before I acted on it, and closed the tab [1] ttps://stackoverflow.blog/2017/09/06/incredible-growth-
h
instead. Sometimes liberation is just a Command+W away. python/
[2]
https://www.youtube.com/watch?v=7sCu4gEjH5I
What to do about it [3]
https://www.youtube.com/watch?v=nGt9jAkWie4
If you joined a community with the intent to be helpful but on
occasion find yourself flying into a rage, I have a method to Author
prevent this. For me, it is the step when I ask myself, “Am A. Jesse is a staff engineer at MongoDB in New York City.
I angry?” Knowing is most of the battle. Online, however, He wrote Motor, the async MongoDB Python driver, and is
we can lose track of our emotions. It is well-established that the lead developer of the MongoDB C Driver. He contrib-
one reason we are cruel on the internet is because, without utes to PyMongo, asyncio, Python and Tornado. He studies
seeing or hearing the other person, our natural empathy is at the International Center for Photography and practices at
not activated. But the other problem with the internet is that, the Village Zendo.
36 Open Source Yearbook 2018 . CC BY-SA 4.0 . Opensource.com
.................... Coll aborating
Community metrics:
The challenge behind
the numbers
by Ildiko Vancsa
Although metrics are an important way to understand community
members’ effectiveness, they’re only one piece of the puzzle.
Why looking beyond the numbers is crucial
We are all obsessed with the numbers and
statistics we can measure in our
lives. We are concerned about our health, so we monitor our
Although metrics are widely used and essential to under-
standing the community, being careful about how we use
weight, blood pressure, and calorie intake. We also observe the numbers is important. There are no magic “healthy”
ourselves and our work en- numbers in open source
vironments to evaluate our community metrics. In fact,
efficiency and team dynam- numbers can be misleading
ics. This mindset of focusing unless you look further into
on the numbers carries over the details and context. You
to how we evaluate open could get an incomplete pic-
source communities. ture, for example, if you only
count code contributions
Why are metrics and overlook valuable docu-
important? mentation and tests in other
Open source communities, parts of repositories.
like the human body, are Finally, repeatedly collect-
complex organizations with ing and publishing the same
commonalities as well as unique operational characteristics metrics can cause people to try to game the system, result-
and dynamics. By their nature, open source projects make a ing in unhealthy community behavior. Judging a community’s
lot of data available, not just related to the source code, but
also about contributors’ processes and actions. This infor-
mation gives us a better picture of a project’s ecosystem and Metrics can provide insights into
how it changes over time.
When evaluating community health and progress, com- community health, growth, and
munities typically look at metrics on contributions, diversity,
and adoption of the artifacts they produce. Metrics can also
overall dynamics—but only if we
be very helpful to find bottlenecks and identify changes in the use them wisely.
balance of the ecosystem. Metrics can provide insights into
community health, growth, and overall dynamics—but only if health purely on numbers could lead to false conclusions and
we use them wisely. inappropriate follow-up actions, so how can we do better?
Open Source Yearbook 2018 . CC BY-SA 4.0 . Opensource.com 37
Coll aborating
.............. ..
.............
Case study: Code reviews How to use metrics better
Code reviews are highly encouraged in both corporate en- Education is important to address these challenges. The
vironments and open source projects to identify and fix success of an open source project depends upon a group
problems before they go live. Code reviewers learn the of people who care about the topic and the technology
most about the code and changes in the software, and working to maintain the source code, tests, and documen-
project maintainers rely on steady contributors’ opinions tation. Metrics are important to get an overall picture of the
before merging new changes. So how do metrics come balance of the ecosystem, which is not driven by any single
into the picture? metric, rather a combination of multiple key performance
Measuring the number of positive and negative code re- indicators (KPIs).
views over a specific period (e.g., a quarter of a year or per When we look at metrics, like the number of code reviews,
release cycle) is easy. Many open source projects publish we must always look beyond the number itself and under-
these activity metrics with options to filter results on things stand how we can use the data for growth and reflection on
such as data about one contributor or all contributors work- whether we are moving in the right direction.
ing for the same company. We need to ask key questions to identify which metrics we
Although the tools used by open source projects are ac- should look into and how to combine them to gain meaning-
cessible by anyone (which means anyone can extract the ful information. For example:
numbers), publishing these metrics on a dashboard may • Why is a data point important for us (or our managers)?
lead to gaming them over time. For example, people may • What does it mean to have a higher or lower number?
try to have the most reviews, thinking it will speed up their • And what do changes over time say?
acceptance to the community, or companies may encourage Or to look back at an earlier example:
employees to generate higher numbers to improve their rep- • What does the ration of negative and positive reviews
utation with customers. mean?
The unfortunate consequence of trying to increase these Measuring only a single set of metrics and thinking only the
numbers quickly is that the quality of the code reviews drops. numbers matter is a bad idea. Instead, dig deeper and look
One example is a negative review in which the reviewer just behind the numbers.
repeats what the automated testing system pointed out.
Another is a reviewer simply saying he or she agrees with Author
previous reviewers, which adds nothing to the discussion. Ildiko started her journey with virtualization during the univer-
Or even less helpful, the reviewer merely adds a “+1” mark sity years and has been in connection with this technology
(which means the change looks good) on as many open different ways since then. She started her career at a small
changes as possible with no meaningful comment. research and development company in Budapest, where she
There are multiple problems with these behaviors. These was focusing on areas like system management and business
meaningless reviews are disturbing for active contributors process modelling and optimization. Ildiko got in touch with
trying to help code authors get the highest quality changes OpenStack when she started to work in the cloud project at
merged. Not to mention that people who aren’t trying to help Ericsson in 2013. She was a member of the Ceilometer and
maintain the project, rather trying only to boost their statistics Aodh core teams, now she drives NFV related feature devel-
in the open dashboards, are annoying to regular contribu- opment activities in projects like Nova and Cinder. Beyond
tors. Also, people who abuse the system like this are easy to code and documentation contributions she is also very pas-
recognize, and often their reputation goes down once they sionate about on boarding and training activities, which is one
are identified. of her focus areas within the OpenStack Foundation.
38 Open Source Yearbook 2018 . CC BY-SA 4.0 . Opensource.com
.................... Coll aborating
6
ays programmers
w
from underrepresented
countries can get ahead
by Ivange Larry
It’s harder for programmers from less-privileged nations trying to achieve success
alongside people from countries with many material advantages.
Becoming a programmer from an underrepre-
sented community like Cameroon
is tough. Many Africans don’t even know what computer
may not be very easy. To learn how to code you need a
computer and probably internet, too, which aren’t very com-
mon for Africans to have. I didn’t own a desktop computer
programming is—and a lot who do think it’s only for people until I was 18 years old—and I didn’t own a laptop until I
from Western or Asian countries. was about 20, and some may have still considered me priv-
I didn’t own a computer until I was 18, and I didn’t start pro- ileged. Some students don’t even know what a computer
gramming until I was a 19-year-old high school senior, and looks like until they get to the university.
had to write a lot of code on paper because I couldn’t be carry- You still have to find a way to learn how to code. Before I
ing my big desktop to school. I have learned a lot over the past had a computer, I used to walk for miles to see a friend who
five years as I’ve moved up the ladder to become a success- had one. He wasn’t very interested in it, so I spent a lot of
ful programmer from an underrepresented community. While time with it. I also visited cybercafes regularly, which con-
these lessons are from my experience in Africa, many apply to sumed most of my pocket money.
other underrepresented communities, including women. Take advantage of local programming communities, as
this could be one of your greatest sources of motivation.
1. Learn how to code When you’re working on your own, you may feel like a ninja,
This is obvious: To be a successful programmer, you first
have to be a programmer. In an African community, this
Take advantage of local programming
communities, as this could be one of
your greatest sources of motivation.
but that may be because you do not interact much with other
programmers. Attend tech events. Make sure you have at
least one friend who is better than you. See that person as
a competitor and work hard to beat them, even though they
may be working as hard as you are. Even if you never win,
you’ll be growing in skill as a programmer.
Open Source Yearbook 2018 . CC BY-SA 4.0 . Opensource.com 39
Coll aborating
.............. ..
.............
2. Don’t read too much into statistics Torvalds and Bill Gates but trying to make them your role
A lot of smart people in underrepresented communities nev- models can be demotivating. Bill Gates began coding at age
er even make it to the “learning how to code” part because 13 and formed his first venture at age 17. I’m 24 and still try-
they take statistics as hard facts. I remember when I was ing to figure out what I want to do with my life. Those stories
aspiring to be a hacker, I used to get discouraged about the always make me wonder why I’m not better yet, rather than
statistic that there are far fewer black people than white peo- looking for reasons to get better.
ple in technology. If you google the “top 50 computer pro- Having a local hero or mentor is more helpful. Because
grammers of all time,” there probably won’t be many (if any) you’re both living in the same community, there’s a greater
black people on the list. Most of the inspiring names in tech, chance there won’t be such a large gap to discourage you. A
like Ada Lovelace, Linus Torvalds, and Bill Gates, are white. local mentor probably started coding around the age you did
Growing up, I always believed technology was a white per- and was unlikely to start a big venture at a very young age.
son’s thing. I used to think I couldn’t do it. When I was young, I’ve always admired the big names in tech and still do.
I never saw a science fiction movie with a black man as a But I never saw them as mentors. First, because their sto-
hacker or an expert in computing. It was always white peo- ries seemed like fantasy to me, and second, I couldn’t reach
ple. I remember when I got to high school and our teacher them. I chose my mentors and role models to be those near
wrote that programming was part of our curriculum, I thought my reach. Choosing a role model doesn’t mean you just
that was a joke—I wondered, “since when and how will that want to get to where they are and stop. Success is step by
even be possible?” I wasn’t far from the truth. Our teachers step, and you need a role model for each stage you’re trying
couldn’t program at all. to reach. When you attain
Statistics also say that a lot of the amazing, inspiring pro- a stage, get another role
grammers you look up to, no matter what their color, started model for the next stage.
coding at the age of 13. But you didn’t even know program- You probably can’t get Success is step by
ming existed until you were 19. You ask yourself questions one-on-one advice from step, and you need
like: How am I going to catch up? Do I even have the intel- someone like Bill Gates.
ligence for this? When I was 13, I was still playing stupid, You can get the advice a role model for
childish games—how can I compete with this? they’re giving to the public
This may make you conclude that white people are nat- at conferences, which is
each stage you’re
urally better at tech. That’s wrong. Yes, the statistics are great, too. I always follow trying to reach.
correct, but they’re just statistics. And they can change. smart people. But advice
Make them change. Your environment contributes a lot to that makes the most impact is advice that is directed to
the things you do while growing up. How can you compare you. Advice that takes into consideration your goals and
yourself to someone whose parents got him a computer circumstances. You can get that only from someone you
have direct access to.
I’m a product of many mentors at different stages of my
life. One is Nyah Check [1], who was a year ahead of me
How can you compare yourself at the university, but in terms of skill and experience, he
to someone whose parents got was two to three years ahead. I heard stories about him
when I was still in high school. He made people want to be
him a computer before he was great programmers, not just focus on getting a 4.0 GPA.
He was one of the first people in French-speaking Africa
nine—when you didn’t even to participate in Google Summer of Code [2]. While still at
see one until you were 19? the university, he traveled abroad more times than many
lecturers would dream of—without spending a dime. He
before he was nine—when you didn’t even see one until could write code that even our course instructors couldn’t
you were 19? That’s a 10-year gap. And that nine-year-old understand. He co-founded Google Developer Group
kid also had a lot of people to coach him. Buea [3] and created an elite programmers club that
You can be a great software engineer regardless of your helped many students learn to code. He started a lot of
background. It may be a little harder because you may not other communities, like the Docker Buea meetup [4] that
have the resources or opportunities people in the western I’m the lead organizer for.
world have, but it’s not impossible. These things inspired me. I wanted to be like him and
knew what I would gain by becoming friends with him.
3. Have a local hero or mentor Discussions with him were always very inspiring—he
I think having someone in your life to look up to is one of talked about programming and his adventures traveling
the most important things. We all admire people like Linus the world for conferences. I learned a lot from him, and
40 Open Source Yearbook 2018 . CC BY-SA 4.0 . Opensource.com
I think he taught me well. Now younger students want in front of a crowd to give a speech, but with practice, I’ve
to be around me for the same reasons I wanted to learn gotten better.
from him.
6. Give back
4. Get involved with open source Always find a way to give back. Mentor someone. Take up an
If you’re in Africa and want to gain top skills from top en- active role in a community. These are the ways I give back
gineers, your best bet is to join an open source project. to my community. It isn’t only a moral responsibility—it’s a
The tech ecosystem in Africa is small and mostly made of win-win because you can learn a lot while helping others get
startups, so getting experience in a field you love might closer to their dreams.
not be easy. It’s rare for startups in Africa to be working I was part of a Programming Language meetup organized
with machine learning, distributed computing, or containers by Google Developer Group Buea where I mentored 15 stu-
and technologies like Kubernetes. Unless your passion is dents in Java programming (from beginner to intermediate).
web development, your best bet is joining an open source After the program was over, I created a Java User Group to
project. I’ve learned most of what I know by being part of keep the Java community together. I recruited two members
the OpenMRS [5] community. I’ve also contributed to other from the meetup to join me as volunteer developers at Libre-
open source projects including LibreHealth [6], Coala [7], Health, and under my guidance, they made useful commits
and Kubernetes [8]. Along with gaining tech skills, you’ll to the project. They were later accepted as Google Summer
be building your network of influential people. Most of my of Code students, and I was assigned to mentor them during
peers know about Linus Torvalds from books, but I have a the program. I’m also the lead organizer for Docker Buea,
picture with him. the official Docker meetup in Cameroon, and I’m also Docker
Participate in open source outreach programs like Goo- Campus Ambassador.
gle Summer of Code, Google Code-in [9], Outreachy [10], Taking up leadership roles in this community has forced
or Linux Foundation Networking Internships [11]. These op- me to learn. As Docker Campus Ambassador, I’m supposed
portunities help you gain skills that may not be available in to train students on how to use Docker. Because of this,
startups. I’ve learned a lot of cool stuff about Docker and containers
I participated in Google Summer of Code twice as a stu- in general.
dent, and I’m now a mentor. I’ve been a Google Code-in org
admin, and I’m volunteering as an open source developer. Links
All these activities help me learn new things. [1] https://github.com/Ch3ck
[2] https://summerofcode.withgoogle.com/
5. Take advantage of diversity programs while [3] http://www.gdgbuea.net/
you can [4] https://www.meetup.com/Docker-Buea/?_cookie-
Diversity programs are great, but if you’re like me, you may check=EnOn1Ct-CS4o1YOw
not like to benefit very much from them. If you’re on a team [5] https://openmrs.org/
of five and the basis of your offer is that you’re a black per- [6] https://librehealth.io/
son and the other four are white, you might wonder if you’re [7] https://coala.io/#/home
really good enough. You won’t want people to think a foun- [8] https://kubernetes.io/
dation sponsored your trip because you’re black rather than [9] https://codein.withgoogle.com/archive/
because you add as much value as anyone else. It’s never [10] https://www.outreachy.org/
only that you’re a minority—it’s because the sponsoring or- [11] https://wiki.lfnetworking.org/display/LN/
ganization thinks you’re an exceptional minority. You’re not LF+Networking+Internships
the only person who applied for the diversity scholarship,
and not everyone that applied won the award. Take advan- Author
tage of diversity opportunities while you can and build your A final-year computer engineering student, Larry has been
knowledge base and network. an open source enthusiast since 2015. In 2016, he was
When people ask me why the Linux Foundation spon- accepted for a Google Summer of Code internship with
sored my trip to the Open Source Summit, I say: “I was OpenMRS, continuing with LibreHealth in 2017. He has
invited to give a talk at their conference, but they have contributed to a number of open source projects, including
diversity scholarships you can apply for.” How cool does OpenMRS, LibreHealth, Coala, and Kubernetes. Currently
that sound? a Google Summer of Code mentor with OpenMRS and Li-
Attend as many conferences as you can—diversity breHealth, Larry serves in Docker Buea (the official Docker
scholarships can help. Learn all you can learn. Practice meetup for Cameroon), lead and Docker ambassador at the
what you learn. Get to know people. Apply to give talks. University of Buea, and founder and lead of the Buea Java
Start small. My right leg used to shake whenever I stood User Group (BueaJUG). He is also a GDG organizer.
Open Source Yearbook 2018 . CC BY-SA 4.0 . Opensource.com 41
Coll aborating
.............. ..
.............
10 principles of resilience
for women in tech
by Jennifer Cloer
We need everyone at the table, in the lab, at the conference and in the boardroom.
Being a woman in tech is pretty damn
cool. For every head-
line about what Silicon Valley thinks of women [1], there
We have much work to do, lest we build a future that is
less inclusive than the one we live in today. We need ev-
eryone at the table, in the lab, at the conference, and in the
are tens of thousands of women building, innovating, and boardroom.
managing technology teams around the world. Women are I’ve been interviewing both women and men for more
helping build the future despite the hurdles they face, and than a year now about their experiences in tech, all as part
the community of women and allies growing to support of The Chasing Grace Project [8], a documentary series
each other is stronger than about women in tech. The
ever. From BetterAllies [2] purpose of the series is to
to organizations like Girls help recruit and retain fe-
Who Code [3] and communi- male talent for the tech in-
ties like the one I met recently dustry and to give women a
at Red Hat Summit [4], there platform to be seen, heard,
are more efforts than ever and acknowledged for their
before to create an inclu- experiences. We believe
sive community for women that compelling story can
in tech. begin to transform culture.
But the tech industry has
not always been this welcom- What Chasing Grace
ing, nor is the experience for taught me
women always aligned with What I’ve learned is that no
the aspiration. And so we’re feeling the pain. Women in tech- matter the dismal numbers, women want to keep building
nology roles have dropped from its peak in 1991 at 36% to and they collectively possess a resilience unmatched by
25% today, according to a report by NCWIT [5]. Harvard Busi- anything I’ve ever seen. And this is inspiring me. I’ve found
ness Review estimates [6] that more than half of the women a power, a strength, and a beauty in every story I’ve heard
in tech will eventually leave due to hostile work conditions. that is the result of resilience. I recently shared with the
Meanwhile, Ernst & Young recently shared a study [7] and attendees at the Red Hat Summit Women’s Leadership
found that merely 11% of high school girls are planning to Luncheon the top 10 principles of resilience I’ve heard from
pursue STEM careers. throughout my interviews so far. I hope that by sharing
42 Open Source Yearbook 2018 . CC BY-SA 4.0 . Opensource.com
them here the ideas and concepts can support and inspire each other’s vulnerabilities allows us to tap into something
you, too. far greater than simply asserting strength; it actually builds
strength—mental and emotional muscle. One women with
1. Practice optimism whom we’ve talked shared how starting her own tech com-
When taken too far, optimism can give you blind spots. But pany made her feel like she was letting her husband down.
a healthy dose of optimism allows you to see the best in She shared with us the details of that conversation with her
people and situations and that positive energy comes back husband. Honest conversations that share our doubts and
to you 100-fold. I haven’t met a woman yet as part of this our aspirations is what makes women uniquely suited to
project who isn’t an optimist. lead in many cases. Allow yourself to be seen and heard. It’s
where we grow and learn.
2. Build mental toughness
When I recently asked a 32-year-old tech CEO, who is 6. Build community
also a single mom of three young girls, what being a CEO Building community seems like a no-brainer in the world of
required she said mental toughness. It really summed open source, right? But take a moment to think about how
up what I’d heard in other many minorities in tech, es-
words from other women, pecially those outside the col-
I haven’t met a but it connected with me on
another level when she pro-
laborative open source com-
munity, don’t always feel like
If it doesn’t exist,
woman yet as part ceeded to tell me how caring part of the community. Many build it.
for her daughter—who was women in tech, for example,
of this project who born with a hole in heart— have told me they feel alone. Reach out and ask questions
isnít an optimist. prepared her for what she or answer questions in community forums, at meetups,
would encounter as a tech and in IRC and Slack. When you see a woman alone at
CEO. Being mentally tough to her means fighting for what an event, consider engaging with her and inviting her into
you love, persisting like a badass, and building your EQ a conversation. Start a meetup group in your company
as well as your IQ. or community for women in tech. I’ve been so pleased
with the number of companies that host these groups. If it
3. Recognize your power doesn’t exists, build it.
Most of the women I’ve interviewed don’t know their own
power and so they give it away unknowingly. Too many 7. Celebrate victories
women have told me that they willingly took on the house- One of my favorite Facebook groups is TechLadies [9] be-
keeping roles on their teams—picking up coffee, donuts, cause of its recurring hashtag #YEPIDIDTHAT. It allows
office supplies, and making the team dinner reservations. women to share their victories in a supportive community. No
Usually the only woman on their teams, this put them in a matter how big or small, don’t let a victory go unrecognized.
position to be seen as less valuable than their male peers When you recognize your wins, you own them. They become
who didn’t readily volunteer for such tasks. All of us, men a part of you and you build on top of each one.
and women, have innate powers. Identify and know what
your powers are and understand how to use them for 8. Be curious
good. You have so much more power than you realize. Being curious in the tech community often means asking
Know it, recognize it, use it strategically, and don’t give it questions: How does that work? What language is that
away. It’s yours. written in? How can I make this do that? When I’ve man-
aged teams over the years, my best employees have al-
4. Know your strength ways been those who ask a lot of questions, those who
Not sure whether you can confront your boss about why are genuinely curious about things. But in this context,
you haven’t been promoted? You can. You don’t know I mean be curious when your gut tells you something
your strength until you exercise it. Then, you’re unstoppa- doesn’t seem right. The energy in the meeting was off.
ble. Test your strength by pushing your fear aside and see Did he/she just say what I think he said? Ask questions.
what happens. Investigate. Communicate openly and clearly. It’s the only
way change happens.
5. Celebrate vulnerability
Every single successful women I’ve interviewed isn’t afraid 9. Harness courage
to be vulnerable. She finds her strength in acknowledging One women told me a story about a meeting in which the
where she is vulnerable and she looks to connect with oth- women in the room kept being dismissed and talked over.
ers in that same place. Exposing, sharing, and celebrating During the debrief roundtable portion of the meeting, she
Open Source Yearbook 2018 . CC BY-SA 4.0 . Opensource.com 43
Coll aborating
.............. ..
.............
called it out and asked if others noticed it, too. Being a [5] https://www.ncwit.org/sites/default/files/resources/
20-year tech veteran, she’d witnessed and experienced womenintech_facts_fullreport_05132016.pdf
this many times but she had never summoned the cour- [6] http://www.latimes.com/business/la-fi-women-tech-
age to speak up about it. She told me she was incredibly 20150222-story.html
nervous and was texting other women in the room to see [7] http://www.ey.com/us/en/newsroom/news-releases/
if they agreed it should be addressed. She didn’t want to ey-news-new-research-reveals-the-differences-between-
be a “troublemaker.” But this kind of courage results in boys-and-girls-career-and-college-plans-and-an-ongoing-
an increased understanding by everyone in that room and need-to-engage-girls-in-stem
can translate into other meetings, companies, and across [8] https://www.chasinggracefilm.com/
the industry. [9] https://www.facebook.com/therealTechLadies/
10. Share your story Author
Share your experience with a friend, a group, a community, Jennifer’s career has been dedicated to telling the stories
or an industry. Be empowered by the experience of sharing that have defined a generation of technology developers,
your experience. Stories change culture. When people con- from Linux creator Linus Torvalds to the men and women
nect to a compelling who started Creative Commons and Google’s first I/O Con-
story, they begin to ference. For more than 15 years, Jennifer has been a wom-
When people connect to change behaviors. an in tech and has been recognized for her storytelling acu-
When people act, men by BusinessInsider, who ranked her among the best
a compelling story, they companies and in- PR people in tech for her video storytelling works. She is
begin to change behaviors. dustries begin to the creator and executive producer of The Chasing Grace
transform. Project (http://www.chasinggracefilm.com) and co-founder
If you would like to support The Chasing Grace Project [8], of Wicked Flicks, a film/video production house working
email Jennifer Cloer to learn more about how to get involved: with companies and individuals to affect change through
jennifer@wickedflicksproductions.com original content. She is also founder and lead consultant at
reTHINKit PR. She was most recently VP of communica-
Links tions at The Linux Foundation, where she oversaw brand
[1] http://www.newsweek.com/2015/02/06/what-silicon-valley- storytelling and team of PR, social media and video produc-
thinks-women-302821.html tion professionals. Prior to that, she was vice president at
[2] https://opensource.com/article/17/6/male-allies-tech- Page One PR and held posts both in house and at agency
industry-needs-you in communications. In addition to her BusinessInsider rec-
[3] https://twitter.com/GirlsWhoCode ognition, CIO.com identified her as one of the most influen-
[4] http://opensource.com/tags/red-hat-summit tial women in open source.
44 Open Source Yearbook 2018 . CC BY-SA 4.0 . Opensource.com
.................... Coll aborating
6
tips for receiving
feedback on your open
source contributions
by VM (Vicky) Brasseur
Receiving feedback can be hard. These tips will help.
In the free and open source software world,
there are few moments as excit-
ing or scary as submitting your first contribution to a project.
come across as personally directed, try not to take their
comments in that way. Try to focus on the aspects of their
feedback that relate directly to your contribution, then
You’ve put your work out there and now it’s subject to review guide the feedback conversation toward these elements.
and feedback by the rest of the community. 2. It’s not personal. Problems found with your contribution
Not to put it too lightly, but are not problems found with
feedback is great. Without you. You’ve put a lot of time
feedback we keep making and effort into that contribu-
the same mistakes. Without tion, so naturally you feel a
feedback we can’t learn and bit attached to it and that’s
grow and evolve. It’s one OK. It’s right to feel pride in
of the keys that makes free what you’ve created and ac-
and open source collabora- complished. But it’s better to
tion work. recognize that there’s always
Unfortunately, most of us a way to improve your con-
have a hard time receiving tribution. Collaborate with
feedback, let alone accepting those providing feedback to
it. We identify too closely with help evolve the contribution,
our contribution, such that criticisms of it—no matter how the project, your knowledge, and your skills.
valid—are taken personally and put us on the defensive. 3. Feedback is a gift. When people provide feedback on
It doesn’t help that most of us also have a hard time giv- your contribution, they’re freely sharing their knowledge
ing feedback, often delivering criticisms without empathy and experience with you. You can use this feedback to
or in ways that are directed more at the person than at grow into a more skilled contributor, then one day pay that
their contribution. gift forward as you provide feedback to others. This is part
Both receiving and giving feedback are skills that can be of the beneficial cycle that allows free and open source
learned and honed through practice. As you enter into this to grow.
world of free and open source contributions, I encourage you 4. Feedback and questions help make you better at what
to remember these tips: you do. That’s because feedback and questions help you
1. You are not your contribution. Even if the person pro- see things you never have before and expand your mind
viding the feedback is unskilled at it, and their criticisms and experiences in ways you never anticipated. None of
Open Source Yearbook 2018 . CC BY-SA 4.0 . Opensource.com 45
Coll aborating
.............. ..
.............
us are perfect. None of us are all knowing. All of us have These tips will help you keep the perspective needed to
been in your position before: feeling excited at the new- get the most out of the feedback you’ll receive on your
ness but more than a little lost in it as well. It’s OK. Ask first contribution. But what if you’re the one providing the
feedback? The next article [1] in this series has you cov-
ered there, too.
Collaborate with those providing Adapted from Forge Your Future with Open Source [2] by
feedback to help evolve the VM (Vicky) Brasseur, Copyright © 2018 The Pragmatic Program-
mers LLC. Reproduced with the permission of the publisher.
contribution, the project, your
Links
knowledge, and your skills. [1] https://opensource.com/article/18/10/4-best-practices-
questions. Ask for feedback. It’s the only way not to feel giving-open-source-code-feedback
lost, and we all want to help you. [2] http://www.pragprog.com/titles/vbopens
5. If you get angry at some feedback, step away for a
bit to cool off before responding. It happens: A piece Author
of feedback will get under your skin. Perhaps it was the VM (aka Vicky) spent most of her 20 years in the tech industry
way it was phrased. Maybe it’s dismissing an implemen- leading software development departments and teams, and
tation about which you have strong opinions. Or maybe providing technical management and leadership consulting
the person who gave the feedback is just an indelicate for small and medium businesses. Now she leverages nearly
chowderhead. Like I said: It happens. Just because you’re 30 years of free and open source software experience and
angry does not mean you have to react immediately. Re- a strong business background to advise companies about
plying in the heat of the moment rarely ends well for any- free/open source, technology, community, business, and the
one involved. Take time to cool off before responding. Go intersections between them.
for a walk. Play with your pets or your kids. Spend some She is the author of Forge Your Future with Open Source,
time on a hobby or other project. Fire up a good movie or the first book to detail how to contribute to free and open
video game. Whatever it takes, give yourself space from source software projects. Think of it as the missing manual
the offending comment. Once you’ve had the time to cool of open source contributions and community participation.
off and think it over more, then you can respond rather The book is published by The Pragmatic Programmers and
than react. is now available at https://fossforge.com.
6. Always Assume Good Intent. Above all, always assume Vicky is the Vice President of the Open Source Initiative,
good intent with all feedback. No matter how poorly a piece a moderator and author for opensource.com, an author
of feedback may be delivered, the person providing it is for Linux Journal, and a frequent and popular speaker
still giving you that gift of their knowledge and experience. at free/open source conferences and events. She’s the
They’re not (usually) doing it to show off; they want the best proud winner of the Perl White Camel Award (2014) and
for the project, for the contribution, and for you. Respect that the O’Reilly Open Source Award (2016). She blogs about
and them and help them help you provide the best contribu- free/open source, business, and technical management at
tion you can. They mean well. Do you? {anonymous => ‘hash’};
46 Open Source Yearbook 2018 . CC BY-SA 4.0 . Opensource.com
.................... Coll aborating
4
best practices for
giving open source
code feedback
by VM (Vicky) Brasseur
A few simple guidelines can help you provide better feedback.
In the previous article I gave you tips
for how to receive feed-
back [1], especially in the context of your first free and open
And, if you recall, there once was a time when that thing was
not obvious to you. We all make mistakes. We all typo. We all
forget commas,
source project contribution. Now it’s time to talk about the semicolons, and
other side of that same coin: providing feedback. closing brackets. Point out the mistake, but
If I tell you that something you did in your contribution Save yourself a
is “stupid” or “naive,” how would you feel? You’d proba- lot of time and leave out the judgement.
bly be angry, hurt, or both, and rightfully so. These are effort: Point out
the mistake, but
Stick to the facts.
mean-spirited words that when directed at people, can cut
like knives. Words matter, and they matter a great deal. leave out the judgement. Stick to the facts. After all, if the mis-
Therefore, put as much thought into the words you use take is that obvious, then no critique will be necessary, right?
when leaving feedback for a contribution as you do into 1. Avoid ad hominem comments. Remember to review
any other form of contribution you give to the project. As only the contribution and not the person who contrib-
you compose your feedback, think to yourself, “How would uted it. That is to say, point out, “the contribution could
I feel if someone said this be more efficient here in this
to me? Is there some way way…” rather than, “you did
someone might take this this inefficiently.” The latter
another way, a less help- is ad hominem feedback. Ad
ful way?” If the answer to hominem is a Latin phrase
that last question has even meaning “to the person,”
the chance of being a yes, which is where your feed-
backtrack and rewrite your back is being directed: to
feedback. It’s better to the person who contributed
spend a little time rewriting it rather than to the contri-
now than to spend a lot of bution itself. By providing
time apologizing later. feedback on the person you
When someone does make make that feedback person-
a mistake that seems like it should have been obvious, re- al, and the contributor is justified in taking it personally.
member that we all have different experiences and knowl- Be careful when crafting your feedback to make sure
edge. What’s obvious to you may not be to someone else. you’re addressing only the contents of the contribution
Open Source Yearbook 2018 . CC BY-SA 4.0 . Opensource.com 47
Coll aborating
.............. ..
.............
and not accidentally criticizing the person who submitted them as opportunities for conversation and learning on
it for review. both sides is important. Be willing to discuss their ap-
2. Include positive comments. Not all of your feedback proach and your feedback, and to take the time to under-
has to (or should) be critical. As you review the con- stand their perspective.
tribution and you see something that you like, provide The bottom line is: Don’t be a jerk. If you’re not sure wheth-
feedback on that as well. Several academic studies— er the feedback you’re planning to leave makes you sound
including an important one by Baumeister, Braslavsky, like a jerk, pause to have someone else review it before
Finkenauer, and Vohs [2]—show that humans focus you click Send. Have empathy for the person at the receiv-
more on negative feedback than positive. When your ing end of that feedback. While the maxim is thousands of
feedback is solely years old, it still rings true today that you
negative, it can be should try to do unto others as you would
very disheartening When your feedback is solely have them do unto you. Put yourself in their
for contributors. In- shoes and aim to be helpful and supportive
cluding positive rein- negative, it can be very rather than simply being right.
forcement and feed- disheartening for contributors. Adapted from Forge Your Future with
back is motivating to Open Source [3] by VM (Vicky) Brasseur,
people and helps them feel good about their contribu- Copyright © 2018 The Pragmatic Programmers LLC. Repro-
tion and the time they spent on it, which all adds up to duced with the permission of the publisher.
them feeling more inclined to provide another contribu-
tion in the future. It doesn’t have to be some gushing Links
paragraph of flowery praise, but a quick, “Huh, that’s [1] https://opensource.com/article/18/10/6-tips-receiving-
a really smart way to handle that. It makes everything feedback
flow really well,” can go a long way toward encouraging [2] https://www.msudenver.edu/media/content/sri-taskforce/
someone to keep contributing. documents/Baumeister-2001.pdf
3. Questions are feedback, too. Praise is one less com- [3] http://www.pragprog.com/titles/vbopens
mon but valuable type of review feedback. Questions
are another. If you’re looking at a contribution and can’t Author
tell why the submitter did things the way they did, or VM (aka Vicky) spent most of her 20 years in the tech industry
if the contribution just doesn’t make a lot of sense to leading software development departments and teams, and
you, asking for more information acts as feedback. It providing technical management and leadership consulting
tells the submitter that something they contributed isn’t for small and medium businesses. Now she leverages nearly
as clear as they thought and that it may need some 30 years of free and open source software experience and
work to make the approach more obvious, or if it’s a a strong business background to advise companies about
code contribution, a comment to explain what’s going free/open source, technology, community, business, and the
on and why. A simple, “I don’t understand this part here. intersections between them.
Could you please tell me what it’s doing and why you She is the author of Forge Your Future with Open Source,
chose that way?” can start a dialogue that leads to a the first book to detail how to contribute to free and open
contribution that’s much easier for future contributors to source software projects. Think of it as the missing manual
understand and maintain. of open source contributions and community participation.
4. Expect a negotiation. Using questions as a form of feed- The book is published by The Pragmatic Programmers and
back implies that there will be answers to those questions, is now available at https://fossforge.com.
or perhaps other questions in response. Whether your Vicky is the Vice President of the Open Source Initiative,
feedback is in question or statement format, you should a moderator and author for opensource.com, an author
expect to generate some sort of dialogue throughout the for Linux Journal, and a frequent and popular speaker
process. An alternative is to see your feedback as incon- at free/open source conferences and events. She’s the
trovertible, your word as law. Although this is definitely one proud winner of the Perl White Camel Award (2014) and
approach you can take, it’s rarely a good one. When pro- the O’Reilly Open Source Award (2016). She blogs about
viding feedback on a contribution, it’s best to collaborate free/open source, business, and technical management at
rather than dictate. As these dialogues arise, embracing {anonymous => ‘hash’};
48 Open Source Yearbook 2018 . CC BY-SA 4.0 . Opensource.com
.................... Coll aborating
8 unusual FOSS tools
for agile teams
by Marianne Feifer and Jen Krieger
In this list, there are no project management apps, no checklists, and no integrations with
GitHub. Just simple ways to organize your thoughts and promote team communication.
You might be familiar with the expression: So
many tools, so little time. In order
to try to save you some time, I’ve outlined some of my fa-
joy giving compliments, many people struggle with telling
someone “way to go” or “couldn’t have done this without
you.” But it never hurts to tell someone they’re doing a good
vorite tools that help agile teams work better. If you are an job, and it often influences people to work better for the
agilist, chances are you’re aware of similar tools, but I’m team. Here are two tools that help you share kudos with
specifically narrowing down the list to tools that appeal to your coworkers.
open source enthusiasts. • Management 3.0 [2] has a treasure trove of free resourc-
Caution! These tools are a little different than what es [3] for building teams. One tool we find compelling is
you may be expecting. There are no project management the concept of Feedback Wraps (and not just because it
apps—there is a great article [1] on that already—so inspires us to think about burritos). Feedback Wraps [4] is
there are no checklists, no integrations with GitHub, just a six-step process to come up with effective feedback for
simple ways to organize your thoughts and promote team anyone; you might think it is designed for negative feed-
communication. back, but we find it’s perfect for sharing positive comments.
• Happiness Packets [5] provides a way to share anony-
Building teams mous positive feedback with people in the open source
In an industry where most people are used to giving and community. It is especially useful for those who aren’t
receiving negative feedback, it’s rare to share positive feed- comfortable with such a personal interaction or don’t
back with coworkers. It’s not surprising—while some en- know the people they want to reward. Happiness Pack-
ets offers a public archive [6] of comments (from people
who agree to share them), so you can look through and
get warm fuzzies and ideas on what to say to others if
you are struggling to find your own words. As a bonus, its
code of conduct process prevents anyone from sending
nasty messages.
Understanding why
Definitions are hard. In the agile world, keys to success in-
clude defining personas, the purpose of a feature, or the
product vision, and ensuring the entire agile team under-
stands why they are doing the work they are doing. We are
Open Source Yearbook 2018 . CC BY-SA 4.0 . Opensource.com 49
Coll aborating
.............. ..
.............
a little disappointed by the limited number of open source [2] https://management30.com/
tools available that help product managers and owners do [3] https://management30.com/leadership-resource-hub/
their jobs. [4] https://management30.com/en/practice/feedback-wraps/
One that we highly respect and use frequently to teach [5] https://happinesspackets.io/
teams at Red Hat is the Product Vision Board. It comes from [6] https://www.happinesspackets.io/archive/
product management expert Roman Pichler, who offers nu- [7] http://www.romanpichler.com/tools/
merous tools and templates [7] to help teams develop a bet- [8] http://www.romanpichler.com/tools/vision-board/
ter understanding of “the why.” (Note that you will need to [9] http://www.romanpichler.com/tools/romans-product-
provide your email address to download these files.) management-test/
• The Product Vision Board [8] template guides teams by [10] https://sourceforge.net/projects/
asking simple but effective questions to prompt them to xmind3/?source=recommended
think about what they are doing before they think about [11] http://www.xmind.net/
how they are going to do it. [12] https://fedoramagazine.org/three-mind-mapping-tools-
• We also like Roman’s Product Management Test [9]. This fedora/
is a simple and quick web form that guides teams through [13] https://people.gnome.org/~dscorgie/labyrinth.html
the traditional role of a product manager and helps uncov- [14] http://www.insilmaril.de/vym/
er where there may be gaps. We recommend that product [15] http://freemind.sourceforge.net/wiki/index.php/Main_Page
management teams periodically complete this test to reas-
sess where they fall. Author
Marianne Feifer has been part of agile teams for the past
Visualizing work 15 years. Mostly using Scrum methodology, she par-
Have you ever been working on a huge assignment, and ticipated as a scrum team member as the original (and
the steps to complete it are all jumbled up in your head, only) technical writer for ManageIQ, www.manageiq.org.
out of order, and chaotic? Yeah, us, too. Mind mapping In 2015, she became a Certified Scrum Master, and used
is a technique that helps you visually organize all the those skills with her team at Red Hat. She has adapted
thoughts in your head. You don’t need to start out under- those methods to work with a team of developers from a
standing how everything fits together—you just need your variety of geographic locations. Most recently, she has
brain, a whiteboard (or a mind-mapping tool), and some stepped into the Product Owner role as one of the leads in
time to think. an effort to sustain and manage customer satisfaction from
• Our favorite open source tool in this space is Xmind3 [10]. the engineering perspective.
It’s available for multiple platforms (Linux, MacOS, and Marianne prides herself in her ability to communicate ef-
Windows), so you can easily share files back and forth fectively with all levels of software organizations across mul-
with other people. If you need to have the latest & greatest, tiple disciplines, including engineering, sales, support, and
there is an updated version [11], which you can download business units. She appreciates the challenge of connect-
for free if you don’t mind sharing your email. ing people to keep the business moving and the developers
• If you like more variety in your life, Eduard Lucena offers working.
three additional options [12] in Fedora Magazine. You can Of all the Agile Principles, she values “people and relation-
find information about these tools’ availability in Fedora and ships over process” the most.
other distributions on their project pages.
• Labyrinth [13] Jen Krieger is Chief Agile Architect at Red Hat. Most of her
• View Your Mind [14] 20+ year career has been in software development repre-
• FreeMind [15] senting many roles throughout the waterfall and agile lifecy-
As we wrote at the start, there are many similar tools out cles. At Red Hat, she led a department-wide DevOps move-
there. ment focusing on CI/CD best practices. Most recently, she
worked with with the Project Atomic & OpenShift teams.
Links Now Jen is guiding teams across the company into agility
[1] ttps://opensource.com/business/16/3/top-project-
h in a way that respects and supports Red Hat’s commitment
management-tools-2016 to Open Source.
50 Open Source Yearbook 2018 . CC BY-SA 4.0 . Opensource.com
.................... Coll aborating
Is BDFL a death sentence?
by Jason Baker
What happens when a Benevolent Dictator For Life moves on from an open source project?
In 2018, Guido van Rossum [1], creator of the Python [2]
programming language and Benevolent
Dictator For Life [3] (BDFL) of the project, announced his
Surely the Python project will be okay without van Ros-
sum. The Python Software Foundation [5] has plenty of for-
malized structure in place bringing in broad representation
intention to step away. from across the community. There’s even been a humorous
Below is a portion of his message, although the entire April Fools Python Enhancement Proposal [6] (PEP) ad-
email [4] is not terribly long and worth taking the time to read dressing the BDFL’s retirement in the past.
if you’re interested in the circumstances leading to van Ros- That said, it’s interesting that van Rossum did not heed
sum’s departure. the fifth lesson of Eric S. Raymond from his essay, The Mail
Must Get Through [7] (part of The Cathedral & the Bazaar [8]),
I would like to remove myself entirely from the deci- which stipulates: “When you lose interest in a program, your
sion process. I’ll still be there for a while as an ordinary last duty to it is to hand it off to a competent successor.” One
core dev, and I’ll still be available to mentor people— could certainly argue that letting the community pick its own
possibly more available. But I’m basically giving myself leadership, though, is an equally valid choice.
a permanent vacation from being BDFL, and you all What do you think? Are projects better or worse for being
will be on your own. run by a BDFL? What can we expect when a BDFL moves
After all that’s eventually going to happen regard- on? And can someone truly step away from their passion proj-
less—there’s still that bus lurking around the corner, ect after decades of leading it? Will we still turn to them for
and I’m not getting younger... (I’ll spare you the list of the hard decisions, or can a community smoothly transition to
medical issues.) new leadership without the pitfalls of forks or lost participants?
I am not going to appoint a successor. Can you truly stop being a BDFL? Or is it a title you’ll hold,
So what are you all going to do? Create a democracy? at least informally, until your death?
Anarchy? A dictatorship? A federation?
Links
It’s worth zooming out for a moment to consider the issue at [1] https://en.wikipedia.org/wiki/Guido_van_Rossum
a larger scale. How an open source project is governed can [2] https://opensource.com/resources/python
have very real consequences on the long-term sustainability [3] https://en.wikipedia.org/wiki/Benevolent_dictator_for_life
of its user and developer communities alike. [4] https://www.mail-archive.com/python-committers@python.
BDFLs tend to emerge from passion projects, where a org/msg05628.html
single individual takes on a project before growing a com- [5] https://www.python.org/psf-landing/
munity around it. Projects emerging from companies or oth- [6] https://www.python.org/dev/peps/pep-0401/
er large organization often lack this role, as the distribution [7] http://www.catb.org/esr/writings/homesteading/cathedral-
of authority is more formalized, or at least more dispersed, bazaar/ar01s02.html
from the start. Even then, it’s not uncommon to need to [8] https://opensource.com/life/16/5/19-years-later-cathedral-
figure out how to transition from one form of project gov- and-bazaar-still-moves-us
ernance to another as the community grows and expands.
But regardless of how an open source project is structured, Author
ultimately, there needs to be some mechanism for deciding Jason uses technology to make the world more open.†He
how to make technical decisions. Someone, or some group, is a Linux desktop enthusiast, map/geospatial nerd, Rasp-
has to decide which commits to accept, which to reject, and berry Pi tinkerer, Data analysis and visualization geek,
more broadly what direction the project is going to take from occasional coder, cloud nativist, and civic tech and open
a technical perspective. government booster.
Open Source Yearbook 2018 . CC BY-SA 4.0 . Opensource.com 51
Learning
.............. ..
.............
10 Hello World programs
for your Raspberry Pi
“Hello world” is the beginning of everything when it comes to computing and programming.
by Ben Nuttall
“Hello world” is the beginning of every-
thing when it comes to
computing and programming. It’s the first thing you learn in a
4. C
hange the text to Hello world.
new programming language, and it’s the way you test some-
thing out or check to see if something’s working because it’s
usually the simplest way of testing simple functionality.
Warriors of programming language wars often cite their 5. Click on the block to run the code.
own language’s “hello world” against that of another, saying
theirs is shorter or more concise or more explicit or some-
thing. Having a nice simple readable “hello world” program
makes for a good intro for beginners learning your language,
library, framework, or tool.
I thought it would be cool to create a list of as many differ-
ent “hello world” programs as possible that can be run on the
Raspberry Pi [1] using its Raspbian operating system, but
without installing any additional software than what comes 2. Python
bundled when you download it from the Raspberry Pi web- Python [4] is a powerful and professional language that’s
site. I’ve created a GitHub repository [2] of these programs, also great for beginners—and it’s lots of fun to learn. Be-
and I’ve explained 10 of them for you here. cause one of Python’s main objectives was to be readable
and stick to simple English, its “hello world” program is as
1. Scratch simple as possible.
Scratch [3] is a graphical block-based programming environ- 1. Open Thonny Python IDE from the main menu.
ment designed for kids to learn programming skills without 2. Enter the following code:
having to type or learn the synax of a programming language.
The “hello world” for Scratch is simple—and very visual! print("Hello world")
1. Open Scratch 2 from the main menu.
2. Click Looks. 3. Save the file as hello3.py.
3. Drag a say Hello! block into the workspace on the right. 4. C lick the Run button.
3. Ruby/Sonic Pi
Ruby [5] is another powerful language that’s friendly for be-
ginners. Sonic Pi [6], the live coding music synth, is built on
top of Ruby, so what users actually type is a form of Ruby.
52 Open Source Yearbook 2018 . CC BY-SA 4.0 . Opensource.com
1. Open Sonic Pi from the main menu. 5. Press Enter to run.
2. Enter the following code:
puts "Hello world"
3. Press Run.
You can also install NodeJS on the Raspberry Pi, and write
server-side JavaScript, but that’s not available in the stan-
dard Raspbian image.
5. Bash
Bash [10] (Bourne Again Shell) is the default Unix shell com-
mand language in most Linux distributions, including Rasp-
bian. You can enter Bash commands directly into a terminal
Unfortunately, “hello world” does not do Sonic Pi justice in window, or script them into a file and execute the file like a
the slightest, but after you’ve finished this article you should programming script.
check out its creator Sam Aaron live coding [7], and see the 1. Open Text Editor from the main menu.
tutorials on the Sonic Pi website [8]. 2. Enter the following code:
Alternatively, to using the Sonic Pi application for this ex-
ample, you can write Ruby code in a text editor and run it in echo "Hello world"
the terminal:
1. Open Text Editor from the main menu. 3. Save the file as hello.sh in the home directory.
2. Enter the following code: 4. Open Terminal from the main menu.
5. Run the following command:
puts "Hello world"
bash hello.sh
3. Save the file as hello.rb in the home directory.
4. Open Terminal from the main menu.
5. Run the following command:
ruby hello.rb
Note you’d usually see a “hashbang” at the top of the script
(#!/bin/bash), but because I’m calling this script directly us-
ing the bash command, it’s not necessary (and I’m trying to
keep all these examples as short as possible).
You’d also usually make the file executable with chmod +x,
but again, this is not necessary as I’m executing with bash.
4. JavaScript
This is a bit of a cheat as I just make use of client-side Ja- 6. Java
vaScript [9] within the web browser using the Web Inspector Java [11] is a popular language in industry, and is common-
console, but it still counts! ly taught to undergraduates studying computer science. I
1. Open Chromium Web Browser from the main menu. learned it at university and have tried to avoid touching it
2. Right-click the empty web page and select Inspect from since then. Apparently, now I do (very small amounts of) it
the context menu. for fun...
3. Click the Console tab. 1. Open Text Editor from the main menu.
4. Enter the following code: 2. Enter the following code:
console.log("Hello world") public class Hello {
public static void main(String[] args) {
System.out.println("Hello world");
}
}
Open Source Yearbook 2018 . CC BY-SA 4.0 . Opensource.com 53
Learning
.............. ..
.............
3. Save the file as Hello.java in the home directory. 8. C++
4. Open Terminal from the main menu. C’s younger bother, C++ (that’s C incremented by one...) is
5. Run the following commands: another fundamental low-level language, with more advanced
language features included, such as classes. It’s popular in a
javac Hello.java range of uses, including game development, and chunks of
java Hello your operating system will be written in C++ too.
1. Open Text Editor from the main menu.
2. Enter the following code:
#include <iostream>
using namespace std;
I could almost remember the “hello world” for Java off the int main() {
top of my head, but not quite. I always forget where the cout << "Hello world\n";
String[] args bit goes, but it’s obvious when you think }
about it...
3. Save the file as hello.cpp in the home directory.
7. C 4. Open Terminal from the main menu.
C is a fundamental low-level programming language. It’s 5. Run the following commands:
what many programming languages are written in. It’s what
operating systems are written in. See for yourself—take a g++ -o hellopp hello.cpp
look at the source for Python [12] and the Linux kernel [13]. ./hellocpp
If that looks a bit hazy, get started with “hello world”:
1. Open Text Editor from the main menu.
2. Enter the following code:
#include <stdio.h>
int main() { Readers familiar with C/C++ will notice I have not included the
printf("Hello world\n"); main function return values in my examples. This is intentional
} as to remove boilerplate, which is not strictly necessary.
3. Save the file as hello.c in the home directory. 9. Perl
4. Open Terminal from the main menu. Perl [15] gets a lot of stick for being hard to read, but nothing
5. Run the following commands: much gets in the way of understanding its “hello world” pro-
gram. So far, so good!
gcc -o hello hello.c 1. Open Text Editor from the main menu.
./hello 2. Enter the following code:
print "Hello world\n"
3. Save the file as hello.pl in the home directory.
4. Open Terminal from the main menu.
5. Run the following command:
Note that in the previous examples, only one command was
required to run the code (e.g., python3 hello.py or ruby perl hello.pl
hello.rb) because these languages are interpreted rather
than compiled. (Actually Python is compiled at runtime but
that’s a minor detail.) C code is compiled into byte code and
the byte code is executed.
If you’re interested in learning C, the Raspberry Pi Foun-
dation publishes a book Learning to code with C [14] written
by one of its engineers. You can buy it in print or download Again, I learned Perl at university, but unlike Java, I have
for free. managed to successfully avoid using it.
54 Open Source Yearbook 2018 . CC BY-SA 4.0 . Opensource.com
10. Python extras: Minecraft and the Sense HAT emulator 3. Click the Run button.
So that’s nine different programming languages covered,
but let’s finish with a bit more Python. The popular comput-
er game Minecraft is available for Raspberry Pi, and comes
bundled with Raspbian. A Python library allows you to com-
municate with your Minecraft world, so open Minecraft and a
Python editor side-by-side for some fun hacking your virtual
world with code.
1. Open Minecraft Pi [16] from the main menu.
2. Create and enter a Minecraft world.
3. Press Tab to release your focus from the Minecraft window.
4. Open Thonny Python IDE from the main menu.
5. Enter the following code:
More
from mcpi.minecraft import Minecraft That’s it! I hope you learned something new, and have fun
trying out new “hello world” programs on your Raspberry Pi!
mc = Minecraft.create()
You can find more on the GitHub repository [20] —and feel
free to suggest more in an issue, or send me a pull request
mc.postToChat("Hello world")
with your contribution.
6. Save the file as hellomc.py. Links
7. Click the Run button. [1] https://opensource.com/resources/raspberry-pi
[2] https://github.com/bennuttall/hello-world-raspberry-pi
[3] https://opensource.com/sitewide-search?search_api_
views_fulltext=scratch
[4] https://opensource.com/tags/python
[5] https://opensource.com/sitewide-search?search_api_
views_fulltext=ruby
[6] http://sonic-pi.net/
[7] https://www.youtube.com/watch?v=KJPdbp1An2s
[8] http://sonic-pi.net/
[9] https://opensource.com/tags/javascript
[10] https://opensource.com/sitewide-search?search_api_
views_fulltext=bash
[11] https://opensource.com/tags/java
Read more about hacking Minecraft with Python in my article [12] https://github.com/python/cpython/
Getting started with Minecraft Pi [16]. [13] https://github.com/torvalds/linux
Finally, let’s look at the Sense HAT Emulator [17]. This tool [14] https://www.raspberrypi.org/magpi/issues/essentials-c-v1/
provides a graphical representation of the Sense HAT [18], [15] https://opensource.com/tags/perl
an add-on board for Raspberry Pi made especially to go to [16] https://opensource.com/life/15/5/getting-started-minecraft-pi
space for reasons explained in this article [19]. [17] https://opensource.com/life/16/9/coding-raspberry-pi-web-
The sense_emu Python library is identical to the sense_ emulator
hat library except that its commands get executed in the em- [18] https://opensource.com/life/15/10/exploring-raspberry-pi-
ulator rather than on a physical piece of hardware. Because sense-hat
the Sense HAT includes an 8x8 LED display, we can use its [19] https://opensource.com/education/15/4/uk-students-
show_message function to write “hello world”. compete-chance-have-their-raspberry-pi-code-run-space
1. Open another tab in Thonny and enter the following code: [20] https://github.com/bennuttall/hello-world-raspberry-pi
from sense_emu import SenseHat
sense = SenseHat()
Author
Ben Nuttall is the Raspberry Pi Community Manager. In ad-
sense.show_message("Hello world") dition to his work for the Raspberry Pi Foundation, he’s into
free software, maths, kayaking, GitHub, Adventure Time,
2. Save the file as sense.py. and Futurama. Follow Ben on Twitter @ben_nuttall.
Open Source Yearbook 2018 . CC BY-SA 4.0 . Opensource.com 55
Learning
.............. ..
.............
How to get started in AI
by Gordon Haff
Before you can begin working in artificial intelligence, you need to acquire some human intelligence.
I’ve both asked and been asked about
the best way to learn
more about artificial intelligence (AI). What should I read?
software in a variety of languages. Public cloud providers
have also devoted a lot of attention to providing machine
learning services, models, and datasets that make the on-
What should I watch? I’ll get to that. But, first, it’s useful ramp to getting started with AI much simpler than it would
to break down this question, given that AI covers a lot of be otherwise.
territory. I’ll add at this point that applied AI practitioners shouldn’t
One important distinction to draw is between the research treat their tools as some sort of black box that spits out
side of AI and the applied side. Cassie Kozyrkov of Goo- answers for mysterious reasons. At a minimum, they need
gle drew this distinction [1] in to understand the limits and
a talk at the recent O’Reilly potential biases of different
Artificial Intelligence Confer- techniques, models, and
ence in London, and it’s a data collection approach-
good one. es. It’s just that they don’t
Research AI is rather ac- necessarily need to delve
ademic in nature and re- deeply into all the theory
quires a heavy dose of math underpinning every part of
across a variety of disci- their toolchain.
plines before you even get Although it’s probably less
to those parts that are spe- important for working in AI
cific to AI. This aspect of AI on a day-to-day basis, it’s
focuses on the algorithms also useful to understand
and tools that drive the state of AI forward. For example, the broader context of AI. It goes beyond the narrow scope
what neural network structures might improve vision rec- of deep learning on neural networks that have been so im-
ognition results? How might we make unsupervised learn- portant to the gains made in reinforcement learning and su-
ing a more generally useful approach? Can we find ways pervised learning to date. For example, AI is often viewed as
to understand better how deep learning pipelines come up a way to augment (rather than replace) human judgment and
with the answers they do? decisions. But the handoff between machine and human has
Applied AI, on the other hand, is more about using exist- its own pitfalls.
ing tools to obtain useful results. Open source has played With that background, here are some study areas and
a big role here in providing free and often easy-to-use resources you may find useful.
56 Open Source Yearbook 2018 . CC BY-SA 4.0 . Opensource.com
Research AI programming background, MIT’s Introduction to Computer
In a lot of respects, a list of resources for research AI mirror Science and Programming Using Python [13], based on its
those in an undergraduate (or even graduate) computer sci- on-campus 6.001 course, is a good primer. If you’re truly
ence program that’s focused on AI. The main difference is new to programming, Charles Severance’s Programming for
that the syllabus you draw up may be more interdisciplinary Everybody (Getting Started with Python) [14] from the Uni-
than more traditionally focused university curricula. versity of Michigan doesn’t toss you into the deep end of the
Where you start will depend on your computer science pool the way the MIT course does.
and math background. The R programming language [15] is also a useful skill to
If it’s minimal or rusty, but you still want to develop a deep add to your toolbox. While it’s less used in machine learning
understanding of AI fundamentals, you’ll benefit from taking (ML) per se, it’s common for a variety of other data science
some math courses to start. There are many options on mas- tasks, and applied AI/ML and data science often blend in
sive online open courses (MOOCs) like the nonprofit edX [2] practice. For example, many tasks associated with orga-
platform and Coursera [3]. (Both platforms charge for certi- nizing and cleaning data apply equally whatever analysis
fications, but edX makes all the content available for free to techniques you’ll eventually use. A MOOC sequence like
people just auditing the course.) Harvard’s Data Science certificate [16] is an example of a
Typical foundational courses could include: set of courses that provide a good introduction to working
• MIT’s Calculus courses [4], starting with differentiation with data.
• Linear Algebra [5] (University of Texas) Another open source software library you’re likely to en-
• Probability and statistics, such as MIT’s Probability—The counter if you do any work with AI is TensorFlow [17]. It was
Science of Uncertainty and Data [6] originally developed by researchers and engineers from the
To get deeper into AI from a research perspective, you’ll Google Brain team within Google’s AI organization. Google
probably want to get into all these areas of mathematics and offers a variety of tutorials [18] to get started with TensorFlow
more. But the above should give you an idea of the general using the high-level Keras API. You can run TensorFlow lo-
branches of study that are probably most important before cally as well as online in Google Cloud.
delving into machine learning and AI proper. In general, all of the big public cloud providers offer on-
In addition to MOOCs, resources such as MIT Open- line datasets and ML services that can be an easy way to
CourseWare [7] provide the syllabus and various supporting get started. However, especially as you move beyond “play”
materials for a wide range of mathematics and computer sci- datasets and applications, you need to start thinking seri-
ence courses. ously about the degree to which you want to be locked into
With the foundations in place, you can move onto more a single provider.
specialized courses in AI proper. Andrew Ng’s AI MOOC, Datasets for your exploratory learning projects are
from when he was teaching at Stanford, was one of the early available from many different sources. In addition to the
courses to popularize the whole online course space. Today, public cloud providers, Kaggle [19] is another popular
his Neural Networks and Deep Learning [8] is part of the source and also a good learning resource more broadly.
Deep Learning specialization at Coursera. There are corre- Government data is also increasingly available in digital
sponding programs on edX. For example, Columbia offers form. The US Federal Government’s Data.gov [20] claims
an Artificial Intelligence MicroMasters [9]. over 300,000 datasets. State and local governments also
In addition to courses, a variety of textbooks and other publish data on everything from restaurant health ratings
learning material are also available online. These include: to dogs’ names.
• Neural Networks and Deep Learning [10]
• Deep Learning [11] from MIT Press by Ian Goodfellow and Miscellany
Yoshua Bengio and Aaron Courville I’ll close by noting that AI is a broad topic that isn’t just about
math, programming, and data. AI as a whole touches many
Applied AI other fields, including cognitive psychology, linguistics,
Applied AI is much more focused on using available tools game theory, operations research, and control systems. In-
than building new ones. Some appreciation of the math- deed, a concern among at least some AI researchers today
ematical underpinnings, especially statistics, is still use- is that the field has become too fixated on a small number
ful—arguably even necessary—but you won’t be majoring of techniques that have become powerful and interesting
in that aspect of AI to the same degree you would in a re- only quite recently because of the intersection of process-
search mode. ing power and big data. Many longstanding problems in un-
Programming is a core skill here. While different program- derstanding how humans learn and reason remain largely
ming languages can come into play, a lot of libraries and unsolved. Developing at least some appreciation for these
toolsets—such as PyTorch [12]—rely on Python, so that’s broader problem spaces will better enable you to place AI
a good skill to have. Especially if you have some level of within a broader context.
Open Source Yearbook 2018 . CC BY-SA 4.0 . Opensource.com 57
Learning
.............. ..
.............
One of my favorite examples is the Humans and Au- [12] https://pytorch.org/
tonomy Lab [21] at Duke. The work in this lab touches [13] https://www.edx.org/course/introduction-to-computer-
on all the challenges of humans working with machines, science-and-programming-using-python
such as how autopilots can create “Children of the Ma- [14] https://www.coursera.org/learn/python
genta” [22] who are unable to take control quickly if the [15] https://www.r-project.org/about.html
automation fails. A basic brain-science course, such as [16] https://www.edx.org/professional-certificate/harvardx-data-
MIT’s Introduction to Psychology [23], provides some use- science
ful context for the relationship between human intelligence [17] https://www.tensorflow.org/
and machine intelligence. Another course in a similar vein, [18] https://www.tensorflow.org/tutorials/
but taught by the late Marvin Minsky from MIT’s Electrical [19] https://www.kaggle.com/
Engineering and Computer Science department, is The [20] https://www.data.gov/
Society of Mind [24]. [21] https://hal.pratt.duke.edu/
If there’s one key challenge to learning about AI, it’s not [22] https://99percentinvisible.org/episode/children-of-the-
that raw materials and tools aren’t readily available. It’s that magenta-automation-paradox-pt-1/
there are so many of them. My objective hasn’t been to give [23] https://ocw.mit.edu/courses/brain-and-cognitive-
you a comprehensive set of pointers. Rather, it’s been to sciences/9-00sc-introduction-to-psychology-fall-2011/
both point out the different paths you can take and provide [24] https://ocw.mit.edu/courses/electrical-engineering-and-
you with some possible starting points. Happy learning! computer-science/6-868j-the-society-of-mind-fall-2011/
Links Author
[1] https://www.youtube.com/watch?v=RLtI7r3QUyY Gordon Haff is Red Hat technology evangelist, is a frequent
[2] https://www.edx.org/ and highly acclaimed speaker at customer and industry
[3] https://www.coursera.org/ events, and helps develop strategy across Red Hatís full
[4] https://www.edx.org/course/calculus-1a-differentiation portfolio of cloud solutions. He is the co-author of Pots
[5] https://www.edx.org/course/linear-algebra-foundations-to- and Vats to Computers and Apps: How Software Learned
frontiers to Package Itself in addition to numerous other publica-
[6] https://courses.edx.org/courses/course- tions. Prior to Red Hat, Gordon wrote hundreds of research
v1:MITx+6.431x+3T2018/course/ notes, was frequently quoted in publications like The New
[7] https://ocw.mit.edu/index.htm York Times on a wide range of IT topics, and advised clients
[8] https://www.coursera.org/learn/neural-networks-deep- on product and marketing strategies. Earlier in his career,
learning he was responsible for bringing a wide range of comput-
[9] https://www.edx.org/micromasters/columbiax-artificial- er systems, from minicomputers to large UNIX servers, to
intelligence market while at Data General. Gordon has engineering de-
[10] http://neuralnetworksanddeeplearning.com/ grees from MIT and Dartmouth and an MBA from Cornellís
[11] http://www.deeplearningbook.org/ Johnson School.
58 Open Source Yearbook 2018 . CC BY-SA 4.0 . Opensource.com
.................... Learning
7 pen source platforms
o
to get started with
serverless computing
by Daniel Oh
Serverless computing is transforming traditional software development.
These open source platforms will help you get started.
The term serverless [1] has been coming up
in more conversations recently. Letís
clarify the concept, and those related to it, such as server-
tion results. These endpoints can be used as inputs for
other functions, thereby providing a sequence (or chain-
ing) of related functions.
less computing and server- On most serverless plat-
less platform. forms, the user deploys (or
Serverless is often used creates) the functions before
interchangeably with the executing them. The server-
term FaaS (Functions-as- less platform then has all the
a-Service). But serverless necessary code to execute
doesnít mean that there is the functions when it is told
no server. In fact, there are to. The execution of a server-
many servers–serverful–be- less function can be invoked
cause a public cloud provid- manually by the user via a
er provides the servers that command, or it may be trig-
deploy, run, and manage gered by an event source
your application. that is configured to activate
Serverless computing is an emerging category that the function in response to events such as cron job alarms,
represents a shift in the way developers build and deliver file uploads, or many others.
software systems. Abstracting application infrastructure
away from the code can greatly simplify the development 7 open source platforms to get started with
process while introducing new cost and efficiency bene- serverless computing
fits. I believe serverless computing and FaaS will play an • Apache OpenWhisk [3] is a serverless, open source cloud
important role in helping to define the next era of enter- platform that allows you to execute code in response to
prise IT, along with cloud-native services and the hybrid events at any scale. Itís written in the Scala language. The
cloud [2]. framework processes the inputs from triggers like HTTP re-
Serverless platforms provide APIs that allow users to quests and later fires a snippet of code on either JavaScript
run code functions (also called actions) and return the re- or Swift.
sults of each function. Serverless platforms also provide • Fission [4] is a serverless computing framework that en-
HTTPS endpoints to allow the developer to retrieve func- ables developers to build functions using Kubernetes. It
Open Source Yearbook 2018 . CC BY-SA 4.0 . Opensource.com 59
Learning
.............. ..
.............
allows coders to write short-lived functions in any program- COPY . .
ming language and map them with any event triggers, such EXPOSE 8080 3000
as HTTP requests. CMD ["npm", "start"]
• IronFunctions [5] is a serverless computing framework that
offers a cohesive microservices platform by integrating its
existing services and embracing Docker. Developers write ## package.json
the functions in Go language. {
• Fn Project [6] is an open source container-native server- "name": "greeter",
less platform that you can run anywhere–on any cloud or "version": "0.0.1",
on-premise. Itís easy to use, supports every programming "private": true,
language, and is extensible and performant. "scripts": {
• OpenLambda [7] is an Apache-licensed serverless comput- "start": "node app.js"
ing project, written in Go and based on Linux containers. },
The primary goal of OpenLambda is to enable exploration "dependencies": {
of new approaches to serverless computing. "express": "~4.16.0"
• Kubeless [8] is a Kubernetes-native serverless framework }
that lets you deploy small bits of code without having to }
worry about the underlying infrastructure. It leverages Ku-
bernetes resources to provide autoscaling, API routing, ## app.js
monitoring, troubleshooting, and more. var express = require("express");
• OpenFaas [9] is a framework for building serverless func- var app = express();
tions with Docker and Kubernetes that offers first-class
support for metrics. Any process can be packaged as a var msg = (
process.env.MESSAGE_PREFIX || "") + "NodeJs::Knative
function, enabling you to consume a range of web events on OpenShift";
without repetitive boilerplate coding.
Kubernetes is the most popular platform to manage server- app.get("/", function(req, res, next) {
less workloads and microservice application containers, us- res.status(200).send(msg);
ing a finely grained deployment model to process workloads });
more quickly and easily. With Knative Serving [10], you can
build and deploy serverless applications and functions on app.listen(8080, function() {
Kubernetes and use Istio [11] to scale and support advanced console.log("App started in port 8080");
scenarios such as: });
• Rapid deployment of serverless containers
• Automatic scaling up and down to zero ## service.yaml
• Routing and network programming for Istio components apiVersion: serving.knative.dev/v1alpha1
• Point-in-time snapshots of deployed code and configurations kind: Service
Knative [12] focuses on the common tasks of building and run- metadata:
ning applications on cloud-native platforms for orchestrating name: greeter
source-to-container builds, binding services to event ecosys- spec:
tems, routing and managing traffic during deployment, and configuration:
autoscaling workloads. Istio is an open platform to connect revisionTemplate:
and secure microservices (effectively a service mesh control spec:
plane to the Envoy proxy [13]) and has been designed to con- container:
sider multiple personas interacting with the framework, includ- image: dev.local/greeter:0.0.1-SNAPSHOT
ing developers, operators, and platform providers.
For example, you can deploy a JavaScript serverless Build your Node.js serverless application and deploy the
workload using Knative Serving on a local Minishift [14] plat- service on local Kubernetes platform. Install Knative, Is-
form with the following code snippets: tio, Knative Serving on Kubernetes (or Minishift) [15] as
prerequisites.
## Dockerfile
FROM bucharestgold/centos7-s2i-nodejs:10.x 1. A ttach to the Docker daemon using the following the
WORKDIR /opt/app-root/src commands:
COPY package*.json ./
RUN npm install (minishift docker-env) && eval(minishift oc-env)
60 Open Source Yearbook 2018 . CC BY-SA 4.0 . Opensource.com
2. Build a serverless application container image using the [3] https://openwhisk.apache.org/
following the commands with Jib [16]: [4] https://github.com/fission/fission
[5] https://github.com/iron-io/functions
./mvnw -DskipTests clean compile jib:dockerBuild [6] https://fnproject.io/
[7] https://open-lambda.org/
3. Deploy a serverless service such as Minishift to your Ku- [8] https://kubeless.io/
bernetes cluster: [9] https://docs.openfaas.com/
[10] https://github.com/knative/serving
kubectl apply -f service.yaml [11] https://istio.io/
[12] https://github.com/knative/
Conclusion [13] https://www.envoyproxy.io/
The example above shows where and how to start develop- [14] https://github.com/minishift/minishift
ing the serverless application with a cloud-native platform [15] https://github.com/knative/docs/blob/master/install/
such as Kubernetes, Knative Serving, and Istio. Knative-with-Minishift.md
[16] https://github.com/GoogleContainerTools/jib
Links
[1] https://enterprisersproject.com/article/2018/9/what- Author
serverless Daniel is a DevOps evangelist, CNCF ambassador, developer,
[2] https://enterprisersproject.com/hybrid-cloud speaker, writer, and Opensource.com author.
Open Source Yearbook 2018 . CC BY-SA 4.0 . Opensource.com 61
CREATing
.............. ..
.............
The current state of
Linux video editing 2018
by Seth Kenlon
Linux is a big deal in modern movie-making. Whether you’re a hobbyist or a professional, you can
find Linux software that meets your needs.
Defining key terms
It’s pretty well known that Linux is a
big deal in modern
movie making. Linux is the standard base, a literal industry
• Independent: For the purposes of this article, I’ll call a
workflow that begins and ends with either one video edit-
standard [1] for digital effects but, like all technology with ing software or one computer system either “independent”
momentum, it seems that the process of cutting footage still or “hobbyist.” In other words, an independent or hobbyist
defaults mostly to a non-Linux platform. Slowly, however, filmmaker is likely to use one application to do video edit-
as artists seek to simplify and consolidate the post-produc- ing, maybe a few other applications for specialized tasks
tion pipeline, Linux video editing is gaining in popularity. like audio sweetening or motion graphics, and then they’re
It can be difficult to talk about video editing objectively done. Their project is exported and delivered.
because it means so many different things to different • Professional integration: A “professional” editor probably
people. For instance, to some people a video editing also uses only one application to edit video, but that’s be-
application must be able to cause they’re a cog in a larg-
generate fancy animated er machine. A professional
title sequences, while pro- editor might get their footage
fessional users balk at the from a producer or director,
idea of doing serious work and when they’re done they
on titles in their video edi- probably aren’t exporting the
tor. It’s not unlike the de- final version that their audi-
bate over professional SLR ences are going to see, but
cameras that happened they’ll pass their work on to
when digital cameras in audio engineers, VFX art-
phones became contenders ists, and colorists.
for serious photography.
For this reason, a prag- Top pro pick: Kdenlive
matic overview of a Linux-based video editor needs two Kdenlive [2] is the best-in-class professional open source
broad qualifiers: How it performs for home users, and how editing application, hands-down. As long as you run a stable
it might integrate into a professional pipeline. version of Kdenlive on a stable Linux OS, use reasonable
62 Open Source Yearbook 2018 . CC BY-SA 4.0 . Opensource.com
file formats, and keep your work organized, you’ll have a re- • And for serious home editors and independent movie mak-
liable, professional-quality editing experience. ers, Kdenlive is worth learning [12] and using [13], and it
is likely to satisfy all requirements. It may not always be a
drop-in replacement if you’re transitioning from some other
editor, but it’s familiar enough to keep the learning curve
manageable.
Professional integration
• If you’re working in a production environment with an es-
tablished workflow, then any change to your editor requires
adaptation.
• Kdenlive saves projects as an XML file, so it’s possi-
ble to convert an existing edit decision list (EDL) to a
Kdenlive project file, although there aren’t any official au-
to-converters available yet, so round trips (i.e., returning
Strengths to the original application) out of Kdenlive would require
• The interface is intuitive for anyone who has ever used a intervention. Alternately, round trips can be done with
professional-style editing application. lossless clip exports, which can be reintegrated into a
• The way you work in Kdenlive is natural and flexible, allow- project after whatever has been applied from the exter-
ing you to use both of the major styles of editing: cutting by nal application.
numbers and just mousing around in the timeline [3]. • The same holds true for audio [14]. You can render audio
• Kdenlive has plenty of capabilities beyond just cutting up to a file and import into an external digital audio work-
footage. It can do some advanced visual effects, like mask- station (DAW), but currently there’s no native, built-in
ing [4], all manner of composting (see this [5], this [6], and audio-export target for popular formats like Open Media
this [7]), color correction [8], offline “proxy” editing [9], and Framework (OMF).
much much more. • For the most part, as long as your pipeline isn’t perilously
Weaknesses rigid, Kdenlive can exist within any professional environ-
• The greatest weakness of open source editing is also ment. It can output video, audio, and image sequences,
its greatest strengths: Kdenlive lets you throw nearly and it’s hard to imagine a workflow where such generic out-
anything you want at it, even if that sometimes means put isn’t acceptable.
its performance suffers. You should resist the urge to
take advantage of this flexibility and instead manage Hobbyist pick: OpenShot
your assets and formats smartly. Instead of using an OpenShot [15] is a simple but robust video editor. If you’re
MP3, convert the MP3 to WAV first (which is what other not interested in learning the finer details on how to edit vid-
editors do for you, but they do it “behind the scenes”). eo, then OpenShot is for you. It doesn’t scale up; a profes-
Don’t throw in an animated GIF without first breaking it sional editor will find it restrictive, but for a quick and easy
out into a series of images. And so on. Gaining flexibil- edit, OpenShot is a great choice on any OS.
ity means you gain the responsibility for maintaining a
sensible media library.
• The interface, while accounting for both “traditional” edit-
ing styles and the “modern” style of treating the timeline
as a sort of scratchpad, wouldn’t really satisfy an editor
who wants to cut by numbers. Currently, there’s no way, for
instance, to modify or move clips with quick number-pad
entries (typing +6, for instance, has no effect on a video
region’s placement in the timeline).
Independent
• If anything, Kdenlive could be overkill for home users who
aren’t accustomed to professional-style editing. Basic oper-
ations of the interface are mostly intuitive, but new editors Strengths
might feel that there’s a learning curve for advanced opera- • OpenShot is focused. It understands exactly what its au-
tions (like layered composting [10] and offline editing [11]). dience wants: the ability to make attractive videos with
• On the other hand, it scales down well. You can use a minimal fuss. Its interface is intuitive, and what you can’t
fraction of its features and find it a pretty simple, mostly immediately figure out from context, you can access with
intuitive editor. a right-click.
Open Source Yearbook 2018 . CC BY-SA 4.0 . Opensource.com 63
CREATing
.............. ..
.............
• The most common transition, a crossfade, is available by Strengths
overlapping the edges of two clips. This is such a simple • A no-frills, stable application for quick, no-nonsense cutting.
and obvious trick, but it cuts down on so many mouse clicks • Its workflow favors a traditional cutting style: mark in, mark
that you’ll wonder why all video editors don’t do that. out, dump into timeline. Rinse and repeat.
• It’s also a very conservative application. You won’t see a • This makes it slightly less convenient to stumble around
new OpenShot release every month, and that’s a good your project in search of a good edit, but that’s what makes
thing. You can download OpenShot as an AppImage today it so efficient and smooth when you know what you want.
and use it for the next year or more. It’s a beautiful, comfort- • A professional-level editor who lives to count frames and
able, simple piece of software. edit on the keyboard will love Flowblade.
Weaknesses Weaknesses
• A hobbyist’s strengths are a pro’s weaknesses. It’s a de- • Flowblade’s interface is arguably overly simple.
liberately simplified system, and little conveniences like • At the time of this writing, its keyboard shortcuts are not
the auto-crossfades are unwelcome to a professional user-definable (although it’s written in Python, so an editor
editor who doesn’t necessarily want clips to crossfade fluent in Python can adjust preferences by brute force).
when they overlap. Independent
• OpenShot doesn’t have a very robust engine for real-time • Many of the “obvious” things a hobbyist would expect from
effects. Too many dynamic effects severely slow playback. a video editor just don’t happen in Flowblade. For instance,
Independent moving a clip once it’s in the timeline requires activation of
• An independent or hobbyist editor with simple needs will an “overwrite” mode, since otherwise clips “float” left.
find OpenShot perfect. It’s an easy install, it has all the Professional integration
usual benefits of open source multimedia (near indiffer- • In addition to generic video and audio files, Flowblade can
ence to codecs, no false limitations or paywalls for ad- export to MLT XML for use with the open source multimedia
vanced features). framework [17] that powers it, as well a plain text, parse-
Professional integration able EDL. Additionally, Flowblade’s project format is plain
• Integrating OpenShot with a larger pipeline is possible, but text and could be used to extract information for a custom
only in the sense that it can output generic video and audio EDL format.
files and image sequences. Its project file format, however, • These options don’t provide specialized hooks into specif-
is also open source, and it saves into a JSON format that ic applications, but it’s certainly enough of a variety that a
theoretically could be leveraged for an EDL, but there’s no simple converter should be able to import the information.
built-in exporter for that.
Blender [18]
Everything else Blender excels at efficiency. Once you know how to interact
Kdenlive and OpenShot are my top picks, the open source with its interface, you can accomplish amazing things amaz-
editors an editor ought to turn to for a quick fix, but there are, ingly quickly. Transferring this kind of efficiency over to video
of course, several others to look at. editing is a dream come true.
Flowblade [16]
Flowblade is a simplified video editor that focuses on the ed-
itorial process. If you’re an experienced editor and just want
to get down to business, or you ‘re a hobbyist who needs little
more than an interface to assemble video clips in sequence,
then Flowblade’s minimal interface may appeal to you.
Strengths
• By default, Blender’s video sequence editor (VSE) is, from
what I can tell, optimized for only the most basic “editing”
tasks. This makes sense, given that in the animation and
VFX world, there isn’t generally excess footage. Artists
work on shots that have already been finalized, so the only
editing task after all the animation is done is to reintegrate
64 Open Source Yearbook 2018 . CC BY-SA 4.0 . Opensource.com
shots into the final cut of the movie. Luckily, though, there ages new technologies like WebVfx (visual effects created
are several plugins (such as Easy-Logging [19] and the with web technologies) and Movit (GPU image processing).
Blender Velvets [20]) in active development to apply tradi-
tional editing interface conventions to Blender’s VSE mode,
and they manage to transform Blender into a very usable
video editing software.
• Blender is stable, fully cross-platform, popular, and under
steady development. Using it to edit video isn’t exactly
common, but the application as a framework for multimedia
work is robust and reliable.
Weaknesses
• If you’re expecting a traditional editing platform, Blender’s
weaknesses are many. Its interface can be confusing, and
the UI is unconventional as a video editor, at best. Even
with VSE plugins and personal customizations, the inter- Strengths
face is mostly utilitarian. • Shotcut is using the latest in open source technology to
• Blender’s rendering engines are backends for 3D model ren- provide performance unlike any other open source video
dering. Rendering a video sequence, especially with effects editor. Its real-time effects are smooth as is, and they will
(like color correction, which one would expect to have on get even better once it’s offloaded onto the GPU.
each clip in a primary editing application) applied to each • The interface is mostly familiar, although some liberties are
clip, takes far longer (10x as long from Kdenlive and Flow- taken in the interest of progress. One wonders if mobile
blade, in my most recent tests) than rendering from any oth- devices are on the roadmap, because much of the interface
er video editor. This might be partly because the Blender design would work well on a tablet or a large phone screen.
interface offers no control over FFmpeg [21] threads. • Shotcut is JACK-aware, so tethering it to a pro audio appli-
• The VSE lacks integration with the rest of Blender. You can- cation like Ardour is trivial.
not, for instance, attach clips from your VSE edit into the Weaknesses
node editor and apply fancy effects. In Blender’s internal • Shotcut is a little progressive, so there’s a learning curve
pipeline, the VSE is definitely a separate process. involved where its interface implements something differ-
Independent ent than the de facto standard. For instance, the workflow
• A hobbyist who knows nothing about Blender will find a in a traditional editor is: bring a clip into your bin, open that
steep learning curve. Even with VSE add-ons to make the clip from the bin, mark in and out, and put it in the timeline.
VSE act more like a “normal” application, anything beyond With Shotcut, however, there’s no internal import process
basic cuts and sequencing just doesn’t work the way most to populate your bin (“playlist,” in Shotcut terminology). You
users would expect. can either drag and drop from your file manager or you can
• Like all powerful applications, however, Blender is by all open a clip and add that clip to your playlist, or you can
means worth knowing. In terms of application design, it’s bypass the playlist entirely and just add it to your timeline.
one of the best examples, outside of Emacs, of combin- • It’s less esoteric, for example, there’s no way to group select
ing internal logic and consistency with endless extensi- several clips in the timeline to move them. You can insert
bility to produce a powerful, unstoppable force of com- clips in front of them, but editors used to using their timeline
putational wonder. as a scratchpad with lots of groups of edited scenes might
Professional integration find this limitation troublesome.
• Depending on your industry, your production house may • The effect stack is still a work in progress. Important effects,
already be using Blender, if not for video editing then for like a chromakey (green screen), are missing. They’re be-
animation or motion graphics. ing added as the dev team perfects their interfaces and
• There are several EDL export [22] add-ons available, and functionality.
Blender’s seamless integration with Python makes it trivi- Independent
al for a technically minded editor or support staff to export • For basic editing, Shotcut is a breeze. It’s uncluttered, rel-
whatever information is necessary to blend Blender into atively lightweight, and functional. It’s got everything you
any pipeline. need and doesn’t offer a lot of options you probably don’t
intend to use.
Shotcut [23] • In its current state, it doesn’t scale up. When you hit its ceil-
Shotcut is a video editor being developed by Dan Dennedy, ing, you’ll have to move to another application. For some,
an MLT [24] co-founder and current project lead. It is de- this might be when they suddenly realize they need to do
signed from the ground up to be cross-platform and lever- complex composites (to be fair, it’s arguable that complex
Open Source Yearbook 2018 . CC BY-SA 4.0 . Opensource.com 65
CREATing
.............. ..
.............
composites shouldn’t be done in a video editing application signed for keyboard and shuttle control. Hobbyists or
at all, but that doesn’t change expectations), while for others editors who were trained to do their editing with the
it will be small interface preferences, like Shotcut’s inability mouse might find Lightworks a little difficult to get used
to dynamically create a new audio track when dragging an to. With each new version, the timeline gets a little more
audio-only clip into a timeline with only one video track. mouse-friendly, but the overall design is somewhat
Professional integration technical.
• Shotcut isn’t production-ready yet, but since a true profes- Independent
sional is more than the sum of the tools, it could be used • Lightworks is probably overkill for the hobbyist. It works
in a professional setting. Shotcut can export an EDL, and well, but there’s a learning curve and an emphasis on pre-
it stores its project files as MLT XML, so you could extract cision and professionalism that will probably get in the way
information for a custom EDL format as needed. for people who just want to edit.
Professional integration
Non-open editors • Lightworks exports to a number of formats, such as OMF
There’s a handful of cross-platform editors that are not open and AAF, so it’s prepared to communicate with whatever’s
source. However, they can run on an otherwise open stack next in your pipeline. If it doesn’t export to what you need, it
(in other words, they are fully Linux-compatible), which is a does export to a variety of video and audio formats.
pretty common paradigm in the professional film world.
A not insignificant advantage to these closed-source solu- Da Vinci Resolve [28]
tions is that a team of editors can use the same software Coming from Da Vinci’s color correction suite, and once tied
regardless of the OS they’re running. to a proprietary hardware suite, Resolve is a cross-platform
editor distributed for $0.
Lightworks [25] Strengths
A long-time editing solution in Hollywood, Lightworks is now • Da Vinci has been an industry standard for decades, and
free to download. While its natural approach to editing defers while Resolve is technically relatively new, many profes-
to a traditional film workflow, working in the timeline is pos- sionals in the industry have some familiarity with the sys-
sible and new features are constantly being added to make tem in general.
sandboxing in the timeline comfortable. The free version is Weaknesses
basically a complete solution for serious editng, but if you • Resolve, like Lightworks, has hefty hardware requirements.
pay for a subscription you “unlock” better codec support and If your system doesn’t meet its requirements, it doesn’t run.
a few effects (which are, awkwardly, not cross-platform). There’s no lightweight mode, even if you just want to do
Strengths some basic edits.
• Nobody would call Lightworks the industry standard, but it • Resolve is not open source.
is an Emmy award winner and has a long history of profes- Independent
sional use before it became no-cost software independent • Resolve is probably overkill for hobbyists, but its interface is
of its hardware stack. It’s a robust application with some se- flexible and allows for several editing styles. Its interface is
rious pro features, such as timeline effects, codec support, fairly intuitive; if you’ve used a video-editing application be-
lots of export formats, and a unique but efficient interface. fore, you can probably figure out Resolve with an afternoon
• It’s a technical editing environment. It’s very aware of and a few online tutorial videos.
editing decisions and timecode and frame numbers, so Professional integration
if you are a professional editor who needs to know that • Da Vinci exports to several exchange formats as well as
your edit can conform later in the pipeline, Lightworks video, audio, and image sequences.
won’t let you down.
• Real-time effects are well supported in Lightworks, so per- Hiero [29]
formance is as good as your system specs provide. Hiero isn’t, strictly speaking, a video editor, but a show view-
Weaknesses er. However, it’s set up such that clips can be arranged and
• It’s not open source. Its development team announced adjusted, so it sometimes gets used as a video editing solu-
many years ago [26] that the code would be released in tion by artists familiar with other Foundry tools.
Q3 of 2012; now the official stance in the forums [27] is that
“Lightworks is freemium software.” All the rest
• Furthermore, Lightworks is not a lightweight application. It Of course, there are still more options. Some, like Pitivi [30]
expects a powerful rig, and at a certain point, it bottoms out and Cinelerra [31], are less active and less stable now than
and just plain won’t run. they may have once been, others, like Avidemux [32], are
• L ightworks’ default editing style in many ways mimics limited in scope, and still others, like using FFmpeg directly,
the traditional film-editing process. Its timeline is de- are just too niche to cover.
66 Open Source Yearbook 2018 . CC BY-SA 4.0 . Opensource.com
The point is that there are plenty of very good video editing [16] https://jliljebl.github.io/flowblade/
solutions for Linux. All you have to do is choose one, and get [17] https://www.mltframework.org
creative. [18] https://www.blender.org/
[19] http://easy-logging.net/
Links [20] http://blendervelvets.org
[1] http://vfxplatform.com [21] http://ffmpeg.org
[2] https://kdenlive.org/ [22] https://github.com/tin2tin/ExportEDL
[3] https://opensource.com/life/15/6/mastering-timeline- [23] https://shotcut.org/
kdenlive [24] http://mltframework.org
[4] https://opensource.com/life/15/11/basic-masking-kdenlive [25] https://www.lwks.com/
[5] https://opensource.com/life/15/3/creating-split-screen- [26] https://editshare.wordpress.com/tag/editshareflow/page/3/
shots-kdenlive [27] https://www.lwks.com/index.php?option=com_
[6] https://opensource.com/life/15/12/10-kdenlive-tools kunena&func=view&catid=42&id=164255&Itemid=81
[7] https://opensource.com/life/15/4/layered-compositing- [28] h ttps://www.blackmagicdesign.com/products/
kdenlive davinciresolve/
[8] https://opensource.com/life/11/11/kdenlive-part-4-colour- [29] https://www.foundry.com/products/hiero
correction [30] http://www.pitivi.org/
[9] https://opensource.com/life/16/1/offline-editing-kdenlive [31] h ttp://cinelerra.org/
[10] https://opensource.com/life/15/4/layered-compositing- [32] http://avidemux.sourceforge.net/
kdenlive
[11] https://opensource.com/life/16/1/offline-editing-kdenlive Author
[12] https://opensource.com/resources/ebook/video-editing Seth Kenlon is an independent multimedia artist, free culture
[13] https://opensource.com/life/15/3/creating-split-screen- advocate, and UNIX geek. He has worked in the film and
shots-kdenlive computing industry, often at the same time. He is one of the
[14] https://opensource.com/life/15/9/audio-and-video-xjadeo maintainers of the Slackware-based multimedia production
[15] https://www.openshot.org/ project, http://slackermedia.info
Open Source Yearbook 2018 . CC BY-SA 4.0 . Opensource.com 67
OLD SCHOOL .............. ..
.............
6 pivotal moments
in open source history
Here’s how open source developed from a printer jam solution at MIT to a major development model
by Dave Neary
in the tech industry today.
Open source has taken a prominent role
in the IT industry today. It is
everywhere from the smallest embedded systems to the big-
allow them to make changes if they wished. It was the birth
of the free software movement.
gest supercomputer, from the phone in your pocket to the 2. Creation of GNU and the advent of free software
software running the websites and infrastructure of the com- By late 1983, Stallman was ready to announce his project
panies we engage with every day. Let’s explore how we got and recruit supporters and helpers. In September 1983, he
here and discuss key moments from the past 40 years that announced the creation of the GNU project [2] (GNU stands
have paved a path to the current day. for GNU’s Not Unix—a recursive acronym). The goal of the
project was to clone the Unix operating system to create a
1. RMS and the printer system that would give complete freedom to users.
In the late 1970s, Richard M. Stallman (RMS) [1] was a staff pro- In January 1984, he started working full-time on the proj-
grammer at MIT. His department, like those at many universities ect, first creating a compiler system (GCC) and various oper-
at the time, shared a PDP-10 computer and a single printer. One ating system utilities. Early in 1985, he published “The GNU
problem they encountered was that paper would regularly jam Manifesto [3],” which was a call to arms for programmers to
in the printer, causing a string of print jobs to pile up in a queue join the effort, and launched the Free Software Foundation
until someone fixed the jam. To get around this problem, the MIT in order to accept donations to support the work. This docu-
staff came up with a nice social hack: They wrote code for the ment is the founding charter of the free software movement.
printer driver so that when it jammed, a message would be sent
to everyone who was currently waiting for a print job: “The printer 3. The writing of the GPL
is jammed, please fix it.” This way, it was never stuck for long. Until 1989, software written and released by the Free Soft-
In 1980, the lab accepted a donation of a brand-new laser ware Foundation [4] and RMS did not have a single license.
printer. When Stallman asked for the source code for the print- Emacs was released under the Emacs license, GCC was
er driver, however, so he could reimplement the social hack to released under the GCC license, and so on; however, after
have the system notify users on a paper jam, he was told that a company called Unipress forced Stallman to stop distrib-
this was proprietary information. He heard of a researcher in a uting copies of an Emacs implementation they had acquired
different university who had the source code for a research proj- from James Gosling (of Java fame), he felt that a license to
ect, and when the opportunity arose, he asked this colleague to secure user freedoms was important.
share it—and was shocked when they refused. They had signed The first version of the GNU General Public License was
an NDA, which Stallman took as a betrayal of the hacker culture. released in 1989, and it encapsulated the values of copyleft
The late ‘70s and early ‘80s represented an era where (a play on words—what is the opposite of copyright?): You
software, which had traditionally been given away with the may use, copy, distribute, and modify the software covered
hardware in source code form, was seen to be valuable. In- by the license, but if you make changes, you must share
creasingly, MIT researchers were starting software compa- the modified source code alongside the modified binaries.
nies, and selling licenses to the software was key to their This simple requirement to share modified software, in com-
business models. NDAs and proprietary software licenses bination with the advent of the internet in the 1990s, is what
became the norms, and the best programmers were hired enabled the decentralized, collaborative development model
from universities like MIT to work on private development of the free software movement to flourish.
projects where they could no longer share or collaborate.
As a reaction to this, Stallman resolved that he would cre- 4. “The Cathedral and the Bazaar”
ate a complete operating system that would not deprive us- By the mid-1990s, Linux was starting to take off, and free
ers of the freedom to understand how it worked, and would software had become more mainstream—or perhaps “less
68 Open Source Yearbook 2018 . CC BY-SA 4.0 . Opensource.com
fringe” would be more accurate. The Linux kernel was being There was some disagreement, however. Richard
developed in a way that was completely different to anything Stallman and the Free Software Foundation continued to
people had been seen before, and was very successful do- champion the term “free software,” because to them, the
ing it. Out of the chaos of the kernel community came order, fundamental difference with proprietary software was user
and a fast-moving project. freedom, and the availability of source code was just a
In 1997, Eric S. Raymond published the seminal essay, means to that end. Stallman argued that removing the fo-
“The Cathedral and the Bazaar [5],” comparing and contrast- cus on freedom would lead to a future where source code
ing the development methodologies and social structure of would be available, but the user of the software would not
GCC and the Linux kernel and talking about his own expe- be able to avail of the freedom to modify the software. With
riences with a “bazaar” development model with the Fetch- the advent of web-deployed software-as-a-service and
mail project. Many of the principles that Raymond describes open source firmware embedded in devices, the battle con-
in this essay will later become central to agile development tinues to be waged today.
and the DevOps movement—”release early, release often,”
refactoring of code, and treating users as co-developers are 6. Corporate investment in open source—VA
all fundamental to modern software development. Linux, Red Hat, IBM
This essay has been credited with bringing free software In the late 1990s, a series of high-profile events led to a huge
to a broader audience, and with convincing executives at increase in the professionalization of free and open source
software companies at the time that releasing their software software. Among these, the highest-profile events were the
under a free software license was the right thing to do. Ray- IPOs of VA Linux and Red Hat in 1999. Both companies had
mond went on to be instrumental in the coining of the term massive gains in share price on their opening days as pub-
“open source” and the creation of the Open Source Institute. licly traded companies, proving that open source was now
”The Cathedral and the Bazaar” was credited as a key doc- going commercial and mainstream.
ument in the 1998 release of the source code for the Nets- Also in 1999, IBM announced that they were supporting Linux
cape web browser Mozilla. At the time, this was the first major by investing $1 billion in its development, making is less risky to
release of an existing, widely used piece of desktop software traditional enterprise users. The following year, Sun Microsys-
as free software, which brought it further into the public eye. tems released the source code to its cross-platform office suite,
StarOffice, and created the OpenOffice.org [7] project.
5. Open source The combined effect of massive Silicon Valley funding of
As far back as 1985, the ambiguous nature of the word open source projects, the attention of Wall Street for young
“free”, used to describe software freedom, was identified as companies built around open source software, and the mar-
problematic by RMS himself. In the GNU Manifesto, he iden- ket credibility that tech giants like IBM and Sun Microsys-
tified “give away” and “for free” as terms that confused zero tems brought had combined to create the massive adoption
price and user freedom. “Free as in freedom,” “Speech not of open source, and the embrace of the open development
beer,” and similar mantras were common when free software model that helped it thrive have led to the dominance of Li-
hit a mainstream audience in the late 1990s, but a number of nux and open source in the tech industry today.
prominent community figures argued that a term was needed
that made the concept more accessible to the general public. Links
After Netscape released the source code for Mozilla in [1] https://en.wikipedia.org/wiki/Richard_Stallman
1998 (see #4), a group of people, including Eric Raymond, [2] https://groups.google.com/forum/#!original/net.unix-
Bruce Perens, Michael Tiemann, Jon “Maddog” Hall, and wizards/8twfRPM79u0/1xlglzrWrU0J
many of the leading lights of the free software world, gath- [3] https://www.gnu.org/gnu/manifesto.en.html
ered in Palo Alto to discuss an alternative term. The term [4] https://www.fsf.org/
“open source” was coined by Christine Peterson [6] to de- [5] https://en.wikipedia.org/wiki/The_Cathedral_and_the_
scribe free software, and the Open Source Institute was lat- Bazaar
er founded by Bruce Perens and Eric Raymond. The fun- [6] https://opensource.com/article/18/2/coining-term-open-
damental difference with proprietary software, they argued, source-software
was the availability of the source code, and so this was what [7] http://www.openoffice.org/
should be put forward first in the branding.
Later that year, at a summit organized by Tim O’Reilly, Author
an extended group of some of the most influential people in Dave Neary is a member of the Open Source and Standards
the free software world at the time gathered to debate vari- team at Red Hat, helping make Open Source projects im-
ous new brands for free software. In the end, “open source” portant to Red Hat be successful. Dave has been around the
edged out “sourceware,” and open source began to be free and open source software world, wearing many different
adopted by many projects in the community. hats, since sending his first patch to the GIMP in 1999.
Open Source Yearbook 2018 . CC BY-SA 4.0 . Opensource.com 69
OLD SCHOOL .............. ..
.............
13 Git tips for Git’s
13th birthday
by John SJ Anderson
Make your revision-control experience more useful and powerful
with these 13 tricks and tips for Git.
Git [1], the distributed revision-control system that’s
become the default tool for source code control
in the open source world, turned 13 on April 7. One of
Git stores global configuration options. There are a vast ar-
ray of things you can do via your ~/.gitconfig file, including
defining aliases, turning particular command options on (or
the more frustrating things about using Git is how much off!) on a permanent basis, and modifying aspects of how
you need to know to use it effectively. This can also be Git works (e.g., which diff algorithm git diff uses or what
one of the more awesome things about using Git, because type of merge strategy is used by default). You can even
there’s nothing quite like discovering a new tip or trick that conditionally include other config files based on the path to a
can streamline or improve your workflow. repository! See man git-config for all the details.
In honor of Git’s 13th birthday, here are 13 tips and
tricks to make your Git experience more useful and power- 2. Your repo’s .gitconfig file
ful, starting with some basics you might have overlooked In the previous tip, you may have wondered what that
and scaling up to some real power-user tricks! --global flag on the git config command was doing. It
tells Git to update the “global” configuration, the one found
1. Your ~/.gitconfig file in ~/.gitconfig. Of course, having a global config also
The first time you tried to use the git command to commit
a change to a repository, you might have been greeted with
something like this:
*** Please tell me who you are.
Run
git config --global user.email "you@example.com"
git config --global user.name "Your Name"
to set your account's default identity.
What you might not have realized is that those commands
are modifying the contents of ~/.gitconfig, which is where
70 Open Source Yearbook 2018 . CC BY-SA 4.0 . Opensource.com
implies a local configuration, and sure enough, if you omit periodically merge the changes from the upstream repo into
the --global flag, git config will instead update the repos- my fork—which I do by using an alias I call upstream-merge.
itory-specific configuration, which is stored in .git/config. It’s defined like this:
Options that are set in the .git/config file will override
any setting in the ~/.gitconfig file. So, for example, if you up
stream-merge = !"git fetch origin -v && git fetch upstream -v
need to use a different email address for a particular reposi- && git merge upstream/master && git push"
tory, you can run git config user.email "also_you@exam-
ple.com". Then, any commits in that repository will use your The ! at the beginning of the alias definition tells Git to run
other email address. This can be super useful if you work on the command via the shell. This example involves running
open source projects from a work laptop and want them to a number of git commands, but aliases defined in this way
show up with a personal email address while still using your can run any shell command.
work email for your main Git configuration. (Note that if you want to copy my upstream-merge alias,
Pretty much anything you can set in ~/.gitconfig, you you’ll need to make sure you have a Git remote named up-
can also set in .git/config to make it specific to the given stream pointed at the upstream repository you’ve forked
repository. In any of the following tips, when I mention adding from. You can add this by running git remote add up-
something to your ~/.gitconfig, just remember you could stream <URL to repo>.)
also set that option for just one repository by adding it to
.git/config instead. 5. Visualizing the commit graph
If you work on a project with a lot of branching activity, some-
3. Aliases times it can be difficult to get a handle on all the work that’s
Aliases are another thing you can put in your ~/.gitconfig. happening and how it’s all related. Various GUI tools allow
These work just like aliases in the command shell—they set you to get a picture of different branches and commits in
up a new command name that can invoke one or more other what’s called the “commit graph.” For example, here’s a sec-
commands, often with a particular set of options or flags. tion of one of my repositories visualized with the GitLab [3]
They’re super useful for longer, more complicated com- commit graph viewer:
mands you use frequently.
You can define aliases using the git config command—
for example, running git config --global --add alias.
st status will make running git st do the same thing as
running git status—but I find when defining aliases, it’s
frequently easier to just edit the ~/.gitconfig file directly.
If you choose to go this route, you’ll find that the ~/.git-
config file is an INI file [2]. INI is basically a key-value file
format with particular sections. When adding an alias, you’ll
be changing the [alias] section. For example, to define the
same git st alias as above, add this to the file:
[alias]
st = status
(John Anderson CC BY)
(If there’s already an [alias] section, just add the second If you’re a dedicated command-line user or somebody who
line to that existing section.) finds switching tools to be distracting, it’s nice to get a similar
view of the commit graph from the command line. That’s where
4. Aliases to shell commands the --graph argument to the git log command comes in:
Aliases aren’t limited to just running other Git subcom-
mands—you can also define aliases that run other shell
commands. This is a fantastic way to deal with a recurring,
infrequent, and complicated task: Once you’ve figured out
how to do it once, preserve the command under an alias. For
example, I have a few repositories where I’ve forked an open
source project and made some local modifications that don’t
need to be contributed back to the project. I want to keep
up-to-date with ongoing development work in the project but
also maintain my local changes. To accomplish this, I need to (John Anderson CC BY)
Open Source Yearbook 2018 . CC BY-SA 4.0 . Opensource.com 71
OLD SCHOOL .............. ..
.............
This is the same section of the same repo visualized with the 9. git checkout -p
following command:nklll Similar to git add -p, the git checkout command will take
a --patch or -p option, which will cause it to present each
gi
t log --graph --pretty=format:'%Cred%h%Creset “hunk” of change in your local working copy and allow you
-%C(yellow)%d%Creset %s %Cgreen(%cr) to discard it—basically reverting your local working copy to
%C(bold blue)<%an>%Creset' --abbrev-commit --date=relative what was there before your change.
This is fantastic when, for example, you’ve introduced a
The --graph option adds the graph to the left side of the bunch of debug logging statements while chasing down a
log, --abbrev-commit shortens the commit SHAs [4], bug. After the bug is fixed, you can first use git checkout
--date=relative expresses the dates in relative terms, and -p to remove all the new debug logging, then you git add
the --pretty bit handles all the other custom formatting. I -p to add the bug fix. Nothing is more satisfying than put-
have this aliased to git lg, and it is one of my top 10 most ting together a beautiful, well-structured commit!
frequently run commands.
10. Rebase with command execution
6. A nicer force-push Some projects have a rule that each commit in the repository
Sometimes, as hard as you try to avoid it, you’ll find that must be in a working state—that is, at each commit, it should
you need to run git push --force to overwrite the his- be possible to compile the code or the test suite should run
tory on a remote copy of your repository. You may have without failure. This is not too difficult when you’re working
gotten some feedback that caused you to do an interactive on a branch over time, but if you end up needing to rebase
rebase, or you may simply have messed up and want to for whatever reason, it can be a little tedious to step through
hide the evidence. each rebased commit to make sure you haven’t accidentally
One of the hazards with force pushes happens when introduced a break.
somebody else has made changes on top of the same Fortunately, git rebase has you covered with the -x or
branch in the remote copy of the repository. When you force- --exec option. git rebase -x <cmd> will run that command
push your rewritten history, those commits will be lost. This after each commit is applied in the rebase. So, for example,
is where git push --force-with-lease comes in—it will if you have a project where npm run tests runs your test
not allow you to force-push if the remote branch has been suite, git rebase -x npm run tests would run the test
updated, which will ensure you don’t throw away someone suite after each commit was applied during the rebase. This
else’s work. allows you to see if the test suite fails at any of the rebased
commits so you can confirm that the test suite is still passing
7. git add -N at each commit.
Have you ever used git commit -a to stage and commit all
your outstanding changes in a single move, only to discover 11. Time-based revision references
after you’ve pushed your commit that git commit -a ig- Many Git subcommands take a revision argument to spec-
nores newly added files? You can work around this by using ify what part of the repository to work on. This can be the
the git add -N (think “notify”) to tell Git about newly added SHA1 of a particular commit, a branch name, or even a
files you’d like to be included in commits before you actually symbolic name like HEAD (which refers to the most recent
commit them for the first time. commit on the currently checked out branch). In addition to
these simple forms, you can also append a specific date or
8. git add -p time to mean “this reference, at this time.”
A best practice when using Git is to make sure each commit This becomes very useful when you’re dealing with a
consists of only a single logical change—whether that’s a fix newly introduced bug and find yourself saying, “I know
for a bug or a new feature. Sometimes when you’re working, this worked yesterday! What changed?” Instead of star-
however, you’ll end up with more than one commit’s worth ing at the output of git log trying to figure out what
of change in your repository. How can you manage to divide commit was changed when, you can simply run git diff
things up so that each commit contains only the appropriate HEAD@{yesterday}, and see all the changes that have
changes? git add --patch to the rescue! happened since then. This also works with longer time
This flag will cause the git add command to look at all periods (e.g., git diff HEAD@{'2 months ago'} ) as
the changes in your working copy and, for each one, ask if well as exact dates (e.g., git diff HEAD@{'2010-01-01
you’d like to stage it to be committed, skip over it, or defer 12:00:00'}).
the decision (as well as a few other more powerful options You can also use these date-based revision arguments
you can see by selecting ? after running the command). with any Git subcommand that takes a revision argument.
git add -p is a fantastic tool for producing well-struc- Find full details about which format to use in the man page
tured commits. for gitrevisions.
72 Open Source Yearbook 2018 . CC BY-SA 4.0 . Opensource.com
12. The all-seeing reflog<!--12--> <branch-name></branch-name> to find ones that have
Have you ever rebased away a commit, then discovered been merged into some other branch. By default, this will
there was something in that commit you wanted to keep? list branches in your local working copy, but if you include
You may have thought that information was lost forever and --remote or -r into the command, it will also list merged
would need to be recreated. But if you committed it in your branches that only exist on the remote.
local working copy, it was added to the reference log (reflog), Important note: if you plan on using the output from git
and you should still be able to access it. branch --merged to clean up those merged branches, you
Running git reflog will show you a list of all the activity for should be aware it will also include the current branch in the
the current branch in your local working copy and also give output (because, after all, the current branch is merged to the
you the SHA1 of each commit. Once you’ve found the com- current branch!). Make sure you exclude that branch from an-
mit you rebased away, you can run git checkout <SHA1> to ything destructive (or if you forgot to, see tip #12 to learn how
check out that commit, copy any information you need, and the reflog can help you get your branch back, hopefully...)
run git checkout HEAD to return to the most recent commit
in the branch. That’s all folks!
Hopefully at least one of these tips has taught you something
13. Cleaning up after yourself new about Git, a 13-year-old project that’s continuing to in-
Whoops! It turns out my basic math skills aren’t quite up to novate and add new features. What’s your favorite Git trick?
the same level as my Git ones. Git was originally released in
2005, which means it turned 13 this year, not 12. To make up Links
for the mistake, here’s a 13th tip to bring us up to a baker’s [1] https://git-scm.com/
dozen [5]. [2] https://en.wikipedia.org/wiki/INI_file
If you use a branching-based workflow, overtime on a [3] https://gitlab.com/
long-lived project, unless you’re fastidious about cleaning [4] https://en.wikipedia.org/wiki/Secure_Hash_Algorithms
up as each branch is merged, eventually you will end up [5] https://en.wikipedia.org/wiki/Dozen#Baker's_dozen
with a bunch of branches. This can make finding a branch
of interest difficult, and you won’t be able to see the forest Author
for the... branches, if you will. Even worse, if you have a John is the VP of Technology for Infinity Interactive, a tech-
number of active branches in play, it can be really tedious to nology consultancy and bespoke software development
figure out whether a branch has been merged (and can be shop. When he’s not madly trying to keep up with the pace
safely deleted) or if it still remains unmerged and should be of change in Javascript development, maintaining Perl mod-
left alone. Fortunately, Git has your back here: Just run git ules, or tweaking his Emacs config, he likes to play around
branch --merged to get a list of branches that have been with new languages like Swift and write about himself in the
merged into your current branch, or git branch --merged third person.
Open Source Yearbook 2018 . CC BY-SA 4.0 . Opensource.com 73
OLD SCHOOL .............. ..
.............
Happy birthday, GNOME:
8 reasons to love this
Linux desktop
by Jay LaCroix
On GNOME’s 21st birthday, we highlight some of the features we enjoy the most.
GNOME has been my favorite desktop environment
[1] for quite some time. While I always
make it a point to check out other environments from time
cause I am perfectly fine with stock-GNOME with no exten-
sions whatsoever. However, having the ability to add a few
things here and there, is welcome. GNOME features vari-
to time, there are some aspects of the GNOME desktop that ous extensions to do things such as add a weather display
are hard to live without. While there are many great desktop to your panel, and much more. This adds a level of custom-
environments out there, GNOME [2] feels like home to me. ization that is not typical of other environments. That said,
Here are some of the features I enjoy most about GNOME. proceed with caution. Sometimes extensions are of varying
quality and may lead to stability issues. I find though that
Stability if you only install extensions you absolutely need, and you
Having a stable working environment is the most important make sure they’re kept up to date (and aren’t abandoned
aspect of a desktop for me. After all, the feature set of an by the developer) you’ll generally be in good shape.
environment doesn’t matter at all if it crashes constantly
and you lose work. For me, GNOME is rock-solid. I have Activities overview
heard of others experiencing crashes and instability, but it Activities overview is quite possibly the easiest feature to
always seems to be due to either the user running GNOME use in GNOME, and it’s barely detailed enough to justify its
on unsupported hardware own section in this article.
or due to faulty extensions However, when I use oth-
(more on that later). On my er desktop environments, I
end, I run GNOME primarily miss this feature the most.
on hardware that is known The thing is, I am very
to be well-supported in Linux busy, with multiple projects
(System76 [3], for example). going on at any one time,
I also have a few systems and dozens of different win-
that are not as well support- dows open. To access the
ed (a custom-built desktop activities overview, I simply
and a Dell Latitude laptop), press the Super key. Im-
and I actually don’t have any mediately, my workspace is
issues there either. For me, “zoomed out” and I see all
GNOME is rock-solid. I have of my windows side-by-side.
compared stability in other well-known desktop environ- This is often a faster way to locate a window that is hidden
ments, and I had unfortunate results. Nothing comes close behind others, and a good way overall to see what exactly
to GNOME when it comes to stability. is running on any given workspace.
When using other desktop environments, I will often find
Extensions myself pressing the Super key out of habit, only to remember
I really enjoy being able to add additional functionality to my that I’m not using GNOME at the time. There are ways of
environment. I don’t necessarily require any extensions, be- achieving similar behavior in other environments (such as
74 Open Source Yearbook 2018 . CC BY-SA 4.0 . Opensource.com
installing and tweaking Compiz), but in GNOME this feature a virtual machine before deploying to another environ-
is built-in. ment is great. Sure, you can do the exact same thing in
VirtualBox, and VirtualBox is a great piece of software.
Dynamic workspaces However, Boxes is built right into GNOME, and desktop
While working, I am not sure up-front how many workspaces environments generally don’t offer their own solution for
I will need. Sometimes I can be working on three projects at virtualization.
a time, or as many as ten. With most desktop environments,
I can access the settings screen and add or remove work- GNOME Music
spaces as needed. But with GNOME, I have exactly as many While I work, I have difficulty tuning out noise in my envi-
workspaces as I need at any given time. Every time I open ronment. Therefore, I like to listen to music while I complete
applications on a workspace, I am given another blank one projects and tune out the rest of the world. GNOME’s Music
that I can switch to in order to start another project. Typically, app is very simplistic and works very well. With most of the
I keep all windows related to a specific project on their own music industry gravitating toward streaming music online,
workspace, so it makes it very easy to locate my workflow and many once-popular open source music players [4] be-
for a given project. coming abandoned projects, it’s nice to see GNOME sup-
Other desktop environments have really good implemen- port a built-in music player that can play my music collection.
tations of the concept of workspaces, but GNOME’s imple- It’s great to listen to my music collection while I work, and it
mentation works best for me. helps me zone-in to what I am doing.
Simplicity GNOME Games
Another thing I love about GNOME is that it’s simple and When work is done for the day, it’s time to play! There’s
straight to the point. By default, there is only one panel, and nothing like playing a classic game such as Final Fantasy VI
it’s at the top of the screen. This panel shows you a small or Super Metroid after a hard day’s work. The thing is, I am
amount of information, such as the date, time, and bat- a huge fan of classic gaming, and I have 22 working gam-
tery usage. GNOME 2 had two panels, so seeing GNOME ing consoles and somewhere near 1,000 physical games in
stripped down to a single panel is welcome and saves room my collection. But I may not always have a moment to hook
on the screen. Most of the things you don’t need to see all up one of my retro-consoles, so GNOME Games allows me
the time are hidden within the Activities overview, leaving quick-access to emulated versions of my collection. In ad-
you with the maximum amount of screen space for the ap- dition to that, it also works with Libretro cores as well, so
plication(s) you are working on. GNOME just stays out of it seems to me that the developers of this application have
the way and lets you focus on getting your work done, and really thought-out what fans of classic gaming like me are
stays away from fancy widgets and desktop gadgets that just looking for in a frontend for gaming.
aren’t necessary.
In addition, GNOME has really great support for keyboard Links
shortcuts. Most of GNOME’s features I can access without [1]
https://opensource.com/article/18/8/how-navigate-your-
needing to touch my mouse, such as SUPER+Page Up and gnome-linux-desktop-only-keyboard
Super Page Down to switch workspaces, Super+Up arrow to [2]
https://opensource.com/article/17/8/reasons-i-come-back-
maximize windows, etc. In addition, I am able to easily create gnome
my own keyboard shortcuts for all of my favorite applications. [3]
https://opensource.com/article/16/12/open-gaming-news-
december-31
GNOME Boxes [4]
https://opensource.com/article/18/6/open-source-music-
GNOME’s Boxes app is an underrated gem. This utility players
makes it very easy to spin up a virtual machine, which is a
godsend among developers and those that like to test con- Author
figurations on multiple distributions and platforms. With Box- Jay LaCroix is a technologist from Michigan, with a focus on
es, you can spin up a virtual machine at any time, and it will Linux and open-source software. Using Linux since 2002,
even automate the installation process for you. For example, Jay has been a die-hard fan ever since. He is currently a Se-
if you want a new Ubuntu VM, you simply choose Ubuntu as nior Solutions Architect and freelance consultant and enjoys
your desired platform, fill out your username and any related training and empowering others to use Linux and to make
information, and you will have a new Ubuntu VM in a few the most of this amazing software. In his free time, Jay is an
minutes. When you’re done with it, you can power it down author of books such as Linux Mint Essentials, Mastering
or trash it. Linux Network Administration and most recently, Mastering
For me, I do a lot of DevOps-style work as well as sys- Ubuntu Server. In addition, Jay creates instructional Linux
tem administration. Being able to test a configuration on videos at www.learnlinux.tv.
Open Source Yearbook 2018 . CC BY-SA 4.0 . Opensource.com 75
OLD SCHOOL .............. ..
.............
An insider’s look at drafting
the GPLv3 license
by Richard Fontana
On the 11th anniversary of the GPLv3 license, learn about its
lasting contributions to free and open source software.
Last year, I missed the opportunity to write
about the 10th anniversary of
GPLv3 [1], the third version of the GNU General Public Li-
GPLv3 must be understood as the product of an earlier
era of FOSS, the contours of which may be difficult for some
to imagine today. By the beginning of the public drafting pro-
cense. GPLv3 was officially released by the Free Software cess in 2006, Linux and open source were no longer prac-
Foundation (FSF) on June 29, 2007—better known in tech- tically synonymous, as they might have been for casual ob-
nology history as the date Apple launched the iPhone. Now, servers several years earlier, but the connection was much
one year later, I feel some closer than it is now.
retrospection on GPLv3 is Reflecting the profound
due. For me, much of what impact that Linux was al-
is interesting about GPLv3 ready having on the tech-
goes back somewhat further nology industry, everyone
than 11 years, to the public assumed GPL version 2 was
drafting process in which I the dominant open source
was an active participant. licensing model. We were
In 2005, following near- seeing the final shakeout of a
ly a decade of enthusiastic Cambrian explosion of open
self-immersion in free soft- source (and pseudo-open
ware, yet having had little source) business models. A
open source legal experi- frothy business-fueled hype
ence to speak of, I was hired by Eben Moglen to join the surrounded open source (for me most memorably typified
Software Freedom Law Center as counsel. SFLC was then by the Open Source Business Conference) that bears little
outside counsel to the FSF, and my role was conceived as resemblance to the present-day embrace of open source
focusing on the incipient public phase of the GPLv3 drafting development by the software engineering profession. Mic-
process. This opportunity rescued me from a previous ca- rosoft, with its expanding patent portfolio and its competitive
reer turn that I had found rather dissatisfying. Free and open opposition to Linux, was commonly seen in the FOSS com-
source software (FOSS) legal matters would come to be my munity as an existential threat, and the SCO litigation [2] had
new specialty, one that I found fascinating, gratifying, and created a cloud of legal risk around Linux and the GPL that
intellectually rewarding. My work at SFLC, and particularly had not quite dissipated.
the trial by fire that was my work on GPLv3, served as my That environment necessarily made the drafting of
on-the-job training. GPLv3 a high-stakes affair, unprecedented in free software
76 Open Source Yearbook 2018 . CC BY-SA 4.0 . Opensource.com
history. Lawyers at major technology companies and top I have viewed it somewhat differently: Largely because of
law firms scrambled for influence over the license, con- its complexity and baroqueness, GPLv3 was a lost oppor-
vinced that GPLv3 was bound to take over and thoroughly tunity to create a strong copyleft license that would appeal
reshape open source and all its massive associated busi- very broadly to modern individual software authors and
ness investment. corporate licensors. I believe individual developers today
A similar mindset existed within the technical community; it tend to prefer short, simple, easy to understand, minimal-
can be detected in the fears expressed in the final paragraph ist licenses, the most obvious example of which is the MIT
of the Linux kernel developers’ momentous September 2006 License [5].
denunciation [3] of GPLv3. Those of us close to the FSF Some corporate decisionmakers around open source
knew a little better, but I think we assumed the new license license selection may naturally share that view, while
would be either an overwhelming success or a resounding others may associate some parts of GPLv3, such as the
failure—where “success” meant something approximat- patent provisions or the anti-lockdown requirements, as
ing an upgrade of the existing GPLv2 project ecosystem to too risky or incompatible with their business models. The
GPLv3, though perhaps without the kernel. The actual out- great irony is that the characteristics of GPLv3 that fail
come was something in the middle. to attract these groups are there in part because of con-
I have no confidence in attempts to measure open source scious attempts to make the license appeal to these same
license adoption, which have in recent years typically been sorts of interests.
used to demonstrate a loss of competitive advantage for How did GPLv3 come to be so baroque? As I have said,
copyleft licensing. My own experience, which is admittedly GPLv3 was the product of an earlier time, in which FOSS
distorted by proximity to Linux and my work at Red Hat, sug- licenses were viewed as the primary instruments of project
gests that GPLv3 has enjoyed moderate popularity as a li- governance. (Today, we tend to associate governance with
cense choice for projects launched since 2007, though most other kinds of legal or quasi-legal tools, such as structur-
GPLv2 projects that existed before 2007, along with their ing of nonprofit organizations, rules around project decision
post-2007 offshoots, remained on the old license. (GPLv3’s making, codes of conduct, and contributor agreements.)
sibling licenses LGPLv3 and AGPLv3 never gained com- GPLv3, in its drafting, was the high point of an optimis-
parable popularity.) Most of the existing GPLv2 projects tic view of FOSS licenses as ambitious means of private
(with a few notable exceptions like the kernel and Busybox) regulation. This was already true of GPLv2, but GPLv3
were licensed as “GPLv2 or any later version.” The techni- took things further by addressing in detail a number of
cal community decided early on that “GPLv2 or later” was a new policy problems—software patents, anti-circumven-
politically neutral license choice that embraced both GPLv2 tion laws, device lockdown. That was bound to make the
and GPLv3; this goes some way to explain why adoption of license longer and more complex than GPLv2, as the FSF
GPLv3 was somewhat gradual and limited, especially within and SFLC noted apologetically in the first GPLv3 rationale
the Linux community. document [6].
During the GPLv3 drafting process, some expressed con- But a number of other factors at play in the drafting of
cerns about a “balkanized” Linux ecosystem, whether be- GPLv3 unintentionally caused the complexity of the license
cause of the overhead of users having to understand two to grow. Lawyers representing vendors’ and commercial us-
different, strong copyleft licenses or because of GPLv2/ ers’ interests provided useful suggestions for improvements
GPLv3 incompatibility. These fears turned out to be entirely from a legal and commercial perspective, but these often
unfounded. Within mainstream server and workstation Linux took the form of making simply worded provisions more ver-
stacks, the two licenses have peacefully coexisted for a de- bose, arguably without net increases in clarity. Responses to
cade now. This is partly because such stacks are made up of feedback from the technical community, typically identifying
separate units of strong copyleft scope (see my discussion loopholes in license provisions, had a similar effect.
of related issues in the container setting [4]). As for incom- The GPLv3 drafters also famously got entangled in a
patibility inside units of strong copyleft scope, here, too, the short-term political crisis—the controversial Microsoft/No-
prevalence of “GPLv2 or later” was seen by the technical vell deal [7] of 2006—resulting in the permanent addition of
community as neatly resolving the theoretical problem, de- new and unusual conditions in the patent section of the li-
spite the fact that nominal license upgrading of GPLv2-or- cense, which arguably served little purpose after 2007 other
later to GPLv3 hardly ever occurred. than to make license compliance harder for conscientious
I have alluded to the handwringing that some of us FOSS patent-holding vendors. Of course, some of the complexity
license geeks have brought to the topic of supposed copyleft in GPLv3 was simply the product of well-intended attempts
decline. GPLv3 has taken its share of abuse from critics as to make compliance easier, especially for community proj-
far back as the beginning of the public drafting process, and ect developers, or to codify FSF interpretive practice. Fi-
some, predictably, have drawn a link between GPLv3 in par- nally, one can take issue with the style of language used
ticular and GPL or copyleft disfavor in general. in GPLv3, much of which had a quality of playful parody or
Open Source Yearbook 2018 . CC BY-SA 4.0 . Opensource.com 77
OLD SCHOOL .............. ..
.............
mockery of conventional software license legalese; a sim- are done. It is no longer acceptable for such licenses to be
pler, straightforward form of phrasing would in many cases revised entirely in private, without opportunity for comment
have been an improvement. from the community and without efforts to consult key stake-
The complexity of GPLv3 and the movement towards holders. The drafting of MPL 2.0 and, more recently, EPL 2.0
preferring brevity and simplicity in license drafting and reflects this new norm.
unambitious license policy objectives meant that the sub-
stantive text of GPLv3 would have little direct influence Links
on later FOSS legal drafting. But, as I noted with surprise [1] https://www.gnu.org/licenses/gpl-3.0.en.html
and delight [8] back in 2012, MPL 2.0 adapted two parts of [2] https://en.wikipedia.org/wiki/SCO%E2%80%93Linux_
GPLv3: the 30-day cure and 60-day repose language from disputes
the GPLv3 termination provision, and the assurance that [3] https://lwn.net/Articles/200422/
downstream upgrading to a later license version adds no [4] https://opensource.com/article/18/1/containers-gpl-and-
new obligations on upstream licensors. copyleft
The GPLv3 cure language has come to have a ma- [5] https://opensource.org/licenses/MIT
jor impact, particularly over the past year. Following the [6] http://gplv3.fsf.org/gpl-rationale-2006-01-16.html
Software Freedom Conservancy’s promulgation, with the [7] https://en.wikipedia.org/wiki/Novell#Agreement_with_
FSF’s support, of the Principles of Community-Oriented Microsoft
GPL Enforcement [9], which calls for extending GPLv3 [8] https://opensource.com/law/12/1/the-new-mpl
cure opportunities to GPLv2 violations, the Linux Foun- [9] https://sfconservancy.org/copyleft-compliance/principles.
dation Technical Advisory Board published a statement html
[10], endorsed by over a hundred Linux kernel develop- [10] https://www.kernel.org/doc/html/v4.16/process/kernel-
ers, which incorporates verbatim the cure language of enforcement-statement.html
GPLv3. This in turn was followed by a Red Hat-led se- [11] https://www.redhat.com/en/about/press-releases/
ries of corporate commitments [11] to extend the GPLv3 technology-industry-leaders-join-forces-increase-
cure provisions to GPLv2 and LGPLv2.x noncompliance, predictability-open-source-licensing
a campaign to get individual open source developers to [12] https://www.redhat.com/en/blog/gpl-cooperation-
extend the same commitment, and an announcement by commitment-and-red-hat-projects?source=author&te
Red Hat that henceforth GPLv2 and LGPLv2.x projects it rm=26851
leads will use the commitment language directly in project
repositories. I discussed these developments in a recent Author
blog post [12]. Richard is Senior Commercial Counsel on the Products and
One lasting contribution of GPLv3 concerns changed ex- Technologies team in Red Hat’s legal department. Most of
pectations for how revisions of widely-used FOSS licenses his work focuses on open source-related legal issues.
78 Open Source Yearbook 2018 . CC BY-SA 4.0 . Opensource.com
.................... OLD SCHOOL
Revisiting the
Unix philosophy in 2018
by Michael Hausenblas
The old strategy of building small, focused applications is new
again in the modern microservices environment.
In 1984, Rob Pike and Brian W. Kernighan published an
article called “Program Design in the Unix
Environment [1]” in the AT&T Bell Laboratories Technical
Unit of execution
The unit of execution in *nix (such as Linux) is an execut-
able file (binary or interpreted script) that, ideally, reads in-
Journal, in which they argued the Unix philosophy, using the put from stdin and writes output to stdout. A microservices
example of BSD’s cat -v implementation. In a nutshell that setup deals with a service that exposes one or more com-
philosophy is: Build small, focused programs—in whatever munication interfaces, such as HTTP or gRPC APIs. In both
language—that do only one thing but do this thing well, com- cases, you’ll find stateless examples (essentially a purely
municate via stdin/stdout, and are connected through pipes. functional behavior) and stateful examples, where, in ad-
Sound familiar? dition to the input, some internal (persisted) state decides
Yeah, I thought so. That’s pretty much the definition of mi- what happens.
croservices [2] offered by James Lewis and Martin Fowler:
Data flow
In short, the microservice architectural style is Traditionally, *nix programs could communicate via pipes. In
an approach to developing a single application other words, thanks to Doug McIlroy [3], you don’t need to
as a suite of small services, each running in its create temporary files to pass around and each can process
own process and communicating with lightweight virtually endless streams of data between processes. To my
mechanisms, often an HTTP resource API. knowledge, there is nothing comparable to a pipe standard-
ized in microservices, besides my little Apache Kafka-based
While one *nix program or one microservice may be very experiment from 2017 [4].
limited or not even very interesting on its own, it’s the combi-
nation of such independently working units that reveals their Configuration and parameterization
true benefit and, therefore, their power. How do you configure a program or service—either on a
permanent or a by-call basis? Well, with *nix programs
*nix vs. microservices you essentially have three options: command-line argu-
The following table compares programs (such as cat or lsof) ments, environment variables, or full-blown config files.
in a *nix environment against programs in a microservices In microservices, you typically deal with YAML (or even
environment. worse, JSON) documents, defining the layout and config-
*nix Microservices
Unit of execution program using service with HTTP
stdin/stdout or gRPC API
Data flow Pipes ?
Configuration & Command-line JSON/YAML docs
parameterization arguments, envi-
ronment variables,
config files
Discovery Package manager, DNS, environment
man, make variables, OpenAPI
Let’s explore each line in slightly greater detail.
Open Source Yearbook 2018 . CC BY-SA 4.0 . Opensource.com 79
OLD SCHOOL .............. ..
.............
uration of a single microservice as well as dependencies Global state
and communication, storage, and runtime settings. Ex- While it may not be such a big issue for *nix programs, in mi-
amples include Kubernetes resource definitions [5], No- croservices, global state remains something of a discussion.
mad job specifications [6], or Docker Compose [7] files. Namely, how to make sure the local (persistent) state is man-
These may or may not be parameterized; that is, either aged effectively and how to make the global state consistent
you have some templating language, such as Helm [8] in with as little effort as possible.
Kubernetes, or you find yourself doing an awful lot of sed
-i commands. Wrapping up
In the end, the question remains: Are you using the right tool
Discovery for a given task? That is, in the same way a specialized *nix
How do you know what programs or services are available program implementing a range of functions might be the bet-
and how they are supposed to be used? Well, in *nix, you ter choice for certain use cases or phases, it might be that a
typically have a package manager as well as good old man; monolith is the best option [18] for your organization or work-
between them, they should be able to answer all the ques- load. Regardless, I hope this article helps you see the many,
tions you might have. In a microservices setup, there’s a strong parallels between the Unix philosophy and microser-
bit more automation in finding a service. In addition to be- vices—maybe we can learn something from the former to
spoke approaches like Airbnb’s SmartStack [9] or Netflix’s benefit the latter.
Eureka [10], there usually are environment variable-based
or DNS-based approaches [11] that allow you to discov- Links
er services dynamically. Equally important, OpenAPI [12] [1] http://harmful.cat-v.org/cat-v/
provides a de-facto standard for HTTP API documentation [2] https://martinfowler.com/articles/microservices.html
and design, and gRPC [13] does the same for more tightly [3] https://en.wikipedia.org/wiki/Douglas_McIlroy
coupled high-performance cases. Last but not least, take [4] https://speakerdeck.com/mhausenblas/distributed-named-
developer experience (DX) into account, starting with writ- pipes-and-other-inter-services-communication
ing good Makefiles [14] and ending with writing your docs [5] http://kubernetesbyexample.com/
with (or in?) style [15]. [6] https://www.nomadproject.io/docs/job-specification/index.
html
Pros and cons [7] https://docs.docker.com/compose/overview/
Both *nix and microservices offer a number of challenges [8] https://helm.sh/
and opportunities [9] https://github.com/airbnb/smartstack-cookbook
[10] https://github.com/Netflix/eureka
Composability [11] https://kubernetes.io/docs/concepts/services-networking/
It’s hard to design something that has a clear, sharp fo- service/#discovering-services
cus and can also play well with others. It’s even harder [12] https://www.openapis.org/
to get it right across different versions and to introduce [13] https://grpc.io/
respective error case handling capabilities. In microser- [14] https://suva.sh/posts/well-documented-makefiles/
vices, this could mean retry logic and timeouts—maybe [15] https://www.linux.com/news/improve-your-writing-gnu-
it’s a better option to outsource these features into a ser- style-checkers
vice mesh? It’s hard, but if you get it right, its reusability [16] https://opencensus.io/
can be enormous. [17] https://opentracing.io/
[18] https://robertnorthard.com/devops-days-well-architected-
Observability monoliths-are-okay/
In a monolith (in 2018) or a big program that tries to do it all
(in 1984), it’s rather straightforward to find the culprit when Author
things go south. But, in a Michael is a Developer Advocate for Kubernetes and Open-
Shift at Red Hat where he helps appops to build and operate
yes | tr \\n x | head -c 450m | grep n apps. His background is in large-scale data processing and
container orchestration and he’s experienced in advoca-
or a request path in a microservices setup that involves, cy and standardization at W3C and IETF. Before Red Hat,
say, 20 services, how do you even start to figure out which Michael worked at Mesosphere, MapR and in two research
one is behaving badly? Luckily we have standards, notably institutions in Ireland and Austria. He contributes to open
OpenCensus [16] and OpenTracing [17]. Observability still source software incl. Kubernetes, speaks at conferences
might be the biggest single blocker if you are looking to and user groups, and shares good practices around cloud
move to microservices. native topics via blog posts and books.
80 Open Source Yearbook 2018 . CC BY-SA 4.0 . Opensource.com
.................... OLD SCHOOL
The oldest, active Linux distro,
Slackware, turns 25
by Ben Cotton
Slackware boasts a unique history and a loyal user base.
Patrick Volkerding didn’t set out
to create a
Linux distribution. He just wanted to simplify the process of
The different take on ease of use isn’t the only thing unique
about Slackware. It also does not have a public bug tracker,
code repository, or well-defined method of community contri-
installing and configuring Softlanding Linux System [1]. But bution. Volkerding and a small team of contributors maintain
when SLS didn’t pick up his improvements, Volkerding de- the tree in a rolling release called “-current” and publish a re-
cided to release his work as Slackware [2]. On July 17, 1993, lease when it meets the feature and stability goals they’ve set.
he announced version 1.0. A quarter century and 30-plus As the oldest distro around, Slackware has been very
versions later, Slackware influential. The earliest re-
is the oldest actively main- leases of SUSE Linux [3]
tained Linux distribution. were based on Slackware,
For many early Linux us- and distributions such as
ers, Slackware was their Arch Linux [4] can be seen
introduction. One user told as philosophical heirs to
me her first Linux install Slackware. And while its
was Slackware—and she popularity may have fallen
had to use a hex editor to over the years—the slightly
fix the partition tables so younger Debian [5] has 10x
that Slackware would in- the number of subscribers
stall. Support for her hard- on its sub-Reddit, for ex-
ware was added in a later ample—it remains an active
release. Another got his project with a loyal fan base.
start building the data center that would power one of the So happy 25th birthday, Slackware, and here’s to 25 more!
first internet-enabled real estate sites. In the mid-1990s,
Slackware was one of the easiest distributions to get and Links
didn’t require a lot of effort to get IP masquerading to work [1] https://en.wikipedia.org/wiki/Softlanding_Linux_System
correctly. A third person mentioned going to sleep while a [2] http://www.slackware.com/
kernel compile job ran, only to find out it had failed when [3] https://en.wikipedia.org/wiki/SUSE_Linux_Enterprise
he woke up. [4] https://www.archlinux.org/
All of these anecdotes would suggest a hard-to-use op- [5] https://www.debian.org/
erating system. But Slackware fans don’t see it that way.
The project’s website says the two top priorities are “ease Author
of use and stability.” For Slackware, “ease of use” means Ben Cotton is a meteorologist by training, but weather makes
simplicity. Slackware does not include a graphical installer. a great hobby. Ben works as a the Fedora Program Manag-
Its package manager does not perform any dependency er at Red Hat. He co-founded a local open source meetup
resolution. This can be jarring for new users, particularly group, and is a member of the Open Source Initiative and a
within the last few years, but it also enables a deeper un- supporter of Software Freedom Conservancy. Find him on
derstanding of the system. Twitter (@FunnelFiasco) or at FunnelFiasco.com.
Open Source Yearbook 2018 . CC BY-SA 4.0 . Opensource.com 81
Future
.............. ..
.............
Top 8 Python conferences
to attend in 2019
by Nicholas Hunt-Walker
Resolve to expand your Python knowledge and network at these events.
There are a lot of reasons to go to tech
conferences [1], and
even more of a reason to go to a conference focused spe-
The talks cover topics from software development to data
science and machine learning. Often, speakers will also talk
about developer-adjacent topics, such as developing emo-
cifically on your chosen programming language. My favorite tional intelligence as developers and better ways to build en-
is Python [2]. gineering communities. There’s a Game Night/After Party on
Rather than rehash all the various reasons why confer- the Saturday and the conference provides some program-
ences are great and you should attend, I’ll go right into which ming education through its Young Coders program.
Python conferences you might want to show up to in 2019. This conference is a nonprofit event facilitated by TechFed
Nashville, an organization with the mission to support and
PyTennessee grow grassroots tech talent in Tennessee through education-
• Conference homepage [3] al events and groups.
• Twitter [4]
• Dates: February 9-10, 2019 PyCascades
• Location: Nashville, Tennessee • Conference homepage [5]
• Registration: Open; $100 individual, $200 corporate • Twitter [6]
• YouTube [7]
Started in 2014, PyTennessee is an annual regional confer- • Dates: February 23-24, 2019
ence held every February in Tennessee. It features much • Location: Seattle, Washington
of what you’d expect from a conference: keynotes, regular • Registration: Open; $82.57 student, $110.10 individual,
speakers, tutorials, and some company exhibitions. $220.20 corporate
PyCascades debuted this year in Vancouver, BC, Canada,
as a regional PyCon in the Pacific Northwest. Its organizing
team includes members from Python user groups in Van-
couver, Seattle, and Portland. I’m quite partial to this event,
as I was able to give the talk that spurred my first posts to
Opensource.com [8]!
Last year’s conference was fairly small, with final sales
peaking just under 400 people. The 2019 iteration in Seattle
is set for a larger guest list, but the general feel of a small
regional conference is still the goal.
Like PyTennessee, the talks encompass a variety of skill
levels (beginner to advanced) as well as technical topics
82 Open Source Yearbook 2018 . CC BY-SA 4.0 . Opensource.com
(web dev, device dev, tech education, data science, and ma- PyOhio is unique in one sense because it’s the only event
chine learning). Last year’s conference also featured several on this list that’s completely free. The organizers ask for do-
talks on tech-adjacent topics like understanding racial bias in nations, but there’s no barrier to entry if you can’t manage
your software and navigating unconscious bias in your per- one. It’s also special in that, while they do have corporate
sonal and professional interactions. sponsors, there are no exhibitors.
One of the big differences at PyCascades is that there is PyOhio is all about the talks and sprints. The evening be-
no dedicated Q&A portion for any talk (at least there wasn’t fore the conference’s two days of talks and tutorials, there’s
last year). There are instead breaks after each talk where an opening reception with sprints, with more sprints at the
speakers can engage directly with people who have ques- end of the first day. The talks are the same variety of Py-
tions or comments while the next speakers prep to begin thon-focused presentations that we’ve come to know and
their talks. love, featuring speakers from all over.
The talks occur in a single track, eliminating the need to On its own, it’s a great conference to attend. It’s even bet-
make tough decisions about which to attend and which to ter if your budget for conference attendances is tight but you
leave behind. Last year, it finished with a day of sprints, still want to be part of the community.
where participants gathered together to collaborate on
and push changes to various Python-focused open source DjangoCon
projects. • Conference homepage [15]
• Twitter [16]
PyCon US • YouTube [17]
• Conference homepage [9] • Dates: September 22-27, 2019
• Twitter [10] • Location: TBD
• YouTube (2018) [11] • Registration: Not open yet; 2018’s fees were: $295 dis-
• Dates: May 1-9, 2019 counted, $595 individual, $795 corporate, $195 per tutorial
• Location: Cleveland, Ohio While the name may imply a strong focus on the Python
• Registration: Open; $125 student, $400 individual, $700 web framework Django, DjangoCon also includes a fair bit of
corporate, $150 per tutorial content that appeals to all Python developers. It is still very
PyCon is the big Python conference that brings Pythonis- strong on Django and features tutorials, talks, and sprints for
tas together from around the US and often from around the the framework and its related packages and practices.
world. While the regional conferences may last two or three The first day is filled with 3.5-hour tutorials at various lev-
days, PyCon exceeds a week, with a variety of events and els. The next three days feature keynotes and two talk tracks
workshops—talks are only a small bit. about various topics in Django and Python development.
Prior to the three main days of talks and keynotes that If you’re on the job hunt, this is a great time to meet com-
typically define a conference, PyCon features two days of tu- panies with interest in Django enthusiasts. If you’re hiring,
torials on a variety of Python projects that often are given by you can find Django users at all levels everywhere you turn.
the creators or maintainers of the projects. During the main The last two days feature sprints, where you can work
conference days, there are dozens of talks organized by top- alongside many project maintainers and team leaders in the
ic, a massive exposition hall for conference sponsors and Django community.
vendors often looking to hire or educate about their prod-
ucts and services, an academic poster session, a dedicated PyGotham
job fair, and a benefit auction. The final four days are full of • Conference homepage [18]
sprints on various projects that are looking to attract devel- • Twitter [19]
opers of all experience levels. • YouTube (2018) [20]
All in all, PyCon is a great place to learn about new prod- • Dates (likely): Early October 2019
ucts and techniques, teach others from your own experi- • Location: New York City
ence, and meet dozens of new people at all experience lev- • Registration: Not open yet; 2018’s fees were: $75 academ-
els throughout the world of Python development. ic, $200 individual, $300 corporate
Founded in 2011 and based in New York City, PyGotham
PyOhio features two full days of talks and social events for Python
• Conference homepage [12] enthusiasts of all types. This conference is focused heavily
• Twitter [13] on the talks, with no sprints or exhibitors to speak of. There
• YouTube [14] are tutorials, but they’re specifically for young coders (age
• Dates: July 27-28, 2019 10 and older).
• Location: Columbus, Ohio The talk topics range across all types of Python topics, from
• Registration: Open; Free! web dev, to natural language processing, to testing, to Python
Open Source Yearbook 2018 . CC BY-SA 4.0 . Opensource.com 83
Future
.............. ..
.............
fundamentals. If you attend PyGotham, you’ll be getting a great Links
dose of useful tricks and great lessons about the language. [1] https://opensource.com/life/16/2/attending-technical-
conferences-whats-big-deal
North Bay Python [2] https://www.python.org/
• Conference homepage [21] [3] https://www.pytennessee.org/
• Twitter [22] [4] https://twitter.com/PyTennessee
• YouTube [23] [5] https://2019.pycascades.com/
• Dates (likely): Early November 2019 [6] https://twitter.com/pycascades
• Location: Petaluma, California [7] https://www.youtube.com/channel/
• Registration: Not open yet; 2018’s fees were: $50 individ- UCtWI06j1EADmEOGj2iJhSyA
ual, $100 individual supporter, $200 corporate, $500 indi- [8] https://opensource.com/users/nhuntwalker
vidual sponsor [9] https://us.pycon.org
North Bay Python is a two-day, single-track, nonprofit Python [10] https://twitter.com/pycon
conference held in downtown Petaluma, California. Its goal [11] https://www.youtube.com/channel/UCsX05-
is to appeal to every type of Python user, from students to 2sVSH7Nx3zuk3NYuQ
field experts. Like PyCascades, it’s a fairly small conference; [12] https://www.pyohio.org
2018’s event hosted about 400 attendees. [13] https://twitter.com/pyohio
The conference features over 20 sessions from experi- [14] https://www.youtube.com/channel/
enced presenters hailing from across the US and other coun- UCYqdrfvhGxNW3vXebypqXoQ
tries speaking on a wide mix of topics. Sessions include up- [15] https://djangocon.us
dates from leading Python community members on the state [16] https://twitter.com/djangocon
of major projects, technical explorations of how Python and [17] https://www.youtube.com/channel/
Python-based systems work in practice, and thought-provok- UC0yY6a79pPY9J0ShIHRf6yw
ing explorations and lessons about people-focused, tech-ad- [18] https://pygotham.org
jacent topics like team development, diversity and inclusion, [19] https://twitter.com/PyGotham
and communication skills. [20] https://www.youtube.com/channel/
UCTse88P9vOnsMaovjNl1YBA
PyData [21] https://northbaypython.org/
• Conference homepage [24] [22] https://twitter.com/northbaypython
• Twitter [25] [23] https://www.youtube.com/channel/
• YouTube [26] UCLc1vUexbRTlRBJcUG9U6ug
• Dates: Various [27] (next one is Jan. 9-11, 2019) [24] https://pydata.org/
• Location: Various (next one is in Miami) [25] https://twitter.com/PyData
• Registration: Open (Miami); $85 student, $235 individual [26] https://www.youtube.com/channel/
While the other conferences on this list range across various UCOjD18EJYcsBog4IozkF_7w
areas of Python software development, PyData is specifi- [27] https://pydata.org/events/
cally geared toward users and developers of data analysis [28] https://opensource.com/article/18/12/top-2019-conferences
tools. The global PyData network promotes discussions of
best practices, new approaches, and emerging technologies Author
for data management, processing, analytics, and visualiza- Nicholas Hunt-Walker is a software developer at Starbucks’
tion. In its focus on all things data, this conference also in- department of Emerging Technology. His specialty is in using
cludes other languages big in analytics, such as R and Julia. Python for development, but he dabbles heavily in JavaS-
The upcoming event in Miami has a specific call for pre- cript as well. Formerly a graduate student in astronomy at
sentations addressing some of the concerns and strengths the University of Washington, he studied the structure of our
of South Florida, including climate and weather modeling, galaxy by looking at the positions and properties of evolved
ecological data, civic data science, digital humanities, and stars before using his skills as a scientist to dip into data
biomedical data. science. Driven by curiosity and the possibility of building
See our list of 40 top Linux and open source conferences something cool and interesting, Hunt-Walker loves web/
in 2019 [28] for more upcoming events to attend. Are you software development because it offers a blank canvas, and
proposing a talk for a 2019 event? Maybe the topic would data analysis because it gives him the opportunity to be cu-
also make a great article for Opensource.com. Send your rious in a structured and systematic way while also learning
story idea to us at open@opensource.com. something new. Email him at nhuntwalker@gmail.com.
84 Open Source Yearbook 2018 . CC BY-SA 4.0 . Opensource.com
.................... Future
40 top Linux and open
source conferences in 2019
by Rikki Endsley
We’ve rounded up a few favorite picks for conferences to attend in 2019.
Every year Opensource.com editors, writers, and
readers attend open source-relat-
ed conferences and events hosted around the world. As we
and mobile where FLOSS communities sync, share, and
hack on upstream projects together.
started planning our 2019 schedules, we rounded up a few FOSDEM [6]
top picks for the year. Brussels, Belgium
Which conferences do you plan to attend in 2019? If you February 2 – 3, 2019
don’t see your conference on this list, be sure to add it to our FOSDEM is a free event for software developers to meet,
community conference calendar [1]. (And for more events to share ideas, and collaborate.
attend, check out The Enterprisers Project [2] list of business
leadership conferences worth exploring in 2019 [3].) PyCon Namibia 2019 [7]
Are you proposing a talk for a 2019 event? Maybe the topic Windhoek, Namibia
would also make a great article for Opensource.com. Send February 19 – 22, 2019
your story idea to us at open@opensource.com. Check the Namibia’s international open source software conference re-
links at the bottom of this page for lots of examples from turns for its fifth edition.
2018 events.
PyCascades 2019 [8]
linux.conf.au (LCA) [4] Seattle, WA, USA
Christchurch, New Zealand February 23 – 25, 2019
January 21 – 25, 2019 PyCascades is a two-day Python conference held in the sce-
The Linux of Things-themed event will explore the use of nic coastal city of Seattle, Washington (USA).
free open source software and hardware for internet of
things devices, along with security concerns, privacy, and
legal aspects, environmental impacts, everyday communi-
cation, health, ethics, and more.
DevConf.cz [5]
Brno, Czechia
January 25 – 27, 2019
A free Red Hat-sponsored community conference for devel-
opers, admins, DevOps engineers, testers, documentation
writers and other contributors to open source technologies
such as Linux, middleware, virtualization, storage, cloud,
Open Source Yearbook 2018 . CC BY-SA 4.0 . Opensource.com 85
Future
.............. ..
.............
SCALE 17x [9] FLISoL [16]
Pasadena, CA, USA Locations across Latin America
March 7 – 10, 2019 April 27, 2019
SCaLE is the largest community-run open-source and free Annual Latin American free software installation festival
software conference in North America. It is held annually in
the greater Los Angeles area. OpenStack Summit [17]
Denver, CO, USA
Open Source Leadership Summit [10] April 29 – May 5, 2019
Half Moon Bay, CA, USA In addition to OpenStack-related sessions, the event fea-
March 12 – 14, 2019 tures Kata Containers, Ansible, Ceph, Kubernetes, ONAP,
The Linux Foundation’s Open Source Leadership Summit is and more projects. Featured topics include CI/CD, container
where industry leaders convene to drive digital transforma- infrastructure, edge computing, HPC/GPU/AI, open source
tion with open source technologies and learn how to collab- community, private and hybrid cloud, public cloud, telecom
oratively manage the largest shared technology investment and NFV.
of our time.
PyCon USA [18]
Chemnitzer Linux-Tage [11] Cleveland, OH, USA
Chemnitz, Germany May 1 – 9, 2019
March 16 – 17, 2019 The PyCon 2019 conference, which will take place in Cleve-
Annual Linux and free (libre) software event land, is the largest annual gathering for the community using
and developing the open-source Python programming lan-
NetDev [12] guage. It is produced and underwritten by the Python Soft-
Prague, Czech Republic ware Foundation, the 501(c)(3) nonprofit organization dedi-
March 20 – 22, 2019 cated to advancing and promoting Python.
Netdev 0x13 is a conference of the netdev community, by the
netdev community, for the netdev community. The focus is Red Hat Summit 2019 [19]
on Linux kernel networking and user space utilization of the Boston, MA, USA
interfaces to the Linux kernel networking subsystem. May 7 – 9, 2019
Red Hat Summit is an open source technology event to
PyCon SK 2019 [13] showcase the latest and greatest in cloud computing, plat-
Bratislava, Slovakia form, virtualization, middleware, storage, and systems man-
March 22 – 25, 2019 agement technologies.
The PyCon SK 2019 conference, which will take place in
Bratislava, is the annual gathering for the community using Libre Graphics Meeting [20]
and developing the open source Python programming lan- Saarbruecken, Germany
guage. It is organized by the volunteers from the SPy o.z., May 29 – June 2, 2019
civic association dedicated to advancing and promoting Py- The Libre Graphics Meeting (LGM) is an annual meeting on
thon and other open source technologies and ideas. free and open source software for graphics.
LibrePlanet [14] OSCON [21]
Boston, MA, USA Portand, OR, USA
March 23 – 24, 2019 July 15 – 18, 2019
LibrePlanet is an annual conference hosted by the Free Soft- OSCON focuses on leading-edge software develop-
ware Foundation for free software enthusiasts and anyone ment incorporating AI, cloud technology, and distributed
who cares about the intersection of technology and social computing.
justice.
Open Source Summit Japan [22]
Open edX [15] Tokyo, Japan
San Diego, CA, USA July 17 – 19, 2019
March 26 – 29, 2019 Open Source Summit Japan is a conference for technolo-
The Open edX Conference is produced in collaboration with gists and open source industry leaders to collaborate and
the Open edX community to discuss topics such as the Open share information, learn about the latest in open source tech-
edX learning platform, new research in online learning best nologies and find out how to gain a competitive advantage
practices, and new approaches to collaborative learning. by using innovative open solutions.
86 Open Source Yearbook 2018 . CC BY-SA 4.0 . Opensource.com
GopherCon USA [23] Embedded Recipes [30]
San Diego, CA, USA Paris, France
July 24 – 27, 2019 Dates: TBD
North American event dedicated to the Go programming The open source embedded conference
language
EuroPython [31]
PyCon AU 2019 [24] Location: TBD
Sydney, Australia Dates: TBD
August 2 – 7, 2019 The European Python Conference
PyCon Australia (PyCon AU) is the national conference for
the Python Programming Community, bringing together pro- FISL 19 [32]
fessional, student, and enthusiast developers with a love for Porto Alegre, Brazil
developing with Python. Dates: TBD
International free software conference
Open Source Summit North America [25]
San Diego, CA, USA GopherCon BR [33]
August 21 – 23, 2019 Florian—polis, Brazil
Open Source Summit is a conference for developers, Dates: TBD
architects and other technologists—as well as open Latin American event dedicated to the Go programming language
source community and industry leaders—to collaborate,
share information, learn about the latest technologies, Kernel Recipes [34]
and gain a competitive advantage by using innovative Paris, France
open solutions. Dates: TBD
Informal conference about the Linux kernel
All Things Open [26]
Raleigh, NC, USA LatinoWare 16 [35]
October 13 – 15, 2019 Foz do Iguaçu, Brazil
A conference exploring open source, open tech and open Dates: TBD
web in the enterprise Latin American FOSS conference
LISA19 [27] LVEE [36]
Portland, OR, USA Grodno, Belarus
October 28 – 30, 2019 Dates: TBD
LISA is the premier conference for operations professionals, International conference of developers and users of free /
where sysadmins, systems engineers, IT operations profes- open source software
sionals, SRE practitioners, developers, IT managers, and
academic researchers share real-world knowledge about Ohio Linux Fest [37]
designing, building, securing, and maintaining the critical Columbus, OH, USA
systems of our interconnected world. Dates: TBD
The Ohio LinuxFest is a grassroots conference for the GNU/Li-
KubeCon+CloudNativeCon [28] nux/Open Source Software/Free Software community that start-
San Diego, CA, USA ed in 2003 as a large inter-LUG (Linux User Group) meeting and
November 18 – 21, 2019 has grown steadily since. It is a place for the community to gather
The Cloud Native Computing Foundation’s flagship confer- and share information about Linux and Open Source Software.
ence gathers adopters and technologists from leading open
source and cloud native communities. Open Hardware Summit [38]
Location: TBD
Devopsdays [29] Dates: TBD
Location: Around the world The Open Hardware Summit is the annual conference orga-
Dates: Year-round nized by the Open Source Hardware Association a 501(c)(3)
Devopsdays is a worldwide series of technical conferences not for profit charity. It is the world’s first comprehensive con-
covering topics of software development, IT infrastructure ference on open hardware; a venue and community in which
operations, and the intersection between them. Each event we discuss and draw attention to the rapidly growing Open
is run by volunteers from the local area. Source Hardware movement.
Open Source Yearbook 2018 . CC BY-SA 4.0 . Opensource.com 87
Future
.............. ..
.............
ORConf [39] [9] https://www.socallinuxexpo.org/scale/17x
City TBD, Europe [10] https://events.linuxfoundation.org/events/open%20source-
Dates: TBD leadership-summit-2019/
ORConf is an annual conference for open source digital, semi- [11] https://chemnitzer.linux-tage.de/2019/en
conductor and embedded systems designers and users. [12] https://netdevconf.org/0x13/
[13] https://2019.pycon.sk/en/
OWASP AppSec EU [40] [14] https://libreplanet.org/2019/
City TBD, Europe [15] https://con.openedx.org/
Dates: TBD [16] https://flisol.info/
An application security conference for European developers [17] https://www.openstack.org/summit/denver-2019/
and security experts [18] https://us.pycon.org/2019/
[19] https://www.redhat.com/en/summit/2019
SeaGL [41] [20] https://libregraphicsmeeting.org/2019/
Seattle, WA, USA [21] https://conferences.oreilly.com/oscon/oscon-or
Dates: TBD [22] https://events.linuxfoundation.org/events/open-source-
SeaGL is a grassroots technical conference dedicated to summit-japan-2019/
spreading awareness and knowledge about the GNU/Linux [23] https://www.gophercon.com/
community and free/libre/open-source software/hardware. [24] https://2019.pycon-au.org/
[25] https://events.linuxfoundation.org/events/open-source-
SouthEast LinuxFest [42] summit-2019/
Charlotte, NC, USA [26] https://allthingsopen.org/
Dates: TBD [27] https://www.usenix.org/conference/lisa19
The SouthEast LinuxFest is a community event for anyone [28] https://events.linuxfoundation.org/events/kubecon-
who wants to learn more about Linux and open source Soft- cloudnativecon-north-america-2019/
ware. It is part educational conference and part social gath- [29] https://www.devopsdays.org/
ering. Like Linux itself, it is shared with attendees of all skill [30] https://embedded-recipes.org/2018/
levels to communicate tips and ideas, and to benefit all who [31] https://ep2018.europython.eu/en/
use Linux and open source Software. [32] http://fisl18.softwarelivre.org/index.php/en/
[33] https://2018.gopherconbr.org/
OWASP AppSec USA [43] [34] https://kernel-recipes.org/en/2018/
City TBD, USA [35] https://latinoware.org/
Dates: TBD [36] https://lvee.org/en/main
An application security conference for developers and secu- [37] https://ohiolinux.org/
rity experts [38] https://www.oshwa.org/
[39] https://orconf.org/
2018 conference-inspired articles include: [40] https://2018.appsec.eu/
[41] https://seagl.org
All Things Open [44] [42] http://www.southeastlinuxfest.org/
LISA18 [45] [43] https://2018.appsecusa.org/
OpenStack Summit [46] [44] https://opensource.com/tags/all-things-open
OSCON [47] [45] https://opensource.com/tags/lisa
Red Hat Summit [48] [46] https://opensource.com/tags/openstack-summit
[47] https://opensource.com/tags/oscon
Links [48] https://opensource.com/tags/red-hat-summit
[1] https://opensource.com/resources/conferences-and-
events-monthly Author
[2] https://enterprisersproject.com Rikki Endsley is a community architect and editor for
[3] https://enterprisersproject.com/article/2018/11/business- Opensource.com. In the past, she worked as the commu-
leadership-conferences-worth-exploring-2019 nity evangelist on the Open Source and Standards (OSAS)
[4] https://linux.conf.au/ team at Red Hat; a freelance tech journalist; community man-
[5] https://devconf.info/cz ager for the USENIX Association; associate publisher of Linux
[6] https://fosdem.org/2019/ Pro Magazine, ADMIN, and Ubuntu User; and as the man-
[7] https://na.pycon.org/ aging editor of Sys Admin magazine and UnixReview.com.
[8] https://2019.pycascades.com/ Follow her on Twitter at: @rikkiends.
88 Open Source Yearbook 2018 . CC BY-SA 4.0 . Opensource.com
.................... Future
5
resolutions for
open source project
maintainers
by Ben Cotton
No matter how you say it, good communication is essential to strong open source communities.
I’m generally not big on New Year’s res-
olutions. I have no problem
with self-improvement, of course, but I tend to anchor around
something that defines how you want your community to be-
have, whatever that looks like. Once it’s written down and
enforced, people can decide for themselves if it looks like the
other parts of the calendar. Even so, there’s something about kind of community they want to be a part of.
taking down this year’s free calendar and replacing it with
next year’s that inspires some introspection. 2. Make the license clear and specific
In 2017, I resolved to not share articles on social media You know what really stinks? Unclear licenses. “This soft-
until I’d read them. I’ve kept to that pretty well, and I’d like ware is licensed under the GPL” with no further text doesn’t
to think it has made me a better citizen of the internet. For tell me much. Which version of the GPL [3]? Do I get to
2019, I’m thinking about resolutions to make me a better pick? For non-code portions of a project, “licensed under a
open source software maintainer. Creative Commons license” is even worse. I love the Cre-
Here are some resolutions I’ll try to stick to on the projects ative Commons licenses [4], but there are several different
where I’m a maintainer or licenses with significantly
co-maintainer. different rights and obliga-
tions. So, I will make it very
1. Include a code of clear which variant and ver-
conduct sion of a license applies to
Jono Bacon included “not en- my projects. I will include the
forcing the code of conduct” in full text of the license in the
his article “7 mistakes you’re repo and a concise note in
probably making [1].” Of the other files.
course, to enforce a code of Sort of related to this is using
conduct, you must first have an OSI-approved license [5].
a code of conduct. I plan on It’s tempting to come up with
defaulting to the Contributor a new license that says ex-
Covenant [2], but you can use whatever you like. As with actly what you want it to say, but good luck if you ever
licenses, it’s probably best to use one that’s already written need to enforce it. Will it hold up? Will the people using
instead of writing your own. But the important thing is to find your project understand it?
Open Source Yearbook 2018 . CC BY-SA 4.0 . Opensource.com 89
Future
.............. ..
.............
3. Triage bug reports and questions quickly project is unnecessary because its functionality got ab-
Few things in technology scale as poorly as open source sorbed into a larger project. Maybe I’m just tired of it. But
maintainers. Even on small projects, it can be hard to find it’s unfair to the community (and potentially dangerous, as
the time to answer every question and fix every bug. But the recent event-stream malware injection [7] showed) to
that doesn’t mean I can’t at least acknowledge the person. leave a project in limbo. Maintainers have the right to walk
It doesn’t have to be a multi-paragraph reply. Even just away whenever and for whatever reason, but it should be
labeling the GitHub issue shows that I saw it. Maybe I’ll clear that they have.
get to it right away. Maybe I’ll get to it a year later. But it’s
important for the community to see that, yes, there is still Links
someone here. [1] https://opensource.com/article/17/8/mistakes-open-
source-avoid
4. Don’t push features or bug fixes without [2] https://www.contributor-covenant.org/
accompanying documentation [3] https://opensource.org/licenses/gpl-license
For as much as my open source contributions over the [4] https://creativecommons.org/share-your-work/licensing-
years have revolved around documentation, my projects types-examples/
don’t reflect the importance I put on it. There aren’t many [5] https://opensource.org/
commits I can push that don’t require some form of docu- [6] http://Opensource.com
mentation. New features should obviously be documented [7] https://arstechnica.com/information-technology/2018/11/
at (or before!) the time they’re committed. But even bug hacker-backdoors-widely-used-open-source-software-to-
fixes should get an entry in the release notes. If nothing steal-bitcoin/
else, a push is a good opportunity to also make a commit to
improving the docs. Author
Ben Cotton is a meteorologist by training, but weather makes
5. Make it clear when I’m abandoning a project a great hobby. Ben works as a the Fedora Program Manag-
I’m really bad at saying “no” to things. I told the editors I’d er at Red Hat. He co-founded a local open source meetup
write one or two articles for Opensource.com [6] and here group, and is a member of the Open Source Initiative and a
I am almost 60 articles later. Oops. But at some point, the supporter of Software Freedom Conservancy. Find him on
things that once held my interests no longer do. Maybe the Twitter (@FunnelFiasco) or at FunnelFiasco.com.
90 Open Source Yearbook 2018 . CC BY-SA 4.0 . Opensource.com