DOKK Library

Open Source Yearbook 2018

Authors opensource.com

License CC-BY-SA-4.0

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/QmXoypizjW3WknFiJnKL​wHCnL72​
  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