<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Blogs</title><link>https://jwheel.org/blog/</link><description>Homepage of Justin Wheeler, an Open Source contributor and Free Software advocate from Georgia, USA.</description><generator>Hugo -- gohugo.io</generator><language>en-us</language><managingEditor>Justin Wheeler</managingEditor><lastBuildDate>Tue, 07 Apr 2026 08:00:00 +0000</lastBuildDate><atom:link href="https://jwheel.org/rss/blog/index.xml" rel="self" type="application/rss+xml"/><item><title>One Day</title><link>https://jwheel.org/blog/2026/04/one-day/</link><pubDate>Tue, 07 Apr 2026 08:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2026/04/one-day/</guid><description><![CDATA[<p>It has been a minute.
If you look at <a href="/blog/">my blog archives</a>, my last post went up <a href="/blog/2024/08/infra-amp-releng-hackfest-fedora-flock-2024/">in 2024</a>.
Recently, I decided it was time for a massive digital renovation: I completely migrated this blog from WordPress to Hugo using my own theme.</p>
<p>Fortunately, I was able to meet my one key requirement.
The migration was a complete one-to-one pairing from WordPress to Hugo.
Every post I wrote between 2015 and 2024 made the jump intact.
Even the images and URL schema!
You can go back, browse the archives, and read a decade&rsquo;s worth of my written word in my new site.
Best of all, every old URL for my WordPress blog will seamlessly redirect to the new home here.</p>
<p>But I didn&rsquo;t just move the content; I also built a custom Hugo theme from the ground up.
(Because of course I did.)
I began <a href="https://github.com/justwheel/toph-hugo-theme">working on the theme</a> over a year ago for my own site (this very one!).
Originally I developed the code inside my own website, but eventually, I moved the theme code into its own repository in June 2025.
However, I spent a lot of time in March working on my theme, giving it a solid structure for blogging, and turning it into something highly functional.
I confess that AI was significantly used in improving my Hugo theme.
It was my first time ever using an AI agent to do something outside of a browser.
For various reasons, I chose to work with Claude AI for this project, and it helped me accomplish clearly-defined milestones in my mind since a long time.
I wanted to create a theme that was still useful for me, but had the broad appeals of any basic blogging tool or engine out there today.
And I believe I achieved that together with AI assistance, my pedantic review patterns, and OCD-like obsession for my design vision.
My hope is that eventually, more people than just me could benefit from it.</p>
<p>Of course, a beautifully optimized, custom-themed blog is still just an empty vessel if you don&rsquo;t write.
And to say a lot has happened in my life since 2024 would be an understatement.
The last twenty-three months had much to teach me in holding profound grief and incredible joy at the same time.</p>

<h2 id="the-hardest-goodbyes">The Hardest Goodbyes&nbsp;<a class="hanchor" href="#the-hardest-goodbyes" aria-label="Anchor link for: The Hardest Goodbyes">🔗</a></h2>
<p>The heaviest reality of this past year was a prolonged season of caregiving that culminated in back-to-back losses.
Right before Christmas in December 2023, my mother was diagnosed with cholangiocarcinoma, better known as bile duct cancer.
Throughout 2024, my sister and I walked alongside her through her cancer journey, doing everything we could to support her.
Alongside this, my maternal grandmother’s health was steadily declining due to the onset of dementia.</p>
<p>The emotional and physical toll of managing both of their needs is why I spent so much time away from work throughout 2025, and why my availability became so unpredictable.
Ultimately, we faced an unimaginable timeline: my mother passed away in September 2025, and then one month later, in October 2025, my grandmother also passed.</p>
<p>Toward the end of 2025, after they were both gone, I slowly but steadily began the process of climbing out and getting caught up on everything.
Throughout all of this, my sister was my absolute rock.
Even now, my sister and I are still dealing with the long-term ripple effects and the heavy administrative burden of navigating probate court and managing an estate.
Walking through this long, heavy aftermath as partners with my sister means everything to me.
I could not navigate this season of life without her.</p>

<h2 id="finding-home-across-an-ocean">Finding &ldquo;Home&rdquo; Across an Ocean&nbsp;<a class="hanchor" href="#finding-home-across-an-ocean" aria-label="Anchor link for: Finding &ldquo;Home&rdquo; Across an Ocean">🔗</a></h2>
<p>On the opposite end of the emotional spectrum, my life expanded in the best way possible: I married the love of my life and muse of my soul.
In November 2025, my wife and I began the next chapter of life together.
She is currently living and working in Germany.
Most of the time since then is spent navigating the unique complexities of our union
This includes what is usually a simple question for most married couples: where to live.</p>
<p>Because international immigration is a notoriously slow and complex machine, our life is currently a transatlantic hybrid.
Right now, while I permanently reside in Georgia, USA, my time is shuffled between the USA, being with my wife in Germany, and traveling for work.</p>
<p>While we are managing the distance for now, our biggest ongoing project is my official relocation to Germany.
The exact timeline is fluid, but our hope &amp; prayer is to celebrate the winter holidays in Germany together this year as residents.
I look forward to sharing more about this process as it unfolds.
(Including any potential trauma of migrating from temperate, warm Georgia to somewhere much colder most of the year.)</p>

<h2 id="the-weight-of-context-switching">The Weight of Context Switching&nbsp;<a class="hanchor" href="#the-weight-of-context-switching" aria-label="Anchor link for: The Weight of Context Switching">🔗</a></h2>
<p>Between the flights, the time zones, and <a href="/categories/red-hat/">my day job at Red Hat</a> supporting <a href="/categories/fedora/">Fedora</a>, my brain is regularly forced into a relentless state of context switching.</p>
<p>The &ldquo;Execution Mode&rdquo; I use to navigate probate court, resolving medical bills, and executing an estate actually uses the exact same back-office muscles I use to manage budgets and plan events for Fedora.
The hardest part lately was not lack of passion, but the sheer volume of threads I am holding.
I am constantly shifting gears between my work at Red Hat and Fedora, then to coordinating international immigration, and dealing with the immediate reality of life—like trying to figure out when a technician can fix the broken outdoor air-conditioning unit at my house in the middle of a workday.</p>
<p>If you have noticed me working odd, irregular, or even borderline unhealthy hours lately, that is why.
Work is not necessarily an escape from the grief; it is one engine that keeps me moving.
So, that is a part of my coping mechanism.
But feeling spread this thin has also been a wake-up call that I need to delegate more, reduce the number of hats I am wearing, and focus on delivering deeper, higher-quality work on fewer things.</p>

<h2 id="the-anchor-and-the-code">The Anchor and The Code&nbsp;<a class="hanchor" href="#the-anchor-and-the-code" aria-label="Anchor link for: The Anchor and The Code">🔗</a></h2>
<p>When I am dropping plates and feeling completely drained, someone might wonder why I keep showing up to work.
For me, it was always about Fedora.
I do not mean this as a humble brag, because I understand it is not this way for everyone.
But for me, Fedora was always more than a paycheck; Fedora is the people and community bonds.
Getting to build a <strong>free</strong> and <strong>Open Source</strong> operating system that aligns with my values, alongside a community I genuinely love, is what anchors me here.</p>
<p>That same drive to build and organize is the same reason why I took on this massive blog migration.
Occasionally, I have some deep-seated OCD-like tendencies.
Creating structure is another way how I cope with a world that often feels entirely out of my control.
During my mother&rsquo;s and grandmother&rsquo;s health declines, the volume of incoming paperwork was overwhelming.
It was an endless stream of letters, bills, hospital discharge packets, and insurance statements.</p>
<p>To manage it, I <em>accidentally</em> built a massive, semantic digital library.
I ended up purchasing one of the best Linux-compatible HP digital scanners on the market to handle the influx of paper.
I became incredibly efficient at scanning stacks of paper, writing rules to sort and filter emails, sorting and categorizing PDFs, and developing strict file-naming patterns so everything was easily searchable.
It sounds novel, but keeping the physical paper stacks from taking over my own space gave me a tangible sense of peace.
So, organizing the things I <em>can</em> control gives me the confidence to leap in and handle the chaotic, uncontrollable moments when they arrive.</p>
<p>Plus, if I am being completely honest, I am exhausted from the WordPress ecosystem altogether.
I held significant anticipation for canceling my expensive WordPress hosting service and various other subscriptions and fees tied to running WordPress.
However, what I did not expect to find while working on this project was a spark of joy for creation that I did not feel in a long time.
My childhood and adolescence were filled with a curious desire to make things that were helpful and useful.
This is perhaps what nudged me in the direction of computer science and information technology, because these were domains I could understand.
I confess feeling mixed emotions that this rediscovery of joy for creation was mixed with AI assistance.
Yet at the same time, this is a project that was on my list since several years, and &ldquo;pays off&rdquo; a lot of technical debt.
I look forward to maintaining and hosting my website here, and rediscovering my writing voice.
(And I can use Vim to write blog posts now too, hooray!)</p>
<p>My creative engineering spark is still very much alive.</p>

<h2 id="taking-it-one-day-at-a-time">Taking it One Day at a Time&nbsp;<a class="hanchor" href="#taking-it-one-day-at-a-time" aria-label="Anchor link for: Taking it One Day at a Time">🔗</a></h2>
<p>It has been twenty-three months of extreme migrations—digital, geographical, and emotional.
The dust is not all settled yet, and I am still finding my steady footing.
But now that my new blog engine is finally running, I am excited to share more of the journey, the code, and whatever else comes next.</p>
<p>(One more yak shaved.)</p>
]]></description></item><item><title>Infra &amp; Releng Hackfest @ Fedora Flock 2024</title><link>https://jwheel.org/blog/2024/08/infra-amp-releng-hackfest-fedora-flock-2024/</link><pubDate>Thu, 22 Aug 2024 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2024/08/infra-amp-releng-hackfest-fedora-flock-2024/</guid><description><![CDATA[<p>This blog post summarizes the discussions and action items from the Infrastructure and Release Engineering workshop held at Flock 2024 in Rochester, New York, USA.</p>
<p>This post is also an experiment in using AI generated summaries to provide useful, at-a-glance summaries of key Fedora topics. Parts of this content may display inaccurate info, including about people, so double-check with the source material.</p>
<p>Source material: <a href="https://discussion.fedoraproject.org/t/report-from-infra-and-releng-hackfest-at-flock2024/128743">discussion.fedoraproject.org/t/report-from-infra-and-releng-hackfest-at-flock2024/128743</a></p>

<h2 id="key-topics"><strong>Key Topics</strong>&nbsp;<a class="hanchor" href="#key-topics" aria-label="Anchor link for: Key Topics">🔗</a></h2>
<ul>
<li>
<p><strong>Standards for OpenShift app deployments:</strong> There&rsquo;s a need for consistency in deploying applications to OpenShift. The group discussed creating best practices documentation and addressing deployment methods across various applications.</p>
</li>
<li>
<p><strong>Infra SIG packages:</strong> The workshop reviewed the &ldquo;infra-sig&rdquo; package group and identified a need to:</p>
<ul>
<li>
<p>Find owners for orphaned packages.</p>
</li>
<li>
<p>Onboard new maintainers using Packit.</p>
</li>
<li>
<p>Remove inactive members from the group.</p>
</li>
</ul>
</li>
<li>
<p><strong>Release engineering packages:</strong> The group agreed to add a list of release engineering packages to the infra-sig for better management.</p>
</li>
<li>
<p><strong>Proxy network:</strong> Discussion about potentially migrating the proxy network from httpd to nginx or gunicorn remained inconclusive. Further discussion is needed.</p>
</li>
<li>
<p><strong>AWS management with Ansible:</strong> The feasibility of managing AWS infrastructure with Ansible is uncertain due to limitations with the main Amazon account.</p>
</li>
<li>
<p><strong>Onboarding improvements:</strong> The group discussed ways to improve the onboarding process for new contributors, including documentation updates, marketing efforts, and &ldquo;Hello&rdquo; days after each release.</p>
</li>
<li>
<p><strong>OpenShift apps deployment info:</strong> A tutorial on deploying applications to OpenShift was presented and will be incorporated into the documentation.</p>
</li>
<li>
<p><strong>Future considerations:</strong> The group discussed upcoming challenges like GitLab Forge migration, Bugzilla migration, and a new Matrix server.</p>
</li>
<li>
<p><strong>Retiring wiki pages:</strong> The group needs to decide where to migrate user-facing documentation from the wiki. Additionally, someone needs to review and archive/migrate/delete existing wiki pages in the &ldquo;<a href="https://fedoraproject.org/wiki/Category:Infrastructure">Category:Infrastructure</a>&rdquo; section.</p>
</li>
<li>
<p><strong>Datagrepper access for CommOps:</strong> A solution was proposed to provide CommOps with access to community metrics data by setting up a separate database in AWS RDS and populating it with recent Datagrepper dumps.</p>
</li>
<li>
<p><strong>ARA in infrastructure:</strong> While AWX deployment offers similar reporting features, setting up ARA remains an option if someone has the time and interest.</p>
</li>
<li>
<p><strong>AWX deployment:</strong> Roadblocks related to the public/private Ansible repository structure were identified. A proof of concept using AWX will be pursued to determine if repository restructuring is necessary.</p>
</li>
<li>
<p><strong>Zabbix integration:</strong> The group discussed moving forward with Zabbix to replace Nagios. Action items include setting up a bot channel for alerts, adjusting alerts based on comparison with Nagios, and considering an upgrade to the next LTS version.</p>
</li>
</ul>

<h2 id="action-items"><strong>Action Items</strong>&nbsp;<a class="hanchor" href="#action-items" aria-label="Anchor link for: Action Items">🔗</a></h2>
<ul>
<li>
<p>Create comments in each application playbook explaining its deployment method.</p>
</li>
<li>
<p>Move all apps using deploymentconfig to deployment with OpenShift 4.16.</p>
</li>
<li>
<p>Look into deploying Advanced Cluster Security (ACS) for improved visibility into container images.</p>
</li>
<li>
<p>Create a &ldquo;best practices&rdquo; guide for deploying applications in OpenShift clusters.</p>
</li>
<li>
<p>Find individuals interested in helping with orphaned packages and onboarding new maintainers for the infra-sig package group.</p>
</li>
<li>
<p>Create a list of release engineering packages for inclusion in the infra-sig.</p>
</li>
<li>
<p>Continue discussions on migrating the proxy network and managing AWS infrastructure with Ansible.</p>
</li>
<li>
<p>Update onboarding documentation, implement marketing strategies for attracting contributors, and organize &ldquo;Hello&rdquo; days for new members.</p>
</li>
<li>
<p>Archive/migrate/delete wiki pages in the &ldquo;Category:Infrastructure&rdquo; section.</p>
</li>
<li>
<p>Work on tickets to set up a separate database for CommOps Datagrepper access.</p>
</li>
<li>
<p>Investigate the feasibility of setting up ARA in infrastructure.</p>
</li>
<li>
<p>Stand up a proof of concept for AWX deployment and discuss potential repository restructuring.</p>
</li>
<li>
<p>Set up a Zabbix bot channel for alerts, adjust alerts based on comparisons with Nagios, and consider upgrading to the next LTS version.</p>
</li>
</ul>
<p><strong>Overall, the workshop was a success, with productive discussions and a clear list of action items to move forward.</strong></p>
<p><strong>Note:</strong> The workshop lacked remote participation due to network limitations. The source material encourages readers to express interest in helping with the action items.</p>]]></description></item><item><title>Outreachy May 2024: A letter to Fedora applicants</title><link>https://jwheel.org/blog/2024/05/outreachy-may-2024-letter-fedora-applicants/</link><pubDate>Thu, 02 May 2024 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2024/05/outreachy-may-2024-letter-fedora-applicants/</guid><description><![CDATA[<p><em>To all Outreachy May 2024 applicants to the Fedora Project</em>,</p>
<p>Today is May 2nd, 2024. The Outreachy May 2024 round results will be published in a few short hours. This year, the participation in Fedora for Outreachy May 2024 was record-breaking. <a href="https://jwfblog.wpenginepowered.com/category/foss/fedora/">Fedora</a> will fund three internships this year. During the application and contribution phase, over 150 new contributors appeared in our Mentored Project contribution channels. For the project I am mentoring specifically, 38 applicants recorded contributions and 33 applicants submitted final applications. This is my third time mentoring, but this Outreachy May 2024 round has been a record-breaker for all the projects I have mentored until now.</p>
<p>But breaking records is not what this letter is about.</p>
<p>This day can be either enormously exciting and enormously disappointing. It is a tough day for me. There are so many Outreachy applicants who are continuing to contribute after the final applications were due. I see several applicants from my project who are contributing across the Fedora community, and actually leveling up to even bigger contributions than the application period. It is exciting to see people grow in their confidence and capabilities in an <a href="https://jwfblog.wpenginepowered.com/category/foss/">Open Source community</a> like Fedora. Mentoring is a rewarding task for me, and I feel immensely proud of the applicants we have had in the Fedora community this round.</p>
<p>But the truth is difficult. Fedora has funding for three interns, hard and simple. Hard decisions have to be made. If I had unlimited funding, I would have hired so many of our applicants. But funding is not unlimited. Three people will receive great news today, and most people will receive sad news. Throughout this entire experience in the application phase, I wanted to design me and Joseph Gayoso&rsquo;s project so that even folks who were not selected would have an enriching experience. We wanted to <a href="https://jwfblog.wpenginepowered.com/2024/03/win-win-for-all-outreachy/">put something real in the hands of our applicants</a> at the end. We also wanted to boost their confidence in showing up in a community and guide them on how to roll up your sleeves and get started. Looking at the portfolios that applicants to our project submitted, I admire how far our applicants came since the day that projects were announced. Most applicants never participated in an open source community before. And for some, you would never have known that either!</p>
<p>So, if you receive the disappointing news today, remember that it does not reflect badly on you. The Outreachy May 2024 round was incredibly competitive. <em>Literally</em>, record-breaking. We have to say no to many people who <em>have</em> proved that they have what it takes to be a capable Fedora Outreachy intern. I hope you can look at all the things you learned and built over these past few months, and use this as a step-up to the next opportunity awaiting you. Maybe it is an Outreachy internship in a future round, or maybe it is something else. If there is anything I have learned, it is that life takes us on the most unexpected journeys sometimes. And whatever is meant to happen, will happen. I believe that there is a reason for everything, but we may not realize what that reason is until much later in the future.</p>
<p>Thank you to all of the Fedora applicants who put in immense effort over the last several months. I understand if you choose to stop contributing to Fedora. I hope that you will not be discouraged from open source generally though, and that you will keep trying. If you do choose to continue contributing to Fedora, I promise we will find a place for you to continue on. Regardless of your choice in contributing, keep shining and be persistent. Don&rsquo;t give up easily, and remember that what you learned in these past few months can give a leading edge on that next opportunity waiting around the corner for you.</p>
<p>Freedom, Friends, Features, First!</p>
<p>— Justin</p>]]></description></item><item><title>Win-win for all: How to run a non-engineering Outreachy internship</title><link>https://jwheel.org/blog/2024/03/win-win-for-all-outreachy/</link><pubDate>Thu, 28 Mar 2024 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2024/03/win-win-for-all-outreachy/</guid><description><![CDATA[<p>This year, I am mentoring again with the <a href="https://www.outreachy.org/">Outreachy internship program</a>. It is my third time mentoring for Outreachy and my second time with the <a href="https://jwfblog.wpenginepowered.com/category/fedora/">Fedora Project</a>. However, it is my first time mentoring as a <a href="https://jwfblog.wpenginepowered.com/category/red-hat/">Red Hat</a> associate. What also makes this time different from before is that I am mentoring a non-engineering project with Outreachy. Or in other words, my project does not <em>require</em> an applicant to write any code. Evidently, the internship description was a hook. We received an extremely large wave of applicants literally overnight. Between 40-50 new contributors arrived to the Fedora Marketing Team in the first week. Planning tasks and contributions for beginners already took effort. Scaling that planning work overnight for up to 50 people simultaneously is extraordinarily difficult.</p>
<p>During this round, my co-mentor <a href="https://fedoraproject.org/wiki/User:Joseph">Joseph Gayoso</a> and I experimented with new approaches at handling the tsunami wave. There are two competing forces at play. One, you need to provide engagement to top performers so they remain motivated to continue. Two, you need to provide new opportunities for emerging contributors to distinguish themselves. It is easier to do one of these but hard to do both simultaneously. However, Joseph and I agreed on something important. We agreed that all applicants should end the contribution phase with something practically useful. As mentors, we asked ourselves how to prepare applicants to be successful open source contributors beyond this one month.</p>
<p>In this article, you will get some practical takeaways for mentoring with Outreachy. First, I will share our practical approach for structuring and planning an open source project during the Outreachy contribution phase. Second, I will detail the guiding philosophy Joseph and I follow for how we planned the contribution phase.</p>

<h2 id="about-outreachy">About Outreachy&nbsp;<a class="hanchor" href="#about-outreachy" aria-label="Anchor link for: About Outreachy">🔗</a></h2>
<p>This article assumes you already know a thing or two about the Outreachy internship program. If not, Outreachy provides internships in open source and open science. Outreachy provides internships to people subject to systemic bias and impacted by underrepresentation in the technical industry where they live. You can read more <a href="https://www.outreachy.org/">on the Outreachy website</a>.</p>
<p>What makes Outreachy unique is that the internships are remote and often open without geographic or nationality constraints. Applicants from nearly every continent of the world have participated in Outreachy. Also, Outreachy is distinguished by the <strong>contribution phase</strong>. For a one-month period, approved Outreachy applicants are encouraged to participate in the project community as a contributor. Applicants spend the month learning about the project, the community, the mentors, and the work involved for the internship. This provides applicants an opportunity to grow their open source identity. It also gives mentors an opportunity to assess applicants on their skills and communication abilities.</p>
<p>However, this contribution phase can be intimidating as a mentor, especially if you are new to mentoring with Outreachy. A wave of people eager to contribute could suddenly appear overnight at your project&rsquo;s door steps. If you are not prepared, you will have to adapt quickly!</p>

<h2 id="pre-requisite-tasks-raising-the-outreachy-bar">Pre-Requisite Tasks: Raising the Outreachy bar&nbsp;<a class="hanchor" href="#pre-requisite-tasks-raising-the-outreachy-bar" aria-label="Anchor link for: Pre-Requisite Tasks: Raising the Outreachy bar">🔗</a></h2>
<p>My co-mentor and I knew that a wave of applicants was coming. However, we didn&rsquo;t expect the wave to be as big as it was. After the first week of the contribution phase, we knew we needed a better way to scale ourselves. We were limited in our person-power. The approach we took to addressing the mental overload was defining pre-requisite tasks.</p>
<p>We defined <strong>pre-requisite tasks</strong> as tasks that any applicant <em>MUST</em> complete in order to be considered eligible for our internship. Without completing these tasks, we explained that final applications would <em>not</em> be accepted by mentors. The defining characteristics of these pre-requisite tasks were that they were personalized, repeatable, and measurable. We came up with five pre-requisite tasks that all applicants were required to complete beyond the initial qualification for Outreachy:</p>
<ol>
<li>
<p><a href="https://gitlab.com/fedora/marketing/marketing-planning/-/issues/153">Set up your Fedora Account System (FAS) account</a></p>
</li>
<li>
<p><a href="https://gitlab.com/fedora/marketing/marketing-planning/-/issues/154">Set up a personal blog</a></p>
</li>
<li>
<p><a href="https://gitlab.com/fedora/marketing/marketing-planning/-/issues/155">Write a blog post that introduces the Fedora community to your audience</a></p>
</li>
<li>
<p><a href="https://gitlab.com/fedora/marketing/marketing-planning/-/issues/156">Promote your intro blog post on social media</a></p>
</li>
<li>
<p><a href="https://gitlab.com/fedora/marketing/marketing-planning/-/issues/157">Write an onboarding guide for Outreachy 2025 applicants</a></p>
</li>
</ol>

<h3 id="how-were-initial-contributions-personalized">How were initial contributions personalized?&nbsp;<a class="hanchor" href="#how-were-initial-contributions-personalized" aria-label="Anchor link for: How were initial contributions personalized?">🔗</a></h3>
<p>Each of these tasks were personalized to each applicant. They each have a unique account profile, with their pictures, time zones, and chat system usernames. The personal blog is a personal space on the Internet for each applicant to start writing new posts. The blog post prompts encouraged applicants to start filling up their blogs with Fedora content. The social media post helped applicants promote themselves as budding open source enthusiasts in their existing web spaces.</p>
<p>This approach had two benefits. First, it provided clear guidance to all newcomers and early-stage applicants on how to get started with contributing to Fedora for the Outreachy internship. This took a burden off of mentors answering the same questions about getting started. It also gave new applicants something to start on right away. Joseph and I were able to put more time into reviewing incoming contributions and brainstorming new tasks.</p>

<h2 id="portfolio-driven-submissions-for-outreachy">Portfolio-driven submissions for Outreachy&nbsp;<a class="hanchor" href="#portfolio-driven-submissions-for-outreachy" aria-label="Anchor link for: Portfolio-driven submissions for Outreachy">🔗</a></h2>
<p>Toward the third week, many applicants had completed the pre-requisite tasks and were ready for more advanced tasks. Many had already taken on advanced projects already, beyond the pre-requisite tasks. Although the pre-requisite tasks did reduce the applicant pool, there were still between 20-30 people who completed them all. Again, the approach had to adapt as our ability to keep up with new contributions slowed down.</p>
<p>From here, we encouraged applicants to build personal portfolio pages that described their contributions with Fedora. This encouraged applicants to use the blog they built in the previous tasks, although they are not required to use their blog to host their portfolio. The only requirement we added was that it should be publicly visible on the Internet without a paywall. So, no Google Docs. Most applicants have ended up using their blog for this purpose though.</p>

<h3 id="how-did-a-portfolio-help">How did a portfolio help?&nbsp;<a class="hanchor" href="#how-did-a-portfolio-help" aria-label="Anchor link for: How did a portfolio help?">🔗</a></h3>
<p>Building a portfolio solved multiple challenges for our Outreachy project at once. First, the portfolios will simplify how the project mentors review final applications after the deadline on April 2nd, 2024. It will be streamlined because we will have a single place we can refer to that describes the applicant&rsquo;s achievements. It gives us a quick, easily shareable place to review and share with other stakeholders.</p>
<p>Second, it ends up being something useful to the applicant as well. The portfolio page captures a month&rsquo;s worth of contributions to open source. For many applicants, this is their first time ever interacting with an open source community online. So, it is a big deal to block out a month of time to volunteer on a project in a competitive environment for a paid, remote internship opportunity. Writing a portfolio page gives applicants the confidence to represent their contributions to Fedora, regardless of whether they are selected for the Fedora internship. It becomes a milestone marker for themselves and for their professional careers.</p>

<h2 id="our-philosophy-you-win-we-win">Our philosophy: You win, we win.&nbsp;<a class="hanchor" href="#our-philosophy-you-win-we-win" aria-label="Anchor link for: Our philosophy: You win, we win.">🔗</a></h2>
<p>This idea of applicants building something that is useful for themselves underpins the approach that Joseph and I took on structuring our non-engineering Outreachy internship. If I had to summarize the philosophy in one sentence, it might be like this:</p>
<blockquote>
<p>Everyone who participants as an Outreachy applicant to Fedora should finish the contribution phase with more than they had at the start of the contribution phase.</p>
<p>myself</p>
</blockquote>
<p>Our philosophy can be applied to engineering and non-engineering internships. However, applying the philosophy to our non-engineering project required improvisation as we went. There are examples of design-centered Outreachy internships, but I have not seen a marketing or community manager internship before. This was a challenge because there were not great models to follow. But it also left us room to innovate and try ideas that we have never tried before.</p>
<p>Adopting this philosophy served as helpful guidance on planning what we directed applicants to do during the contribution phase. It allowed us to think through ways that applicants could make real, recognizable contributions to Fedora. It also enables applicants to achieve a few important outcomes:</p>
<ol>
<li>
<p>Get real experience in a real project.</p>
</li>
<li>
<p>Build their own brand as open source contributors.</p>
</li>
<li>
<p>Gain confidence at collaborating in a community.</p>
</li>
</ol>
<p>The contribution phase is not yet over. So, we will continue to follow this philosophy and see where it guides us into the end of this phase!</p>

<h2 id="share-your-outreachy-mentoring-experience">Share your Outreachy mentoring experience!&nbsp;<a class="hanchor" href="#share-your-outreachy-mentoring-experience" aria-label="Anchor link for: Share your Outreachy mentoring experience!">🔗</a></h2>
<p>Have you experienced or seen a marketing or community manager internship in Outreachy before? Know a project or a person who has done this? Or is this totally new to you? Drop a comment below with your thoughts. Don&rsquo;t forget to share with someone else if you found this advice useful.</p>]]></description></item><item><title>this moment</title><link>https://jwheel.org/blog/2024/03/this-moment/</link><pubDate>Mon, 25 Mar 2024 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2024/03/this-moment/</guid><description><![CDATA[<p><em>A short poem that I was inspired to write after a short drive running errands, and I was absorbed momentarily into the beauty of the natural world around me. Read more of <a href="https://jwfblog.wpenginepowered.com/category/poems/">my poetry</a> on my blog.</em></p>
<hr>
<p>The media report this season is warmer,<br>
The scientists discover the planet is hotter,<br>
While glaciers slide into the sea.</p>
<p>It is the birth of spring,<br>
After a dark, lonely winter,<br>
Yet the warmth is not warming.</p>
<p>In this moment,<br>
The spring in March comes like the summer in May,<br>
Leaving this July to the imagination.</p>
<p>A shiver of emotions,<br>
Ripples from my brain down my spine,<br>
As I wonder of the future.</p>
<p>But as I drive forward with bright blue skies overhead,<br>
The world erupting in the color and life of an early spring,<br>
My worried mind is suddenly soothed.</p>
<p>Yes,<br>
The world is warmer, the planet is hotter,<br>
And there is so much that we must all do.</p>
<p>Yet in this moment, I feel a peace,<br>
Surrounded in the fragrance of spring flowers,<br>
As the warm sun gently caresses my face.</p>
<p>Joy is an ingredient for enlightened action,<br>
It fills my goblet full of passion and zest,<br>
And suggests to me my true motivations.</p>
<p>In this moment, I am here,<br>
One with the breath of the wind,<br>
Dissolved into the colors of the spring afternoon.</p>
<p>In this moment, I am here,<br>
And I am reminded,<br>
To never let despair rob me of my joy.</p>
<hr>
<p><em>Photo by <a href="https://unsplash.com/@julianhochgesang?utm_content=creditCopyText&amp;utm_medium=referral&amp;utm_source=unsplash">Julian Hochgesang</a> on <a href="https://unsplash.com/photos/empty-raod-UmM372f0yuU?utm_content=creditCopyText&amp;utm_medium=referral&amp;utm_source=unsplash">Unsplash</a>. Modified by Justin Wheeler. CC BY-SA 4.0.</em></p>]]></description></item><item><title>Eventually for eternity.</title><link>https://jwheel.org/blog/2024/02/eventually-eternity/</link><pubDate>Tue, 27 Feb 2024 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2024/02/eventually-eternity/</guid><description><![CDATA[<p><em>A poem to describe love from a constantly suspended state of waiting and wonder. Read more of <a href="https://jwfblog.wpenginepowered.com/category/poems/">my poetry</a> on my blog.</em></p>
<hr>
<p>The air carries a breeze,<br>
In from the eastward-facing window.<br>
The breeze carries whispers and secrets of the night,<br>
Into the ear, mind, &amp; soul.</p>
<p>A stolen moment is clearly crystallized,<br>
In the cavity of consciousness.<br>
The stolen moment seeps to the soul,<br>
Filling it with wonder &amp; dreams.</p>
<p>The breeze gently carries your essence,<br>
And the stolen moment,<br>
Promises <em>eventually for eternity</em>.</p>
<hr>
<p><em>Photo by <a href="https://unsplash.com/@ryan_hutton_?utm_content=creditCopyText&amp;utm_medium=referral&amp;utm_source=unsplash">Ryan Hutton</a> on <a href="https://unsplash.com/photos/worms-eye-view-of-trees-during-night-time-Jztmx9yqjBw?utm_content=creditCopyText&amp;utm_medium=referral&amp;utm_source=unsplash">Unsplash</a>. Modified by Justin Wheeler, CC BY-SA 4.0.</em></p>]]></description></item><item><title>Storytelling: 2023 was a quiet blog year. In 2024, I recommit to storytelling.</title><link>https://jwheel.org/blog/2023/12/2023-quiet-2024-theme-storytelling/</link><pubDate>Sun, 31 Dec 2023 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2023/12/2023-quiet-2024-theme-storytelling/</guid><description><![CDATA[<p>2023 is almost over. It was a busy year. When I was a student, I used to write about what I was learning. But after finishing my studies, I stopped writing regularly. Now I want to focus on the future and adopt a storytelling theme for 2024. This post summarizes my intentions of committing to storytelling.</p>

<h2 id="about-adopting-a-theme">about adopting a theme&nbsp;<a class="hanchor" href="#about-adopting-a-theme" aria-label="Anchor link for: about adopting a theme">🔗</a></h2>
<p>Recently, <a href="https://fedoraproject.org/wiki/User:Joseph">Joseph Gayoso</a> from the Fedora Marketing Team <a href="https://discussion.fedoraproject.org/t/marketing-team-2024-targets-and-yearly-theme/100087">proposed the idea</a> of the <a href="https://docs.fedoraproject.org/en-US/marketing/">Fedora Marketing Team</a> adopting a theme for 2024. Together with the below <a href="https://youtu.be/NVGuFdX5guE">video explainer</a>, I felt his explanation was also convincing for the Team.</p>
<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
      <iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube-nocookie.com/embed/NVGuFdX5guE?autoplay=0&amp;controls=1&amp;end=0&amp;loop=0&amp;mute=0&amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"></iframe>
    </div>

<blockquote>
<p><strong>YouTube</strong>: <em>Your Theme</em>. CGP Grey. Premiered 26 January 2020.</p>
</blockquote>
<p>But it was not only good advice for the team. I tend to avoid resolutions for as a new year tradition. But I recognize change as something that can happen independent from January 1st. That is where the role of an annual theme comes into focus. It offers a flexible framework with wide guideposts. I can choose how to measure my success. Working from a theme provides me a clear way to measure incremental progress while also enabling me to feel tangible accomplishments along the journey.</p>
<p>So, if I could commit to one theme, what would it would be? It would have to be something that I believe in.</p>

<h2 id="storytelling-is-my-theme">storytelling is my theme&nbsp;<a class="hanchor" href="#storytelling-is-my-theme" aria-label="Anchor link for: storytelling is my theme">🔗</a></h2>
<p>I admire storytelling <a href="https://jwfblog.wpenginepowered.com/tag/writing/">since a long time</a>. I admire its flexibility to be simple yet powerful. It is flexible because there are multiple forms of storytelling. Storytelling can be defined in a literal sense and a metaphorical sense.</p>
<p>In a literal sense, storytelling is the telling of stories. Telling could mean written, spoken, or shown. Stories could mean almost any expression of human experience that fits into a timeline with a plot. Therefore, storytelling is creatively sharing a human experience with others.</p>
<p>In the metaphorical sense, storytelling connects communities. Stories represent several aspects of life that happen around humans. The most powerful stories compel hearts and minds to change. Someone who tells stories that change the hearts and minds of others is an influential person. In this metaphorical sense, storytelling becomes a skill that is honed and practiced.</p>

<h3 id="building-my-storytelling-habit-back">building my storytelling habit back&nbsp;<a class="hanchor" href="#building-my-storytelling-habit-back" aria-label="Anchor link for: building my storytelling habit back">🔗</a></h3>
<p>What does this have to do with <em>my</em> theme? I am adopting storytelling as my theme because I admire the habits of good storytellers. I want to hone my own ability for both personal and professional contexts. My ability is weakened from lack of practice; it is like a muscle that is sore from not being used in a while. By adopting storytelling as my 2024 theme, it empowers me to write more often in my authentic voice. Lately, recent posts on my blog undergo a rigorous self-editing before I publish them. But in adapting with a theme of storytelling, <strong>I commit to being fine with not maintaining maximum production-value on everything I publish</strong>. I commit to being authentic over rigorous; honest yet open. I commit to the pursuit of documenting my own human history, or &ldquo;the world as I see it.&rdquo;</p>
<p>So, 2023 was a year of big changes for me personally and professionally. I have plenty of things to start writing about. To improve, I need to publish more and be ready to make some mistakes. That&rsquo;s how I learn, after all.</p>
<p>So with that all in mind, more blog posts seems like a good starting point. To make this plan actionable, it needs more specific steps. My goal for right now is to make the commitment within myself, and follow it up with action in 2024.</p>
<p>Happy New Year, reader.</p>
<hr>
<p><em>Original photo by <a href="https://unsplash.com/@socialcut?utm_content=creditCopyText&amp;utm_medium=referral&amp;utm_source=unsplash">S O C I A L . C U T</a> on <a href="https://unsplash.com/photos/lighted-we-are-all-made-of-stories-red-neon-wall-signage-inside-room-FluPNkHfCTs?utm_content=creditCopyText&amp;utm_medium=referral&amp;utm_source=unsplash">Unsplash</a>. Modified by Justin Wheeler. CC BY-SA 4.0.</em></p>
]]></description></item><item><title>White narrative: You cannot be what you cannot see?</title><link>https://jwheel.org/blog/2023/06/be-what-you-see/</link><pubDate>Tue, 06 Jun 2023 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2023/06/be-what-you-see/</guid><description><![CDATA[<p>My musing this time is an underdeveloped thought about diversity, equity, &amp; inclusion; allyship; and being a white person. Last year in October 2022, I attended the excellent <a href="https://2022.allthingsopen.org/events/inclusion-diversity-in-open-source/">Inclusion &amp; Diversity in Open Source summit</a> at <a href="https://2022.allthingsopen.org/">All Things Open 2022</a>. There were several speakers who shared experiences and perspectives about diversity, equity, inclusion, and belonging. I appreciated the elevation of diverse voices and people whose experiences are historically relegated to the periphery of Western society. For myself and also our world, it is important that more light is shone on these stories. The event also caused me to reflect on my own identity as a white American male. I began to interrogate what &ldquo;whiteness&rdquo; and being white meant.</p>
<p><em>NB</em>: Over two years ago, <a href="https://jwfblog.wpenginepowered.com/2021/01/unsaid/">I affirmed</a> that I wanted to write and share more personal thoughts on my blog. Not only the professional and fully-polished things. Looking back, I haven&rsquo;t <em>really</em> done that. Being a part-time perfectionist, I get stuck on the production value of the things I make. I feel like I have to get it <em><strong>just right</strong></em> before publishing. I have several unpublished stubs started on my blog (19 as of publishing time, to be precise). However, I have not yet overcome the hesitation of being content with a stub post just being a stub post. After all, if Wikipedia can do it, why can&rsquo;t I? Furthermore, I can also write for the purpose of my own satisfaction and not the satisfaction of others.</p>
<p>So, here goes.</p>

<h2 id="me-not-represented">Me? Not represented?&nbsp;<a class="hanchor" href="#me-not-represented" aria-label="Anchor link for: Me? Not represented?">🔗</a></h2>
<p>After the Inclusion &amp; Diversity summit ended and I returned to my hotel, I entered a thought loop. There was this uncomfortable idea stuck in my head that as a white American male, <em>I didn&rsquo;t feel represented there</em>. Which depending on your view, either sounds very ironic or it might seem obvious (<em>duh!</em>). However, I did not want to suppress this uncomfortable feeling. I wanted to interrogate it, understand where it came from, and identify why I felt this way.</p>
<p>First, I came to see my feeling of under-representation was not (only) as a white American male—but instead as a privileged ally. Many speakers during the day called out issues in our industry, shared their work as advocates and champions in working to address these issues, or did both. But in our divided and divisive world of the 2020s, a feeling of frustration slowly overcomes me. Never all at once, but more often like the tides of the ocean—slowly rising, rising, until everything is underwater. <em>What are my role and purpose?</em> I care about DEI issues and I have made an effort to do what I can in the last eight years to make Open Source more diverse, more inclusive, and more equitable. I attempt to spend my privilege on others who don&rsquo;t have the privilege and power that I was assigned at birth.</p>

<h2 id="noticing-the-white-narrative">Noticing the white narrative.&nbsp;<a class="hanchor" href="#noticing-the-white-narrative" aria-label="Anchor link for: Noticing the white narrative.">🔗</a></h2>
<p>However, at the same time, I can&rsquo;t help but feel <em>there is a narrative</em> about people who look like me and come from where I come from. That narrative is white supremacy. The white supremacy narrative can be an integral part of identity to people who also look like me and come from places like I do. The narrative often comes from a place of anger. The narrative is often hateful. That context is understandable because the white supremacist narrative is always harmful to people who do not look like me and come from different places than I do. My daily life is least impacted by the white supremacy narrative.</p>
<p>However, I am <strong>not</strong> saying that white supremacy is unreal. On the contrary, Western media, news, and opinion articles quickly provide <a href="https://web.archive.org/web/20200619102333/https://www.theguardian.com/global-development/2020/jun/15/the-aid-sector-must-do-more-to-tackle-its-white-supremacy-problem">several</a> <a href="https://medium.com/justice-funders/dismantling-white-supremacy-anti-blackness-in-philanthropy-7256abbbb3c4">easy</a> <a href="https://web.archive.org/web/20220317171422/https://www.vox.com/22820364/stop-asian-hate-movement-atlanta-shootings">affirmations</a> that a white supremacy narrative holds real weight.</p>

<h3 id="the-paradox-of-the-white-narrative">The paradox of the white narrative&nbsp;<a class="hanchor" href="#the-paradox-of-the-white-narrative" aria-label="Anchor link for: The paradox of the white narrative">🔗</a></h3>
<p><em>Yet, I feel the narrative is also the exact problem</em>. Does a white supremacy narrative override other narratives that a white person could relate with? I remembered a time when I took a <em>History of Women in Science &amp; Engineering</em> course during my undergrad studies. While discovering hidden stories in history of accomplishments, struggles, and successes of women in STEM over hundreds of years, I was also intrigued to read about the allies who helped them. The allies I read about were white men who spent their privilege as <strong>sponsors</strong> to many of these early women innovators. They shared their own resources and enthusiasm as an act of asserting both the value of the women they supported and the work they did.</p>
<p>It was doubly sad to me that history relegated several of these stories to the sidelines, both the stories of these women innovators and the stories of their allies. These stories of early allies are under-represented because most often, they are simply not told.</p>

<h2 id="no-savior-complexes">No savior complexes.&nbsp;<a class="hanchor" href="#no-savior-complexes" aria-label="Anchor link for: No savior complexes.">🔗</a></h2>
<p>At the same time, an alternate narrative to white supremacy must also <strong>not</strong> be a savior complex or white savior-ism narrative. True allyship does not look like a savior complex. The historical view could easily jump toward a conclusion with a savior complex narrative. There are no saviors; the only one we can <a href="https://jwfblog.wpenginepowered.com/tag/spirituality/">truly save is ourselves</a>. We can support, mentor, and sponsor, but there is no magic, quick solution that makes everything better.</p>
<p>In today&rsquo;s world, I feel that healthier narratives are also not well-represented. I strongly believe in words that I attribute to Dr. Martin Luther King Jr.:</p>
<blockquote>
<p>Darkness cannot drive out darkness; only light can do that. Hate cannot drive out hate; only love can do that.</p>
<p>Dr. Martin Luther King Jr.</p>
</blockquote>
<p>Today in the United States, white supremacy <em>is</em> going more mainstream (again). It is also one of the most visible narratives of White identity. This begs a question of how do we influence the narrative and also inspire what a better, healthier &ldquo;whiteness&rdquo; can mean? How do we promote stories of transformative love, incredible allyship, and true compassion? There are many stories in history if you look closely. But often they are relegated to the periphery and cast aside, alongside the experiences of other white people who fit outside the societal power structure of White society. We need these stories told too, should we create a more equitable society that allows everyone to realize their innermost human potential.</p>

<h2 id="where-do-we-go-from-here">Where do we go from here?&nbsp;<a class="hanchor" href="#where-do-we-go-from-here" aria-label="Anchor link for: Where do we go from here?">🔗</a></h2>
<p>I write this without full answers. My motive to write is because this thought comes up from time to time for me. Sometimes I just long for better role models. I want a society where more white people lend their support and power for dismantling hate and destruction. I want more white people who use their privilege and power as superpowers for love and justice. A future default narrative for whiteness should <strong>not</strong> feature pain and center hate. This is in spite of what is an undeniable part of the legacy and history. Yet that is the heart of it. I want the mainstream narrative to change. I want us to take real steps toward reparation to atone for that legacy and history.</p>
<p>But it is like they say, &ldquo;it is hard to be what you can&rsquo;t see.&rdquo; Sometimes I feel exasperated by the narrative staring back at me and my ancestry. My identity as a white American man is bound by nature of my birth. But perhaps instead of waiting for the right story to be written, perhaps this is my own action item. I should be better at writing my own story. The only person I have to do it for is myself.</p>
<hr>
<p><em>Photo by <a href="https://unsplash.com/@rishabhdharmani?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Rishabh Dharmani</a> on <a href="https://unsplash.com/photos/IvfAs3Qk64M?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a>. Modified by Justin Wheeler.</em></p>]]></description></item><item><title>Digitalism: An engineer's poem</title><link>https://jwheel.org/blog/2023/05/digitalism/</link><pubDate>Tue, 23 May 2023 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2023/05/digitalism/</guid><description><![CDATA[<p><em>Read more of <a href="https://jwfblog.wpenginepowered.com/category/poems/">my poetry</a> on my blog.</em></p>
<hr>
<p><code>Ctrl</code>+<code>Alt</code>+<code>Delete</code>, wired and tied,<br>
My threaded process: splintering and fragmenting.</p>
<p><code>Ctrl</code>+<code>Z</code>, nostalgic and longing,<br>
The memory buffer: flooded and overloaded.</p>
<p><code>Ctrl</code>+<code>F</code>, buried and lost,<br>
The information needed: but information never found.</p>
<p><code>Ctrl</code>+<code>N</code>, weary and tired,<br>
A new page and new chapter: for a new time.</p>
<p><code>Ctrl</code>+<code>X</code>, selective and wise,<br>
My mental clipboard: freed from excessive context.</p>
<p>The control we have, digitally finite,<br>
Within our fingertips, but limited to our bandwidth.</p>
<p>The promised digital frontier, hopeful yet anguished,<br>
Two sides of a coin, but can there be a third side?</p>
<p>Life within a binary is never so rich,<br>
The answer we seek is simply the answer we find.</p>
<p>Motherboard, hard drive; CPU, RAM,<br>
Infrastructure built, realities shaped.</p>
<p>Remove one part, replace another,<br>
Expansion upgrades, faulty hardware replacements.</p>
<p>Our modern digitalism is a mirror of our constructions,<br>
No utopia or dystopia; just a reflection peering back at us.</p>
<p>The question falls to you, whether to plug in or disconnect,<br>
Whether to accept a life with both hotspots and no-signal zones.</p>
<p><code>systemctl stop NetworkManager</code></p>
<p>Breathe.</p>
<p><code>systemctl start NetworkManager</code></p>
<hr>
<p><em>Photo by <a href="https://unsplash.com/@steve_j?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Steve Johnson</a> on <a href="https://unsplash.com/photos/hokONTrHIAQ?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a>. Modified by Justin Wheeler. CC BY-SA 4.0.</em></p>
]]></description></item><item><title>Shells.</title><link>https://jwheel.org/blog/2023/05/shells/</link><pubDate>Thu, 11 May 2023 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2023/05/shells/</guid><description><![CDATA[<p><em>Friend, are you okay? How are you? Is it going well? Or is it a tough time? You can tell me, brother. My ear is yours at this moment, sister. Friend, if I have things you need to borrow, please ask me. I appreciate you. I appreciate the person that you are. I love you.</em></p>
<p>These words speak power. Their power comes in their ability to pull someone out from the busy stream of life and reach deep into their heart. As if to be plucked out of the chaos, even for just a moment. They are words that are easy to read, easy to write. But to say them with meaning, to deliver them with sincerity to another human being… it is something that many of us would struggle with. (Perhaps the bias may be toward men who typically aren&rsquo;t steered by the society towards navigating these emotional waters.)</p>

<h2 id="making-of-the-shells">Making of the shells&nbsp;<a class="hanchor" href="#making-of-the-shells" aria-label="Anchor link for: Making of the shells">🔗</a></h2>
<p>It amuses and perplexes me how something that can be so positively powerful can feel out of reach for many of us. Throughout our relatively short time on this planet, it is easy (and sometimes necessary) to create a shell around ourselves. A big, hard, strong shell that protects us from the hurt, the pain, and the sadness that sometimes bubbles and oozes out from the earth. Fear of our neighbors becomes an insecurity that is targeted and exploited by the political powers of our day.</p>
<p>So of course, the world can feel cold. Or even dead. But those shells that we carry and build over our life can also be cold and hard themselves. When we are surrounded by coldness and hardness, it is naturally difficult to expect that compassion to flow like a river out from the world. The shells cover over our hearts with coldness and hardness, so if enough time passes inside the shell, we might conclude that the world is a cold and hard place.</p>

<h2 id="leaving-the-shells">Leaving the shells&nbsp;<a class="hanchor" href="#leaving-the-shells" aria-label="Anchor link for: Leaving the shells">🔗</a></h2>
<p>But the only mistake in our human existence is to never leave the shell. Sometimes it is necessary and sometimes it is required. There are awful things that ooze out of the cracks of our fragile yet interdependent society. But if we make the shell our home, we sacrifice the warmth of the sun. We refuse the possibility of the beauty, the love, and compassion that also exists in our planet. We can find beauty in the smallest of things and most unusual of places. But if we are stuck in the shell, we are hidden from what is uncomfortable and difficult, but also what is joyful and empowering.</p>
<p>May we all come to know our shell, and also to know when we are in our shell. If we stay in it too long, we might forget what it is to take it off. What it feels like to feel joy. What it feels like to feel love. To accept love and give love. The most powerful, transformative, and awe-inspiring experiences on this planet called Earth will pass over us if we allow our hearts to harden.</p>
<p>Choose to love, not to hate.</p>
<p>Choose to trust, not to fear.</p>
<p>Always forgive, but never forget.</p>
<p>Follow the joyous path of light, and avoid the cynical path of darkness.</p>
<p>Know when to wear our shell for necessary protection, and know when to take it off for being vulnerable and human.</p>
<p>Breathe.</p>
<hr>

<h2 id="background-context">Background context&nbsp;<a class="hanchor" href="#background-context" aria-label="Anchor link for: Background context">🔗</a></h2>
<p>This reflection came after a bike ride. The rides are typically my most reflective time. There are no screens, no notifications, no distractions. It is me. The path. And my breath. After a week when I was feeling overwhelmed and stressed, this reflection came from a meditative mood and my desire to use my blog as a place to express myself better. (I think writing this post was more therapeutic than the tweet I was originally writing.)</p>
<p>A special thanks to Thich Nhat Hahn and this El Ten Eleven track for guiding my thoughts while writing:</p>
<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
      <iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube-nocookie.com/embed/7hFjAu6_CSo?autoplay=0&amp;controls=1&amp;end=0&amp;loop=0&amp;mute=0&amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"></iframe>
    </div>

]]></description></item><item><title>"I am the wilderness": On trust &amp; community</title><link>https://jwheel.org/blog/2023/05/trust-and-community/</link><pubDate>Tue, 09 May 2023 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2023/05/trust-and-community/</guid><description><![CDATA[<p>Trust is a word and a concept that is on my mind lately. Trust is an idea that permeates all levels of our waking consciousness, and impacts how we build connections and relationships with other human beings. It is something impossible to ignore, yet it is ironically hard to define and pin down. Beyond what is written in a dictionary, what <em>is</em> trust? What does trust look like? What does trust feel like? Anyone who works in &ldquo;community work&rdquo; knows that trust is often the fundamental tie between <a href="https://jwfblog.wpenginepowered.com/tag/community-management/">community leadership</a> and community members. A leader wants to be trusted by the people whom they represent, and a person wants to trust their leaders to represent them fairly and accurately.</p>
<p>While I was pondering this reflection, my employer announced layoffs a couple weeks ago. While there is a lot that could be said about that, what I will say is that a certain root was pulled; the foundation of trust built between leadership and employee was shaken. Only further action and time will show the full impact on the company and my remaining colleagues. Nonetheless, a very recent negative experience with regard to trust also expanded my perspective of how trust is defined and what its role is in a community.</p>

<h2 id="brené-brown-on-trust">Brené Brown on trust&nbsp;<a class="hanchor" href="#bren%c3%a9-brown-on-trust" aria-label="Anchor link for: Brené Brown on trust">🔗</a></h2>
<p>Later, I came across a sound bite of an <a href="https://www.youtube.com/watch?v=6qfbpBzqitA">interview with Brené Brown</a> about trust (and more). Toward the end of the interview, she talks about her book, <em><a href="https://brenebrown.com/book/braving-the-wilderness/">Braving the Wilderness</a></em> (which I haven&rsquo;t read, but seems interesting). She explained what the wilderness is and a tool that we can keep with us (&ldquo;BRAVING&rdquo;) to stay grounded in ourselves and also what trust means.</p>
<p>She also had a powerful definition of belonging, which put forward the idea that <a href="https://jwfblog.wpenginepowered.com/tag/dei/">belonging</a> is internal to ourselves and even is a spiritual practice; belonging is not defined externally or given to and taken from us by others.</p>
<p>Below is my summary of &ldquo;BRAVING&rdquo; and the wilderness, together with notes and thoughts about how community leaders can act honestly and authentically, both when times are good and when times are hard.</p>
<hr>

<h2 id="trust-remember-braving">Trust: Remember &ldquo;BRAVING&rdquo;&nbsp;<a class="hanchor" href="#trust-remember-braving" aria-label="Anchor link for: Trust: Remember &ldquo;BRAVING&rdquo;">🔗</a></h2>
<p>There are seven elements to building, developing, and measuring trust. Each of these seven elements are a resource for being honest, authentic, and genuine in both easy and hard times. You can remember these seven elements as an acronym: &ldquo;BRAVING&rdquo;.</p>

<h3 id="b-boundaries">B: Boundaries&nbsp;<a class="hanchor" href="#b-boundaries" aria-label="Anchor link for: B: Boundaries">🔗</a></h3>
<p><em>You set boundaries. When you don&rsquo;t know what they are, you ask. You are clear about what is okay and what is not.</em></p>

<h3 id="r-reliability">R: Reliability&nbsp;<a class="hanchor" href="#r-reliability" aria-label="Anchor link for: R: Reliability">🔗</a></h3>
<p><em>You do what you say and you say what you do. The hard thing is that you are not hustling for worthiness, so you are not completely over committing and not delivering.</em></p>

<h3 id="a-accountability">A: Accountability&nbsp;<a class="hanchor" href="#a-accountability" aria-label="Anchor link for: A: Accountability">🔗</a></h3>
<p><em>You don&rsquo;t back channel and blame. You hold people accountable in a straightforward way.</em></p>

<h3 id="v-vault">V: &ldquo;Vault&rdquo;&nbsp;<a class="hanchor" href="#v-vault" aria-label="Anchor link for: V: &ldquo;Vault&rdquo;">🔗</a></h3>
<p><em>You do not use stories that are not yours as social currency. You keep them in &ldquo;the vault.&rdquo; Using others&rsquo; stories as a bid for connection causes others to trust you less. This is the other side of confidentiality.</em></p>

<h3 id="i-integrity">I: Integrity&nbsp;<a class="hanchor" href="#i-integrity" aria-label="Anchor link for: I: Integrity">🔗</a></h3>
<p><em>You choose courage over comfort and practice your values. You choose what is right over what is fun, fast, and easy. Your accomplishments stand out when you operate from a place of discomfort, or outside of your comfort zone.</em></p>

<h3 id="n-non-judgment">N: Non-judgment&nbsp;<a class="hanchor" href="#n-non-judgment" aria-label="Anchor link for: N: Non-judgment">🔗</a></h3>
<p><em>You can ask for help without feeling judged. I can ask for help without judging myself.</em></p>

<h3 id="g-generosity">G: Generosity&nbsp;<a class="hanchor" href="#g-generosity" aria-label="Anchor link for: G: Generosity">🔗</a></h3>
<p><em>When something happens, you assume positive intent. Give someone a chance, or the benefit of the doubt, before launching into anger.</em></p>

<h2 id="braving-the-wilderness">Braving the wilderness&nbsp;<a class="hanchor" href="#braving-the-wilderness" aria-label="Anchor link for: Braving the wilderness">🔗</a></h2>
<p><em>What is the wilderness? It is those times when we stand alone, the times when we go out on a limb, the times we walk away from what we know in our ideological bunkers and beliefs.</em></p>
<p><em>&ldquo;BRAVING&rdquo; is a tool to help us manage the wilderness. There will be times when standing alone feels too hard, too scary, and we&rsquo;ll doubt our ability to make our way through the uncertainty. Someone, somewhere, will say, &ldquo;Don&rsquo;t do it. You don&rsquo;t have what it takes to survive the wilderness.&rdquo; This is when you reach deep into your wild heart and remind yourself, &ldquo;I am the wilderness.&rdquo;</em></p>
<hr>
<p><em>Photo by <a href="https://unsplash.com/@sapegin?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Artem Sapegin</a> on <a href="https://unsplash.com/images/nature?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a>. Modified by Justin Wheeler.</em></p>
]]></description></item><item><title>Middle path.</title><link>https://jwheel.org/blog/2022/12/middle-path/</link><pubDate>Tue, 13 Dec 2022 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2022/12/middle-path/</guid><description><![CDATA[<p>The answer suddenly appeared that the only way to solve my dilemma of two split worlds was to find the middle path.</p>
<p>This thought emerged to me, as I stood under the warm stream of water in the same shower I had used countless times over the last ten years. Over those previous ten years, so much of my life has changed. The biggest change is that my life was my own now. I have the power to make decisions with regard to my life. I also have the resources and means to act on those decisions. So, now I have more direct influence over the everyday things around me; there is no parent or guardian to delegate decision-making. As I chart my own path and mark my course, I realize that there were two separate paths I was walking on all this time.</p>
<p>Those two separate paths were my personal life and my career. I walked both paths, but both paths were distinctly separate and isolated from the other. There are brief moments where the two paths intersect. Generally, though, I found that my lives at home and work are two different planes of existence. So, a question remained placed neatly in my mind for a number of years. Should these two paths be unified into one or should they remain separate?</p>

<h2 id="thus-the-middle-path">Thus… the middle path.&nbsp;<a class="hanchor" href="#thus-the-middle-path" aria-label="Anchor link for: Thus… the middle path.">🔗</a></h2>
<p>The shower thought suggested the two paths did not have to either join or split. Instead, I could pursue a middle path where I live genuinely and authentically to myself, without splitting myself into two alternate egos. The middle path allows me to keep one foot in my personal life and one foot in my professional life. The middle path allows me to be the same self in the one life that I live.</p>
<p>It is a beautiful reflection, although it is much easier to conceptualize than to act upon. Or easier said than done! For so long, I segmented my life at home and life at work into two boxes. Now, in order to find the middle path, I have some work to do. I have to first unpack the boxes of my mind, reorganize and reorient, and then repack into one, bigger box.</p>
<p>My challenge for the next decade of life is to find the balance between these two worlds. I continue to sail further into my adult years and farther from my child years. So, the continuity of separation must end. Now, I hope to direct my life in such a way that I find the middle path and live harmoniously with family, friends, and my hobbies while also being passionate and committed to my work and craft. When aptly balanced, this leaves room for spiritual growth. It allows me to lead my life toward positive change to achieve a more just, more humane world.</p>
<p>Om mani padme hum!</p>
<hr>
<p><em>Photo by <a href="https://unsplash.com/@lukevz?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Luke van Zyl</a> on <a href="https://unsplash.com/s/photos/middle?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a>. Modified by Justin Wheeler.</em></p>
]]></description></item><item><title>Three great examples of open source product roadmaps</title><link>https://jwheel.org/blog/2022/12/open-source-product-roadmaps/</link><pubDate>Tue, 06 Dec 2022 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2022/12/open-source-product-roadmaps/</guid><description><![CDATA[<p>In my daily reading, I came across three product roadmaps from <a href="https://proton.me/about">Proton</a>, developers of several open source, privacy-centered products. These include products like Proton Mail, Proton VPN, and Proton Drive. The product roadmaps shared by Proton play a tactical role. They inform consumers and engaged customers about exciting changes yet to come. It gets people excited about the product&rsquo;s future. Additionally, it builds an engaged user base that is more willing to experiment and try new features.</p>
<p>Product roadmaps are something many projects struggle with. It fits into the communications and outreach umbrella, which unfortunately is typically an underresourced part of many open source products. They are one small part of a larger strategy around openness and transparency. If customers and stakeholders know what to expect, they gain more confidence in the product and company mission. For instance, this is especially true when the company continuously delivers on its roadmaps and meets its ambitions. As a result, delivering on those ambitions leaves a strong impression.</p>

<h2 id="highlights-from-proton-product-roadmaps">Highlights from Proton product roadmaps&nbsp;<a class="hanchor" href="#highlights-from-proton-product-roadmaps" aria-label="Anchor link for: Highlights from Proton product roadmaps">🔗</a></h2>
<p>Of particular note, these product roadmaps do the following things well from a messaging point-of-view:</p>
<ol>
<li>
<p>Builds context with previous work delivered in the last year for the product.</p>
</li>
<li>
<p>Several clearly-defined goals and ambitions for each product are defined and explained. The aspirations for the coming year are spelled out and users can begin to form realistic expectations about what new features to anticipate.</p>
<ul>
<li>Some highly-motivated individuals may use this as an opportunity to make their first contribution to the product, whether in the form of feedback or code.</li>
</ul>
</li>
<li>
<p>Strong call-to-action at the end of each article, where Proton defines how people can participate and engage with feedback about the products.</p>
</li>
</ol>
<p>Check out each of the three product roadmaps below and let me know what you think about them in a comment on this post.</p>
<hr>

<h2 id="proton-mail--proton-calendar">Proton Mail &amp; Proton Calendar&nbsp;<a class="hanchor" href="#proton-mail--proton-calendar" aria-label="Anchor link for: Proton Mail &amp; Proton Calendar">🔗</a></h2>
<blockquote>
<p>[…] we want to <a href="https://proton.me/blog/2022-roadmap">provide an update</a> on what’s coming next for <a href="https://proton.me/mail">Proton Mail</a> and <a href="https://proton.me/calendar">Proton Calendar</a>. As 2022 wraps up and we look into the new year, we want to develop stronger protections against technologies that invade your privacy, improve your reading experience, and make your day more productive through deeper integrations between our products. </p>
<p><a href="https://proton.me/blog/proton-mail-calendar-roadmap">proton.me/blog/proton-mail-calendar-roadmap</a></p>
</blockquote>

<h2 id="proton-vpn">Proton VPN&nbsp;<a class="hanchor" href="#proton-vpn" aria-label="Anchor link for: Proton VPN">🔗</a></h2>
<blockquote>
<p>In March, we shared our <a href="https://proton.me/blog/2022-roadmap">2022 roadmap</a> for Proton, including Proton VPN. Now that we’ve reached November, we feel it’s a good time to revisit our progress this year and explain what you can expect from Proton VPN in the near future.</p>
<p><a href="https://protonvpn.com/blog/proton-vpn-roadmap-spring-2023/">protonvpn.com/blog/proton-vpn-roadmap-spring-2023/</a></p>
</blockquote>

<h2 id="proton-drive">Proton Drive&nbsp;<a class="hanchor" href="#proton-drive" aria-label="Anchor link for: Proton Drive">🔗</a></h2>
<blockquote>
<p>In September 2022, we were excited to <a href="https://proton.me/blog/proton-drive-launch">launch Proton Drive</a> and introduce the first standalone <a href="https://proton.me/drive/pricing">Proton Drive paid plans</a>. As with all the services we’ve rolled out over the years, we know the launch is just the first step. The real work is in the continual improvements, advancements, and added features that follow. Building an <a href="https://proton.me/drive">encrypted file storage service</a> is not easy, particularly one that uses <a href="https://proton.me/drive/security">end-to-end encryption</a> on both your files and file metadata like Proton Drive.</p>
<p>Many of you have asked us what is next for Proton Drive, and today, we wanted to share with you a short-term roadmap of what you can expect in the coming quarters. Of course, we also have longer-term roadmaps. We look forward to sharing those and keeping you updated on the latest developments as Proton Drive progresses.</p>
<p><a href="https://proton.me/blog/proton-drive-roadmap">proton.me/blog/proton-drive-roadmap</a></p>
</blockquote>
<hr>
<p><em>Photo by <a href="https://unsplash.com/@slidebean?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Slidebean</a> on <a href="https://unsplash.com/s/photos/roadmap?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a>. Modified by Justin Wheeler.</em></p>]]></description></item><item><title>Write yourself into obsolescence.</title><link>https://jwheel.org/blog/2022/11/write-obsolescence/</link><pubDate>Tue, 29 Nov 2022 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2022/11/write-obsolescence/</guid><description><![CDATA[<p>This thought was pressed into my mind as I looked over all that I had created. Facing the inevitable end of one life chapter as it transitions into a new one, I recognized one possible way to improve our individual impact through documentation. Software and product documentation are classified as technical writing. While they differ in scope, they share a connection to other forms of written works like novels and newspapers; they are collections of a commonly understood, codified language meant to convey a meaning to other humans. The goal of writing yourself into obsolescence is not to create content for content&rsquo;s sake. The goal is to create information pathways that leave behind a guiding light for those who come after us. The goal is to create some form of media or content that communicates information of value to someone else (even including your future self).</p>
<p>May I continue to hone this practice into an art. 🙏🏻 This is my meditation for the day!</p>
]]></description></item><item><title>Scrub gently: On data scrubbing in a community survey.</title><link>https://jwheel.org/blog/2022/11/scrub-gently-community-survey/</link><pubDate>Tue, 15 Nov 2022 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2022/11/scrub-gently-community-survey/</guid><description><![CDATA[<p>Recently, my team with the <a href="https://chaoss.community/">CHAOSS Project</a> had a data concern emerge when I was working on a project to run a community survey. This community had never run a survey before, and it was the first notable event where the project made an explicit, structured ask for feedback from the community. As a result, this first experience was also a calibration event, so we could guide this kind of work in future years.</p>

<h2 id="survey-says-what">Survey says: What?&nbsp;<a class="hanchor" href="#survey-says-what" aria-label="Anchor link for: Survey says: What?">🔗</a></h2>
<p>At some point, after we opened the survey, a question emerged about how to handle an unruly response. In the ongoing responses, our data manager noticed one response that was objectively harmful. The person was strongly against the D.E.I. initiative that organized the survey. The response was written in a hostile tone, made insulting and derogatory comments about groups of people, and was entirely opposed to the project spending any time and resources on diversity, equity, and inclusion. The question asked to our group was whether we would include this response in the published data, or whether we would omit it.</p>
<p>There were two perspectives. Some elected to remove this response from the final report and any published data. Others felt it was important to wait and see if this response would become a pattern as we ran the survey. I found myself in the second group that felt it was important to wait and see first. I want to unpack this rationale, both for future me and perhaps someone else reading.</p>

<h2 id="on-discarding-the-survey-response">On discarding the survey response&nbsp;<a class="hanchor" href="#on-discarding-the-survey-response" aria-label="Anchor link for: On discarding the survey response">🔗</a></h2>
<p>There were good points about removing the harmful response.</p>
<p>Firstly, the response used harmful language and was likely triggering. This particular response included angry rhetoric that was reflective, to a degree, of the social and political &ldquo;climate&rdquo; of our world today. Including the response in our final reporting could also be giving it a platform, which would arguably be a harmful act. It would validate that input as acceptable input. Our group was not in disagreement that the response was harmful and not behavior the community should tolerate.</p>
<p>Second, the response did not provide actionable insight or useful asks to the project and community. It was written in an aggressive, angry tone towards the reader and did not offer workable suggestions other than ending and divesting from all D.E.I. work immediately. Given this was not an acceptable option, there wasn&rsquo;t much there for us to learn or understand about CHAOSS from this individual response. So, why include or save this response?</p>
<p>There is an option to ignore feedback by intentionally discarding it, but what if the individual feedback represents a larger trend?</p>

<h2 id="what-is-community-culture">What is community culture?&nbsp;<a class="hanchor" href="#what-is-community-culture" aria-label="Anchor link for: What is community culture?">🔗</a></h2>
<p>It is important to be aware of threats to community culture. What is community culture? My improvised definition is any organizational culture oriented towards the care, well-being, and thriving of others (including the self) within a single, shared community environment. Regardless of other values and goals in a project, the shared culture of the project can either lean towards a collective, communal-oriented approach or an independent, individual-oriented approach. The communal approach that prioritizes the well-being of all instead of a privileged view could also be considered as community culture. Many traditional &ldquo;Open&rdquo; projects skew toward a strong community culture.</p>

<h2 id="on-monitoring-survey-responses-for-a-pattern">On monitoring survey responses for a pattern&nbsp;<a class="hanchor" href="#on-monitoring-survey-responses-for-a-pattern" aria-label="Anchor link for: On monitoring survey responses for a pattern">🔗</a></h2>
<p>Coming back to the survey response, what if omitting the data leaves holes in the story of your community? If there is not just one, but several of these kinds of responses, what comments does that make about the community culture? Is there already a strong community culture, or is there resistance and challenges to building a more cooperative, caring environment? There is real work to do at both ends of the spectrum, but what that work might look like depends on which side you are on.</p>
<p>I posit that omitting the &ldquo;unhappy&rdquo; or harmful responses can create a dangerous blind spot to toxicity within a community culture. When it comes to direct, interpersonal interactions with others (e.g. meetings, emails, chats, etc.), stewards of the community culture need to take direct action against visible challenges and threats to the community culture. If someone starts swearing out at someone in a meeting, that is a hard-to-miss action. It is visible, and anyone could observe it or even record it.</p>
<p>In anonymous surveys, you might find a more subtle layer of the community culture than what is shown by the actions of a small few. There can be greater trust that someone&rsquo;s comments will not be tied back to their identity, so some responders may feel emboldened with their words and true opinions.</p>

<h2 id="dont-discard-a-blind-spot">Don&rsquo;t discard a blind spot.&nbsp;<a class="hanchor" href="#dont-discard-a-blind-spot" aria-label="Anchor link for: Don&rsquo;t discard a blind spot.">🔗</a></h2>
<p>The point of this is that especially in larger communities, it is worth noting negative and harmful responses and not totally ignoring them. Communities that organize in more decentralized ways will always have supporters, users, and contributors from both the core and the periphery. The core project membership may not interact or engage often with the periphery often, so there can be a blind spot to parts of the project that identify with the community but are a few degrees removed from the inner ring of the project community.</p>
<p>Noting whether something is indicative of a larger pattern is important. If your community has a ton of jerks, you need to know that your community is full of jerks so that you don&rsquo;t waste time persuading people otherwise, when the lived experience is very different.</p>
<p>In the original conversation with the CHAOSS Project team, this data scrubbing question emerged in the process of running the survey instead of <em>after</em> the data collection concluded. The survey later closed and our data manager confirmed that the flagged response from earlier was the only one of its kind. As a group, we then felt more confident in discarding that one outlier as an anomaly since the survey was open to the general public.</p>
<hr>
<p><em>Feature photo by <a href="https://unsplash.com/@jeshoots?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">JESHOOTS.COM</a> on <a href="https://unsplash.com/s/photos/cleaning?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a>. Modified by Justin Wheeler.</em></p>]]></description></item><item><title>CHAOSS DEI Review: Midyear reflection</title><link>https://jwheel.org/blog/2022/10/chaoss-dei-review-reflection/</link><pubDate>Tue, 25 Oct 2022 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2022/10/chaoss-dei-review-reflection/</guid><description><![CDATA[<p>Since February 2021, the CHAOSS Project is conducting a funded, long-term review of its governance, practices, and processes in a diversity, equity, and inclusion (D.E.I.) &ldquo;audit.&rdquo; I originally joined as an internal community liaison and initially helped to identify a team of D.E.I. practitioners external to the CHAOSS Project to support this work. Thanks to the support of the Ford Foundation, we are slowly approaching the two-year anniversary of when this work began.</p>
<p>My brief readout is a guided reflection using questions shared by Matt Germonprez. This reflects my review of our work as a team to date and also shares some of my hopeful outlooks for what our amazing team can accomplish together. This readout will cover <strong>(1)</strong> our accomplishments as a team, <strong>(2)</strong> what was expected and surprising, and <strong>(3)</strong> what we could change in the next year.</p>

<h2 id="chaoss-accomplishments--learnings">CHAOSS accomplishments &amp; learnings&nbsp;<a class="hanchor" href="#chaoss-accomplishments--learnings" aria-label="Anchor link for: CHAOSS accomplishments &amp; learnings">🔗</a></h2>
<p>Three achievements and aspirations stand out over the past year:</p>
<ol>
<li>Established process management and a team workflow.</li>
<li>Created a small but active Community of Practice (CoP).</li>
<li>Sharing our results with CHAOSS and the Open ecosystem.</li>
</ol>

<h3 id="processes--workflow">Processes &amp; workflow&nbsp;<a class="hanchor" href="#processes--workflow" aria-label="Anchor link for: Processes &amp; workflow">🔗</a></h3>
<p>
<figure>
  <img src="/blog/2022/10/jonny-gios-4AT3mZMuFuI-unsplash.jpg" alt="A metalworker is working at an anvil. A red-hot iron rod is on the anvil, and a person uses a hammer to shape and mold the hot iron into a hooked shape." loading="lazy">
  <figcaption>We had to forge our own practices that worked best for our group. Photo by Jonny Gios (<a href="https://unsplash.com/@supergios?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText" class="bare">https://unsplash.com/@supergios?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText</a>) on Unsplash (<a href="https://unsplash.com/s/photos/forge?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText" class="bare">https://unsplash.com/s/photos/forge?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText</a>).</figcaption>
</figure>
</p>
<p>For direct participants of the team, the Ford Foundation funding did not come with strict requirements or success metrics. As we assembled our team, we were given the discretion of how to conduct a D.E.I. review for the project and determine the best course of doing that. This allowed for creative freedom to figure out what would work best for CHAOSS. Additionally, I could not identify a straightforward way to discover other Open communities and projects doing our kind of work. Since there were also not many other known successful models to follow, we combined our shared experiences across multiple Open communities to build our team, identify main areas of focus, and engage the community around our efforts.</p>
<p>This is an achievement because we collectively created an active group that makes incremental, positive changes to CHAOSS. This is a model we could share with other projects so that others can learn from our experiences.</p>

<h3 id="community-of-practice">Community of Practice&nbsp;<a class="hanchor" href="#community-of-practice" aria-label="Anchor link for: Community of Practice">🔗</a></h3>
<p>Our team is a small but engaged group of D.E.I. practitioners. We share a connection through our ongoing review of the CHAOSS Project, but we also give and take from our own personal experiences outside of CHAOSS. Our group regularly meets and discusses complex, difficult issues that are both (a) not easy to discuss openly and (b) applicable to many communities beyond only CHAOSS. Our team meetings are a safe space that promotes honest and constructive discussion centered on diversity, equity, and inclusion. In addition to our recommendations and direct efforts with CHAOSS, I often reflect on our conversations as a team when working with other Open communities. An example of this is how we built a list of questions to get a &ldquo;pulse&rdquo; from the community on their feelings about CHAOSS.</p>

<h3 id="sharing-results-with-chaoss-and-beyond">Sharing results with CHAOSS and beyond&nbsp;<a class="hanchor" href="#sharing-results-with-chaoss-and-beyond" aria-label="Anchor link for: Sharing results with CHAOSS and beyond">🔗</a></h3>
<p>This is aspirational and not yet fully realized. Our team has collected a solid portfolio of stories and experiences that other communities would stand to benefit learning from. I consider this a current achievement because while our work does specifically look at CHAOSS, we also often reflect from a general perspective and how a topic of interest might look in other communities. When the time comes to package our findings, I believe we are setting ourselves up for easier messaging and outreach opportunities in the future.</p>

<h2 id="according-to-expectations">According to expectations&nbsp;<a class="hanchor" href="#according-to-expectations" aria-label="Anchor link for: According to expectations">🔗</a></h2>
<p>While I have worked in Open Source D.E.I. communities since 2015, I have never conducted an applied research review for community D.E.I. before. I did not come into this with strong immediate expectations because it would inevitably reflect the backgrounds and strengths of the team we would assemble. However, I did have specific hopes or things I hoped would be realized by this work.</p>

<h3 id="as-expected">As expected&nbsp;<a class="hanchor" href="#as-expected" aria-label="Anchor link for: As expected">🔗</a></h3>
<ul>
<li><strong>Data-driven approach</strong>: We began this work without a strong representation of the state of CHAOSS. What do contributors think about the project? While data is not a universal panacea, we gravitated to a community survey early on because we needed to understand the community experience better first before making serious suggestions.</li>
<li><strong>Time zones are hard</strong>: Our team was spread out across North America, Africa, LATAM, and Europe. Additionally, the work with CHAOSS was also a part-time venture for most of us, in addition to primary employment. Calendars and schedules are hard to get right. Since our team&rsquo;s organization was ad-hoc, momentum would occasionally slow for some periods.</li>
<li><strong>We have an amazing team!</strong> I expected great things once we identified our roster. We have also had more amazing people join us over time and add new passion and insight to our focus as a group.</li>
</ul>

<h3 id="surprises">Surprises&nbsp;<a class="hanchor" href="#surprises" aria-label="Anchor link for: Surprises">🔗</a></h3>
<ul>
<li><strong>Documenting our impact is not always intuitive</strong>: While we have done internal storytelling work within the CHAOSS Project, we do not have a good record of our achievements to date. Our linear progression does not lend itself easily to self-reflection and recalibration. Although much of our focus is on the CHAOSS community survey and CHAOSS Africa, we also facilitated several other notable achievements in the project in the last year. See the following examples:
<ul>
<li>Supporting the establishment of a Code of Conduct Committee.</li>
<li>Community office hours for newcomers.</li>
<li>Improved, peer-to-peer onboarding experience in CHAOSS.</li>
<li>Increased efforts in CHAOSS mentored projects (e.g. Outreachy and GSoC).</li>
<li>Recommending changes to the project and community, like broader localization to Chinese &amp; Spanish and establishing a D.E.I. council.</li>
</ul>
</li>
<li><strong>Losing and regaining steam on the survey</strong>: Although the community pulse survey was one of the earliest tasks identified in our work, launching a first survey proved to take a lot of resources from the team. We briefly stalled out on the survey effort while focused on other areas (like listed above). While our team was able to achieve many smaller victories for CHAOSS with low-hanging fruits, it took a sustained focus and slowdown on new topics to achieve larger contributions like the community pulse survey.</li>
</ul>

<h2 id="changes-for-the-chaoss-team-next-year">Changes for the CHAOSS team next year&nbsp;<a class="hanchor" href="#changes-for-the-chaoss-team-next-year" aria-label="Anchor link for: Changes for the CHAOSS team next year">🔗</a></h2>
<p>Looking ahead to 2023, I hope to strengthen our efforts as a team in these areas:</p>
<ol>
<li>Packaging our work</li>
<li>Dissemination of our work</li>
</ol>
<p>
<figure>
  <img src="/blog/2022/10/christophe-rollando-uOi-nHgMR5o-unsplash.jpg" alt="Large, gold-colored balloons spell out 2023. Several other silver-colored objects surround the gold letters, like star-shaped balloons, tree ornaments, and card-stock stars." loading="lazy">
  <figcaption>Photo by Christophe Rollando (<a href="https://unsplash.com/@chrisrolls?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText" class="bare">https://unsplash.com/@chrisrolls?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText</a>) on Unsplash (<a href="https://unsplash.com/s/photos/2023?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText" class="bare">https://unsplash.com/s/photos/2023?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText</a>).</figcaption>
</figure>
</p>

<h3 id="packaging">Packaging&nbsp;<a class="hanchor" href="#packaging" aria-label="Anchor link for: Packaging">🔗</a></h3>
<p>Our work stream was linearly ordered and we took a forward-looking approach. Now is a good time to look back and reflect on our results to date. What are our key findings and observations? What suggestions will we make to CHAOSS? How could other communities learn from our experience running this review? One task for us as a team is to identify key messages and themes so that dissemination into broader domains is possible.</p>

<h3 id="dissemination">Dissemination&nbsp;<a class="hanchor" href="#dissemination" aria-label="Anchor link for: Dissemination">🔗</a></h3>
<p>Once we package our work, notes, and reflections, we should take an active approach to disseminating and sharing our work. This includes both the CHAOSS Project and a more general audience. For the CHAOSS Project, this could be a written report, presentations to the CHAOSS board, speaking at <a href="https://jwfblog.wpenginepowered.com/tag/chaosscon/">CHAOSScon</a>, and outreach to the multiple Working Groups. For a general audience, this could include speaking at industry conferences, sharing our work with other Communities of Practice, social media, or other ways of promoting our deliverables.</p>]]></description></item><item><title>XPOST: Spurring new Digital Public Goods</title><link>https://jwheel.org/blog/2022/10/new-digital-public-goods/</link><pubDate>Thu, 06 Oct 2022 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2022/10/new-digital-public-goods/</guid><description><![CDATA[<p><a href="https://www.unicef.org/innovation/stories/spurring-new-digital-public-goods"><em>Originally published on 27 September 2022 via unicef.org</em>.</a></p>
<hr>
<p>This year, the <a href="https://www.unicefinnovationfund.org/">UNICEF Venture Fund</a> celebrates <a href="https://www.unicef.org/innovation/venturefund/blockchain-financial-inclusion-graduation">five graduating companies</a> from a recent investment round. For the first time, many of these companies are exiting from the Venture Fund having already earned recognition as <a href="https://digitalpublicgoods.net/registry/">Digital Public Goods (DPGs)</a>. With the support of a cross-sectional team of mentors, these graduating companies worked to achieve compliance with the <a href="https://digitalpublicgoods.net/standard/">DPG Standard</a>.</p>
<p>The <a href="https://digitalpublicgoods.net/standard/">Digital Public Good Standard</a> offers a nine-point baseline for evaluation and recognition of Open Source software, content, data, and standards that adhere to privacy and other applicable laws and best practices, do no harm by design, and help attain the Sustainable Development Goals (SDGs). Once a solution is recognised as a digital public good it is discoverable on the <a href="https://digitalpublicgoods.net/registry/">DPG Registry</a>.</p>
<p>This recognition acknowledges their use of vetted Open Source licenses, useful documentation, and adherence to relevant best practices and local data protection laws. What makes this achievement a first for the Venture Fund is that these recognitions were achieved by the companies during the investment round. Typically, companies that go on from the Venture Fund achieve recognition after a year or more of graduation. This new shift is made possible by the growing investment in Technical Assistance at the Venture Fund and the leadership of a robust team of mentors.</p>
<p>This article introduces the Technical Assistance mentoring programmes offered by the UNICEF Venture Fund, the addition of new mentors in the last year, the shift of mentor focus around the DPG Standard, and the results achieved to date from the latest graduating Venture Fund cohort.</p>

<h1 id="origins-of-technical-assistance-at-the-venture-fund">Origins of Technical Assistance at the Venture Fund&nbsp;<a class="hanchor" href="#origins-of-technical-assistance-at-the-venture-fund" aria-label="Anchor link for: Origins of Technical Assistance at the Venture Fund">🔗</a></h1>
<p>The Venture Fund offers different areas of Technical Assistance to start-up companies who apply and are selected to receive early-stage seed investment by UNICEF. Originally starting in 2018, the Technical Assistance programmes only included Business Development and Open Source. Over the years, we have piloted and pivoted mentorship models with input from our portfolio of startups. Today, the Technical Assistance programmes cover a range of topics across an experienced team of mentors, depending on the relevance to the start-up companies:</p>
<ul>
<li>Blockchain with Arun Maharajan and Alex Sherbuck (former)</li>
<li>Business Development with Jamil Wyne and Philippa Martinelli (former)</li>
<li>Evidence of Impact with Milena Bacalja Perianes and Jennifer Sawyer</li>
<li>Data Privacy &amp; Security with Lydia Kwong</li>
<li>Data Science &amp; A.I. with Daniel Alvarez</li>
<li>Open Source with Justin Wheeler, Abigail Cabunoc Mayes (former), and Vipul Siddharth</li>
<li>Software Development with Iván Perdomo</li>
</ul>
<p>The mentors work closely with the experienced team of portfolio managers (Meghan Warner, Kennedy Kitheka, and Madison Marks) to guide and coach Venture Fund companies to achieve their targets and success indicators during the investment round.</p>
<p>Starting in 2021, the Venture Fund broadened the Technical Assistance programmes to include Software Development, Data Science &amp; A.I., Data Privacy &amp; Security, and Evidence of Impact. This was a marked change in growing the support and expertise made available to start-up companies during their investment round. However, as the team of mentors and Technical Assistance offerings expanded, there was a growing need to bring a common rallying point across all programmes. How could the mentors ensure their Technical Assistance programmes complemented one another without duplicating topics or repeating conversations?</p>
<p>Further complementing the core Technical Assistance programme, <a href="https://www.unicefinnovationfund.org/broadcast/expert-posts/unicef-innovation-fund-blockchain-cohort-onboarding-workshops">specialized workshops</a> were held by like-minded institutions outside the Venture Fund’s core team of mentors , along with personalized mentorship sessions. The recent Blockchain Cohort, for example, benefitted from targeted mentorship from AW3L, a blockchain consulting firm that share many of UNICEF&rsquo;s values around leveraging blockchain for social impact.</p>
<blockquote>
<p>“Blockchain has immense potential, but it remains just a tool and its impact is dependent on what we do with it. That&rsquo;s why it is crucial to have local entrepreneurs on the ground building use-cases that solve real problems unique to their geography. We are therefore extremely happy and proud to support UNICEF and its portfolio companies to tackle real-world problems in emerging markets by utilizing blockchain technology.”</p>
<p>Martijn van de Weerdt, Founder, AW3L</p>
</blockquote>

<h1 id="how-the-dpg-standard-unified-the-mentoring-streams">How the DPG Standard unified the mentoring streams&nbsp;<a class="hanchor" href="#how-the-dpg-standard-unified-the-mentoring-streams" aria-label="Anchor link for: How the DPG Standard unified the mentoring streams">🔗</a></h1>
<p>The DPG Standard became a common rallying point for the UNICEF Technical Assistance programmes. As our mentoring programmes increased and topic areas broadened, we needed coordination and a synchronized stream of Technical Assistance programmes. In the last year, the Venture Fund reviewed its workplan development and strategy to enable more solutions to achieve recognition as a digital public good at or near the graduation point for a Venture Fund portfolio. The most recent graduating cohort, the <a href="https://www.unicef.org/innovation/venturefund/blockchain-financial-inclusion-graduation">2021 Blockchain cohort</a>, represents this improved alignment, with 4 of 5 companies receiving recognition of their products as digital public goods by their graduation this year.</p>
<p>How does recognition of an open solution as a Digital Public Good help Venture Fund startups? It is an acknowledgment by the Digital Public Goods Alliance of a commitment and adherence to best practices and steps taken to protect data privacy and do no harm. Additionally, recognition as a DPG unlocks stronger potential for adoption and deployment of the solution by global stakeholders by providing greater visibility in a public roster of open solutions that adhere to best practices and standards. The recognition of 80% of an off-boarding Venture Fund portfolio speaks to both the intrinsic capabilities of the companies and the value of the Technical Assistance programmes and mentorship provided to them by the Venture Fund.</p>
<p>While past Venture Fund companies have received recognition as digital public goods before, this is the first time that a company achieved the recognition at the time of their graduation from the Venture Fund. Aligning the Technical Assistance programmes around the DPG Standard provided common frameworks and mental models for the diverse team of mentors to support the companies and help them achieve the Standard as an important part of their product development lifecycle.</p>
<blockquote>
<p>“As an early-stage startup, we struggled with a clear business model. Especially in the last six months of the investment, support from the mentor network helped in building clear business growth and impact metric plans. Also a year ago, we were very heavy on the tech side but lacked considerable planning on network and visibility growth. We have developed a customer persona and a pricing model, and now have a clearer vision of our Total Available Market, Serviceable Available Market, and Serviceable Obtainable Market (TAM, SAM, and SOM) models.”</p>
<p>Rumee Singh, Co-Founder, Rumsan</p>
</blockquote>

<h1 id="further-farther-together">Further, farther, together&nbsp;<a class="hanchor" href="#further-farther-together" aria-label="Anchor link for: Further, farther, together">🔗</a></h1>
<p>What comes next? The Technical Assistance programmes at the UNICEF Venture Fund are gearing up for additional cohorts benefiting from our seed-stage investment: a <a href="https://www.unicef.org/innovation/innovationfund/ai-ds-learning-health-2022">Data Science &amp; A.I. cohort</a> and an upcoming Blockchain cohort. These early-stage companies undergo a technical assistance programme involving a technical and strategic workshop series and monthly mentorship meetings. Graduates of our seed-stage investment that  have received additional capital through our <a href="https://www.unicef.org/innovation/growth-funding">Growth Funding</a> to take their solution to the next level of impact also benefit from customized mentorship to support their evolution from good prototype developments to solutions that can be implemented and scaled, with sustainable business models and proven pilots.</p>
<p>Additionally, mentors are developing digital toolkits to enable Venture Fund companies and anyone to read up and study best practices for building and sustaining digital public goods. Most of these toolkits will be released digitally online under Open Source licenses. You can find three of these toolkits below:</p>
<ul>
<li><a href="https://unicef.github.io/ooi-toolkit-ds/">Data Science &amp; A.I.</a></li>
<li><a href="https://unicef.github.io/drone-4sdgtoolkit/">Drones</a></li>
<li><a href="https://unicef.github.io/inventory/">Open Source</a></li>
</ul>
<p>Since the first Technical Assistance programmes were launched in 2018, the Venture Fund has seen improved results that correlate with the Technical Assistance programmes. In the <a href="https://www.unicef.org/innovation/venturefund/blockchain-financial-inclusion-graduation">most recent Blockchain 2021 cohort</a>, across 500+ hours of mentoring, the cohort collectively reached over 700,000 beneficiaries, raised $4M in follow-on funding, and 4 of 5 graduating companies were recognized as a digital public good before graduation. This also marked a new record of external contributors, with a total of 39 people who contributed to repositories across all portfolio companies. The expert guidance and coaching provided by the team of UNICEF mentors aids the start-ups in achieving new record heights.</p>
<blockquote>
<p>“UNICEF’s support helped Xcapit build value, with a premium put on discovery, iteration, survey, and experimentation with the end user. The guidance at the right time is priceless. It prevented us from facing a major problem in the future when our blockchain UNICEF mentor guided us when we were deciding the technology to create our wallet. Changing our mindset to become a fully open source company was also challenging. We had the best guidance we could ask, and we successfully overcame the difficulties and doubts, understanding the benefits of open collaboration.”</p>
<p>Antonella Perrone, COO, Xcapit</p>
</blockquote>

<h1 id="contribute-to-technical-assistance-knowledge-and-mentoring">Contribute to Technical Assistance knowledge and mentoring&nbsp;<a class="hanchor" href="#contribute-to-technical-assistance-knowledge-and-mentoring" aria-label="Anchor link for: Contribute to Technical Assistance knowledge and mentoring">🔗</a></h1>
<p>The UNICEF mentor toolkits are open source and you can also participate. The toolkits are currently accepting contributions for UI/UX and front-end development, as well as content curation and authorship. Get involved with the toolkits by participating via GitHub:</p>
<ul>
<li><a href="https://github.com/unicef/inventory-hugo-theme">UNICEF Inventory theme</a> (see “<a href="https://github.com/unicef/inventory-hugo-theme/issues?q=is%3Aissue&#43;is%3Aopen&#43;label%3A%22I%3A&#43;good&#43;first&#43;issue%22&#43;no%3Aassignee">good first issues</a>”)</li>
<li><a href="https://github.com/unicef/inventory">UNICEF Open Source Inventory</a></li>
<li><a href="https://github.com/unicef/ooi-toolkit-ds">UNICEF Data Science &amp; A.I. toolkit</a></li>
</ul>
<p>With the Digital Public Goods Alliance, we built upon our learnings and successes from portfolio companies and created the <a href="https://unicef.github.io/publicgoods-accelerator-guide/">DPG Accelerator Guide</a> as a collection of resources for accelerators to also support local ventures in developing digital public goods, setting them up for scale and impact.</p>
]]></description></item><item><title>synchronized</title><link>https://jwheel.org/blog/2022/08/synchronized/</link><pubDate>Mon, 22 Aug 2022 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2022/08/synchronized/</guid><description><![CDATA[<p><em>Read more of <a href="https://jwfblog.wpenginepowered.com/category/poems/">my poetry</a> on my blog.</em></p>
<hr>
<p><em>one, two</em><br>
I fell in love with you<br>
Caught me by surprise</p>
<p><em>three, four</em><br>
My focus was on you<br>
There was me, you, &amp; the road</p>
<p><em>five, six</em><br>
I took each breath<br>
Felt each beat of my heart</p>
<p><em>seven, eight</em><br>
I realized Your rhythm<br>
Pulled into Your pace</p>
<p><em>nine, ten</em><br>
I became my breath<br>
Centered at Your feet</p>
<p><em>one, two</em></p>
<hr>
<p><em>Photo by <a href="https://unsplash.com/@davidmarcu?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">David Marcu</a> on <a href="https://unsplash.com/s/photos/bicycle?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a>. Modified by Justin Wheeler</em>.</p>
]]></description></item><item><title>CrystalCraftMC forums sunset</title><link>https://jwheel.org/blog/2022/02/crystalcraftmc-forums-sunset/</link><pubDate>Mon, 07 Feb 2022 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2022/02/crystalcraftmc-forums-sunset/</guid><description><![CDATA[<p>It is with a sad heart that I share that the <code>crystalcraftmc.com</code> forums are permanently retired as of 6 February 2022. Nearly ten years ago, in August 2012, I founded a Minecraft multiplayer game server. It would eventually become known as CrystalCraftMC. I <a href="https://web.archive.org/web/20210103155344/https://crystalcraftmc.com/?page=2">passed the torch</a> for the game server in April 2018. CrystalCraftMC got a second life from the dedicated player community until December 2018 when it was <a href="https://web.archive.org/web/20210614054749/https://crystalcraftmc.com/threads/survival-and-creative-world-downloads-now-available.2708/">shuttered for good</a>. Today&rsquo;s news is sad to me as it marks the official end of the online presence of CrystalCraftMC after nearly a decade.</p>
<p>If you are missing the memories, you can still find a good part of the forums archived via the Internet Archive&rsquo;s Wayback Machine. Click <strong><a href="https://web.archive.org/web/20211229160232/https://crystalcraftmc.com/">here</a></strong> to navigate to the last snapshot of the official forums. You can also find downloads of the survival and creative Minecraft worlds below:</p>
<ul>
<li>
<p>Creative world: <strong><a href="https://drive.proton.me/urls/B43RXQD9XC#dvddVplG0RcX">2015 Nov. 2 backup</a></strong> (~29MB)</p>
</li>
<li>
<p>Survival world: <strong><a href="https://drive.proton.me/urls/07P658D4J4#pLN3umpCGcwQ">2018 Sept. 22 backup</a></strong> (~43.6GB)</p>
</li>
<li>
<p>Survival world: <strong><a href="https://drive.proton.me/urls/WBA2ZZKX1G#SGvUqnavxnjO">2018 Dec. 3 backup</a></strong> (~44.1GB)</p>
</li>
</ul>

<h2 id="history-of-the-crystalcraftmc-forums">History of the CrystalCraftMC forums&nbsp;<a class="hanchor" href="#history-of-the-crystalcraftmc-forums" aria-label="Anchor link for: History of the CrystalCraftMC forums">🔗</a></h2>
<p>Since December 2013, I maintained the CrystalCraftMC forums on my own infrastructure and dime. Even after I passed the torch in April 2018, I continued to maintain and manage the forums. When the game server finally closed in December 2018, I continued to keep the forums alive as a novelty for past players. For me, whenever I felt nostalgic, the forums always gave me a place to remember good friends and memories from that era of my life.</p>
<p>If you are one of the few original folks who kept up with CrystalCraftMC in its lifetime, you may remember we used a different forum at one point, hosted by Enjin. Those forums are (miraculously) still alive, and you can still find them! Visit <em><a href="http://old.crystalcraftmc.com">old.crystalcraftmc.com</a></em> to get a nostalgia trip on the oldest memories of our Minecraft community.</p>

<h2 id="why-the-forums-closed">Why the forums closed&nbsp;<a class="hanchor" href="#why-the-forums-closed" aria-label="Anchor link for: Why the forums closed">🔗</a></h2>
<p>The forum software behind <code>crystalcraftmc.com</code> was called <a href="https://xenforo.com/">XenForo</a>. We used the 1.x versions of XenForo. XenForo was a great fit for us when CrystalCraftMC was in full swing, but the forums fell behind on updates. The forums eventually stopped receiving maintenance and security updates for XenForo 1.x when <a href="https://xenforo.com/community/threads/xenforo-2-0-0-add-ons-released.137930/">XenForo 2.0.0 was released</a>. Since I never renewed our license and didn&rsquo;t have time to complete the complicated upgrade, the CrystalCraftMC forums remained on XenForo 1.x.</p>
<p>This month, I took on a project to reduce the costs of my personal infrastructure. The total cost to run the CrystalCraftMC forums was &gt;$200 USD every month. I hoped to reduce the cost to less than $50 USD every month. My goal was to migrate the database for the forums to a competitive and more affordable hosting service. However, during the migration, I discovered that XenForo 1.x did not support newer versions of the MySQL database software. I would need to continue paying my bill for a hosting service that supported the legacy version of the database used by the CrystalCraftMC forums.</p>
<p>After careful consideration, I decided ten years was a good run and it was time to finally close things down. It was not the outcome I wanted, but it was what had to be done. Nevertheless, I took a final &ldquo;snapshot&rdquo; of the forums and database. I retained a final copy, and perhaps one day in the future, I may choose to put a read-only copy online again. But for now, the forums will remain offline until further notice.</p>
<p>(<em>This also doesn&rsquo;t even note the <strong>hundreds</strong> of spam, scam, and porn emails I received every day because of the contact form on the website not having a captcha form to stop spambots!</em>)</p>

<h2 id="what-now-for-crystalcraftmc">What now for CrystalCraftMC?&nbsp;<a class="hanchor" href="#what-now-for-crystalcraftmc" aria-label="Anchor link for: What now for CrystalCraftMC?">🔗</a></h2>
<p>I will continue to pay for the domain names of <code>crystalcraftmc.com</code> and <code>ccmc.pw</code>. Both domains will now redirect to this blog post, which might be how you ended up here. But otherwise, there are no more public archives of CrystalCraftMC other than our memories, YouTube &ldquo;Let&rsquo;s Plays&rdquo; and <a href="https://www.youtube.com/c/EchophoxGaming/playlists">Echophox video series</a>, and the <a href="http://old.crystalcraftmc.com">super-old forums</a>. This is the end of the road for CrystalCraftMC.</p>
<p>To all the players and the CrystalCraftMC community, you will always have a special place in my heart. CrystalCraftMC was one of these incredible things that happened to me in my life, especially when so many things in my life were honestly upside-down. I wish you all the best and hope you all also have fond memories of building spawn points, running drop parties, building amazing forts and bases (while hoping they don&rsquo;t get raided), and hanging out with other folks who ended up becoming close friends.</p>
<p>Long live CrystalCraftMC.</p>
<hr>
<p><em>Photo by <a href="https://unsplash.com/@jplenio?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Johannes Plenio</a> on <a href="https://unsplash.com/s/photos/sunset?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a>. Modified by Justin Wheeler.</em></p>]]></description></item><item><title>4 metrics to measure sustainable open source investments.</title><link>https://jwheel.org/blog/2021/12/4-metrics-open-source-investments/</link><pubDate>Fri, 31 Dec 2021 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2021/12/4-metrics-open-source-investments/</guid><description><![CDATA[<p>How do we understand value when we talk about sustainability? What does investing in open source mean? The meaning is different for many people because of an implicit understanding of what open source means.</p>
<p>This post is a reflection on the past year in my work with the <a href="https://www.unicefinnovationfund.org/">UNICEF Venture Fund</a>. We integrated new open source tools to capture metrics and data about open source repositories connected to UNICEF portfolio companies and created a shortlist of key metrics that map to business sustainability metrics. Now, we are better positioned to look back on past, current, and upcoming portfolio companies and mentor support programs.</p>
<p>As we move into 2022, this post covers my current thinking on these points:</p>
<ol>
<li>Defining investments.</li>
<li>How do these investments impact sustainability?</li>
<li>CHAOSS metrics as an open source tool for an investment lens on sustainability.</li>
<li>What next?</li>
</ol>

<h2 id="defining-investments">Defining investments.&nbsp;<a class="hanchor" href="#defining-investments" aria-label="Anchor link for: Defining investments.">🔗</a></h2>
<p>When we talk about investing in open source, what do we mean? What are the known inputs? What are the expected outputs? &ldquo;Investments&rdquo; and &ldquo;investing&rdquo; are broad terms. Investments typically mean sizeable financial injections of support and growth, but can also include non-financial investments too. Investments can also take the form of both time and energy (i.e. electricity and digital infrastructure).</p>
<p>The UNICEF Venture Fund provides equity-free funding for start-up companies building open source solutions of interest to UNICEF. All the start-up companies are registered companies in <a href="https://www.unicef.org/where-we-work">UNICEF program countries</a>. As part of the Venture Fund&rsquo;s location in the <a href="https://www.unicef.org/innovation/">Office of Innovation</a>, it is also a vehicle for UNICEF to explore frontier technology areas through the investments. When a start-up company is receiving investment from UNICEF, the company receives both funding and tailored mentorship about business and open technology.</p>
<p>A question I want to know is, <strong>what is the impact of the received funding plus guided mentorship</strong>? How does this approach enable the companies to be successful after graduating? What discoveries or knowledge could be shared with others to assist the development of their own open programs?</p>
<p>To summarize, <strong>an investment can be financial or non-financial</strong>. Financial investments include direct funding, grants, venture capital, fellowships, or any other exchange of capital. Non-financial investments include time spent in coaching sessions, personalized content for companies, and shared digital infrastructure. Neither list is exhaustive.</p>

<h2 id="how-do-these-investments-impact-sustainability">How do these investments impact sustainability?&nbsp;<a class="hanchor" href="#how-do-these-investments-impact-sustainability" aria-label="Anchor link for: How do these investments impact sustainability?">🔗</a></h2>
<p>
<figure>
  <img src="https://cauldron.io/static/img/cauldron-logo-white.png" alt="Logo for Bitergia&rsquo;s Cauldron hosted analytics platform. A key part of metrics for UNICEF Venture Fund investments." loading="lazy">
  <figcaption>Bitergia Cauldron.io (<a href="https://cauldron.io" class="bare">https://cauldron.io</a>)</figcaption>
</figure>
</p>
<p>Data makes introspection easier. Bitergia&rsquo;s <a href="https://cauldron.io/">Cauldron.io</a> was a champion tool for kickstarting an open source metrics strategy for the UNICEF Venture Fund. Its introduction as a tool opened up a wider span of data to look at. There are new opportunities to ask questions and explore growth, scale, and sustainability.</p>
<p>In order to come to a conclusion on sustainability impact, we need streamlined data to test a thesis. The Venture Fund team improved internal processes to how metrics are collected from portfolio companies. The team is unifying behind fewer tools and methods to ensure we see the same data and have the same view of the data points we measure. This also provides a fresh opportunity to review how we measure open source impact across portfolio companies. Many have dashboards on Cauldron.io, but data needs a storyteller for it to make meaning. So, the next step is to ask questions with this new data and frame a thesis to measure and test the sustainability of Venture Fund investments into open source.</p>
<p>Many have traveled before me on the same trail of thought. I started first with the <a href="https://chaoss.community/">Community Health Analytics Open Source Software (CHAOSS) project</a> and its metrics releases. This served as the initial point of brainstorming to frame questions and different scenarios of risk, evolution, DEI, and value.</p>

<h2 id="chaoss-metrics-as-an-open-source-tool-for-an-investment-lens-on-sustainability">CHAOSS metrics as an open source tool for an investment lens on sustainability.&nbsp;<a class="hanchor" href="#chaoss-metrics-as-an-open-source-tool-for-an-investment-lens-on-sustainability" aria-label="Anchor link for: CHAOSS metrics as an open source tool for an investment lens on sustainability.">🔗</a></h2>
<p>I reviewed the <a href="https://chaoss.community/wp-content/uploads/2021/10/English-Release-2021-10-21.pdf">latest release</a> of CHAOSS metrics and narrowed down four metrics I want to measure in the next year. I also shared thoughts on why collect this data and how to do it. This blog post is no more than me wondering out loud, to help me frame an analytical approach for this metrics strategy.</p>
<p>The four metrics are detailed below:</p>
<ol>
<li>Contribution Attribution</li>
<li>Contributors</li>
<li>Collaboration Platform Activity</li>
<li>Labor Investment</li>
</ol>
<p>
<figure>
  <img src="/blog/2021/12/glenn-carstens-peters-RLw-UC03Gwc-unsplash.jpg" alt="A hand holds a pen and is writing on a sheet of notebook paper. They appear to be making a list." loading="lazy">
  <figcaption>Take note of your dependencies and contributors.
<em>Photo by Glenn Carstens-Peters (<a href="https://unsplash.com/@glenncarstenspeters?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText" class="bare">https://unsplash.com/@glenncarstenspeters?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText</a>) on Unsplash (<a href="https://unsplash.com/s/photos/lists?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText" class="bare">https://unsplash.com/s/photos/lists?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText</a>)</em>.</figcaption>
</figure>
</p>

<h3 id="contribution-attribution"><a href="https://chaoss.community/metric-contribution-attribution/">Contribution Attribution</a>&nbsp;<a class="hanchor" href="#contribution-attribution" aria-label="Anchor link for: Contribution Attribution">🔗</a></h3>
<blockquote>
<p>Question: Who has contributed to an open source project and what attribution information about people and organizations is assigned for contributions?</p>
<p><a href="https://chaoss.community/metric-contribution-attribution/">chaoss.community/metric-contribution-attribution/</a></p>
</blockquote>
<p>This metric is insightful because it is targeted deeply into team and project culture. This metric is a good representation of how much the project leans into an open source model of building their project. This work ethos and intention to forge on an open source path is difficult to understand at times. If a team takes care to attribute their software dependencies and other contributors to their code (if any), this is a good sign that the team accepts collaboration as a value and encourages working with others.</p>
<p>I would measure this across two <a href="https://chaoss.community/metric-types-of-contributions/">types of contributions</a>: attributions for software dependencies including those with permissive licenses, and for any other direct contributors to the code and how they are recognized for their participation. This could be filtered in a red-yellow-green light approach:</p>
<ol>
<li><strong>Red</strong>: No attributions are made, or all attributions are inadequate.</li>
<li><strong>Yellow</strong>: One of two attributions are made, or one attribution type is inadequately attributed.</li>
<li><strong>Green</strong>: All dependencies and used works are correctly attributed.</li>
</ol>
<p>
<figure>
  <img src="/blog/2021/12/alex-hudson-m3I92SgM3Mk-unsplash.jpg" alt="View looking down at a small farmer&rsquo;s market, where a woman sits behind several different cases of vegetables. A man hands payment to the woman for unseen goods. This is connected how knowing your customers can also be like knowing your community." loading="lazy">
  <figcaption>Spend more time getting to know who participates and why.
<em>Photo by Alex Hudson (<a href="https://unsplash.com/@aliffhassan91?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText" class="bare">https://unsplash.com/@aliffhassan91?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText</a>) on Unsplash (<a href="https://unsplash.com/s/photos/bazaar?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText" class="bare">https://unsplash.com/s/photos/bazaar?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText</a>)</em>.</figcaption>
</figure>
</p>

<h3 id="contributors"><a href="https://chaoss.community/metric-contributors/">Contributors</a>&nbsp;<a class="hanchor" href="#contributors" aria-label="Anchor link for: Contributors">🔗</a></h3>
<blockquote>
<p>Question: Who are the contributors to a project?</p>
<p><a href="https://chaoss.community/metric-contributors/">chaoss.community/metric-contributors/</a></p>
</blockquote>
<p>This metric explores a more human dimension of the people and participants to an open source project. The metric defines contributors and contributions broadly, as &ldquo;anyone who contributes to the project in any way.&rdquo; Understanding the people participating in a community, their motivations, goals, and why they choose to be in that community is important to understand sustainability. Otherwise, you may lose out on good opportunities to attract contributions from people who are already engaged, and new engagements may be difficult because of a mismatch of expectations.</p>
<p>This metric is more a means than it is an end; that is, it provides opportunities to ask more questions than provide detailed answers. Nevertheless, it does provide some guidance towards understanding contributors in a project, and it can lead to some concrete actions based on gathered insights. For example, this metric will enable deeper looks in areas of diversity, equity, and inclusion.</p>
<p>Since I work with start-up companies with small, lean development teams, I look to understand the motivations of the developers working on their projects and where the motivations may align with another open source solution. This enables the two communities to leverage their combined brainstorming for meeting complimentary goals around development and innovation.</p>
<p>To collect this data, I would have the team define what <a href="https://chaoss.community/metric-types-of-contributions/">areas of contribution</a> they seek for their open source solutions and then map those desired contributions to a specific project area or different team members. This enables a form of consistent accountability for checking expectations with reality and understanding team capacity. Each area could be a key-value pair, where the value is the project area, team lead, or delegated team member for the type of contribution solicited.</p>
<p>
<figure>
  <img src="/blog/2021/12/kai-dahms-5paXZX8lWk-unsplash.jpg" alt="The dashboard of an older plane is shown, with several different meters, switches, and control knobs. In many ways, the places where we collaborate on our projects can also be as complicated, and we can miss out on some useful features if we are not looking in the right place." loading="lazy">
  <figcaption>There are many ways to collaborate, but the question is, are you counting the right ways?
<em>Photo by Kai Dahms (<a href="https://unsplash.com/@dilucidus?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText" class="bare">https://unsplash.com/@dilucidus?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText</a>) on Unsplash (<a href="https://unsplash.com/s/photos/measure?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText" class="bare">https://unsplash.com/s/photos/measure?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText</a>)</em>.</figcaption>
</figure>
</p>

<h3 id="collaboration-platform-activity"><a href="https://chaoss.community/metric-collaboration-platform-activity/">Collaboration Platform Activity</a>&nbsp;<a class="hanchor" href="#collaboration-platform-activity" aria-label="Anchor link for: Collaboration Platform Activity">🔗</a></h3>
<blockquote>
<p>Question: What is the count of activities across digital collaboration platforms (e.g., GitHub, GitLab, Slack, email) used by a project?</p>
<p><a href="https://chaoss.community/metric-collaboration-platform-activity/">chaoss.community/metric-collaboration-platform-activity/</a></p>
</blockquote>
<p>Collaboration platform activity is one effective proxy metric for community engagement if measured accurately. The metric does not define collaboration as much as it provides a data structure to measure it. It abstracts collaboration into key data points like timestamp, sender, whether the platform has threaded or non-threaded discussions, data collection date, and platform message identifier. To a degree, collaboration can be abstracted out in this way: a person takes any given action at a given time in a given way, and this action is measured as project-related activity on the collaboration platform.</p>
<p>There are a few possible approaches to collecting this data from UNICEF Venture Fund companies. Each approach does not cancel out another, but each approach could be combined with the others:</p>
<ol>
<li><strong>Measure common git activity like commits, issues, pull/merge requests</strong>. We already measure this data, but use it only in connection to validating Venture Fund workplans for each team with UNICEF portfolio manager(s).</li>
<li><strong>Count communications like comments, reviews, public messages, and other outreach</strong>. Communications strategies and tools are typically inferred from common git activity. Measuring for engagement and stratifying those metrics into a smaller group could allow for deeper insights to the evolution of early-stage open source communities.</li>
<li><strong>Make community hubs first-class citizens in the data curation process to infer about informal engagement</strong>. Both open source projects and UNICEF Venture Fund portfolio companies use a variety of tools to communicate, especially in view of COVID-19 and its seismic impact on how we work. Platforms like Discord, Telegram, Mattermost, Slack, Rocket.chat, Matrix, and others are focal points where projects collaborate, ask questions, and support others. Bringing this data stream into the mix offers deeper insights into how teams engage and build community around their work, and also guidance on when to push for contribution opportunities at the right time.</li>
</ol>
<p>The satisfaction of these three options in their totality is not enough. To leverage the fullest impact, these metrics must tie into each other, and need to be connected back to a narrative. Why is this data being collected and what actions are influenced by the knowledge of this data? The data collection enables the evaluation of sustainability and understanding the birth, growth, and evolution of an open source technology product. Influenced actions can include moving more human resources (i.e. contractors or staff) to support a project, adopting a new open source best practice, and/or engaging new customers, talent, or other leads based on participation in the community.</p>
<p>Measuring collaboration platform activity is not black and white. Many new questions would likely come forward as part of measuring this activity. Yet this is the point—it lays the foundation for the next layer to the data collection, analysis, and reporting process around sustainability.</p>
<p>
<figure>
  <img src="/blog/2021/12/jon-tyson-kR4K8nJ9JRc-unsplash.jpg" alt="A man is facing forward with his back to the camera. He wears a heavy coat and a construction hard hat. The background is blurred and unclear. In this way, we can think of labor investment from a human-centered approach first." loading="lazy">
  <figcaption>What is the impact of an investment on fair and equitable labor?
<em>Photo by Jon Tyson (<a href="https://unsplash.com/@jontyson?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText" class="bare">https://unsplash.com/@jontyson?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText</a>) on Unsplash (<a href="https://unsplash.com/s/photos/worker?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText" class="bare">https://unsplash.com/s/photos/worker?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText</a>)</em>.</figcaption>
</figure>
</p>

<h3 id="labor-investment"><a href="https://chaoss.community/metric-labor-investment/">Labor Investment</a>&nbsp;<a class="hanchor" href="#labor-investment" aria-label="Anchor link for: Labor Investment">🔗</a></h3>
<blockquote>
<p>Question: What was the cost of an organization for its employees to create the counted contributions (e.g., commits, issues, and pull requests)?</p>
<p><a href="https://chaoss.community/metric-labor-investment/">chaoss.community/metric-labor-investment/</a></p>
</blockquote>
<p>This metric is perhaps the most ambitious of the group. How do you measure labor investment into an open source project? Or literally, the number of person-hours that go into software design, development, co-creation, and community management? It feels like a gargantuan effort, but there may be better ways to measure this in connection to other data the UNICEF Venture Fund is already connected about the businesses.</p>
<p>Measuring labor investment impacts two narratives: the rate of development on the open source work, and the impact of UNICEF investment into a company backing an open source work.</p>
<p>Firstly, understanding the rate of development on an open source work is easier to infer by understanding who is allocated on a project and how much of their time they dedicate to it. If a team of three contributors spares a few hours a week, it will mean something different compared to a team of five engineers spread across different disciplines working full-time. Mapping the labor investment for open source projects supported by UNICEF would enable better planning by understanding the typical labor investment in open source workplan tasks as piloted by other Venture Fund portfolio companies.</p>
<p>Secondly, this gives us a new way of talking about the impact of UNICEF Venture Fund investments as an investment not only in software products but also in labor. It gives us insight into the investment of labor in software engineering talent among portfolio companies. How does this measurement change over time of the investment? Do projects receive more or less investment of labor during the 12 month period we work with them? This could also be used as a proxy metric for the impact of our unique mentorship and coaching opportunities.</p>

<h2 id="what-next">What next?&nbsp;<a class="hanchor" href="#what-next" aria-label="Anchor link for: What next?">🔗</a></h2>
<p>Knowing is half the journey. Even if the knowledge is not yet firmly rooted. The analysis and introspection are from me as an individual working among the UNICEF Venture Fund and do not represent the views and beliefs of UNICEF or the UN in any capacity. My intent is that by sharing this analysis in the open, it allows for a space where conversation can spark where it could not before. It also invites others to share ideas, feedback, and constructive criticism of an emerging metrics strategy for investments made into the open source ecosystem.</p>
<p>Next, more layers can be added and internal and external validation can help to keep this moving forward. An implementation plan would be the next step to follow this post. The implementation plan considers the process of how start-up companies move through the Venture Fund from start to finish. Who interacts with the companies and when? At what point is a company ready to begin building in a new metric or count in their monthly metrics? Do they understand the implications and assessments of these metrics? At what points in the process is data already being collected? Could these new data requests be added to existing requests? And so on.</p>
<p>I hope to formalize some of this new reporting and metrics strategy in upcoming cohorts in 2022, as part of a renewed effort into communicating how our open source investments tie into sustainable impact towards the U.N. Sustainable Development Goals.</p>
<p>This post will serve as a milestone marker on the metrics strategy discussion in the coming one to two months. See you in 2022.</p>
<hr>
<p><em>Featured photo by <a href="https://unsplash.com/@edwardhowellphotography?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Edward Howell</a> on <a href="https://unsplash.com/s/photos/sustainable?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a>. Modified by Justin Wheeler. CC BY-SA 4.0</em>.</p>]]></description></item><item><title>On Free Software, Red Hat, and Iran</title><link>https://jwheel.org/blog/2021/10/red-hat-iran/</link><pubDate>Tue, 26 Oct 2021 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2021/10/red-hat-iran/</guid><description><![CDATA[<p>I was visiting the Fedora Council ticket tracker when I noticed <a href="https://pagure.io/Fedora-Council/tickets/issue/377">this ticket</a> up for discussion. The ticket&rsquo;s purpose is minor and appears inconsequential. It involves adding some legal text to the Fedora Accounts system. The change is related to <a href="https://docs.microsoft.com/en-us/compliance/regulatory/offering-ear">Export Administration Regulations</a> (the &ldquo;EAR&rdquo;) as maintained by the United States Department of Commerce. And the change is not actually a change, but a clarification of a policy that has always been in effect.</p>
<p>I am opposed to the impact of Export Administration Regulations by the United States as it pertains to free and open source software. I am a strong believer that the impact of these regulations are most harmful to all free &amp; open source software communities at an individual, human level. When I saw this discussion at the Fedora Council level, it offered me an opportunity to reflect on my own feelings about these regulations, and also to share an opinion on how I believe Fedora Linux could truly live up to its <a href="https://digitalpublicgoods.net/registry/fedora-linux.html">certification</a> as a Digital Public Good to ensure a more equitable world.</p>
<p>Here is <a href="https://pagure.io/Fedora-Council/tickets/issue/377#comment-759232">what I wrote</a> to the Fedora Council, and perhaps also to anyone reading from Red Hat&rsquo;s legal team:</p>
<hr>
<p>Hi, I would like to add a counter-opinion, of course one that holds no weight as an official vote.</p>
<p>As Fedora Linux is forced to this decision by its relationship to its legal sponsor, Red Hat, <strong>I therefore believe it is also the responsibility of Red Hat to seek a solution that does not deny an individual their right to realize the <a href="https://fsfe.org/freesoftware/">Four Freedoms</a> of Free Software on the basis of geography or citizenship</strong>.</p>
<p>I recognize no policy is being changed here. It is a deliberate clarification of rules that were always in effect. Yet this ticket opens the context behind the policy for greater scrutiny, and I posit the context is harmful both to the Fedora Project and to Red Hat.</p>
<p>This policy is harmful for diversity and inclusion, and compromises Fedora&rsquo;s position to be an innovative platform built by a global community. The U.S. laws and regulations driving this decision exist within a specific context, but that context is grossly incompatible with the dynamics of inclusive Free &amp; Open Source communities. In practice, these laws and regulations deny individuals (really, other human beings) of their ability to be a beneficiary of the open licenses we employ for creating our work, collaborating on it together, and sharing it with others.</p>
<p>I see two outcomes of accepting this as an unchangeable norm.</p>
<p>Firstly, it creates confusion, doubt, and feelings of ill intent. These laws and regulations are meant to impact governments and nation-states. In a Free &amp; Open Source community such as ours, these regulations impact individual people. Not governments or nation-states. As an example, a Fedora community member, Ahmad Haghighi, was recently <a href="https://ahmadhaghighi.com/blog/2021/us-restricted-free-software/">permanently removed</a> from the Fedora Community. In a few quick clicks, Ahmad&rsquo;s legacy in the project was <a href="https://web.archive.org/web/20210813014952/https://fedoraproject.org/wiki/User:Haghighi">erased</a>. As a precedent, even if someone&rsquo;s contributions were not &ldquo;supposed&rdquo; to be accepted in the first place, it does not sit well with me that any one person&rsquo;s legacy of contributions can so easily be removed from project records.</p>
<p>Secondly, it challenges the vision and foundations of the Fedora Project. Particularly our vision statement and the <em>Friends</em> Foundation. When I contribute to the Fedora Project, I do not see people as a citizen of this-country or that-country. I see them as my peers and fellow Fedorans, helping meet that shared vision of creating &ldquo;<em>a world where everyone benefits from free and open source software built by inclusive, welcoming, and open-minded communities</em>.&rdquo; As an American citizen, I know my country makes such discriminations about large groups of people based only on their nationality, but as a contributor to Free &amp; Open Source communities, I see people by their individual character and intention to be a part of our shared vision. But how can we truly aspire to this vision if we are consciously making deliberate exclusions, even if they make little to no sense in our own context? This geographic restriction policy sits in contrast to the vision and purpose we spell out &ldquo;on paper&rdquo;.</p>
<p>I understand why Fedora leadership is taking this action due to Fedora&rsquo;s legal and sociopolitical relationship to Red Hat, an American incorporation subject to American laws and regulations. To an extent, the hand of Fedora is forced.</p>
<p>But I believe this is a great opportunity for Red Hat to be an enabler of Fedora&rsquo;s <em>First</em> Foundation. Previously, Microsoft <a href="https://github.blog/2021-01-05-advancing-developer-freedom-github-is-fully-available-in-iran/">stood up</a> for Iranian developers and successfully set a precedent about how the United States Office of Foreign Assets Control (OFAC) treats such cases. I found this excerpt from Nat Friedman&rsquo;s announcement to resonate:</p>
<blockquote>
<p>Over the course of two years, we were able to demonstrate how developer use of GitHub advances human progress, international communication, and the enduring US foreign policy of promoting free speech and the free flow of information. We are grateful to OFAC for the engagement which has led to this great result for developers.</p>
<p><em><a href="https://github.blog/2021-01-05-advancing-developer-freedom-github-is-fully-available-in-iran/">Advancing developer freedom: GitHub is fully available in Iran</a> - github.blog</em></p>
</blockquote>
<p><strong>I believe Red Hat&rsquo;s legal team should take a stand for individuals in embargoed countries to remain a beneficiary of the free and open source licenses that enable a community Linux distribution like Fedora to exist in the first place.</strong></p>
<p>After all, in Fedora, we are well-known for being <a href="https://docs.fedoraproject.org/en-US/project/#_first">first</a> in the Open Source space for innovative new ideas and approaches. We know Fedora Linux is a <a href="https://digitalpublicgoods.net/registry/fedora-linux.html">digital public good</a> that should be accessible to all and everyone. But to make this a reality, the Fedora Project cannot be first here on its own. We need our friendly primary sponsor, Red Hat, to help us clear this burden, which is brought on by our connection to Red Hat in the first place.</p>
<p>I&rsquo;ll close this counter-opinion with an excerpt from our First Foundation:</p>
<blockquote>
<p>&ldquo;However, the Fedora Project’s goal of advancing free software dictates that the Fedora Project itself pursue a strategy that preserves the forward momentum of our technical, collateral, and community-building progress. Fedora always aims to provide the future, first.&rdquo;</p>
<p><em>From <a href="https://docs.fedoraproject.org/en-US/project/#_first">What is Fedora all about?</a></em></p>
</blockquote>
<p>Here is a chance to be clear on the future we want to provide and for whom.</p>
<hr>
<p><em>Background photo by <a href="https://unsplash.com/@omidarmin?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Omid Armin</a> on <a href="https://unsplash.com/?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a>.</em></p>]]></description></item><item><title>2020/2021 in Open Source at UNICEF Innovation Fund</title><link>https://jwheel.org/blog/2021/09/2020-2021-in-open-source-at-unicef-innovation-fund/</link><pubDate>Tue, 07 Sep 2021 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2021/09/2020-2021-in-open-source-at-unicef-innovation-fund/</guid><description><![CDATA[<p>Open Source is a means to collaborate and solve common problems; during the COVID-19 pandemic, open data and tools <a href="https://www.dlapiper.com/en/us/insights/publications/2021/07/techlaw-podcast-sesg-venture-capital-for-good-and-software-solutions-with-a-purpose">proved useful</a> in quickly tailoring and deploying life-saving services. How has the <a href="https://www.unicef.org/innovation/">UNICEF Innovation Fund</a> kept up with latest Open Source innovations?</p>
<p>The UNICEF Innovation Fund invests exclusively in Open Source technology – with today’s rapidly evolving innovation landscape, Open Source software, hardware, data, and content not only create value and generate revenue, but also ensure greater collaboration and impact. This reflection is a look back at Open Source activity and participation stemming from the <a href="https://www.unicef.org/innovation/ventures">UNICEF Ventures Team</a> from June 2020 to date (July 2021).</p>
<p>By the end of this article, you will have a better understanding of the evolving and forward-thinking approach to Open Source taken by the UNICEF Office of Innovation.</p>
<p>This article looks at a few aspects of Open Source engagement at the Innovation Fund:</p>
<ol>
<li>Support models
<ol>
<li>Legal &amp; policy</li>
<li>Building and leveraging from the community</li>
</ol>
</li>
<li>Case study: Cloudline and upstream engagement</li>
</ol>

<h2 id="new-to-open-source-at-unicef">New to Open Source at UNICEF?&nbsp;<a class="hanchor" href="#new-to-open-source-at-unicef" aria-label="Anchor link for: New to Open Source at UNICEF?">🔗</a></h2>
<p>If you are hearing about the <a href="https://unicef.github.io/inventory/meta/overview/">UNICEF Open Source Mentorship programme</a> for the first time, check out this introduction post to get important context behind why UNICEF invests in <a href="https://jwfblog.wpenginepowered.com/2021/07/unicef-open-source-mentorship/">Open Source mentorship and support</a> for Innovation Fund portfolio teams:</p>
<p><a href="https://jwfblog.wpenginepowered.com/2021/07/unicef-open-source-mentorship/">https://jwfblog.wpenginepowered.com/2021/07/unicef-open-source-mentorship/</a></p>

<h2 id="innovation-fund-support-models">Innovation Fund support models&nbsp;<a class="hanchor" href="#innovation-fund-support-models" aria-label="Anchor link for: Innovation Fund support models">🔗</a></h2>
<p>Start-ups receive both funding and customized mentorship during their 12-month investment period with the UNICEF Innovation Fund. Since the Innovation Fund launched in 2016, the Innovation Fund team noted the impact of hands-on guidance to help start-ups understand how to work open and lead open. Start-ups receiving Open Source support were better equipped to develop sustainable business models that made Open Source intellectual property work with them instead of against them.</p>
<p>By the end of the 12-month investment cycle, graduating companies achieve the following milestones in place with their projects:</p>
<ul>
<li>Solid understanding of Open Source licenses and different business models depending on a permissive or copyleft strategy.</li>
<li>Laying foundations for growing or participating in friendly, inclusive communities.</li>
<li>Documentation site to showcase their Open Source work, and how to get involved.</li>
<li>Continuous Integration pipeline to test new changes in the code-base before they are added, and avoid common human errors.</li>
</ul>
<p>Across these milestones, three themes of support have emerged as as most essential in the past year: <strong>legal &amp; policy, building and leveraging from the community, and building in the open</strong>.</p>

<h3 id="legal--policy">Legal &amp; policy&nbsp;<a class="hanchor" href="#legal--policy" aria-label="Anchor link for: Legal &amp; policy">🔗</a></h3>
<p>The UNICEF Innovation Fund is unique in Venture Capital on its open-first investment strategy. Start-ups receiving UNICEF funding are obligated to either create their own Open Source works or contribute to existing Open Source works. This leads start-up teams to ask more questions: how does this work in a legal sense? How do you establish a sustainable business model with Open Source dependencies and the different types of license models that exist (e.g. permissive and copyleft)? These are the questions that start-ups receive tailored guidance on from the Open Source Mentorship programme.</p>
<p>How did the Open Source Mentorship programme support both start-ups and UNICEF Country Offices receiving funding from the <a href="https://www.unicefinnovationfund.org/about">UNICEF Innovation Fund</a>? The programme improved business and legal resources and referrals for managing Open Source intellectual property. This was primarily done by creating a self-serve knowledgebase of legal, governance, and tech policy: the <a href="https://unicef.github.io/inventory/">UNICEF Open Source Inventory</a>. The Inventory was created in close consultation with start-ups receiving UNICEF funding, leading industry experts in areas such as Open Hardware and open design, and other existing Open Source communities of practice.</p>

<h3 id="building-and-leveraging-from-the-community">Building and leveraging from the community&nbsp;<a class="hanchor" href="#building-and-leveraging-from-the-community" aria-label="Anchor link for: Building and leveraging from the community">🔗</a></h3>
<p>Over the past year, we also saw more upstream collaboration. UNICEF Innovation Fund start-ups collaborated on existing projects like the PX4 Drone auto-pilot software instead of reinventing the wheel themselves. This enabled the work done with UNICEF funding to go further and impact the wider ecosystem, instead of an individual project with highly-specific use cases.</p>
<p>Furthermore, as the Innovation Fund portfolio continues to grow, new inductees in the Open Source Mentorship programme are able to build on top of work done by previous portfolio companies. This accelerates the rate of development for the new inductees and gives them a model of success to look towards during their engagement with UNICEF.</p>
<p>For example, two companies from the <a href="https://www.unicef.org/innovation/innovationfund/dronescohortgraduation2021">2019 Drones cohort</a> created documentation websites that were used as models for the 2020 <a href="https://www.generationunlimited.org/">Generation Unlimited</a> cohort. <a href="https://qaira.github.io/">qAIRa</a> from Perú and <a href="https://rentadronecl.github.io/">Rentadrone</a> from Chile created documentation websites using the popular toolchain <a href="https://docusaurus.io/">Docusaurus</a>, created by Facebook&rsquo;s Open Source Program Office. The work of qAIRa and Rentadrone was leveraged as models by <a href="https://vrapeutic.github.io/">VRapeutic</a> and <a href="https://i-stem.github.io/">I-STEM</a> in the 2020 Generation Unlimited cohort. Using graduated companies as models accelerated both technical and content development for the new teams when they had relatable models to use in building their own Open Source documentation websites.</p>

<h2 id="innovation-fund-case-study-cloudline-and-upstream-engagement">Innovation Fund case study: Cloudline and upstream engagement&nbsp;<a class="hanchor" href="#innovation-fund-case-study-cloudline-and-upstream-engagement" aria-label="Anchor link for: Innovation Fund case study: Cloudline and upstream engagement">🔗</a></h2>
<p><a href="http://bit.ly/venturefundcloudline">Cloudline Africa</a> (South Africa) operates small-scale autonomous airships that have longer endurance and range than current commercial drones; their solution will help deliver medical supplies to hard-to-reach communities and reduce operational costs in the last-mile.</p>
<p>Four highlights from Cloudline&rsquo;s period with the Innovation Fund are below:</p>
<ul>
<li>The team launched the airship with a payload capacity of 10 kgs with a 50 km range.  </li>
<li>Full endurance capability (40km/h) along with automated waypoint flying. </li>
<li>Contributed flight control software to the PX4 upstream community by introducing a new mode of aircraft to the community in the form of airships.  </li>
<li>Cloudline received the <a href="https://www.fastcompany.co.za/business/cloudline-floats-to-the-top-at-fast-companys-most-innovative-companies-awards-44250613">Fast Company South Africa Most Innovative Company Award</a> </li>
</ul>
<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
      <iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube-nocookie.com/embed/MlldnwmWvIc?autoplay=0&amp;controls=1&amp;end=0&amp;loop=0&amp;mute=0&amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"></iframe>
    </div>

<blockquote>
<p>&ldquo;Our greatest triumph of the year was the flight of our pre-production airship. Capable of a 10kg useful payload and a 50km range, this aircraft is ideally suited to medical logistics and other high-value scheduled deliveries.&rdquo;
— <em>Spencer Horne, Co-Founder</em></p>
</blockquote>

<h3 id="going-upstream">Going upstream&nbsp;<a class="hanchor" href="#going-upstream" aria-label="Anchor link for: Going upstream">🔗</a></h3>
<p>Contributions made to another popular upstream community was another major highlight of the Open Source Mentorship programme. Furthermore, the contributions were not casual <a href="https://archive.org/details/ato2017-drivethru">&ldquo;drive-through&rdquo; contributions</a>; they were consistent and focused broadly around the ecosystem instead of a single repository of source code.</p>
<p>
<figure>
  <img src="/blog/2021/08/cloudline-team-fastcompany.jpg" alt="UNICEF Innovation Fund graduate company Cloudline is pictured accepting an award from Fast Company South Africa for Most Innovative Company of the year." loading="lazy">
  <figcaption>Autonomous airship logistics company, Cloudline, took top honours last night at the inaugural Fast Company SA Most Innovative Companies Awards held in Cape Town. — fastcompany.co.za (<a href="https://www.fastcompany.co.za/business/cloudline-floats-to-the-top-at-fast-companys-most-innovative-companies-awards" class="bare">https://www.fastcompany.co.za/business/cloudline-floats-to-the-top-at-fast-companys-most-innovative-companies-awards</a>)</figcaption>
</figure>
</p>
<p>During the mentorship programme, Cloudline added 61 commits across four repositories. The summary of their contributions were adding a new vehicle type to the PX4 auto-pilot software: <strong>airships</strong>. The team first <a href="https://discuss.px4.io/t/new-vehicle-type-airship/16514">opened a discussion</a> on the PX4 community forum. After getting feedback from a developer, they proceeded to <a href="https://github.com/PX4/PX4-Autopilot/issues/14792">add the Cloudline airship</a> into the upstream software. This was followed by documentation additions with <a href="https://github.com/PX4/PX4-Devguide/pull/1065">controller diagrams</a> and <a href="https://github.com/PX4/PX4-Devguide/pull/1077">simulation instructions</a>. <strong>Through their contributions, a wider network of developers can simulate and interact with airships similar to the one created by Cloudline</strong>.</p>
<p>But the contributions did not stop at code. Cloudline developer Anton Erasmus <a href="https://px4developersummitvirtual2020.sched.com/event/cjOm/an-in-depth-look-at-the-multicopter-control-system-architecture">delivered a deep dive presentation</a> at the PX4 2020 virtual contributor summit. He explained to other developers about how to leverage the multicopter control system, as used in the Cloudline airships and other popular drone devices. This outreach step is important in growing awareness in the existing community for new introductions to the common software, and how both Cloudline and the PX4 community could help each other in achieving their similar yet different goals.</p>

<h2 id="what-is-next-for-the-innovation-fund">What is next for the Innovation Fund?&nbsp;<a class="hanchor" href="#what-is-next-for-the-innovation-fund" aria-label="Anchor link for: What is next for the Innovation Fund?">🔗</a></h2>
<p>What does the next year ahead look like for UNICEF&rsquo;s Open Source Mentorship programme? Stay tuned for the final post in this series, which will explore on-going work to standardize the mentorship curriculum, detail how Innovation Fund companies are being coached in becoming <a href="https://digitalpublicgoods.net/">Digital Public Goods</a>, and the research and development for an Open Source Program Office at the UNICEF Office of Innovation in 2022.</p>
<hr>
<p><em>Special thanks for content and data collected in this post</em>: <strong>Sanna Bedi, Zenani Orengo</strong></p>]]></description></item><item><title>Better than I knew myself.</title><link>https://jwheel.org/blog/2021/08/better-than-i-knew-myself/</link><pubDate>Fri, 27 Aug 2021 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2021/08/better-than-i-knew-myself/</guid><description><![CDATA[<p>There are moments I reflect back on my life when I met someone who interacted with me in an impressive way. Though unknown to me then, I feel now that they perceived my authentic, true self when I was still searching.</p>
<p>In those moments, I think about how lost I truly was. Running away from anxiety and an unhappy past by keeping myself busy. Overthinking and ruminating on all my social interactions with others. In many ways, living in under the shadow of generational codependency. Yet through all of that, I still maintained a simple desire to be good and help others.</p>
<p>I think of the interactions that you and I had in those same moments. I am brought back to that evening, laughing in our hearts and hearing each other as we sipped wine under the setting sun on the river. A late-night taxi trip back to the hotel after a night out with old and new friends. The gifts you shared with me.</p>
<p>They are memories I do not only see in my mind, but also feel with my whole being. Even this long after they have passed. For that, I remain grateful.</p>]]></description></item><item><title>Committee risk: A governance challenge for Open Source</title><link>https://jwheel.org/blog/2021/08/committees-open-source/</link><pubDate>Thu, 26 Aug 2021 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2021/08/committees-open-source/</guid><description><![CDATA[<p>Community participation and engagement in corporate Open Source projects is valuable, yet difficult to foster. Many companies supporting popular Open Source projects develop diverse communities across different employers, nationalities, genders, educational backgrounds, and more. Increased diversity brings perspective about who finds a product useful. It also gives you the opportunity to help your product be more useful for that audience. But if you&rsquo;re building a diverse community around your enterprise project, where do you begin?</p>
<p>Many have started on this same path before. Several communities form a <strong>committee</strong> as a governance model for important decision-making. Usually committee membership is chosen through an election process. Paid employees, or sometimes, members of the community comprise the elected committee membership. This meritocratic approach is believed to bring in diverse representation and participation of highly-engaged people. After all, who better to represent contributors of a project than a committee of folks elected by their own peers?</p>
<p>Sometimes, committees do accomplish this lofty goal. My argument is that sometimes they don&rsquo;t – especially if your committees are designed in a way to <em>disable</em> participation.</p>

<h2 id="context-brief-what-is-a-committee">Context brief: what is a committee?&nbsp;<a class="hanchor" href="#context-brief-what-is-a-committee" aria-label="Anchor link for: Context brief: what is a committee?">🔗</a></h2>
<p>Frequently in this post, I refer to committees. But what are committees? I see a committee as a I see a committee as holding the following characteristics:</p>
<ul>
<li><em>Fixed</em> group of individuals charged with important decision-making privileges</li>
<li>Appointed or elected members with fixed term periods (i.e. an end date)</li>
<li>May perform their work in a public and transparent way</li>
</ul>

<h2 id="challenges-of-a-committee">Challenges of a committee&nbsp;<a class="hanchor" href="#challenges-of-a-committee" aria-label="Anchor link for: Challenges of a committee">🔗</a></h2>
<p>If designing a community for participation and engagement, a committee can do the opposite by pushing people away. It can be difficult for non-members to participate in important decisions. When building the foundation of a community on volunteerism, expecting others to give time in huge quantities is a false expectation. An active, long-term commitment as a committee member may be a big ask. Yet even if an individual wants to contribute, their company may not support such policy. So, this person is unable to contribute fully in the committee. Therefore, the opportunity is lost to include their voice as a representative of a larger community.</p>
<p>Furthermore, a committee depends on the engagement of its members to be effective. Committees are limited by the amount of time individual members actively contribute. Committees lose their effectiveness when:</p>
<ol>
<li>Individual committee members practice poor time management, <em>or</em> are simply overloaded with too many responsibilities</li>
<li>Inclusion of others with valuable perspectives have no pathway to being heard or represented, <em>unless</em> they are on the committee</li>
</ol>
<p>Committee members participate for a fixed amount of time as regular participants. This can be good for a healthy turnover rate, but it becomes bad when the same people are running over and over again. Often described as burnout!</p>

<h2 id="what-is-a-better-design-for-community-engagement">What is a better design for community engagement?&nbsp;<a class="hanchor" href="#what-is-a-better-design-for-community-engagement" aria-label="Anchor link for: What is a better design for community engagement?">🔗</a></h2>
<p>A fatal flaw in community management is being too hands-off or too hands-on from a corporate context. I look back at 2018 in the difference of roles in <a href="https://docs.fedoraproject.org/en-US/mindshare-committee/">Fedora Mindshare</a> vs. <a href="https://docs.fedoraproject.org/en-US/commops/">Fedora CommOps</a>. Red Hat strives for participation beyond paid Red Hat employees, yet the volunteer-driven community struggles at times for participation of any Red Hat employee.</p>
<p>The Mindshare Committee is the community body that leverages power in the community. These are tasks that could have been designed by CommOps too. I think the format and spirit of CommOps encourages collaboration and invitation to contribute. On the other hand, if you are not an elected or appointed member of the Mindshare Committee, there is not much in the ways of contributing. Even if that is more a belief than a fixed rule.</p>]]></description></item><item><title>Saying no.</title><link>https://jwheel.org/blog/2021/08/saying-no/</link><pubDate>Thu, 19 Aug 2021 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2021/08/saying-no/</guid><description><![CDATA[<p>For a long time, it was a &ldquo;yes&rdquo;. For a few years, I was pulled in by the fiscal lure. There are no manuals for someone who grows up having less to suddenly land at a juncture of having more. So I had to be my own guide.</p>
<p>While I was saying &ldquo;yes&rdquo;, I was afforded opportunities that I had known only as unaffordable. I had a chance to live out and explore my heart, and the unusual circumstances that make up my life. For the time I said &ldquo;yes&rdquo;, I am grateful for the people and things that subtly shaped my subconscious mind and what I learned about myself in the process of learning about others.</p>
<p>But I was not the first one to say &ldquo;no&rdquo;. I found both the closure I needed after a frustrating final year, and the luck to find a better way to live according to my values through my work.</p>
<p>So it was surprising when the conversation restarted after so long. It caught me off-guard for a number of reasons. Of most interest to me, I had never valued my community management work in an annual salary range like that. This experience put the value of my work into perspective; the context of the &ldquo;who&rdquo; is also significant in this way. Not only did it change my perspective on the value of this work, but it made me aware to what the upper bounds of salary ranges may look like for those <a href="https://getpocket.com/explore/item/too-many-of-america-s-smartest-waste-their-talents">privileged few organizations</a> with huge talent development budgets and incentive programs.</p>

<h2 id="why">Why?&nbsp;<a class="hanchor" href="#why" aria-label="Anchor link for: Why?">🔗</a></h2>
<p>But this stroke of fate also made me question my &ldquo;why&rdquo;. Why do I do what I do? For what or for whom do I do it for? These are deep questions that I have a privilege of asking myself. When I looked inward and sought to understand my feelings, I knew that I measure employment offers in my ability to live with an abundant heart. The salary range is secondary.</p>
<p>Every day, I wake up and get to ask how my daily work and practice impacts the lives of children. While there is more complexity and metrics in play, the ultimate purpose of what I do is centered first on real human impact, not stock prices and operational profit. There is no salary in any dollar range that I would trade for what I have.</p>
<p>So this time, it was my turn to say no. Not out of spite, nor out of anger. But the seasons I have changed, and so have I. My old leaves have fallen and new ones are in their place. I am grateful for the mentorship and guidance I received for those years I said &ldquo;yes&rdquo;. As alluring as it is may be to imagine a 250% pay increase…</p>
<p>I&rsquo;m happy to continue making good from where I am with the things I already have.</p>]]></description></item><item><title>Cyclical nostalgia.</title><link>https://jwheel.org/blog/2021/08/cyclical-nostalgia/</link><pubDate>Thu, 12 Aug 2021 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2021/08/cyclical-nostalgia/</guid><description><![CDATA[<p>A part of me holds nostalgia for this aspect of the Internet I grew up with. Back when blogs played a bigger role in shaping and developing the Internet culture, and being the exemplar way of how we sought to express ourselves online (or, perhaps for those of us who find both solace and agony inside written language).</p>
<p>Blogs were (mostly) safe spaces where we could share our thoughts and views. We were often influenced to think we were sharing our thoughts and views with the world, but really we were writing to a known audience. We were writing to the people who read our blogs; unless you were a 2006 Internet celebrity or mom blogger, our audiences were small and narrow. Perhaps both to our benefit and to our detriment.</p>
<p>How does this compare to today? Most online content by the masses is condensed into bite-sized thoughts: tweaked for the tweet, fed to the feed, and longing for the likes. Our thoughts and ideas are in competition in a race where attention is sparse. But to blame this solely on social media is not fair either. More consumers and producers exist today than we had fifteen years ago. We have more means to produce content today than our bandwidth-challenged dial-up connections at the turn of the new millennium. Social media went mainstream in our society because it was at the right place, at the right time.</p>
<p>As we progress further along in this decade, the art of blogging as a vehicle for human expression becomes sidelined further in nostalgia. Maybe in part because we have less collective time than we did before. Perhaps also because we became lost in this mirage of how we are supposed to appear and how we are supposed to act when our lives are lived out in this strangely self-controlled yet algorithmically influenced existence. Blogging, as a form of expression dating back to the earliest times in the Internet, exists partially outside this algorithmic existence.</p>
<p>Yet it still exists. For me, my blog is still online. But my blog maintains an absence of these kinds of <a href="https://jwfblog.wpenginepowered.com/2021/03/breakfast-in-bosnia/">emotional, artful expressions</a> that better show me as a human being, not just a contributor or participant in some technology projects or communities.</p>
<p>So, lost somewhere in that cyclical loop of (self-defeating?) nostalgia, I push my thoughts out into the sea of the Internet; a message in a bottle without a final destination. Just a thought: here for a moment and gone in the next.</p>]]></description></item><item><title>What if Open Source dependencies weren't software?</title><link>https://jwheel.org/blog/2021/08/open-source-dependencies/</link><pubDate>Tue, 10 Aug 2021 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2021/08/open-source-dependencies/</guid><description><![CDATA[<p>I often wonder how to best measure and communicate Open Source value. The collective focus of the industry goes into quantifying dependencies; that is, how one software relies on other software in order to complete its primary function. The vocabulary to measure dependency usually includes words like &ldquo;imports,&rdquo; &ldquo;licenses,&rdquo; &ldquo;bugs fixed to bugs open,&rdquo; and other machine-oriented terms. Yet the unique value proposition of <em>innovative</em> Open Source involves a community of people around a software. This led me on to the next question: <strong>why do we bias towards machine-oriented terms instead of human-oriented or community-oriented terms to describe Open Source communities and division of labor?</strong></p>
<p>However, this question only led to more questions. Much of the existing Open Source discourse on sustainability centers on defining, tracking, and understanding &ldquo;dependencies.&rdquo; Yet when we say dependencies, people typically mean source code, software packages, and license compatibility. So, <strong>how do we describe the value proposition of people and the impact of cross-pollinated communities?</strong></p>
<p>So, what if Open Source dependencies weren&rsquo;t <em>just</em> software? Furthermore, what if Open Source dependencies could mean people… or simply, human beings? In this blog post, we&rsquo;ll walk through this thought experiment.</p>

<h2 id="open-source-dependencies-are-people">Open Source dependencies are people.&nbsp;<a class="hanchor" href="#open-source-dependencies-are-people" aria-label="Anchor link for: Open Source dependencies are people.">🔗</a></h2>
<p>My purpose is to augment the idea of &ldquo;dependencies&rdquo; from exclusively source code to be more inclusive of its authors as well. We typically center software in our Open Source conversations, so I want to deliberately center people. There are many ways to cover this, but I will offer three ways we could think of Open Source dependencies as more than source code:</p>
<ol>
<li>Community inheritance</li>
<li>Legacies</li>
<li>Love</li>
</ol>

<h2 id="dependencies-community-inheritance">Dependencies: Community inheritance&nbsp;<a class="hanchor" href="#dependencies-community-inheritance" aria-label="Anchor link for: Dependencies: Community inheritance">🔗</a></h2>
<p>New, smaller projects sometimes form up underneath or within an existing larger project. Sometimes a new project is created to support the existing project. Sometimes it is a passion project led by a few that aligns with the motivations and values of a wider community. But these new projects begin with an added advantage of inheriting the collaborative ecosystem surrounding the existing project, instead of being tasked to create this from scratch themselves.</p>

<h3 id="why-measure-this">Why measure this?&nbsp;<a class="hanchor" href="#why-measure-this" aria-label="Anchor link for: Why measure this?">🔗</a></h3>
<p>Ask anyone responsible for building an Open Source community from scratch. The approach at this stage is experimental:</p>
<ul>
<li>Will using this feature encourage new contributors to participate?</li>
<li>Does someone in a related field discover our project on a casual whim looking at GitHub?</li>
<li>How do we make our project more accessible for contributors we do not yet have?</li>
</ul>
<p><strong>Many times, it is about forming a hypothesis and then testing it.</strong></p>
<p>However…</p>
<p>If you exist within the dynamic of an existing community, you benefit from resources, people, and infrastructure that would be unavailable if you started independently. Finding communities with compatible values and motives exposes you to a wider network, and thus more visibility in a world where there is already <em>too much</em> information. Working within an existing community can cut light-years off of time-to-market or improving product sustainability and community resiliency (in the context of other variables).</p>

<h3 id="example-of-community-inheritance">Example of community inheritance&nbsp;<a class="hanchor" href="#example-of-community-inheritance" aria-label="Anchor link for: Example of community inheritance">🔗</a></h3>
<p>The <a href="https://docs.fedoraproject.org/en-US/project/">Fedora Project</a> produces Fedora Linux. <a href="https://getfedora.org/">Fedora Linux</a> is a Free and Open Source operating system derived from the open source Linux kernel. The Fedora Project also creates other software in order to facilitate the production, creation, and updates of Fedora Linux. Examples of this are asynchronous <a href="https://github.com/fedora-infra/mote">meeting minute note managers</a>, <a href="https://github.com/fedora-infra/fedocal">community calendars</a>, <a href="https://badges.fedoraproject.org/about">gamified badges</a>, <a href="https://pagure.io/koji">software package distribution tools</a>, and more.</p>
<p>While none of these smaller software projects are the ultimate purpose and goal of the Fedora Project, they are supplementary to the overall goal of <strong>producing Fedora Linux</strong>. The sustainability of these smaller parts ensure a healthier ecosystem around the larger project.</p>
<p>Another way to see this is as a planet with several orbiting moons, where the planet is an existing project and each moon represents another smaller project orbiting around the existing one. Each moon is different, yet each is still connected to the gravitational force and motions of the planet.</p>

<h2 id="dependencies-legacies">Dependencies: Legacies&nbsp;<a class="hanchor" href="#dependencies-legacies" aria-label="Anchor link for: Dependencies: Legacies">🔗</a></h2>
<p>Open Source projects are more than source code. Human beings are social creatures, and Open Source is a social activity. An individual or groups of individuals may influence the hearts and minds of others in the movement. To win hearts and minds is to merge the intentions of the individual with the intentions of the wider community. The power to change minds is the power to move mountains.</p>

<h3 id="why-measure-this-1">Why measure this?&nbsp;<a class="hanchor" href="#why-measure-this-1" aria-label="Anchor link for: Why measure this?">🔗</a></h3>
<p>Open Source is a social activity. It has both a written and oral story-telling tradition. There is a rich history from the movement that first took root in the 1980s. We use stories to expand our imagination, or to see a perspective in a way we might not have before. So, it is important to note the value these historical stories play in shaping our movement and creating leaders.</p>
<p>Legacies of kindness and love result in thriving communities where contributors look out for each other. People are not motivated by the will to survive; they are motivated by the will to thrive with a community. Legacies of discrimination and hate result in divided, splintered communities who are focused on counting their differences instead of seeing how alike we are.</p>

<h3 id="example-of-legacies">Example of legacies&nbsp;<a class="hanchor" href="#example-of-legacies" aria-label="Anchor link for: Example of legacies">🔗</a></h3>
<p><a href="https://jwfblog.wpenginepowered.com/2018/11/fedora-appreciation-week-tribute-to-a-legacy/">Seth Vidal</a> wrote the Yellowdog Update Manager (Y.U.M.), and he contributed to Fedora. <a href="https://communityblog.fedoraproject.org/remembering-matthew-williams/">Matthew Williams</a> helped others learn about Linux and Open Source, and he contributed to Fedora. <a href="https://communityblog.fedoraproject.org/remembering-thomas-gilliard-satellit/">Thomas Gilliaird</a> helped me with using Fedora Linux in IRC as a teenager, and he contributed to Fedora. The ways we help other humans while on our own journey is how we create a legacy with wider wings. The impact of a few kind people is enough to inspire more to follow.</p>
<p>To ignore the impact of legacies in social activities surrounding Open Source is to deny the impact of charismatic leaders who lead in styles of either unity or division.</p>

<h2 id="dependencies-love">Dependencies: Love&nbsp;<a class="hanchor" href="#dependencies-love" aria-label="Anchor link for: Dependencies: Love">🔗</a></h2>
<blockquote>
<p>Power at its best is <strong>love implementing the demands of justice</strong>. Justice at its best is <strong>love correcting everything that stands against love</strong>.</p>
<p><a href="https://en.wikipedia.org/wiki/Martin_Luther_King_Jr.">Dr. Martin Luther King, Jr.</a></p>
</blockquote>
<p>The act of existence can be political. We cannot escape the sociopolitical environment of our world, no matter how much we wish to push it aside. If we choose to ignore it, there are others who choose to manipulate common ignorance, to the exploit of their own unbounded wealth. We must embrace and acknowledge the political atmosphere permeates our world; it does not disappear and hide away when it makes us uncomfortable.</p>
<p>
<figure>
  <img src="/blog/2021/04/Get_out_of_jail_free.jpg" alt="A Get Out of Jail Free card from the board game Monopoly" loading="lazy">
  <figcaption>From Wikipedia (<a href="https://en.wikipedia.org/wiki/File:Get_out_of_jail_free.jpg" class="bare">https://en.wikipedia.org/wiki/File:Get_out_of_jail_free.jpg</a>).</figcaption>
</figure>
</p>

<h3 id="why-measure-this-2">Why measure this?&nbsp;<a class="hanchor" href="#why-measure-this-2" aria-label="Anchor link for: Why measure this?">🔗</a></h3>
<p>Open Source does not get a <a href="https://en.wikipedia.org/wiki/Get_Out_of_Jail_Free_card">&ldquo;get out of jail free&rdquo; card</a>.</p>
<p>Open Source is political. Its roots in the Free Software movement were firmly rooted in politics, even if they were narrowly confined to a few key issues. The real question is, how do we wield our own political agency and expediency? We should act from our hearts and move to inspired action to correct everything that stands against love.</p>

<h3 id="example-of-love">Example of love&nbsp;<a class="hanchor" href="#example-of-love" aria-label="Anchor link for: Example of love">🔗</a></h3>
<p>This blog post. These words are a radical act of love. Acknowledging it and choosing to embrace it is the first step in using our Open Source power responsibly.</p>
<hr>
<p><em>Featured image arranged by Justin Wheeler. Original photograph by <a href="https://unsplash.com/@goian?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Ian Schneider</a> on <a href="https://unsplash.com/s/photos/community?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a>.</em></p>]]></description></item><item><title>A proposal for the end of accommodations</title><link>https://jwheel.org/blog/2021/08/a-proposal-for-the-end-of-accommodations/</link><pubDate>Thu, 05 Aug 2021 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2021/08/a-proposal-for-the-end-of-accommodations/</guid><description><![CDATA[<p>Language is powerful. Words are subtle building blocks to how we imagine the world around us. So, with the goal of pursuing more equitable language, I propose the end of accommodations.</p>
<p>Accommodations move us closer to equality but not equity. The presence of accommodations implies a belief in an &ldquo;us&rdquo; and a &ldquo;them&rdquo;. One group benefits from default inclusion, while another group either raises a collective voice, or is de-facto excluded. Instead of designing our world for others different than ourselves, we must design our world together. It is a quicker way to achieve a more just world.</p>
<p>The &ldquo;abled&rdquo; community needs to challenge our perspectives and do our share of the learning required to see things from another perspective.</p>
<p>An example I saw from Twitter that made an impression on me was how someone explained the idea of combinations and permutations of the five human senses: sight, hearing, smell, taste, and touch. The commonly-held belief is that lacking one (or more) of these senses leaves you deprived. Without one of these senses, your potential is limited and you deserve to be pitied.</p>

<h2 id="multi-sensing--accommodations">Multi-sensing &gt; accommodations&nbsp;<a class="hanchor" href="#multi-sensing--accommodations" aria-label="Anchor link for: Multi-sensing &gt; accommodations">🔗</a></h2>
<p>So, what does it mean to be multi-sensing? Most of us see our five senses (sight, hearing, smell, taste, touch) as a fixed state of sensory stability. These senses and basic mental stability are socially-assumed as always present. They define how we individually experience life.</p>
<p>Often those lacking one or more of these senses are seen as deprived. They are perceived as missing something or to have lost something they can never fully regain. The absence of a human sense comes with the added psychological burden of living in a world where you are often the afterthought, the &ldquo;new use case&rdquo;, the countless trials of countless beta versions of any kind of software that might help overcome the disadvantage of &ldquo;missing&rdquo; a sense or mental disability.</p>
<p>I suggest an alternative way to design for accessibility and inclusivity. A personal deviation is not written off as &ldquo;missing&rdquo; something, but instead as a new combination of senses gained. Designers should assume an expected and guaranteed variable of this new combination. Accessible design must be a first-class citizen in early project management planning.</p>
<p>To put it another way, observe the presence and lack of senses among us as a matrix of combinations, instead of large swathes of characteristics assumed to always be present. We unlock the best of our design knowledge to think in the pursuit of access to the greatest many instead of &ldquo;what ticks off the box&rdquo;.</p>
<p>Before, we saw an accommodation as when a specific feature is added to software for someone lacking one or many senses. But we must shift from accommodations to full inclusion. <strong>Accommodations are acknowledgements of disability</strong>. It assumes a fixed state where a set of critical features to guarantee usability will always lag behind for a subset of people. True equality is seeing access for those with disabilities as equal to the design of features for those with five active senses.</p>
<hr>
<p><em>Featured image photo by <a href="https://unsplash.com/@matthew_t_rader?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Matthew T Rader</a> on <a href="https://unsplash.com/s/photos/thoughtful?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a>.</em><br>
<em>Modified by Justin Wheeler</em>.</p>]]></description></item><item><title>Përshëndetje nga Tiranë 🇦🇱</title><link>https://jwheel.org/blog/2021/08/pershendetje-tirane/</link><pubDate>Mon, 02 Aug 2021 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2021/08/pershendetje-tirane/</guid><description><![CDATA[<p>Përshëndetje nga Tiranë, or in Albanian, hello from Tirana! I am residing for a short time in Tiranë (pronounced Ti·ra·na), <a href="https://en.wikipedia.org/wiki/Albania">Albania</a>. After a previous visit in June, I decided to make Tiranë my home for part of my remote work contract. I moved in this past week.</p>
<p>The most common reaction I received from friends and family in the United States is surprise and curiosity. Admittedly Tiranë is not a typical place for an American to end up. But I am no stranger to this city. I have a <a href="https://jwfblog.wpenginepowered.com/tag/albania/">long history in Tiranë</a>. I <a href="https://jwfblog.wpenginepowered.com/2017/05/open-labs-tirana-albania/">fell in love</a> with the culture and the people, and <a href="https://jwfblog.wpenginepowered.com/2017/03/hackathon-albania-sustainable-goals/">made good friends</a> that are still in my life today. Some even helped me relocate. (<em>Thank you!</em>) So while it may be unusual for an American to end up in Albania, it is not unusual for me to end up here.</p>
<p>But how did I make the jump? Or why leave the United States, especially while the world holds its collective breath amid a global pandemic? It was not an easy decision, so it will not have an easy explanation.</p>

<h2 id="a-visit-to-tiranë-in-june">A visit to Tiranë in June.&nbsp;<a class="hanchor" href="#a-visit-to-tiran%c3%ab-in-june" aria-label="Anchor link for: A visit to Tiranë in June.">🔗</a></h2>
<p>In June 2021, I visited Tiranë with friends who had never visited Albania before. In the course of that trip, I did not realize I was being pulled back into a culture, city, and country that has stuck with me for many years. But I was.</p>
<p>
<figure>
  <img src="/blog/2021/07/IMG_20210615_112224706-scaled.jpg" alt="Justin is pictured to the left of the Albanian flag, adjacent to his head. In the background, there is a small river surrounded by trees and small sand beaches." loading="lazy">
  <figcaption>Next to the Albanian flag. <em>CC BY-NC-SA 4.0 (<a href="https://creativecommons.org/licenses/by-nc-sa/4.0/" class="bare">https://creativecommons.org/licenses/by-nc-sa/4.0/</a>), Justin Wheeler, June 2021</em>.</figcaption>
</figure>
</p>
<p>Fate took my hand, and after a year of cloudy uncertainty, I knew a new part of my destiny. On a fateful flight flying westbound, my heart was resolved to return eastbound. And how hard must I bite my tongue to acknowledge this privilege bestowed unto me by my American passport? To leave the story unfinished was only a matter of resolve, thus I knew I must pursue the next chapter.</p>
<p>Fast forward… and I am here in Tiranë. I made my arrival quietly to give me time to settle. (<em>Literally</em>.) I only had a bed, fridge, microwave, and a sofa. Now it is feeling more like my home. I am eager to make rounds to my favorite places and saying përshëndetje to old friends again soon.</p>
<p>
<figure>
  <img src="/blog/2021/07/DSC_0172_1.jpg" alt="Four chess pieces sit atop a square, orange plate. The chess pieces are made with filament from a 3-D printer. Faded out in the background, there is the head of a 3-D printer, presumably what made the chess pieces. This photo was taken at Open Labs Hackerspace in Tiranë, Albania." loading="lazy">
  <figcaption><em>CC BY-SA 4.0 (<a href="https://creativecommons.org/licenses/by-sa/4.0/" class="bare">https://creativecommons.org/licenses/by-sa/4.0/</a>), Justin Wheeler, April 2017</em>.</figcaption>
</figure>
</p>

<h2 id="is-the-future-in-stockholm-">Is the future in Stockholm? 🇸🇪&nbsp;<a class="hanchor" href="#is-the-future-in-stockholm-" aria-label="Anchor link for: Is the future in Stockholm? 🇸🇪">🔗</a></h2>
<p>Part of my move is also motivated by my work team&rsquo;s upcoming relocation. My team will relocate to Stockholm, Sweden over the next year. I am not sure where my fate will leave me. I love what I do and I feel privileged to be paid for it. So if I will continue forward on this same path, then I know I will go.</p>
<p>Yet I prefer to know by experience than to guess by speculation. So if I will go with my team, I would like to experience first-hand what would be my new home. Another fact is that plane tickets to Europe are cheaper from Europe. Cheaper than from the United States, even though Tiranë is a &ldquo;premium&rdquo; destination by European standards.</p>
<p>Eventually I hope to visit my new office and see it for myself. Again wondering how hard to bite my tongue if I acknowledge the unique privilege I have to casually shift my life in such a seismic way.</p>

<h2 id="here-for-now">Here, for now.&nbsp;<a class="hanchor" href="#here-for-now" aria-label="Anchor link for: Here, for now.">🔗</a></h2>
<p>If you are a friend and happen to be in Tiranë, drop me a note!</p>]]></description></item><item><title>Introducing UNICEF Open Source Mentorship</title><link>https://jwheel.org/blog/2021/07/unicef-open-source-mentorship/</link><pubDate>Tue, 06 Jul 2021 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2021/07/unicef-open-source-mentorship/</guid><description><![CDATA[<p><em>This post was co-published <a href="https://www.unicefinnovationfund.org/broadcast/expert-posts/introducing-unicef-open-source-mentorship">on the UNICEF Innovation Fund blog</a>.</em></p>
<p>2020 saw the launch of a formalized Open Source Mentorship programme for the <a href="https://www.unicefinnovationfund.org/">UNICEF Innovation Fund</a>, built up on two years of work from <a href="https://fossrit.github.io/librecorps/">RIT LibreCorps</a> expertise and consulting.</p>
<p>The <a href="https://unicef.github.io/inventory/meta/overview/">Open Source Mentorship programme</a> includes <a href="https://unicef.github.io/inventory/meta/modules/#offered">five modules</a> about Open Source intellectual property and communities delivered <a href="https://unicef.github.io/inventory/meta/modules/#program">across twelve months</a>. UNICEF grantees are matched with an experienced Open Source Mentor to guide them through the modules. The mentorship takes an interactive, guided approach to understanding the unique context that each team and product exist within. The assigned Open Source Mentor provides specialized advice and training:</p>
<ul>
<li>Tailored feedback based on business models</li>
<li>Existing local user communities</li>
<li>Best practices for collaborating together with others on similar challenges.</li>
</ul>
<p>The geographic diversity in the UNICEF Open Source Mentorship programme is unusual for technology incubators or accelerator programs. All funded projects come from UNICEF programme countries. The UNICEF Innovation Fund provides equity-free funding for Open Source solutions from local innovators and entrepreneurs solving local problems. To date, the Innovation Fund has invested in teams from over 57 countries. Argentina, India, Iran, Kenya, Mexico, Nepal, and Rwanda represent the most recent incoming cohort in July 2021.</p>
<p>But why does this kind of work matter to UNICEF or the United Nations?</p>

<h2 id="un-roadmap-for-digital-cooperation">UN Roadmap for Digital Cooperation&nbsp;<a class="hanchor" href="#un-roadmap-for-digital-cooperation" aria-label="Anchor link for: UN Roadmap for Digital Cooperation">🔗</a></h2>
<p>In June 2020, the United Nations Secretary-General released the <a href="https://www.un.org/en/content/digital-cooperation-roadmap/assets/pdf/Roadmap_for_Digital_Cooperation_EN.pdf">UN Roadmap for Digital Cooperation</a>, a call for action and a vision with several key considerations:</p>
<ul>
<li>An Inclusive Digital Economy and Society</li>
<li>Human and Institutional Capacity</li>
<li>Human Rights and Human Agency</li>
<li>Trust, Security and Stability</li>
<li>Global Digital Cooperation</li>
</ul>
<p>The report explores the impact technology has in each key area:</p>
<blockquote>
<p>&ldquo;Digital technology does not exist in a vacuum – it has enormous potential for positive change, but can also reinforce and magnify existing fault lines and worsen economic and other inequalities. In 2019, close to 87 per cent of individuals in developed countries used the Internet, compared with only 19 per cent in the least developed countries.&rdquo;</p>
<p><a href="https://www.un.org/en/content/digital-cooperation-roadmap/assets/pdf/Roadmap_for_Digital_Cooperation_EN.pdf">UN Roadmap for Digital Cooperation</a>, June 2020</p>
</blockquote>

<h3 id="open-source-mentorship-enables-digital-cooperation">Open Source Mentorship enables digital cooperation.&nbsp;<a class="hanchor" href="#open-source-mentorship-enables-digital-cooperation" aria-label="Anchor link for: Open Source Mentorship enables digital cooperation.">🔗</a></h3>
<p>Therefore, the conception and development of Open Source Mentorship is inspired by the Roadmap, in four key aspects:</p>
<ol>
<li><strong>Digital Public Goods</strong>: To encourage knowledge transfer and collaboration on practical, everyday advice on building technology projects in line with the <a href="https://digitalpublicgoods.net/standard/">Digital Public Good Standard</a>.</li>
<li><strong>Digital Capacity-Building</strong>: Empowering others with the <a href="https://jwfblog.wpenginepowered.com/2020/11/open-source-archetypes-unicef-open-source/">skills and information</a> they need to be bringers of Open Source change and innovation in a disruptive and competitive Venture Capital ecosystem.</li>
<li><strong>Digital Trust and Security</strong>: Providing a holistic view of Open Source intellectual property that is influenced by, but not bound by, quarterly earnings reports and share prices. Understanding the commitments of Open Source licenses and technology, and how trust is earned and lost in Open Source products and communities.</li>
<li><strong>Global Digital Cooperation</strong>: Designing and structuring communities to be healthy and collaborative in nature, united in resolving common challenges and problems.</li>
</ol>]]></description></item><item><title>Computer human.</title><link>https://jwheel.org/blog/2021/07/computer-human/</link><pubDate>Thu, 01 Jul 2021 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2021/07/computer-human/</guid><description><![CDATA[<p>Recently a <a href="https://open.spotify.com/playlist/37i9dQZF1DXaRycgyh6kXP?si=18f5bb6a3aba46de">Spotify playlist</a> curated into my feed. The playlist was a perfect match for my soul when I needed it most. This led me to wonder, who or what curated this playlist? What caused it to appear in my feed that day?</p>
<p>The era of disc jockeys and long LPs are past. While human-curated playlists continue to exist, they are in steep competition with weekly playlists of tailored content. Every week, a personal digital deejay runs your music life. This digital deejay knows what you are vibing right now, what were the hot skips, and <a href="https://docs.google.com/document/d/16GrJwWch0untSZ6tc77GmhauYtlLTrCJSz_JwrHSXXo/edit?usp=sharing">what might be your new moods</a> for the week. It is hard for any human to compete with that level of curated music <em>freshness</em>.</p>
<p>But this did not answer my question. Who curated <em>this</em> playlist, that I felt so intently in my heart? In this way, I realized it did not matter if it were a real human being who hand-dragged the songs from one album to another, or if it were a machine learning algorithm that uniquely picked songs only for me. The algorithm is still human, in a world which is also structured, shaped, and changed by humans.</p>
<p>Perhaps it was the human essence of this algorithm that compelled the playlist into my feed. A long time ago, someone would have called something like this fate. But I felt a warmth that this playlist helped me feel a sense of my own humanity, in a time where I was feeling so many different things. Call it machine learning, call it fate, call it biased human activity, and you are right.</p>
<p>The break-up of robot humans known as Daft Punk earlier this year was heart-wrenching. Two humans who conveyed the humanity of machines to me through their music. They shared a perspective in my life that I did not know I was looking to hear. Despite the break-up, their message remains clear in my heart. Their message is an acknowledgement that what is robot is also human.</p>
<p>So if algorithms and computers are human by their association to humans, what does this speak of the humans who create the robots? Are there computer humans? Computer humans who live their life as if on a script? Computer humans who struggle with memory storage or retention? If Daft Punk claims the title to being robot human / human robot, then it might also be inferred that there are robotic, programmed humans who take calculated steps to create the world they want, irrespective of others.</p>
<p>Indeed, computer human.</p>
<p>I hope we may aspire to Daft Punk&rsquo;s vision of human-is-robot/robot-is-human instead.</p>]]></description></item><item><title>2021 OSI Board of Directors statement of intent</title><link>https://jwheel.org/blog/2021/04/2021-osi-board-of-directors-statement-of-intent/</link><pubDate>Tue, 13 Apr 2021 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2021/04/2021-osi-board-of-directors-statement-of-intent/</guid><description><![CDATA[<p><em>This first appeared <a href="https://wiki.opensource.org/bin/Main/OSI%20Board%20of%20Directors/Board%20Member%20Elections/2021%20Individual%20and%20Affiliate%20Elections/Flory2021/">on the Open Source Initiative Wiki</a>. In light of the <a href="https://opensource.org/election_update">election update this year</a>, I am republishing my statement of intent on my personal blog.</em></p>
<hr>
<blockquote>
<p>No culture can live if it attempts to be exclusive.</p>
<p>Mahatma Gandhi</p>
</blockquote>
<p>I believe in the value of upholding the Open Source Definition as a mature and dependable legal framework while recognizing the OSI needs to work better with works that are not Open Source. My ambition as a candidate is to support existing work to enable a more responsive, more agile Open Source Initiative.</p>
<p><strong>Twitter:</strong> <a href="https://twitter.com/jwf_foss"><strong>@jwf_foss</strong></a></p>

<h2 id="why-should-you-vote-for-me">Why should you vote for me?&nbsp;<a class="hanchor" href="#why-should-you-vote-for-me" aria-label="Anchor link for: Why should you vote for me?">🔗</a></h2>
<p>I bring a <a href="https://jwheel.org/#unicef">public sector perspective</a> to a conversation where it seems missing, despite the dependent relationship of the public sector to Free and Open Source works. In my work, I provide Open Source mentorship and coaching to humanitarian-driven start-ups hailing from 57 countries. I am an excellent communicator, I understand a subset of challenges faced by Open Source communities, and I have a collaborative nature.</p>
<p>I am also a millennial. The GPL was first drafted before I was born. My lived experience with Free Software and Open Source gives me a vantage point not well-represented in Open Source legal and policy work. My personal experience with Free and Open Source software is impacted by years of untangling my own digital life from technology decisions made for me, not by me. With that in mind, I realize not everyone can afford to be a Free Software purist, but we can still uphold the values of Open Source even if we do not use it exclusively.</p>

<h2 id="who-am-i">Who am I?&nbsp;<a class="hanchor" href="#who-am-i" aria-label="Anchor link for: Who am I?">🔗</a></h2>
<p>I work as an Open Source Technical Advisor at UNICEF in the <a href="https://www.unicef.org/innovation/">Office of Innovation</a>. I manage and support an <a href="https://unicefinnovationfund.org/">Open Source Mentorship programme</a> for start-up investments and teams building Open Source products and communities from more than 57 countries. I also provide Open Source support to other UNICEF colleagues and recently coordinated UNICEF Innovation&rsquo;s participation in the [on-going, at publication time] Outreachy round.</p>
<p>Outside of work, I have contributed to the <a href="https://docs.fedoraproject.org/en-US/project/">Fedora Project</a> for almost six years. I am soon ending a year-long term as the <a href="https://docs.fedoraproject.org/en-US/diversity-inclusion/roles/council-advisor/">Diversity &amp; Inclusion Advisor</a> to the Fedora Council. I am a founding member of the Fedora <a href="https://docs.fedoraproject.org/en-US/commops/">Community Operations</a> and <a href="https://docs.fedoraproject.org/en-US/diversity-inclusion/">Diversity &amp; Inclusion</a> teams. </p>

<h2 id="what-are-my-qualifications">What are my qualifications?&nbsp;<a class="hanchor" href="#what-are-my-qualifications" aria-label="Anchor link for: What are my qualifications?">🔗</a></h2>
<p>I first contributed to Open Source as a teenager. I was a community moderator and staff member of the open source <a href="https://jwheel.org/#spigotmc">SpigotMC project</a>. There, I handled user reports for a community forum with over 400,000 registered members. This is one of the most unique communities I have worked in, as the Spigot Community is a population of hundreds of thousands with an age demographic concentrated between ages 13-25.</p>
<p>Additionally, I am on the <a href="https://jwheel.org/#open-rit">advisory board of Open @ RIT</a>, the Open Source Programs Office for the <a href="https://www.rit.edu/">Rochester Institute of Technology</a> in Rochester, New York. This enables me to work more closely with academia, which has a growing interest in the growing ecosystem of academic Open Source Program Offices.</p>
<p>Finally, I regularly work with teams building Open Source solutions in support of children and UNICEF’s core work. I have lived experience of coaching teams on Open Source best practices across six continents. I have seen where Open Source worked well and where it didn’t. I bring this background and perspective into the work I would do as a member and representative elected by the Open Source Initiative constituency.</p>
<p>In summary, my lived experiences in Open Source, my connection to academic Open Source, and the humanitarian focus of my work make me a uniquely-qualified candidate for the OSI Board.</p>
<hr>

<h2 id="interview-responses">Interview responses&nbsp;<a class="hanchor" href="#interview-responses" aria-label="Anchor link for: Interview responses">🔗</a></h2>
<p>Luis Villa published <a href="https://opensource.com/article/21/3/board-elections-osi">four interview questions</a> for OSI Board candidates on Opensource.com. I originally <a href="https://twitter.com/jwf_foss/status/1370064424229216258">tweeted my response</a>, but I copied it here for wider visibility too.</p>

<h3 id="q1-what-should-osi-do">Q1: What should OSI do…&nbsp;<a class="hanchor" href="#q1-what-should-osi-do" aria-label="Anchor link for: Q1: What should OSI do…">🔗</a></h3>
<p>“…<em>about the tens of millions of people who regularly collaborate to build software online (often calling that activity, colloquially, open source) but have literally no idea what OSI is or what it does?”</em></p>
<p>I am excited at the opportunity to contribute here. The UNICEF Office of Innovation (and my own Open Source Mentorship programme) rely on the Open Source Definition to guide our international Open Source work, even if we are still learning how to do it best. But without the OSD as a guiding light, our work is much harder. My team is well-positioned to be an advocate and voice of support for the Open Source Definition in policy environments where Open Source is not. This relates to on-going <a href="https://gigaconnect.org/">Giga connectivity work</a> to connect schools worldwide to the Internet for equitable education opportunities for children.</p>
<p>So to directly answer the question, we have a conversation. Avoid anger when others choose software that is not Open Source. Avoid exasperated frustration when people pick licenses that are not Open Source. But the first step is always to teach &amp; educate on the stories, values and history of the Free/Open Source community.</p>

<h3 id="q2-if-an-ethical-software-initiative-sprung-up-tomorrow-what-should-osis-relationship-to-it-be">Q2: If an Ethical Software Initiative sprung up tomorrow, what should OSI&rsquo;s relationship to it be?&nbsp;<a class="hanchor" href="#q2-if-an-ethical-software-initiative-sprung-up-tomorrow-what-should-osis-relationship-to-it-be" aria-label="Anchor link for: Q2: If an Ethical Software Initiative sprung up tomorrow, what should OSI&rsquo;s relationship to it be?">🔗</a></h3>
<p>The good folks behind the Ethical Source movement have done so. The OSI needs to be open to collaborate and engage with other orgs who steward legal works that do not adhere to the OSD.</p>
<p>I want to invite the Ethical Source folks into the conversation. How can we better partner together? If elected, I would commit myself to organizing a public town hall or community discussion with the Ethical Source folks. Coraline Ada Ehmke, Tobie Langel, and many other folks are doing great work in this space. So, let&rsquo;s collaborate and work together.</p>

<h3 id="q3-when-a-license-decision-involves-a-topic">Q3: When a license decision involves a topic…&nbsp;<a class="hanchor" href="#q3-when-a-license-decision-involves-a-topic" aria-label="Anchor link for: Q3: When a license decision involves a topic…">🔗</a></h3>
<p>“…<em>on which the Open Source Definition is vague or otherwise unhelpful, what should the board do?”</em></p>
<p>The OSI needs to improve at saying what it is not. We are more clear on what the OSD <strong><em>is</em></strong> than we were even last year. As a candidate, I don&rsquo;t have crazy ideas for the Definition. But there are things that are not Open Source. The world is changing.</p>
<p>We need to adapt. We must be nimble in changing with the world, or the values and motives of the original Free/Open Source movement are at risk of volatility. As a candidate, if presented with an unclear situation, I would take one of two options:</p>
<ol>
<li>If the proposed work stands against a principle of the OSD, it should not be approved as such, or the OSD becomes meaningless; OR</li>
<li>Take an interpretive, &ldquo;living document&rdquo; view of the OSD for new copyleft innovations where the OSD is not clear or ambiguous.</li>
</ol>
<p>For context, I am a copyleft believer. Promoting and advocating for the stability and integrity of Open Source licenses is a fundamental part of my interest as a candidate for the Board.</p>

<h3 id="q4-what-role-should-the-new-staff-play-in-license-evaluation-or-the-osd-more-generally">Q4: What role should the new staff play in license evaluation (or the OSD more generally)?&nbsp;<a class="hanchor" href="#q4-what-role-should-the-new-staff-play-in-license-evaluation-or-the-osd-more-generally" aria-label="Anchor link for: Q4: What role should the new staff play in license evaluation (or the OSD more generally)?">🔗</a></h3>
<p>I don&rsquo;t have an answer to this one. Foundations are mostly new to me. I would defer to expertise and listen to what others with more years have to say. I want to better understand the capacity and ambition of the OSI to take on new work with a steady staff.</p>
<p>I am a collaborator by nature and a team player. So, I want to enable the work for the OSI to be more agile and responsive in what I see as core, critical work.</p>
<hr>
<p>That&rsquo;s it. If you have specific questions, you are welcome to get in touch with me on Twitter or add a comment below.</p>]]></description></item><item><title>What is Freedom?</title><link>https://jwheel.org/blog/2021/04/what-is-freedom/</link><pubDate>Mon, 12 Apr 2021 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2021/04/what-is-freedom/</guid><description><![CDATA[<p>When I first saw the letter asking for Richard Stallman and the FSF Board of Directors resignations with merely five signatures, I knew I had to sign. Not because I knew it would be the popular thing to do. But because it was what was true in my heart. Only in a sense of deep empathy could I understand the reasons why <em>it had finally come to this</em>. I signed the letter because as much as I have personally benefited indirectly by the legacy of Mr. Stallman in my life, I feel his continued presence is harmful and more damaging at the forefront of the movement.</p>
<p>I don&rsquo;t say that casually either. I have involuntarily found Open Source as my calling. Or my people. I contribute to Open Source because I love to collaborate and work together with other people. This challenges me. It humbles me in a way that I know I can always learn something new from someone else. For this, Open Source and Free Software have enriched my life. They have also given me, again involuntarily, an odd but productive way of coping with my own mental health issues, anxiety, and depression.</p>
<p>So how do I make sense of the emotions and feelings I have now? How do I untangle this complicated web of events and reactions by other people? To ignore it doesn&rsquo;t seem possible. If I remove emotion, I am left with a purely rational motive to involve myself in this contemporary issue. My work, profession, and career goals are directly affected by however this discussion goes. There is no way out for me. It&rsquo;s my job, so I have to care. But if you add emotions back in, to stand still and remain idle is heartbreaking. To do nothing is to commit to defeat. Resignation. The darkness.</p>
<p>Yet what is there to do? The only thing Stallman ever directly gave to me in life was an email explaining elegantly how there was nothing he could do for the Minecraft GPL community fiasco. At a time when I was so personally lost as I saw <a href="https://jwfblog.wpenginepowered.com/2020/04/open-source-minecraft-bukkit-gpl/">a community I love tear itself apart</a>, he stood by idly as the so-called steward of these licenses that I was just too naïve to believe in. That experience to me now is amplified in the light of the much more egregious things he is accused of.</p>
<p>So, the Free Software Foundation welcomes Richard Matthew Stallman back to its board. Wonderful. Congratulations Mr. Stallman. I am going to pause for a moment of sadness and hurt as I contemplate the impact of this moment on our fragile movement, which has much bigger enemies today than it has in its 40 year legacy. But then…</p>
<p>I will move on. Because we have to. The only way is forward.</p>]]></description></item><item><title>Rosie</title><link>https://jwheel.org/blog/2021/04/rosie/</link><pubDate>Thu, 08 Apr 2021 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2021/04/rosie/</guid><description><![CDATA[<p><em>Read more of <a href="https://jwfblog.wpenginepowered.com/category/poems/">my poetry</a> on my blog.</em></p>
<hr>
<p>I put on our playlist,<br>
Pure poetry to untrained ears.</p>
<p>My heart taken by the hand,<br>
But led back to the Atlantic blue,<br>
Wondering if I am singing your tune?</p>
<p>Will I continue to wait here,<br>
Under the early April showers?</p>
<p><em>Am I ready to let someone new in?</em></p>]]></description></item><item><title>Breakfast in Bosnia.</title><link>https://jwheel.org/blog/2021/03/breakfast-in-bosnia/</link><pubDate>Sun, 14 Mar 2021 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2021/03/breakfast-in-bosnia/</guid><description><![CDATA[<p>Four years ago, on March 13th in 2017, I woke up for breakfast in the city of <a href="https://en.wikipedia.org/wiki/Sarajevo">Sarajevo</a> in <a href="https://en.wikipedia.org/wiki/Bosnia_and_Herzegovina">Bosnia &amp; Herzegovina</a>. As I ate breakfast on the morning of March 14th of 2021 in the seemingly eternal era of COVID-19, it struck me.</p>
<p>
<figure>
  <img src="/blog/2021/03/IMG_20170313_101600_693.jpg" alt="" loading="lazy">
  <figcaption>Bosnian coffee.</figcaption>
</figure>
</p>

<h2 id="balkans-and-bosnia">Balkans and Bosnia.&nbsp;<a class="hanchor" href="#balkans-and-bosnia" aria-label="Anchor link for: Balkans and Bosnia.">🔗</a></h2>
<p>My time abroad was counted in months, not years. Yet those five months in the Balkans gave me more opportunity to grow and discover myself than I could have anticipated. Living away from home is one step forward. But living away from your own country? Let alone somewhere <em>you</em> speak the foreign language? It is another three or five steps. I didn&rsquo;t see it this way at the time, but my semester abroad broadened my passport and mind with each new stamp. Croatia first, then the <a href="https://whatamithinks.wordpress.com/2017/02/11/devconf-2017-diversity-fad/">Czech Republic</a> and <a href="https://archive.fosdem.org/2017/schedule/event/storytelling/">Belgium</a> shortly after. Onwards then I went to Sarajevo, and then finally by bus to the company of great friends in <a href="https://jwfblog.wpenginepowered.com/2017/03/hackathon-albania-sustainable-goals/">Tirana, Albania</a>. The end of my experience abroad would open an opportunity to travel and stay a <a href="https://jwfblog.wpenginepowered.com/2018/02/2017-year-review/">short time in India</a>, before returning <a href="https://jwfblog.wpenginepowered.com/2017/04/students-fedora-linux-weekend-2017/">once more</a> to Albania and then finally back to the United States.</p>
<p>I remember my last-minute decision to travel over my spring break instead of studying in my apartment. The bus ride to Sarajevo was unforgettable. I was overcome by the thrill of learning something new and experiencing a city I had only read about. It was unexpected and wonderful all at once.</p>
<p>
<figure>
  <img src="/blog/2021/03/IMG_20170314_122942-2.jpg" alt="" loading="lazy">
  <figcaption>Moments from Sarajevo. Far-left photo is Sarajevo Tunnel of Hope. Center far-right picture are from the 1995 Srebrenica massacre memorial museum in the city.</figcaption>
</figure>
</p>

<h2 id="patterns">Patterns.&nbsp;<a class="hanchor" href="#patterns" aria-label="Anchor link for: Patterns.">🔗</a></h2>
<p>What strikes me now is the monotonous pattern of daily life. The opportunities for these learning experiences are fewer. On one hand, it was inevitable in some part due to a global pandemic. On the other hand, I have also been working on psychological well-being this year. <em>Shockingly</em>, it takes more energy and spoons than I originally anticipated (even with the great benefits and insights enabled by this work). The days when I counted the airports and train stations I passed through in a year is paused… but it is also difficult to imagine these places running at full capacity again.</p>
<p>My challenge in a virtual-first world is discovering new ways to restore and replenish the soul without being able to easily travel and connect with others face-to-face.</p>
<p>
<figure>
  <img src="/blog/2021/03/PANO_20170314_150305.jpg" alt="" loading="lazy">
  <figcaption>A day-time panaroma view of the city of Sarajevo, Bosnia &amp; Herzegovina</figcaption>
</figure>
</p>]]></description></item><item><title>Unsaid.</title><link>https://jwheel.org/blog/2021/01/unsaid/</link><pubDate>Sun, 17 Jan 2021 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2021/01/unsaid/</guid><description><![CDATA[<p>When I launched my blog, I always envisioned writing cute snapshots of insight into my life. As much as I would publish them for the Internet, I was also publishing for myself. Or so, it started off this way.</p>
<p>But over time, I blurred the lines between personal and professional communication. The emotional words in my vocabulary were gradually phased out through my formal education. There were many influences on the sculpting of my voice. High school teachers critiqued writing styles for A.P. exams. Communication professors clearly outlined how to write business emails in a level of detail I didn&rsquo;t know was possible. These experiences showed me one way communication could be more direct and effective.</p>
<p>But I believe I may have mistaken professional communication as the only kind of communication. My education prepared me to understand scientific research studies and how a compiler works, but didn&rsquo;t teach me how to listen to my heart and put words to the emotions I was feeling.</p>
<p>So, now looking back at my blog history, it feels like reading a news site instead of these personal slices into my thinking and what is going on for me at any given point of time. I retained some of it in the beginning, like with my annual Year in Review posts that last published in 2017. But now, there is little here that I think gives meaningful insight to who I am outside of the context of technology or open source.</p>
<p>Indeed, despite being the sole author, publisher, and editor of my own blog, there still seems like a great deal is left unsaid. I cannot speak words where there was already silence, but I can choose to break the silence. So, here is to breaking silences and finding your voice.</p>]]></description></item><item><title>Three predictions for Free Software in the 2020s</title><link>https://jwheel.org/blog/2020/12/three-predictions-for-free-software-in-the-2020s/</link><pubDate>Thu, 31 Dec 2020 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2020/12/three-predictions-for-free-software-in-the-2020s/</guid><description><![CDATA[<p>From January to May 2020, I completed an independent study at the <a href="https://www.rit.edu/">Rochester Institute of Technology</a> on <em>Business and Legal Aspects of Free/Open Source Software</em>. This was the final credit for my completion of the <a href="https://www.rit.edu/study/free-and-open-source-software-and-free-culture-minor">Free and Open Source Software and Free Culture</a> minor.</p>
<p>That semester, I traveled to <a href="https://jwfblog.wpenginepowered.com/tag/2020-foss-conferences/">different international FOSS conferences</a> (before COVID-19), analyzed contemporary changes and trends in Free Software, and reflected on where <em>I think</em> we are going. I am sharing an edited version of my final report here, as a look into my &ldquo;crystal ball&rdquo; for what is coming to Free Software in the 2020s.</p>

<h2 id="preface">Preface&nbsp;<a class="hanchor" href="#preface" aria-label="Anchor link for: Preface">🔗</a></h2>
<p>There are emerging challenges and changes to the Free Software status quo. Three pieces of context about me will help to understand my perspective.</p>
<p>First, I am a young adult who has contributed to Free Software for a third of my life. At fourteen, I landed my first Open Source contributions. In high school, I participated in Open Source communities with 100,000+ adolescents, teenagers, and young adults. Later, I led community-driven initiatives in Open Source projects <a href="https://en.wikipedia.org/wiki/Red_Hat_Linux">older than me</a>. Thus, these experiences are a significant part of my experience coming into the Free Software movement.</p>
<p>Second, I follow conversations about Open Source sustainability. I regularly collaborate with others who also care about Open Source sustainability. I participate in communities where Open Source sustainability is the key issue to address, like <a href="https://sustainoss.org/">Sustain OSS</a> and the <a href="https://chaoss.community/">CHAOSS Project</a>.</p>
<p>Third, I am a white American male in my early 20s, which yields me certain privileges. I actively work to understand how my privilege constructs my worldview and experiences. I also acknowledge my <strong>freedom to participate</strong> in the global Free Software community is afforded to me in part by who I am. So, I acknowledge these biases in order to frame my perspective.</p>
<p>So, I propose three emerging trends in Free Software across the 2020s:</p>
<ol>
<li>Sustainability of Free Software is here to stay.</li>
<li>Free Software will have its ethics interrogated.</li>
<li>More young people will stay, or leave.</li>
</ol>

<h2 id="free-software-sustainability-is-here-to-stay">Free Software sustainability is here to stay.&nbsp;<a class="hanchor" href="#free-software-sustainability-is-here-to-stay" aria-label="Anchor link for: Free Software sustainability is here to stay.">🔗</a></h2>
<p>Sustainability has subliminal buzzword status today, yet it will not fade from our vocabulary soon. Unlike other tech buzzwords from the last decade, I suspect sustainability is here to stay.</p>
<p>Sustainability is broad though. This analysis begins broadly and then narrows down the definition. To start, here is the Oxford Dictionary definition of sustainability:</p>
<blockquote>
<p>sus·tain·a·bil·i·ty</p>
<p>The ability to be maintained at a certain rate or level.</p>
<p><a href="https://www.lexico.com/en/definition/sustainability">Oxford U.S. dictionary</a></p>
</blockquote>
<p>From this definition, I look at two sub-types of sustainability: software sustainability and Free Software sustainability. While they do overlap, software sustainability is <strong><em>what</em></strong> we build: the technology we make and its ability to last into the future. Free Software sustainability is <strong><em>who</em></strong> and <strong><em>how</em></strong> we build: the people who comprise the Free Software movement and how they work together and collaborate.</p>
<p>Now, sustainability is less overlooked than five or ten years ago. However, we still have competing definitions for what sustainability means. The dictionary defines sustainability as &ldquo;the ability to maintain&rdquo; but there are different ways sustainability is interpreted.</p>

<h3 id="the-maintainer-and-the-corporation">The maintainer and the corporation&nbsp;<a class="hanchor" href="#the-maintainer-and-the-corporation" aria-label="Anchor link for: The maintainer and the corporation">🔗</a></h3>
<p>For example, to an Open Source software maintainer, the &ldquo;ability to maintain&rdquo; might mean their ability to pay for their bills, live securely and safely in their day-to-day lives, or supporting a family. On the other hand, to a corporation that depends on Open Source software for their business, the &ldquo;ability to maintain&rdquo; might mean the ability to make new software releases at a specific cadence. It could be lines of code added and removed, or the number of commits made. Both perspectives are valid, but they imply different expectations of what maintenance requires.</p>
<p>On first consideration, these competing definitions make the landscape confusing. But surprisingly, this varied interpretation does not weaken sustainability; it strengthens it. It creates more opportunities to collaborate and work together in solving common problems in new, intersectional ways. Instead of focusing on common differences, it encourages seeing common problems first. While the definitions of sustainability might be different between an independent tech freelancer and an engineering manager in a Silicon Valley tech corp, both of these people could still work together on something that benefits both of them.</p>
<p>While I cannot predict what sustainability will mean to us in 2030, I am confident it will not mean the same as it is today. So, I am interested to both observe and participate in the shaping of the sustainability conversation in software and Free Software communities over the next decade.</p>

<h2 id="free-software-will-have-its-ethics-interrogated">Free Software will have its ethics interrogated.&nbsp;<a class="hanchor" href="#free-software-will-have-its-ethics-interrogated" aria-label="Anchor link for: Free Software will have its ethics interrogated.">🔗</a></h2>
<p>Free Software emerged in the 1970s as a social movement in an act of defiance to a global market change, when software became a commodity. Activists stood together and asserted what they believed to be essential freedoms of all computer users. So, Software Freedom as a concept was born through the <a href="https://jwfblog.wpenginepowered.com/2020/04/how-did-free-software-build-a-social-movement/">GNU Project in 1983</a>.</p>
<p>Today, a similar storm is on our horizon. The world is shifting again. It is not just software that is a commodity. It is <a href="https://jwfblog.wpenginepowered.com/2020/04/fosdem-2020-pt-2-can-free-software-include-ethical-ai-systems/">data and human futures</a>. Free Software was a bold assertion of essential freedoms about software. But those in the 1980s did not know how the world would change nearly forty years later. Today, the plot has thickened. The world is more complex. Technology impacts our lives in ways we never imagined in 1983. Software Freedom may protect us in one aspect of our digital lives, but it fails us in other ways.</p>

<h3 id="ethical-source">Ethical Source?&nbsp;<a class="hanchor" href="#ethical-source" aria-label="Anchor link for: Ethical Source?">🔗</a></h3>
<p>Perhaps this is best understood by looking at the attitude towards the <a href="https://ethicalsource.dev/">Ethical Source movement</a> by those in the Free Software world. There are a wide range of views and opinions. It is difficult to build common consensus and understanding across these groups. Yet, somehow, we cannot move past this conversation. It persists.</p>
<p>One famous example is the Java programming language license that forbid its use in nuclear submarines. For this reason, Free Software activists did not consider Java as Open Source until Sun Microsystems and subsequently Oracle were challenged. To some, freedom meant the ability to do anything—with no limitations—to the original work. For others still, freedom means the freedom of <em>all</em> people. The &ldquo;freedom to use&rdquo; is a controversial freedom in respect to certain ways we use software.</p>

<h3 id="join-or-die">&ldquo;<a href="https://en.wikipedia.org/wiki/Join,_or_Die">Join, or Die.</a>&rdquo;&nbsp;<a class="hanchor" href="#join-or-die" aria-label="Anchor link for: &ldquo;Join, or Die.&rdquo;">🔗</a></h3>
<p>Is there a consensus today in the Free Software or Ethical Source worlds about how we address the ethical issues of our field? No. There is not. Inside each movement, there are disagreements and differences on what is the most effective way to accomplish collective goals of building a more fair and just world. Depending on our unique perspectives and backgrounds, we have different views on the methods and means of how we address issues of ethical and unethical uses of software. I am doubtful there is a common definition of what ethical and unethical means in the narrow context of software. We have not yet <em>clearly</em> agreed on those definitions in global and transnational legal and judiciary systems.</p>
<p>It is not clear to me which way the winds will blow in the 2020s. But what is clear is that the storm is coming. Either the Free Software movement will fragment on different definitions of Freedom, or it will collectively converge around a new set of values updated to the ways the world changed so far in the 21st century (or even just 2020 alone).</p>
<p>One path weakens us all, amid global political shifts reminiscent of 20th century nationalist politics. The other path unifies us and builds common power together for the things we can change. I just hope the Free Software movement chooses right.</p>

<h2 id="free-software-will-see-more-young-people-stay-or-leave">Free Software will see more young people stay, or leave.&nbsp;<a class="hanchor" href="#free-software-will-see-more-young-people-stay-or-leave" aria-label="Anchor link for: Free Software will see more young people stay, or leave.">🔗</a></h2>
<p>Free Software will either be more inclusive of young people and new ideas, or it will see these young people move on to something else and fragment the movement.</p>
<p>In my own life, there were decisions and opportunities to influence the building of my digital life. But it was a paradox of choice, whether I wanted this digital life or not. It was simply the reality of the world I grew up in.</p>
<p>I am a millennial. The world changed around me as a child, as I grew into this new hyper-connected digital era. I owned my first computer at four years old. My home had a (dial-up) Internet connection when I was six. In grade school, I built a community site and online forum for my class. In high school, I participated in and moderated international online communities. These experiences collectively informed my worldview as someone who grew up on the budding World Wide Web.</p>

<h3 id="the-world-the-children-made">&ldquo;The world the children made.&rdquo;&nbsp;<a class="hanchor" href="#the-world-the-children-made" aria-label="Anchor link for: &ldquo;The world the children made.&rdquo;">🔗</a></h3>
<p>Millennials were the first generation to inherit the new always-online world <a href="https://en.wikipedia.org/wiki/The_Veldt_%5C%28short_story%5C%29">built by the generation before</a>. This is true for many others my age or younger who are transitioning into global citizens. This is no small part enabled by the constant-connectivity of the Internet mixed with different social and environmental circumstances we are born into. Young people are coming, and it is an open question whether Free Software will include them. Or if it will only include a select few who subscribe to the same pre-existing value system.</p>
<p>It is difficult to articulate this well, but I think Free Software will face a challenge of inclusivity for my generation. Either it will encourage and foster the next generation of Free Software activists to assert and protect our basic freedoms of computers, or it will isolate and push those people away from being a part of this movement.</p>
<p>Will others my age, or younger, emerge as leaders in their own right in the Free Software movement? Or will young people start something new that is more welcoming and empowering to them as individuals?</p>

<h2 id="what-now">What now?&nbsp;<a class="hanchor" href="#what-now" aria-label="Anchor link for: What now?">🔗</a></h2>
<p>Just like the Free Software activists of the 1980s and 1990s, I cannot predict precisely how the world will change. But I think it is valuable to step back from the hustle and bustle of daily life to think constructively about <strong><em>where</em></strong> we are going. We can fall into a routine of living our life comfortably because it is easy, but our comforts can cover our consciousness unless we evaluate our own views and biases for what they are.</p>
<p>I cannot know for sure where we are going, but I am committed to the belief that there are essential freedoms that we, as human beings, have in the context of the systems and digital worlds we create together. It is to this core belief that I bind myself, and I am excited as much as I am nervous for what changes are to come in this next decade of Free Software.</p>
<hr>
<p><em>This blog post was originally written for an independent study at the Rochester Institute of Technology as a supplement for IGME-583 Legal and Business Aspect of FOSS. Special thanks goes to my faculty advisor, D. Joe, for supervising this independent study and being a sounding box for ideas, perspectives, and thoughts.</em></p>
<p><em>Original photo by <a href="https://unsplash.com/@freegraphictoday?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">AbsolutVision</a> on <a href="https://unsplash.com/s/photos/future?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a>. Modified by <a href="https://jwheel.org">Justin Wheeler</a> for this blog post. Special thanks to <a href="https://www.linkedin.com/in/wilfriede">Wilfried Hounyo</a>, <a href="https://nolski.rocks/">Mike Nolan</a>, and <a href="https://oliviagallucci.home.blog/">Olivia Gallucci</a> for reviewing.</em></p>]]></description></item><item><title>How Mozilla Open Source Archetypes influence UNICEF Open Source Mentorship</title><link>https://jwheel.org/blog/2020/11/open-source-archetypes-unicef-open-source/</link><pubDate>Tue, 10 Nov 2020 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2020/11/open-source-archetypes-unicef-open-source/</guid><description><![CDATA[<p>In May 2018, Mozilla and Open Tech Strategies released a 40-page report titled, &ldquo;<em>Open Source Archetypes</em>&rdquo;. This blog post is a recap of how this report influences the Open Source Mentorship programme I lead at the UNICEF Innovation Fund.</p>
<p>I joined the UNICEF Innovation team in June 2020, although this is <a href="https://jwfblog.wpenginepowered.com/2018/02/unicef-internship/">not the first time</a> I have worked with UNICEF Innovation. I have had <a href="https://www.unicef.org/innovation/stories/unicefs-open-source-approach-innovation">some opportunity</a> to write about Open Source, but my personal blog has been quiet! So, this felt like the right opportunity to talk about what I am up to these days.</p>
<p>The <em>Open Source Archetypes</em> report (<em>below</em>) provides nine archetypes common among Open Source projects and communities. These archetypes provide a common language and perspective to think about how to capture the most value of Open Source in various contexts.</p>
<p><a href="/docs/Open-Source-Archetypes-Mozilla-Open-Tech-Strategies-May-2018.pdf">Open Source Archetypes (May 2018)</a><a href="/docs/Open-Source-Archetypes-Mozilla-Open-Tech-Strategies-May-2018.pdf">Download</a></p>
<p>This article covers the following topics:</p>
<ol>
<li>How <em>Open Source Archetypes</em> align with my experience</li>
<li>How I use <em>Open Source Archetypes</em> at UNICEF</li>
<li>Unanswered questions</li>
</ol>

<h2 id="how-open-source-archetypes-align-with-my-experience">How <em>Open Source Archetypes</em> align with my experience&nbsp;<a class="hanchor" href="#how-open-source-archetypes-align-with-my-experience" aria-label="Anchor link for: How Open Source Archetypes align with my experience">🔗</a></h2>
<p>The <em>Open Source Archetypes</em> report is useful to me because it aligns with my own experiences and encounters with common Free and Open Source Software projects. An advantage of taking my alma mater&rsquo;s <a href="https://www.rit.edu/study/free-and-open-source-software-and-free-culture-minor">Free and Open Source Software and Free Culture Minor</a> is experiencing what real Open Source projects are like long before I entered the industry. The projects and organizations I contributed to and interacted with all ran their projects in one of the nine models identified in the report.</p>
<p>The <em>Open Source Archetypes</em> report speaks to my personal experience either using or contributing to projects like <a href="https://jwheel.org/#fedora">Fedora</a>, <a href="https://github.com/kubernetes/minikube/commits?author=justwheel">Kubernetes</a>, <a href="https://www.spigotmc.org/threads/its-been-an-amazing-three-years.185023/">SpigotMC</a>, <a href="https://musicbrainz.org/user/jflory/edits">MusicBrainz</a>, and various independent projects. <strong>The value of Open Source for any project is in meeting the goals of the intended audience.</strong> By itself, &ldquo;Open Source&rdquo; is a broad term, even if it does have a <a href="https://opensource.org/osd-annotated">legal definition</a>. My experiences taught me the importance of how different Open Source projects meet the needs of different audiences, or even different combinations and balances of audiences. The <em>Open Source Archetypes</em> report creates language for something I previously only understood through direct experience.</p>
<p>When I first read the report earlier in 2020, I knew it was relevant to my work. But how could I begin to integrate it into the Open Source Mentorship programme I manage for the UNICEF Innovation Fund?</p>

<h2 id="how-i-use-open-source-archetypes-at-unicef">How I use <em>Open Source Archetypes</em> at UNICEF&nbsp;<a class="hanchor" href="#how-i-use-open-source-archetypes-at-unicef" aria-label="Anchor link for: How I use Open Source Archetypes at UNICEF">🔗</a></h2>
<p>The <a href="https://unicefinnovationfund.org/">UNICEF Innovation Fund</a> provides early stage funding and support to frontier technology solutions that benefit children and the world. Most teams in the Innovation Fund are from countries where UNICEF has an <a href="https://www.unicef.org/about/execboard/files/CPDs_ending_in_2021-EN-2020.10.05.pdf">ongoing country programme</a>.</p>
<p>A requirement for solutions we fund is that they must be Open Source. I have seen many different types of projects and business models since I started working as a <a href="https://jwheel.org/#librecorps">part-time consultant</a> for UNICEF in 2018. As exciting as this is, it was challenging to understand the best way of supporting each team and their Open Source projects. Each team and project had differences unrelated to their source code, but closely tied to their business models and impact they wanted to have through their work.</p>
<p>So, the <em>Open Source Archetypes</em> report have me language. It gave me examples and explanations of how Open Source can work to teams who had little to no prior experience of Working Open. I take the unique context and details I understand about each team I work with, and contextualize what they are doing compared to the different models in the report.</p>
<p>The feedback I received so far on the report with the 15+ teams I currently work with is mostly positive. Some teams exclaimed this report was what they wish could have read months before because it resolved many of their doubts. Others were more overwhelmed, and needed extra time to read and review.</p>
<p>For my role as a mentor, the Open Source Archetypes report gives me cues for how to best support and direct each team I work with. The task of building an Open Source community or participating in an existing one is not a small task. Whether it is documentation, project management, quality assurance and testing, or community engagement, I have yet to see any small team accomplish all of these things at once. So, identifying which archetype a team best identifies with gives me a cue to guide the teams on their path forward. It gives me context for how to make Open Source something that works for them instead of against them.</p>

<h2 id="unanswered-questions">Unanswered questions&nbsp;<a class="hanchor" href="#unanswered-questions" aria-label="Anchor link for: Unanswered questions">🔗</a></h2>
<p>I have great appreciation and gratitude for the folks at Mozilla and Open Tech Strategies who compiled this report. But it was written over two years ago, and like all things in life, things can change. So, while I look comfortably from the position of hindsight, there are some critiques and missing components to the Open Source Archetypes reports.</p>
<p>My unanswered questions are below.</p>

<h3 id="does-the-linux-kernel-and-subsequently-linux-distributions-represent-another-unwritten-archetype">Does the Linux kernel (and subsequently, Linux distributions) represent another unwritten archetype?&nbsp;<a class="hanchor" href="#does-the-linux-kernel-and-subsequently-linux-distributions-represent-another-unwritten-archetype" aria-label="Anchor link for: Does the Linux kernel (and subsequently, Linux distributions) represent another unwritten archetype?">🔗</a></h3>
<p>The report explicitly avoided using the Linux kernel as the basis for any archetype:</p>
<blockquote>
<p>In some ways the Linux kernel project could be considered “Wide Open”. However, both technically and culturally, Linux kernel development is sui generis and we have deliberately avoided using it as the basis for any archetype.</p>
<p><em>Open Source Archetypes</em>, Page 17</p>
</blockquote>
<p>Contextualizing a project like Linux is hard. There is a lot of history to a project that first launched over email in 1991. There are many &ldquo;yes, but&quot;s about decisions made 10 or even 25 years ago that would not replay the same way in 2020.</p>
<p>Yet this is important work. Linux represents not just the kernel, but also large, decentralized sub-units of other systems that integrate the kernel in order to make it useful (e.g. Ubuntu, Fedora, Debian, Arch Linux, you name it). These sub-communities include large entities and corporations, spanning multiple countries and organizations of various sizes.</p>
<p>The Linux kernel communities are worthy of a deeper look, possibly in order to define a new archetype.</p>

<h3 id="how-can-open-source-archetypes-better-fit-the-socialhumanitarian-sector">How can Open Source Archetypes better fit the social/humanitarian sector?&nbsp;<a class="hanchor" href="#how-can-open-source-archetypes-better-fit-the-socialhumanitarian-sector" aria-label="Anchor link for: How can Open Source Archetypes better fit the social/humanitarian sector?">🔗</a></h3>
<p>The archetypes shared in the report largely focus on business sustainability. In other words, the report is biased towards Mozilla&rsquo;s interest in funding the research in order to better understand how to support a commercially-successful Open Source project. To me, there seems like a gap in models that often work for Open Source projects perhaps like <a href="https://ureport.in/about/">U-Report</a> and <a href="https://www.ushahidi.com/about">Ushahidi</a>.</p>
<p>This is an area of interest to me, and likely others in the UN and NGO space. The report could do more to address these kinds of projects.</p>

<h2 id="how-would-you-teach-open-source">How would you teach Open Source?&nbsp;<a class="hanchor" href="#how-would-you-teach-open-source" aria-label="Anchor link for: How would you teach Open Source?">🔗</a></h2>
<p>To conclude, the Open Source Archetypes report is an invaluable tool that provides me language and context for teaching others about Free and Open Source Software.</p>
<p>How would you teach Open Source? What models, research, or tools would you use to inform an Open Source mentorship or education programme? Share your thoughts below in the comments!</p>]]></description></item><item><title>Cryptographic Autonomy License (CAL-1.0): My first license review</title><link>https://jwheel.org/blog/2020/10/cryptographic-autonomy-license-cal-1-0/</link><pubDate>Wed, 28 Oct 2020 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2020/10/cryptographic-autonomy-license-cal-1-0/</guid><description><![CDATA[<p>The bookmark was creeping on my browser&rsquo;s toolbar for months. &ldquo;Cryptographic Autonomy License&rdquo; CAL-1.0 on the <a href="https://opensource.org/licenses/CAL-1.0">Open Source Initiative webpage</a>. But today, I decided it was time to do my first amateur license review. This is a fun exercise (for me). Remember, <strong>I am not a lawyer and this does not constitute legal advice</strong>!</p>
<p>The <strong>Cryptographic Autonomy License</strong> is one of newest Open Source licenses on the block. The Open Source Initiative <a href="https://lists.opensource.org/pipermail/license-review_lists.opensource.org/2020-February/004693.html">approved</a> it in February 2020. This license also made ripples when it came through. But the question I had, and <a href="https://jwfblog.wpenginepowered.com/2020/04/copyleftconf-2020-quick-rewind/">could not find a clear answer to</a>, was <em>why is it so interesting</em>?</p>
<p>This blog post is my attempt to do a casual coffee-table review of the license. If you agree or disagree, I encourage you to leave a comment and share your opinion and <strong>why</strong>!</p>
<p>This short article covers three sections:</p>
<ol>
<li><strong>CAL-1.0 provisions</strong>: What basic Free Software assumptions are present in the license, much like other copyleft licenses.</li>
<li><strong>What&rsquo;s fresh!!</strong>: What is the hype? Ready for the key information? It is covered here.</li>
<li><strong>Personal takeaways</strong>: My personal thoughts on this license and where it might be applicable.</li>
</ol>

<h2 id="cal-10-provisions">CAL-1.0 provisions&nbsp;<a class="hanchor" href="#cal-10-provisions" aria-label="Anchor link for: CAL-1.0 provisions">🔗</a></h2>
<p>I learned there are basic assumptions and expectations that are true for all Open Source licenses, per the <a href="https://opensource.org/osd-annotated">Open Source Definition</a>. Copyleft licenses also have different degrees of rigidity depending on context and use. So, what basic ingredients of a Free Software license are present in the Cryptographic Autonomy License?</p>
<p><em>Note</em>: The number in parentheses before each line is the corresponding section number in the license text.</p>

<h3 id="basic-legal-provisions">Basic legal provisions&nbsp;<a class="hanchor" href="#basic-legal-provisions" aria-label="Anchor link for: Basic legal provisions">🔗</a></h3>
<ul>
<li>(<em>6.0</em>) <strong>Disclaimer of warranty, limit on liability</strong>: If someone uses the software and it causes unexpected disastrous side effects, the Licensor cannot be held responsible.</li>
<li>(<em>2.0</em>) <strong>Receiving a license</strong>: Anyone can receive a CAL-1.0 license. To receive it, you just have to agree to its rules.</li>
<li>(<em>7.4</em>) <strong>Attorney fees</strong>: If a case involving noncompliance with the CAL-1.0 is brought to court, loser pays legal fees for prosecution and defense.</li>
<li>(<em>7.3</em>) <strong>No sub-licensing</strong>: You cannot add another license &ldquo;on top&rdquo; of the CAL-1.0.</li>
<li>(<em>3.0</em>) <strong>Patent clause</strong>: Got patents? This license is equipped to interface with external patent licenses.</li>
</ul>

<h3 id="permissive-provisions">Permissive provisions&nbsp;<a class="hanchor" href="#permissive-provisions" aria-label="Anchor link for: Permissive provisions">🔗</a></h3>
<ul>
<li>(<em>4.1</em>) <strong>Access</strong>: Source code must be made available over a network with this license.</li>
<li>(<em>4.3</em>) <strong>Attribution</strong>: Cite your sources. Retain all licensing, authorship, and/or attribution notices.</li>
</ul>

<h3 id="copyleft-provisions">Copyleft provisions&nbsp;<a class="hanchor" href="#copyleft-provisions" aria-label="Anchor link for: Copyleft provisions">🔗</a></h3>
<ul>
<li>(<em>4.1</em>) <strong>Modified Work</strong>: Changes to the original Work make it a Modified Work. Same license rules apply to a Modified Work.</li>
<li>(<em>5.2</em>) <strong>Reinstatement</strong>: A la GPLv3, for non-compliant derivative works, there is a 60 day grace period to come into compliance before your license is terminated.</li>
<li>(<em>4.5</em>) <strong>Combined Work Exception</strong>: Software in the Larger Work as well as the Larger Work as a whole may be licensed under the terms of your choice.</li>
<li><strong>Network use</strong>: A la AGPL, it also includes a trigger for network use.</li>
</ul>

<h2 id="whats-fresh">What&rsquo;s fresh!!&nbsp;<a class="hanchor" href="#whats-fresh" aria-label="Anchor link for: What&rsquo;s fresh!!">🔗</a></h2>
<p>The fresh take on this license from other licenses is all in <strong>4.2. Maintain User Autonomy</strong>:</p>
<blockquote>
<p>In addition to providing each Recipient the opportunity to have Access to the Source Code, You cannot use the permissions given under this License to interfere with a Recipient’s ability to fully use an independent copy of the Work generated from the Source Code You provide with the Recipient’s own User Data.</p>
<p>Section 4.2 Maintain User Autonomy: intro text</p>
</blockquote>
<p>My non-lawyer take on this is that user data plays a much more prominent role in the terms of this license than other copyleft licenses. Just like the AGPL was a response to the changing world of network services and cloud computing, the CAL-1.0 is a response to the changing world of machine learning and data science.</p>
<p>The CAL-1.0 seems to define &ldquo;user autonomy&rdquo; in the context of actually <em>using</em> the software, versus something more holistic like <a href="https://techautonomy.org/">Digital Autonomy</a>. In other words, if you are running CAL-1.0 software, you cannot interfere with requests for personal user data from your users.</p>
<p>This might not sound so radical, but it really is. It is a radical way to assert users&rsquo; ownership of their data. If you are the end user of a distributed or cloud-based app licensed under CAL-1.0, <strong>you are enabled (to some degree) to request copies of personal user data without interference or obfuscation.</strong></p>

<h3 id="cal-10-and-hatbrim-technologies">CAL-1.0 and Hatbrim Technologies&nbsp;<a class="hanchor" href="#cal-10-and-hatbrim-technologies" aria-label="Anchor link for: CAL-1.0 and Hatbrim Technologies">🔗</a></h3>
<p>To better explain this, consider this made-up example.</p>
<p>I am a product manager at Hatbrim Technologies. Hatbrim develops an integrated calendar application, <strong>Holocal</strong>, to store events, meetings, and reminders. Holocal is an integrated application that includes a front-end component, back-end component, and a machine learning algorithm. The algorithm offers tailored suggestions to reduce my meeting load based on my common meeting patterns with other events or activities I have planned.</p>
<p>Oraculous, a competing company to Hatbrim Technologies, creates a fork of Holocal called <strong>OraCal</strong>. It is almost functionally identical to Holocal except it also adds an integration to other services from Oraculous. However, OraCal also modifies the calendar optimization algorithm. It adds a periodic random event suggestion based on events and activities in your calendar.</p>

<h3 id="meanwhile-at-hatbrim">Meanwhile at Hatbrim…&nbsp;<a class="hanchor" href="#meanwhile-at-hatbrim" aria-label="Anchor link for: Meanwhile at Hatbrim…">🔗</a></h3>
<p>Since I am a product manager at Hatbrim, I turn to my trusty team of developers and ask them to explore the OraCal fork of Holocal. I am curious to know how their calendar optimization method works, since Oraculous must also release OraCal under the Cryptographic Autonomy License (CAL-1.0). My team of developers review the OraCal code, try making changes to Holocal, but we are unable to replicate this feature of OraCal in our environment.</p>
<p>Eventually, one developer runs OraCal internally, but optimized for our data. Still no luck to reproduce the nifty calendar event suggestion feature! Fortunately, the CAL-1.0 offers a protection here. So, the developer sends an email to Oraculous to request her personal user data from OraCal provided to her. Because the CAL-1.0 has provisions to prevent foul play or modifying the data, the developer receives a copy of her data and realizes another Oraculous tool was scrubbing and appending data for calendar predictions before it returned to OraCal.</p>
<p>In this hypothetical scenario, our developer is ultimately able to understand how the Modified Work is changed and how Oraculous adapted the original Work. Under another copyleft license like any GPL variant or the Mozilla Public License, a licensee has no obligation to share any user data with an end user. For any reason. Unless they happen to be nice or because another legal authority or body holds them accountable to share user data.</p>

<h2 id="cal-10-personal-takeaways">CAL-1.0 personal takeaways&nbsp;<a class="hanchor" href="#cal-10-personal-takeaways" aria-label="Anchor link for: CAL-1.0 personal takeaways">🔗</a></h2>
<p>Did I mention I am not a lawyer and this does not constitute legal or financial advice? In case I did not, <strong>I am not a lawyer and this does not constitute legal or financial advice</strong>.</p>
<p>This advice and interpretation of the license is raw and unfiltered. But you only read something for the first time but once. So, with all other contemporary issues in the Free Software world going on, I thought it would be a fun exercise to draft this blog post as I read through the Cryptographic Autonomy License for the first time.</p>
<p>Ultimately, my takeaways after reading and reflecting on the license a few times is this:</p>
<ol>
<li><strong>Lack of transparency in motivation</strong>: <a href="https://holo.host/">Holo</a>, the company behind the license, emphasizes all the good qualities of this license while sneakily dodging the fact that it is a mildly anti-competitive license for their business case.</li>
<li><strong>Precedent-setting</strong>: This is the first approved Open Source license that <a href="https://medium.com/holochain/why-cal-is-important-to-the-end-user-aec58b2ff730">explicitly does anything significant about data</a>. It will be interesting to see if this inspires other licenses that make definitions on data.</li>
<li><strong>Potentially powerful if picked up</strong>: If used more widely or in more popular projects, it has potential to disrupt the status quo of how Open Source thinks about user data and the autonomy of the end user.</li>
<li><strong>No defining moment</strong>: To my knowledge, CAL-1.0 lacks a significant defining moment since its approval. It is unclear what real-world noncompliance litigation looks like. It lacks the battle-testing of other copyleft licenses.</li>
</ol>
<p>I imagine I am not the only one who feels mutually excited and hesitant about the Cryptographic Autonomy License. I am not sure if it makes sense to apply to any of my work or to recommend as a default license to others yet. And licensing is only but one of many pathways in the Free Software legal and policy world. But nonetheless, it is an interesting Free Software development that is still maturing since February 2020.</p>
<hr>
<p><em>Photo by <a href="https://unsplash.com/@markusspiske?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Markus Spiske</a> on <a href="https://unsplash.com/s/photos/access?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a>. Modified by Justin Wheeler.</em></p>]]></description></item><item><title>Hacktoberfest 2020 with TeleIRC</title><link>https://jwheel.org/blog/2020/10/hacktoberfest-2020-with-teleirc/</link><pubDate>Mon, 12 Oct 2020 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2020/10/hacktoberfest-2020-with-teleirc/</guid><description><![CDATA[<p>October is here! If you contribute to Open Source projects, you might know that October is the month of Hacktoberfest. <a href="https://hacktoberfest.digitalocean.com/">DigitalOcean teams up</a> with different partners each year to send a t-shirt (or plant a tree on your behalf) for anyone who makes four GitHub Pull Requests in October. And guess what? TeleIRC is a participating project for you to get your Hacktoberfest t-shirt or tree!</p>
<p>This post identifies specific tasks the TeleIRC team identified as &ldquo;good first issues&rdquo; for Hacktoberfest hackers. They are in order of least difficult to most difficult. Golang developers especially are encouraged to participate!</p>

<h2 id="why-work-on-teleirc-for-hacktoberfest">Why work on TeleIRC for Hacktoberfest?&nbsp;<a class="hanchor" href="#why-work-on-teleirc-for-hacktoberfest" aria-label="Anchor link for: Why work on TeleIRC for Hacktoberfest?">🔗</a></h2>
<p>Before sharing how you can contribute for Hacktoberfest, what about <em>why</em> you should contribute?</p>
<p>TeleIRC originally launched in 2016. Since then, we have <a href="https://jwfblog.wpenginepowered.com/tag/teleirc/">built up a community of users</a> around the world. TeleIRC is also used in other larger Open Source projects like the Fedora Project and LibreOffice! Of course, it is still used in the Rochester Institute of Technology community where it was first developed.</p>
<p>Working on TeleIRC means you can contribute to a project that is actually used in the real world. Hundreds of user communities, some even the size of thousands of people, use TeleIRC. Your improvements and changes will help the many downstream users of our project. (P.S. – See the full list of <a href="https://docs.teleirc.com/en/latest/about/who-uses-teleirc/">who uses TeleIRC</a> in our docs!)</p>
<p>With that out of the way… let&rsquo;s talk about what there is to do!</p>

<h2 id="1-large-messages-go-to-a-pastebin">#1: Large messages go to a pastebin&nbsp;<a class="hanchor" href="#1-large-messages-go-to-a-pastebin" aria-label="Anchor link for: #1: Large messages go to a pastebin">🔗</a></h2>
<p>This corresponds to <a href="https://github.com/RITlug/teleirc/issues/56">RITlug/teleirc#56</a>.</p>
<ul>
<li><strong>Goal</strong>: When a Telegram user writes a single line that exceeds the maximum number of characters for an IRC message (512 characters, per <a href="https://www.rfc-editor.org/rfc/rfc1459.html#section-2.3">RFC 1459, section 2.3</a>), send the string to a pastebin service.</li>
<li><strong>Success criteria</strong>: Any line greater than 512 characters is sent to a pastebin-like service.</li>
<li><strong>What we think</strong>: Note the difference between &ldquo;lines&rdquo; and &ldquo;messages&rdquo;. Telegram users can add line breaks to messages. TeleIRC should respect those line breaks as new IRC messages. So, only a single line that exceeds the maximum should go to a pastebin-like service.</li>
</ul>

<h2 id="2-telegram-poll-handler">#2: Telegram Poll handler&nbsp;<a class="hanchor" href="#2-telegram-poll-handler" aria-label="Anchor link for: #2: Telegram Poll handler">🔗</a></h2>
<p>This corresponds to <a href="https://github.com/RITlug/teleirc/issues/267">RITlug/teleirc#267</a>.</p>
<ul>
<li><strong>Goal</strong>: Send text representations of Telegram Polls to IRC. Currently, Polls are ignored by TeleIRC and do not appear in any way on IRC.</li>
<li><strong>Success criteria</strong>: If a Telegram user sends a Poll to a group, a text representation should appear in IRC.</li>
<li><strong>What we think</strong>: IRC users will not be able to participate in Polls. This is a platform limitation. However, IRC users should get some context about what a Poll includes, e.g. what the question is and what answer choices are available.</li>
</ul>

<h2 id="3-support-more-encoding-types-eg-cp1251">#3: Support more encoding types (e.g. CP1251)&nbsp;<a class="hanchor" href="#3-support-more-encoding-types-eg-cp1251" aria-label="Anchor link for: #3: Support more encoding types (e.g. CP1251)">🔗</a></h2>
<p>This corresponds to <a href="https://github.com/RITlug/teleirc/issues/332">RITlug/teleirc#332</a>.</p>
<ul>
<li><strong>Goal</strong>: Support more string encoding types than UTF-8.</li>
<li><strong>Success criteria</strong>: If a Telegram user writes a message in Cyrillic script, it should appear in Cyrillic script on IRC (if the server supports it, e.g. CP1251).</li>
<li><strong>What we think</strong>: This is one of the toughest issues we have and requires knowledge about string encoding methods. The current core developers are native English speakers and we do not use other languages that have non-Latin script. The GitHub issue has more info, but it will need additional research or knowledge about string encoding.</li>
</ul>

<h2 id="need-hacktoberfest-help-come-talk-to-us">Need Hacktoberfest help? Come talk to us!&nbsp;<a class="hanchor" href="#need-hacktoberfest-help-come-talk-to-us" aria-label="Anchor link for: Need Hacktoberfest help? Come talk to us!">🔗</a></h2>
<p><strong>Want to work on any of these?</strong> Add a new comment to the GitHub Issue and let us know you are interested in working on it.</p>
<p><strong>Have questions about the project or getting started?</strong> Come talk with the TeleIRC team! Of course, you can find us both on IRC (<code>#rit-lug-teleirc</code> on Freenode IRC) and Telegram (<a href="https://t.me/teleirc">@teleirc</a>).</p>
<p>Additionally, the TeleIRC team meets virtually <strong>every Sunday at 11:00 U.S. EDT / 15:00 UTC</strong>. Ask us for a calendar invite in our team chat if you would like one!</p>]]></description></item><item><title>Your Software Freedom is not my Software Freedom: A reflection on Chadwick Boseman</title><link>https://jwheel.org/blog/2020/09/your-software-freedom-is-not-my-software-freedom-a-reflection-on-chadwick-boseman/</link><pubDate>Tue, 29 Sep 2020 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2020/09/your-software-freedom-is-not-my-software-freedom-a-reflection-on-chadwick-boseman/</guid><description><![CDATA[<p><em>Trigger warning: Grief, police violence, death.</em></p>
<p><em>This blog post was first written on August 28th, 2020.</em></p>
<p>Today is a sad day. Chadwick Boseman is dead. At 43 years old, he lost a terminal battle with stage IV colon cancer. As his great light dims, I am left to wonder what loss will happen next in 2020.</p>
<p>But like the ashes of a phoenix, we will rise. His death reminds me of the fierce urgency of now, as said by Dr. Martin Luther King Jr. That in the moment of darkness that follows death, a new bright light will emerge. It is just so human for us to cling to the embers of hope, in the fear that we will one day be delivered from suffering.</p>
<p>Boseman was a social leader and source of inspiration for many. His life and many roles championed racial equity on the Hollywood screens. Boseman was passionate about what he did. He led a committed life.</p>
<p>Boseman&rsquo;s death caused me to reflect on the definition of Freedom in the movement I am embedded within: the Free Software movement. Yet in this community I value, there are seeds of discontent. The fierce urgency of now has revealed that systemic social injustices continue to exist in our society, as they have for centuries. The generational question we must answer as witnesses to this moment is: <strong>will we continue to tolerate the systemic faults within our society?</strong> Or must we imagine a more fair society? A more just society? I know we can because we have to.</p>

<h2 id="on-the-origins-of-software-freedom">On the origins of Software Freedom&nbsp;<a class="hanchor" href="#on-the-origins-of-software-freedom" aria-label="Anchor link for: On the origins of Software Freedom">🔗</a></h2>
<p>A background on the Software Freedom movement is helpful to understand this discourse on freedom.</p>
<p>Free Software is a <a href="https://jwfblog.wpenginepowered.com/2020/04/how-did-free-software-build-a-social-movement/">social movement born in the 1980s</a> in North America. In the beginning, it was mostly a set of ideals and values set forth by MIT computer scientist Richard Stallman. Stallman witnessed a dramatic shift in how the free market distributed software in the 1980s. Previously to then, software was usually trivial; an afterthought. Software was freely shared between companies, universities, and individuals. Part of this is to blame on the industry&rsquo;s intent focus on hardware during the Cold War. At the time, there was no standardization to hardware development, so software source would have to be rewritten to compile on different hardware architectures from competing vendors. However, this mindset eroded in the 1980s. There were a few lead architectures at the time, mostly championed by Intel. Software had to be compiled less often. Now, this freely shared source code could be repurposed much more easily.</p>
<p>At this point, the software industry went mainstream. Software began to receive acute focus by companies with computer science talent. Talent needs moved beyond hardware. Stallman saw all this, and believed the shift was at a great loss to the personal freedoms of the individual. So he coined &ldquo;Software Freedom&rdquo;, and a movement formalized.</p>
<p>With that background, the word &ldquo;Freedom&rdquo; has a specific, coded meaning to people who believe in the principles of Software Freedom. Software Freedom protects a set of digital rights that the movement leaders first advocated for in the 1980s and 1990s. The <a href="https://fsfe.org/freesoftware/">Four Freedoms</a> (to use, to study, to share, to improve) are entrusted to the individual user of a computer system.</p>

<h2 id="freedom-in-2020">Freedom in 2020&nbsp;<a class="hanchor" href="#freedom-in-2020" aria-label="Anchor link for: Freedom in 2020">🔗</a></h2>
<p>However, it is 2020. Not 1985. Not 1991. 2020.</p>
<p>Questions about what Freedom means could never be more removed from the context of right now. Software Freedom asserts rights fully-realized by participants in the new digital society. Yet billions of people on Earth remain unconnected to the Internet. How can you realize rights that were never accessible to begin with?</p>
<p>Even if you are participating in digital society, freedom to read source code and make changes to it are just one of many different examples of freedom. But what other definitions exist?</p>
<p>The freedom to be safe asleep in your home without being gunned down by those entrusted to protect you.</p>
<p>The freedom that your children may live in a world where they may realize their fullest potential.</p>
<p>The freedom to life, liberty, and the pursuit of happiness.</p>
<p>In comparison, the freedom to read the source code of the web browser that keeps crashing on an unsupported device does not practical value to people who have different questions in the pursuit of freedom.</p>

<h2 id="reconciliation-and-intersections">Reconciliation and intersections&nbsp;<a class="hanchor" href="#reconciliation-and-intersections" aria-label="Anchor link for: Reconciliation and intersections">🔗</a></h2>
<p>But surely there is somewhere we can reconcile these different definitions of freedom. They may conflict at times but they are not in opposition to each other. There must be a way to realize both the freedoms of the individual to live a better life, and the freedoms of witting or unwitting participants in a digital world governed by increasingly invisible hands.</p>
<p>The intersection is surprising. Before identifying it, it is important to understand its purpose. The purpose of the intersection of these two definitions of freedom is to unify and empower people to be in control of their own destinies. Our destinies and futures are influenced but not entirely controlled by our environments. Both types of freedom believe in the right of the individual to understand the ways a system works, in order to understand how the system impacts them.</p>
<p>Said simply, the purpose is inclusion. The purpose is to bring together. The purpose is to empower. The purpose is give individuals the tools to shape their own destinies.</p>
<p>The name of this intersection is <strong>digital intersectionality</strong>.</p>
<p>Digital intersectionality makes inclusion a first-class citizen. It must take an intersectional approach from the outset if it is to accommodate the hyper-globalized world we live in. Albert Einstein once reflected in a letter to schoolchildren in Japan about his great delight in being able to communicate across such distances—something that was unheard of at the time. It is a cute memory, but also emphasizes the ways the world has changed since the most widely-known events of human genocide. Digital intersectionality has no borders. Its borders are decentralized; its borders may or may not have nationality. Copper wire, fiber lines, satellite receivers; these are the conduits that digital intersectionality resides in.</p>
<p>Digital intersectionality must be about inclusion. Digital intersectionality by definition must always be intersectional. Digital intersectionality must always consider the role of the individual in contributing to healthy, collective society. Digital intersectionality must embrace love.</p>

<h2 id="what-now">What now?&nbsp;<a class="hanchor" href="#what-now" aria-label="Anchor link for: What now?">🔗</a></h2>
<p>Chadwick Boseman is gone. But we are not.</p>
<p>We are in the same world. Breathing the same air. Living under the same sun, and the same stars. As I see the void and grief left behind in his wake, as I look around me in a global pandemic that places the heaviest burdens on those with the most to bear, as I continue to see the effects of unjust systems perpetuate, I am thinking more about my own role in shaping the world we must create.</p>
<p>So I will continue to advocate and celebrate both freedoms, software freedom and inner freedom, under the mutual banner of digital intersectionality.</p>
<hr>
<p><em>Special thanks to my early editors!</em></p>]]></description></item><item><title>Tergiversate: El Ten Eleven self-titled debut</title><link>https://jwheel.org/blog/2020/09/tergiversate-el-ten-eleven/</link><pubDate>Sun, 20 Sep 2020 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2020/09/tergiversate-el-ten-eleven/</guid><description><![CDATA[<p><em>This El Ten Eleven article is part of my <a href="https://jwfblog.wpenginepowered.com/tag/tergiversate-music-column/">Tervigersate column</a> on my blog, where I review albums by musicians spanning multiple genres. Articles introduce an album and give my interpretation of their meaning.</em></p>
<hr>
<p>El Ten Eleven is a duo consisting of Kristian Dunn on strings and Tim Fogarty and drums. Plus <a href="https://youtu.be/dNiimjX5Pxg">several loop pedals</a>! El Ten Eleven&rsquo;s <a href="https://fakerecordlabel.bandcamp.com/album/el-ten-eleven-album">debut self-titled album</a> released on September 20th, 2005 (even though Dunn says the album released in late 2004). This makes 2020 the 16th anniversary of their debut album in the twenty-first century post-rock scene.</p>
<p>This entry in <em>Tergiversate</em> reviews the history and background of the album and offers a personal perspective on one of my favorite music albums. Let&rsquo;s take a look at <em>El Ten Eleven</em>!</p>

<h2 id="my-background-on-el-ten-eleven">My background on <em>El Ten Eleven</em>&nbsp;<a class="hanchor" href="#my-background-on-el-ten-eleven" aria-label="Anchor link for: My background on El Ten Eleven">🔗</a></h2>
<p>If Last.fm is trustworthy, I have 39,355 listens of El Ten Eleven, out of a total listen count of 348,043. 18,605 listens were of the self-titled album specifically. It takes two lead positions in my music library: my most-listened artist <em>and</em> album of all-time. I discovered <em>El Ten Eleven</em> on December 19th, 2012.</p>
<p>In 35 minutes, <em>El Ten Eleven</em> tells a great story. It is an album that means a great deal to me.</p>

<h2 id="el-ten-eleven-track-by-track"><em>El Ten Eleven</em>, track-by-track&nbsp;<a class="hanchor" href="#el-ten-eleven-track-by-track" aria-label="Anchor link for: El Ten Eleven, track-by-track">🔗</a></h2>
<p>El Ten Eleven songs have no lyrics (not counting Emile Mosseri collaborations). The only given meaning is in the song titles. The rest is up for audible interpretation.</p>
<p>But if you are a curious music nerd like me, the artist&rsquo;s thinking behind a song is interesting to understand. This blog post documents what I know about this album. My experiences come from reading other music journalism sites on the Internet and even talking to Kristian Dunn after concerts time to time! (He is a cool dude. He signed <a href="https://twitter.com/jflory7/status/840247825862672384">my brick</a>.)</p>

<h3 id="1-my-only-swerving">1: My Only Swerving&nbsp;<a class="hanchor" href="#1-my-only-swerving" aria-label="Anchor link for: 1: My Only Swerving">🔗</a></h3>
<p>This song was written in tribute to <a href="https://www.poetryfoundation.org/poems/42775/traveling-through-the-dark"><em>Traveling through the Dark</em></a>, a 1998 poem by William E. Stafford (confirmed <a href="https://twitter.com/ElTenEleven/status/36619600065994752">here</a>). The track title gets its name from a line towards the end of the poem.</p>
<blockquote>
<p><code>I thought hard for us all—my only swerving—,</code></p>
<p><code>then pushed her over the edge into the river.</code></p>
<p><a href="https://www.poetryfoundation.org/poems/42775/traveling-through-the-dark"><em>Traveling through the Dark</em></a>, William E. Stafford</p>
</blockquote>
<p>Dunn ran an &ldquo;Ask Me Anything&rdquo; (A.M.A.) on Jan 22, 2018 <a href="https://www.patreon.com/posts/ama-questions-16556847">via Patreon</a>. In the A.M.A., Dunn lamented how the song failed as a tribute to the poem. He believed the song was not dark enough to match the poem.</p>

<h3 id="3-lorge">3: Lorge&nbsp;<a class="hanchor" href="#3-lorge" aria-label="Anchor link for: 3: Lorge">🔗</a></h3>
<p>Dunn&rsquo;s mother passed a short time before the album was recorded. The album is dedicated to her memory. Lorge is the middle name of Dunn&rsquo;s mother. The album reflects on the emotions that follow the death of a loved one.</p>

<h3 id="4-1969">4: 1969&nbsp;<a class="hanchor" href="#4-1969" aria-label="Anchor link for: 4: 1969">🔗</a></h3>
<p>In a <a href="https://youtu.be/pw6EZiCpmDE?t=24m18s">phone interview</a> with Fogarty, he believed this song title came from Dunn’s birth year, 1969.</p>

<h3 id="7-fanshawe">7: Fanshawe&nbsp;<a class="hanchor" href="#7-fanshawe" aria-label="Anchor link for: 7: Fanshawe">🔗</a></h3>
<p>The song is a tribute to The New York Trilogy’s <a href="https://archive.nytimes.com/www.nytimes.com/books/99/06/20/specials/auster-locked.html"><em>The Locked Room</em></a> novel, which features a character named Fanshawe. In the Patreon A.M.A., he acknowledged the connection to the character and book.</p>

<h3 id="8-connie">8: Connie&nbsp;<a class="hanchor" href="#8-connie" aria-label="Anchor link for: 8: Connie">🔗</a></h3>
<p>Connie is the shortened form of Dunn&rsquo;s mother&rsquo;s first name, Constance.</p>

<h2 id="why-i-care">Why I care&nbsp;<a class="hanchor" href="#why-i-care" aria-label="Anchor link for: Why I care">🔗</a></h2>
<p><em>El Ten Eleven</em> deals with loss. As the album transitions from beginning to end, it moves towards acceptance. But acceptance of loss is not easily attained. Loss also comes with difficult emotions.</p>
<p>In psychology, there are five stages of grief. They can happen in any order and go between each other, but it always ends with acceptance. The abbreviated five stages are regret, denial, anger, sadness, and acceptance. <em>El Ten Eleven</em> offers a musical experience of the life-cycle of grief.</p>
<p><em>El Ten Eleven</em> empowered me. In times of discomfort or anxiety, this album is always my go-to. It continues to be a cornerstone for me in challenging moments in my life.</p>

<h2 id="where-to-find-el-ten-eleven">Where to find <em>El Ten Eleven</em>&nbsp;<a class="hanchor" href="#where-to-find-el-ten-eleven" aria-label="Anchor link for: Where to find El Ten Eleven">🔗</a></h2>
<p>Check below for links. If you have no preference, Bandcamp purchases are the most effective way for your money to go to supporting the band.</p>
<ul>
<li><a href="https://fakerecordlabel.bandcamp.com/album/el-ten-eleven-album">Bandcamp</a></li>
<li><a href="https://open.spotify.com/album/6bv070I2PgzwGLgYGBxaJW">Spotify</a></li>
<li><a href="https://itunes.apple.com/us/album/el-ten-eleven/1069707474">iTunes</a></li>
<li><a href="https://play.google.com/store/music/album?id=Bncxvdbskbxaqb3boxv5nkg5ane">Google Play</a></li>
<li><a href="https://www.amazon.com/El-Ten-Eleven/dp/B019JO3CFC">Amazon</a></li>
</ul>
<p>If you would be kind, please drop some claps to my friend&rsquo;s <a href="https://medium.com/@mattcoutu/el-ten-eleven-a-power-duo-of-post-rock-5aab5d15923b">interview with the band</a> on Medium!</p>
<hr>
<p><em>Curious where the name &ldquo;Tergiversate&rdquo; came from? Check out the <a href="http://www.dictionary.com/browse/tergiversate">dictionary definition</a>.</em></p>]]></description></item><item><title>A reflection: Gabriele Trombini (mailga)</title><link>https://jwheel.org/blog/2020/09/a-reflection-gabriele-trombini-mailga/</link><pubDate>Fri, 18 Sep 2020 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2020/09/a-reflection-gabriele-trombini-mailga/</guid><description><![CDATA[<p><em>Trigger warning: Grief, death.</em></p>
<p>Two years passed since we last met in Bolzano. I remember you traveled in for a day to join the 2018 Fedora Mindshare FAD. You came many hours from your home to see us, and share your experiences and wisdom from both the global and Italian Fedora Community. And this week, I learned that you, Gabriele &ldquo;Gabri&rdquo; Trombini, passed away from a heart attack. To act like the news didn&rsquo;t affect me denies my humanity. In 2020, a year that feels like it has taken away so much already, we are greeted by another heart-breaking loss.</p>
<p>But to succumb to the despair and sadness of this year would deny the warm, happy memories we shared together. We shared goals of supporting the Fedora Project but also learning from each other.</p>
<p>So, this post is a brief reflection of your life as I knew you. A final celebration of the great memories we shared together, that I only wish I could have shared with you while you were still here.</p>
<p>
<figure>
  <img src="/blog/2023/06/28756994166_7fe864f3ff_o-edited.jpg" alt="A photograph of Gabriele Trombini at Flock 2016 in Kraków, Poland. Gabriele is seated in a chair around a table, in the middle of two others." loading="lazy">
  <figcaption>Gabriele Trombini, or \&#34;Gabri\&#34;, at Flock 2016 in Kraków, Poland.</figcaption>
</figure>
</p>

<h2 id="ciao">Ciao!&nbsp;<a class="hanchor" href="#ciao" aria-label="Anchor link for: Ciao!">🔗</a></h2>
<p>We had a unique privilege of meeting first in person before meeting online. At <a href="https://jwfblog.wpenginepowered.com/2016/02/2015-year-review/">Flock 2015</a>, of course I remember coming to your <a href="https://flock2015.sched.com/event/3rak/fedora-join">Fedora-Join session</a>. This was my first introduction to the volunteer-supported mentorship community that exists in Fedora. Even though there was one particularly disruptive audience member, I remember learning from you and noting your long-time experience in the Fedora Community.</p>
<p>After that, we would come to know each other better. As I began a new chapter of my life at my university, we would become frequent collaborators. The Fedora Marketing team was always interesting to me, as part of the group of people who helped our community talk about and share the Fedora Project with others. Underneath your gentle mentorship, I learned the focus areas and history of the Fedora Marketing team.</p>
<p>At some point in 2015 or 2016, you asked me if I would like to chair a Marketing Team meeting. Thus began an early step in my journey from a participant to a facilitator. In a tragically ironic way, it strikes me how I did not see your guidance as mentorship at the time. I always saw our conversations as two friends discussing a shared hobby or interest. Such is the subtle art of teaching and mentorship.</p>

<h2 id="your-many-contributions">Your many contributions&nbsp;<a class="hanchor" href="#your-many-contributions" aria-label="Anchor link for: Your many contributions">🔗</a></h2>
<p>You were a cornerstone community member of Fedora for many years. Since our connection was from Fedora, it is worth noting the many contributions you made over the years. Long before Fedora or Linux were anything I knew about.</p>
<p>You and Robert Mayr co-authored a book together <a href="https://pagure.io/Fedora-Council/council-docs/c/3bfb5398f713921888074816611edf7912ec103c?branch=master">about Fedora 9</a>, I think for the Italian Linux community. You were a one-time steward of the Fedora Join and Marketing teams. You were an influential member in shaping <a href="https://communityblog.fedoraproject.org/mindshare-elections-interview-gabriele-trombini-mailga/">what Mindshare is today</a>, from the days of the <a href="https://fedoraproject.org/wiki/FOSCo">Fedora Outreach Steering Committee</a>, the <a href="https://fedoraproject.org/wiki/Fedora_Ambassadors_Steering_Committee">Fedora Ambassador Steering Committee</a> before that, and <a href="https://forum.fedoraonline.it/">grassroots community organizing in Italy</a> even before that.</p>

<h2 id="beyond-the-source">Beyond the source&nbsp;<a class="hanchor" href="#beyond-the-source" aria-label="Anchor link for: Beyond the source">🔗</a></h2>
<p>But perhaps the memories I treasure most are the ones that don&rsquo;t have much to do with Fedora at all. I remember learning that &ldquo;in real life&rdquo; you were a co-owner of a heating and air conditioning business in Italy. For many years, my family ran a heating and air conditioning company of our own. This was an experience I could always understand. I remember the times when you would go offline for some time. Then I would hear from you eventually, and you would tell me how the busy season kept you away from helping out in Fedora. And in a few words in IRC private messages, I simply knew and smiled.</p>
<p>We would meet at <a href="https://flocktofedora.org/">Flock</a> events, but I find Flock is usually tough to get 1x1 time with others. I remember the day you came up and joined us in <a href="https://www.openstreetmap.org/#map=11/46.5095/11.3173">Bolzano</a> for the <a href="https://communityblog.fedoraproject.org/mindshare-monthly-report-fad-first-actions/">2018 Mindshare FAD</a>. On a weekend day in March, you came and sat in a wine cellar converted to a conference room, where we spent the day recounting pain points and how Mindshare would address them.</p>
<p>And then, our small group went out for dinner. The food we ate and words we said are now faded memories, but the experience lives warmly in my heart as I think about what your life meant to me.</p>
<p>I was saddened to find no photographs or pictures of us together. But I went looking for our last conversations and found these final messages on IRC:</p>
<pre tabindex="0"><code>**** BEGIN LOGGING AT Sun Dec  4 17:49:56 2016

Dec 04 17:49:56 &lt;jflory7&gt;   That would be fantastic... I&#39;ll definitely let you know if I have plans to visit Italy. :)

Dec 05 07:00:32 &lt;mailga&gt;    jflory7 hope it happens. :)

**** ENDING LOGGING AT Wed Dec  7 00:28:51 2016
</code></pre><p>I never got to take you up on your offer to visit your home and meet your family. But I am happy that I had the opportunity to partially fulfill that old promise of meeting together in Italy.</p>

<h2 id="why-write-this">Why write this?&nbsp;<a class="hanchor" href="#why-write-this" aria-label="Anchor link for: Why write this?">🔗</a></h2>
<p>I didn&rsquo;t write this post with an outline, or a template. These words came to me while sitting with my own emotions and feelings. I am writing this because this is an effective coping mechanism for me to process what is lost, but also how to move forward from the loss.</p>
<p>The Fedora Project has given me a lot over the last five years. I have met many wonderful people and contributed to things that matter a great deal to me. But Fedora has also <a href="https://jwfblog.wpenginepowered.com/2018/11/fedora-appreciation-week-tribute-to-a-legacy/">taught me about loss</a>. There are many lessons in life that have nothing to do with work, code, software, or engineering, but have everything to do with how we look at the world.</p>
<p>In the wake of losing you, I think of the kind words and memories we shared that I did not tell you were important to me. I think of how the opportunity is permanently missed for me to share my appreciation of your kindness and friendship. The tragedy of youth is perhaps that I failed to fully appreciate our connection until after you passed.</p>
<p>When writing this, I came to realize something for me. And this will be different for everyone. But I like to think for Gabrielle and me, Fedora was never <em>just</em> about building an operating system. It was about collaborating with other people, human beings, on a digital infrastructure project that mattered, and to share kindness unto others &ndash; especially beginners and newcomers.</p>
<p>Rest in peace, amico.</p>]]></description></item><item><title>Facilitation, collaboration, and webcams: A story about Principles of Authentic Participation</title><link>https://jwheel.org/blog/2020/06/facilitation-collaboration-principles-authentic-participation/</link><pubDate>Fri, 12 Jun 2020 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2020/06/facilitation-collaboration-principles-authentic-participation/</guid><description><![CDATA[<p>This is the story about the facilitation of the <a href="https://authentic-participation.readthedocs.io/">Principles of Authentic Participation</a>.</p>
<p>This post does not describe what the Principles are (click that link to learn more about them). This post describes the story behind the Principles, and how our <a href="https://sustainoss.org/working-groups/authentic-participation/">Sustain Working Group</a> worked together over three months of virtual facilitation during the COVID–19 crisis to build these Principles.</p>

<h2 id="overview">Overview&nbsp;<a class="hanchor" href="#overview" aria-label="Anchor link for: Overview">🔗</a></h2>
<p>This blog post is a story, or perhaps open source lore. So, here is the abridged summary:</p>
<ol>
<li><strong>The Sticky Idea</strong>: How did a discussion topic at a one-day open source sustainability conference evolve into a three-month extended collaboration?</li>
<li><strong>Facilitation, Roosevelt-style</strong>: The people are here. How do you facilitate a conversation with no scope and few bounds?</li>
<li><strong>Is there a next chapter to this story?</strong>: The Working Group is winding down. What happens to the Principles next?</li>
</ol>
<p>If you are hooked, read on.</p>

<h2 id="the-sticky-idea">The Sticky Idea&nbsp;<a class="hanchor" href="#the-sticky-idea" aria-label="Anchor link for: The Sticky Idea">🔗</a></h2>
<p>How does a discussion topic at a one-day conference evolve into an inter-organizational, international collaboration that spans three months?</p>
<p>When the accountability and transparency discussion groups formed at <a href="https://jwfblog.wpenginepowered.com/2020/02/sustain-oss-2020-quick-rewind/">Sustain Summit 2020</a>, none of us knew what would come after the event. Not to mention, there were several different sustainability topics explored at the Summit.</p>
<p>So, the conversation about corporate accountability was about the same as every other conversation during that morning: <strong>someone was motivated enough to step up and say, &ldquo;I&rsquo;ll do it – I&rsquo;ll facilitate this conversation!&rdquo;</strong></p>

<h3 id="open-source-accountability-goals">Open Source Accountability Goals&nbsp;<a class="hanchor" href="#open-source-accountability-goals" aria-label="Anchor link for: Open Source Accountability Goals">🔗</a></h3>
<p>Duane O&rsquo;Brien volunteered to lead facilitation on defining goals for open source accountability. Duane proposed four goals to iterate on in the Summit break-out groups:</p>
<ol>
<li>Set and publish a goal for open source contribution relative to value capture</li>
<li>Adhere to principles of authentic participation</li>
<li>Publish documentation of open source policies, processes, and project governance</li>
<li>Well defined reporting process that is publicly available</li>
</ol>
<p>The morning discussions broadly focused on these goals. After the ice was broken and conversation was flowing, themes and patterns emerged in the stories we shared with each other. Later that day, <a href="https://aspirationtech.org/about/people">Allen Gunn</a> asked me if I would lead an afternoon discussion session. The second goal, these principles of authentic participation, were personally interesting to me, and the morning group was engaged too. So I said, &ldquo;Yes, I&rsquo;ll do it!&rdquo; Even though I did not really have any idea what I was going to do yet.</p>

<h3 id="facilitation-of-authentic-participation-discussion">Facilitation of Authentic Participation discussion&nbsp;<a class="hanchor" href="#facilitation-of-authentic-participation-discussion" aria-label="Anchor link for: Facilitation of Authentic Participation discussion">🔗</a></h3>
<p>After lunch, I gathered folks for the discussion group to discuss what authentic participation means. If we could propose a basic set of principles that we agree on, could this be a useful tool for the pain points of stories shared in the morning session?</p>
<p>The afternoon discussion was insightful, but lacked firm conclusions. We had great ideas and lots of stories, but nothing to tie them together. I collected email addresses of folks who wanted to continue engaging on the Principles of Authentic Participation. However, I wasn&rsquo;t sure what the next step would be at the time.</p>
<p>At the Summit, I committed to facilitation of a public Discourse forum discussion, but some attendees voiced that Discourse was not accessible for them. To compromise without exhausting myself across <em>too</em> many platforms, I promised to host a few online discussions for folks to gather and talk about these things again later.</p>
<p>The embers were hot on this discussion at the Sustain Summit. But it was still just embers. How do we get these embers to &ldquo;spark&rdquo; into something bigger? Enter the <strong>Fireside Chats</strong>.</p>

<h2 id="facilitation-roosevelt-style">Facilitation, Roosevelt-style&nbsp;<a class="hanchor" href="#facilitation-roosevelt-style" aria-label="Anchor link for: Facilitation, Roosevelt-style">🔗</a></h2>
<p>So, skip ahead a couple weeks. I was ready to push the conversation forward. The time was right for the first follow-up email to the discussion group participants. As promised, I opened a Discourse discussion that summarized our notes from the conference and asked open-ended questions. Later on, I announced the first of four Fireside Chats. The <strong>Fireside Chats</strong> became the primary vehicle of collaboration for the working group.</p>
<p>Text-based communications are my preference. But video?? I would have to swallow my introverted shyness if I was going to lead this. I never facilitated an online discussion group before. There were also not many public examples to learn from either. The style I took to the Fireside Chats was mostly my own. I relied on my past experience of facilitating open source project meetings and development to drive these Fireside Chats. And I borrowed a little inspiration from former American president Franklin D. <a href="https://en.wikipedia.org/wiki/Fireside_chats">Roosevelt&rsquo;s fireside chats</a> during the 1930s/1940s.</p>
<p>For the first Fireside Chat on 2020 February 28th, I had no idea what I was doing. I <a href="https://discourse.sustainoss.org/t/principles-of-authentic-participation-continuing-the-sustain-conversation/284/2?u=jwf">prepared a loose agenda</a>, but I left it broad so people could bring their own interests and passions into the conversation. I figured doing this would allow people to bring their own needs, desires, and wants to the conversation. It was unrealistic to expect a collaboration driven by my own motivations.</p>
<p>A successful collaboration requires all participants to have an opportunity to satisfy their own personal motivations for showing up in the first place. So, my approach centered our collaborative work on the group and not just myself, to avoid a high initial interest that dwindles down over time.</p>

<h3 id="how-did-facilitation-start">How did facilitation start?&nbsp;<a class="hanchor" href="#how-did-facilitation-start" aria-label="Anchor link for: How did facilitation start?">🔗</a></h3>
<p>The first Fireside Chat was exploratory. It was our first time talking about the Principles since the Sustain Summit. We caught back up on where we left off, detailed what we wanted to get out of this collaboration, and began scoping out what we thought we could accomplish together.</p>
<p>Although the first chat was mostly unstructured, it was essential to to identify themes and ideas that led to more focused, structured discussions for the next three Fireside Chats. The Discourse thread was also useful as an accessory for the Fireside Chats. I published notes from each Fireside Chat on the Discourse thread, and there was some asynchronous discussion between Fireside Chats.</p>
<p>Beyond the first Fireside Chat, the agendas became easier for me to write and the feedback became more focused. Fortunately, most of this work happened in public on the Discourse thread. So, if you are curious for more details on how the final three Fireside Chats went, take a look at the <a href="https://discourse.sustainoss.org/t/principles-of-authentic-participation-continuing-the-sustain-conversation/284">discussion thread</a>.</p>

<h2 id="is-there-a-next-chapter-to-this-story">Is there a next chapter to this story?&nbsp;<a class="hanchor" href="#is-there-a-next-chapter-to-this-story" aria-label="Anchor link for: Is there a next chapter to this story?">🔗</a></h2>
<p>For now, the Principles of Authentic Participation Working Group is going dormant. We met our original goal of drafting some basic principles.</p>
<p>So, now what happens? So, let&rsquo;s try to predict the future! (That can&rsquo;t be <em>that</em> hard, right?)</p>
<p>My hope is that the Principles of Authentic Participation leads to more story-telling about what it means to authentically contribute to open source, whether you are an individual or an organization. To help curate the stories, I created a <a href="https://authentic-participation.readthedocs.io/meta/contribute-story/">template</a> to encourage folks to share them with us. The template provides question that makes it easy for a maintainer to copy and paste the story into our published <a href="https://authentic-participation.readthedocs.io/advocate-kit/stories/">Principles of Authentic Participation website</a>.</p>
<p>Whether this hope comes true or not, we will see. But the Principles have a life of their own now. It doesn&rsquo;t mean the Working Group will never meet again, or that we won&rsquo;t revisit these ideas over time. But these Principles are now the &ldquo;property&rdquo; of the community to continue building. I will continue to participate where I can to curate stories about the Principles.</p>

<h2 id="closing-thoughts">Closing thoughts&nbsp;<a class="hanchor" href="#closing-thoughts" aria-label="Anchor link for: Closing thoughts">🔗</a></h2>
<p>My hope in sharing this story is to help other facilitators and activists in the open source world approach digital-only organizing. Digital facilitation and organization is a skill we are all learning, for better or worse, in a COVID-19 world. But it isn&rsquo;t a new skill. Lots of folks have been doing this for a long time, especially in the digital-first world of open source.</p>
<p>So, I hope this paints a picture of how we pulled off the Principles of Authentic Participation and how others can take what we did and improve on our processes.</p>
<p>It is possible to work collaboratively with new people on digital initiatives across different backgrounds and sectors. Remote facilitation is someone being brave enough to step up and lead, even if they have no idea what they are doing. After all… isn&rsquo;t that what many other white American men like me do anyways? So can you.</p>]]></description></item><item><title>TeleIRC v2.0.0 is officially here!</title><link>https://jwheel.org/blog/2020/05/teleirc-v2-0-0-is-officially-here/</link><pubDate>Sun, 24 May 2020 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2020/05/teleirc-v2-0-0-is-officially-here/</guid><description><![CDATA[<p>After almost eight months of work, the TeleIRC Team is happy to announce <strong>General Availability of TeleIRC v2.0.0 today</strong>. Thanks to the hard work of our volunteer community, we are celebrating an on-time release of a major undertaking to make a more sustainable future for TeleIRC.</p>

<h2 id="download-teleirc-v200-now"><a href="https://github.com/RITlug/teleirc/releases/tag/v2.0.0">Download TeleIRC v2.0.0 now!</a>&nbsp;<a class="hanchor" href="#download-teleirc-v200-now" aria-label="Anchor link for: Download TeleIRC v2.0.0 now!">🔗</a></h2>
<p>If you want to skip the text and get to the software, head to the <a href="https://github.com/RITlug/teleirc/releases/tag/v2.0.0">GitHub v2.0.0 release</a> for more info. If you want the story behind this release, read on!</p>

<h2 id="eight-months-later">Eight months later…&nbsp;<a class="hanchor" href="#eight-months-later" aria-label="Anchor link for: Eight months later…">🔗</a></h2>
<p>The conversation started in a university hallway after the first RIT Linux Users Group meeting in the Fall 2019 semester. Together, <a href="https://github.com/Tjzabel">Tim Zabel</a>, <a href="https://github.com/Zedjones">Nicholas Jones</a>, and <a href="https://jwheel.org/">Justin Wheeler</a> set out to <a href="https://github.com/RITlug/teleirc/issues/163">rewrite TeleIRC from NodeJS to Go</a>. This was done to address a growing backlog of challenging feature requests on TeleIRC, but also a way for us to gain more experience working with Go. Along the way, we also ended up <a href="https://jwfblog.wpenginepowered.com/2020/03/teleirc-v2-0-0-march-2020-progress-update/">facilitating an agile-inspired software release process</a> adapted for open source.</p>
<p>So, what happened in the eight months after the first conversation? The team meet for weekly meetings each Saturday afternoon (at first in-person, later virtually), two new core contributors joined the team, and some drive-by contributors provided feedback andf added code to the new release. There were charts, whiteboards and dry-erase markers, and lots of Blue Jeans video calls. But after all this time, we made it to release day!</p>

<h2 id="thank-you-amazing-volunteer-contributors">Thank you amazing volunteer contributors!&nbsp;<a class="hanchor" href="#thank-you-amazing-volunteer-contributors" aria-label="Anchor link for: Thank you amazing volunteer contributors!">🔗</a></h2>
<p>This endeavor was a shared commitment by our volunteer committer team. All five of the volunteer core maintainers spread patience and sustained effort over time. At the end, we made something really cool to show for this work.</p>
<p>A <strong><em>huge</em></strong> thanks to our core maintainers and all current and past contributors to TeleIRC. You have all contributed to the success (and motivation!) for this project. It is fun to work on cool projects with friends!</p>
<p>A proper shout-out goes to the core maintainers who joined the team over the last eight months working on this release:</p>
<ul>
<li><a href="https://github.com/kennedy">Kennedy Kong</a></li>
<li><a href="https://github.com/10eMyrT">Kevin Assogba</a></li>
<li><a href="https://github.com/Zedjones">Nicholas Jones</a></li>
<li><a href="https://github.com/Tjzabel">Tim Zabel</a></li>
</ul>

<h2 id="i-found-a-bug-in-teleirc-v200">&ldquo;I found a bug in TeleIRC v2.0.0!&rdquo;&nbsp;<a class="hanchor" href="#i-found-a-bug-in-teleirc-v200" aria-label="Anchor link for: &ldquo;I found a bug in TeleIRC v2.0.0!&rdquo;">🔗</a></h2>
<p>If you run into a problem, check out the <a href="https://docs.teleirc.com/">TeleIRC documentation</a> and <a href="https://github.com/RITlug/teleirc/issues/new/choose">open an issue</a> if it does not answer your questions.</p>

<h2 id="get-in-touch">Get in touch!&nbsp;<a class="hanchor" href="#get-in-touch" aria-label="Anchor link for: Get in touch!">🔗</a></h2>
<p>If you have questions, <a href="https://github.com/RITlug/teleirc/tree/v2.0.0#live-demo">get in touch</a> with the developer community. You can find us <a href="https://t.me/teleirc">on Telegram</a> and <a href="https://webchat.freenode.net/#rit-lug-teleirc">on IRC</a> (<code>#rit-lug-teleirc</code> on <em>chat.freenode.net</em>).</p>]]></description></item><item><title>What's new in TeleIRC v2.0.0</title><link>https://jwheel.org/blog/2020/05/whats-new-in-teleirc-v2-0-0/</link><pubDate>Sun, 24 May 2020 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2020/05/whats-new-in-teleirc-v2-0-0/</guid><description><![CDATA[<p>TeleIRC v2.0.0 is the latest major release of our open source Telegram &lt;=&gt; IRC bridge. Download the <a href="https://github.com/RITlug/teleirc/releases/tag/v2.0.0">latest release</a> and read the <a href="https://jwfblog.wpenginepowered.com/2020/05/teleirc-v2-0-0-is-officially-here/">release announcement</a> for the full story.</p>
<p>There are several new and noteworthy changes in TeleIRC v2.0.0. This post walks you through the major changes and differences for TeleIRC v2.0.0. Read on for the highlight reel of this release.</p>

<h2 id="full-rewrite-to-go">Full rewrite to Go&nbsp;<a class="hanchor" href="#full-rewrite-to-go" aria-label="Anchor link for: Full rewrite to Go">🔗</a></h2>
<p>TeleIRC v2.0.0 is a complete and total rewrite. With the lessons learned and best practices of the NodeJS v1.x.x releases under our belt, the team set out in September 2019 to rewrite TeleIRC in Go. The rewrite was motivated by fun and personal interest, but it was also intended to make the future of TeleIRC more sustainable.</p>
<p>The rewrite makes TeleIRC simple, fast, and lightweight. TeleIRC is unique from other chat bridge software, which usually focus on extensive configuration and supporting many chat platforms.</p>
<p>Additionally, the success criteria in order to release was feature parity with v1.x.x releases. The team accomplished this almost completely, with one exception. <strong>TeleIRC v2.0.0 does not include Imgur image upload for IRC</strong>; however, a v2.1.0 feature release will include Imgur support.</p>
<p>To summarize, TeleIRC v2.0.0 is written to be a simple and excellent Telegram &lt;=&gt; IRC bridge. No more, no less.</p>

<h2 id="run-teleirc-v200-as-a-compiled-binary">Run TeleIRC v2.0.0 as a compiled binary&nbsp;<a class="hanchor" href="#run-teleirc-v200-as-a-compiled-binary" aria-label="Anchor link for: Run TeleIRC v2.0.0 as a compiled binary">🔗</a></h2>
<p>The new release is available as a standalone 8 MB binary. The only deployment assets needed are the binary and a config file. Other pathways, including build from source and Ansible Roles, are also available.</p>
<p>This is a departure from TeleIRC v1.x.x releases, which required a NodeJS run-time and installing project dependencies. TeleIRC v2.0.0 does not require a Go run-time on the host.</p>

<h2 id="improved-teleirc-v200-documentation">Improved TeleIRC v2.0.0 documentation&nbsp;<a class="hanchor" href="#improved-teleirc-v200-documentation" aria-label="Anchor link for: Improved TeleIRC v2.0.0 documentation">🔗</a></h2>
<p>End user feedback shaped and improved documentation during development.</p>
<p>Thanks to feedback collected during the pre-release process, the documentation is simplified and written to be easy to understand. We hope you find the <a href="https://docs.teleirc.com/en/latest/user/quick-start/">TeleIRC Quick Start</a> page a helpful introduction to getting TeleIRC running in little time.</p>

<h2 id="future-roadmap-for-containers">Future roadmap for containers&nbsp;<a class="hanchor" href="#future-roadmap-for-containers" aria-label="Anchor link for: Future roadmap for containers">🔗</a></h2>
<p>Because of <a href="https://jwfblog.wpenginepowered.com/2020/03/teleirc-v2-0-0-march-2020-progress-update/">v2.0.0 design decisions</a>, there is a planned future for container and container orchestration use cases. At release time, a <a href="https://github.com/RITlug/teleirc/tree/v2.0.0/deployments/container">Dockerfile is available</a>, but it is not yet tested or documented.</p>
<p>In future releases, the TeleIRC Team will continue to test the container image and iron out bugs. Future deployment assets and documentation will offer pathways to run TeleIRC in Kubernetes or OpenShift v4.x.x.</p>
<hr>
<p><em>Article format inspired by Ryan Lerch&rsquo;s format for &ldquo;<a href="https://fedoramagazine.org/whats-new-fedora-32-workstation/">What&rsquo;s new in Fedora Workstation</a>&rdquo;.</em></p>]]></description></item><item><title>Take the 2020 #HappinessPacketChallenge!</title><link>https://jwheel.org/blog/2020/04/2020-happiness-packets-challenge/</link><pubDate>Thu, 23 Apr 2020 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2020/04/2020-happiness-packets-challenge/</guid><description><![CDATA[<p>In this brave new COVID-19 world, we have to watch out for each other. These times are unusual and not normal. This year in 2020, <strong>I challenge you to join me and others in the Happiness Packets Challenge from Monday, 27 April to Sunday, 3 May</strong>! This is the same challenge I made <a href="https://jwfblog.wpenginepowered.com/2017/04/happiness-packets-challenge/">in 2017</a>. Can you say thanks to someone different every day for one week?</p>
<p>When I was a kid, one of the most important lessons I learned was saying &ldquo;thank you&rdquo; when someones does something nice for you. So, a few years ago, I learned about this <a href="https://happinesspackets.io/">awesome little website</a> called Happiness Packets. Its purpose is simple but powerful. Happiness Packets are open source thank-you cards you can send over email. You can send Happiness Packets to anyone for anything. Your message can be as short or as long as you like. You can put your name on it or keep it anonymous. The choice is yours. And now, <strong>I want to challenge you (yes, <em>you</em>) to the 2020 <a href="https://twitter.com/search?q=%23HappinessPacketChallenge">#HappinessPacketChallenge</a></strong>!</p>

<h2 id="what-are-happiness-packets">What are Happiness Packets?&nbsp;<a class="hanchor" href="#what-are-happiness-packets" aria-label="Anchor link for: What are Happiness Packets?">🔗</a></h2>
<p>Upstream describes it best. This comes straight from the Happiness Packets website:</p>
<blockquote>
<p>People are generally much more loved than they think they are. Especially when things don&rsquo;t go according to plan, other people almost never think as harshly of you as you might think of yourself. It&rsquo;s easy for us to complain when bad things happen, and yet we&rsquo;re often fairly silent when things are good. Open-source communities are no different, especially when our main communication channels are textual and virtual.</p>
<p>The feeling that you made a difference, that your work matters and has value, and that the people you work with are happy to work with you, is an awesome feeling. With Open-Source Happiness Packets, we&rsquo;re trying to spread that feeling.</p>
<p><strong>How does it work?</strong></p>
<p>Openly expressing appreciation, gratitude, or happiness to other people can be difficult. This is especially true when you don&rsquo;t know them very well. Many of us come from cultures in which people are not open by default about such feelings, and naturally feel uncomfortable or even creepy to share them.</p>
<p>Open-Source Happiness Packets is a very simple platform to anonymously reach out to the people that you appreciate or to whom you are thankful in your open-source community. Your message can be sent anonymously if you feel uncomfortable to share your name with the recipient. Of course, we encourage you to share your name, but it&rsquo;s completely optional!</p>
<p>What are Open-Source Happiness Packets?</p>
</blockquote>
<p>You can learn more about the Happiness Packets Challenge by browsing through the <a href="https://twitter.com/search?q=%23HappinessPacketChallenge">Twitter hashtag</a>.</p>

<h2 id="take-the-challenge">Take the challenge!&nbsp;<a class="hanchor" href="#take-the-challenge" aria-label="Anchor link for: Take the challenge!">🔗</a></h2>
<p>So, what is the <em>#HappinessPacketChallenge</em>? I challenge you to do the following: <strong>write one Happiness Packet a day, every day, for one week starting Monday, 27 April and ending Sunday, 3 May</strong>. At a minimum, this is seven times where you say &ldquo;thank you&rdquo; to someone else. Of course, nothing is stopping you from sending more if you want!</p>
<p>Maybe you are overwhelmed by the negativity on social media or the news channel. Especially today, when everyone is talking about one single thing: COVID-19. Whatever the platform is, the negativity can eat at you. For one week, this is your opportunity to choose something different. For all of the good things and people in your life, spend a few minutes of each day this week to make someone&rsquo;s day. It seems simple—and it is! But the power you have to spread the positivity is a big power. So <strong>this is the challenge you have</strong>: to commit yourself to spreading your little packet of happiness every day for one week.</p>

<h3 id="but-i-dont-know-what-to-say">&ldquo;But, I don&rsquo;t know what to say…&rdquo;&nbsp;<a class="hanchor" href="#but-i-dont-know-what-to-say" aria-label="Anchor link for: &ldquo;But, I don&rsquo;t know what to say…&rdquo;">🔗</a></h3>
<p>Having a hard time coming up with words or not sure who to thank? No worries. Your message can be as short or as long as you like. If you&rsquo;re not sure who to thank, look at software you are already using. Look for names and emails of maintainers of open source software you enjoy. If you&rsquo;re already contributing to open source, consider folks in your community! Thank someone who had a hand in helping you get started, or gave you a little bit of encouragement when you needed it most.</p>
<p>Maybe you have other ideas or reasons to thank others. (<em>Heartbleed or Shellshock anyone?</em>) Whatever the reason, don&rsquo;t make an excuse to not say thanks! The options are limitless. If you have a lot to say, say it! If not, even a simple &ldquo;thanks for all the work you do!&rdquo; can go a long way to make someone&rsquo;s day.</p>

<h2 id="share-your-happiness-packets">Share your Happiness Packets&nbsp;<a class="hanchor" href="#share-your-happiness-packets" aria-label="Anchor link for: Share your Happiness Packets">🔗</a></h2>
<p>The magical part of Happiness Packets is sharing happy moments with others. If you receive one, don&rsquo;t be afraid to share it with the world! Tweet at <a href="https://twitter.com/happinesspacket">@happinesspacket</a> on Twitter. Use the <a href="https://twitter.com/hashtag/HappinessPacketChallenge">#HappinessPacketChallenge</a> hashtag. Encourage other people to send their own thanks. If you get one other person to take the challenge, that has an impact on seven more people! Imagine what would happen if all of those seven people decided to take the challenge too.</p>
<p>So, I hope you will join me this year in this fun tradition. Get ready from <strong>Monday, 27 April to Sunday, 3 May</strong> to <a href="https://happinesspackets.io/send/">send some happiness</a>! And if you&rsquo;re feeling bold, challenge someone you know directly.</p>
<hr>
<p><em><a href="https://thenounproject.com/search/?q=love%20mail&amp;i=314865">Love Letter</a> by <a href="https://thenounproject.com/vectorsmarket">Vectors Market</a> from <a href="https://thenounproject.com/">the Noun Project</a></em>.</p>]]></description></item><item><title>FOSDEM 2020, pt. 2: Can Free Software include ethical AI systems?</title><link>https://jwheel.org/blog/2020/04/fosdem-2020-pt-2-can-free-software-include-ethical-ai-systems/</link><pubDate>Tue, 21 Apr 2020 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2020/04/fosdem-2020-pt-2-can-free-software-include-ethical-ai-systems/</guid><description><![CDATA[<p><em>This post is a follow-up to <a href="https://jwfblog.wpenginepowered.com/2020/03/fosdem-2020-pt-1-play-by-play/">FOSDEM 2020, pt. 1: Play by play</a>. This post summarizes the talk given by me and my colleague, <a href="https://nolski.rocks/">Mike Nolan</a>, at FOSDEM 2020.</em></p>
<hr>
<p>FOSDEM 2020 took place from Saturday, 1 February, 2020 to Sunday, 2 February, 2020 in Brussels, Belgium (shortly after <a href="https://jwfblog.wpenginepowered.com/2020/02/sustain-oss-2020-quick-rewind/">Sustain OSS 2020</a> and <a href="https://jwfblog.wpenginepowered.com/2020/02/chaosscon-eu-2020-play-by-play/">CHAOSScon EU 2020</a>). On Saturday, together with my colleague and friend Mike Nolan, we presented on a topic he and I have co-conspired on for the last six months. What are the intersections of Free Software and artificial intelligence (AI)?</p>
<blockquote>
<p>What is a rights-based approach for designing minimally safe and transparent guidelines for AI systems? In this talk, we explore what a Free AI system might look like. Then, taking research and guidelines from organizations such as Google and the UN Office for the Coordination of Humanitarian Affairs, we propose practical policies and tools to ensure those building an AI system respect user freedom. Lastly, we propose the outlines of a new kind of framework where all derivative works also respect those freedoms.</p>
<p><a href="https://fosdem.org/2020/schedule/event/ethical_ai/">Freedom and AI: Can Free Software include ethical AI systems? Exploring the intersection of Free software and AI</a></p>
</blockquote>
<p><em>Video recording from FOSDEM 2020</em></p>
<p>This post is an abridged summary of the key ideas and thoughts Mike and I presented at our FOSDEM 2020 session.</p>

<h2 id="lets-frame-this-first">Let&rsquo;s frame this first.&nbsp;<a class="hanchor" href="#lets-frame-this-first" aria-label="Anchor link for: Let&rsquo;s frame this first.">🔗</a></h2>
<p>The idea behind this talk was a seed planted at MozFest 2018. I remember sitting with Mike in a hotel lobby while he was clocking some remote hours for work. We had some honest conversation about the experiences we&rsquo;ve had across the public, private, and humanitarian aid sectors. At the time, Mike worked at the International Rescue Committee, and I had just finished a six-month internship with the UNICEF Office of Innovation working on open source community management.</p>
<p>The best way I can think of to describe humanitarian work is that it comes with the highest of highs and lowest of lows. Finding success usually means either a direct or indirect impact on some of the most vulnerable populations on our planet. Making mistakes or seeing planned efforts spin out in the wrong direction mean the resources your organization do not have the full impact they could, or sometimes worse, they fix one problem and create another.</p>
<p>At MozFest 2018, the seeds of thought for the intersections of Free Software as it relates to humanitarian aid and artificial intelligence were planted. Fast-forward a year to October 2019. Mike and I caught up after a while and after we had both had new experiences out in the industry. We began tending to the seed planted the year before. Our venting sessions and simultaneous cheers turned from our video chats back to the wider Free Software ecosystem.</p>
<p>The FOSDEM 2020 call for papers would open in a few more weeks from when we first began talking about these ideas in 2019. FOSDEM 2020 is a great collection of many different minds and people in the Free Software world, so it felt like the perfect audience for us to deliver our thoughts to an audience for the first time.</p>
<p>We applied, and later found out our application to the main track was accepted, landing us in the Community and Ethics track on Saturday.</p>
<p>This blog post is a partial recap of what we covered in that FOSDEM 2020 session linked above. The FOSDEM 2020 talk covered three main ideas. This blog post summarizes only the definitions of our AI Freedoms.</p>

<h2 id="looking-to-yesterday-for-today">Looking to yesterday for today&nbsp;<a class="hanchor" href="#looking-to-yesterday-for-today" aria-label="Anchor link for: Looking to yesterday for today">🔗</a></h2>
<p>Before we define AI freedoms, we need to define the origin of Free Software. While the precise origin is debatable, Mike and I posit that the <a href="https://jwfblog.wpenginepowered.com/2020/04/how-did-free-software-build-a-social-movement/">Free Software movement began with a definition of rights</a>. These freedoms were first established by the GNU Project on 27 Sept. 1983.</p>
<p>So, in the spirit of the movement that precedes us today, Mike and I started asking questions. As we go into a new decade, what would Freedoms of AI look like? We know we aren&rsquo;t presenting <em>The Truth</em> or <em>The Answer</em>. But we are presenting our experiences and reflections.</p>

<h2 id="what-freedoms-do-we-want-to-protect">What freedoms do we want to protect?&nbsp;<a class="hanchor" href="#what-freedoms-do-we-want-to-protect" aria-label="Anchor link for: What freedoms do we want to protect?">🔗</a></h2>
<p>So, Free Software has the Four Freedoms. Combining our shared history in the Free Software movement with our personal experiences working in both commercial and humanitarian contexts, this is our vision of Three possible Freedoms of AI:</p>

<h3 id="1-audit-automated-decision-making-systems">1. Audit automated decision-making systems&nbsp;<a class="hanchor" href="#1-audit-automated-decision-making-systems" aria-label="Anchor link for: 1. Audit automated decision-making systems">🔗</a></h3>
<p>We are entitled to know and understand how decisions that affect us are made. So, you should have to freedom to audit, or understand, how those automated decisions are made.</p>
<p>For a moment, picture yourself in a classroom. Your teacher gives you a bad grade on an essay. You are probably curious to know why you received the grade that you did, especially if it was something important to you. You would likely go to the teacher and ask for help understanding why you received the grade you did, if there were no comments or notes.</p>
<p>So, why wouldn&rsquo;t you want to understand how a decision is made that affects you?</p>
<p>This does tie closely to one of the Four Freedoms of Software: the freedom to &ldquo;study the source&rdquo;. This AI freedom restates that Software freedom as, &ldquo;the freedom to understand how a system that is impacting you works&rdquo;. But this does go beyond the Software freedom to study the source because it is more than just source code.</p>

<h3 id="2-deliver-accountability-and-responsibility">2. Deliver accountability and responsibility&nbsp;<a class="hanchor" href="#2-deliver-accountability-and-responsibility" aria-label="Anchor link for: 2. Deliver accountability and responsibility">🔗</a></h3>
<p>We already know AI systems are capable of harm. We deserve the guarantee of liability when these systems do create harm. Not if, when. So, you should also have the freedom to deliver and expect accountability and responsibility from the designers of automated decision-making systems that impact you.</p>
<p>Think about it for a minute. When machines make decisions for us, who is accountable for those decisions? Is it the machines? Is it the creators who programmed them? Or is it the end-user?</p>
<p>It should be the creators and organizations that create these systems, as they directly profit from their output. Those who create these systems typically do so to profit themselves.</p>
<p><strong>But we as those affected deserve to be put over their profit.</strong></p>

<h4 id="myanmar-and-facebook">Myanmar and Facebook&nbsp;<a class="hanchor" href="#myanmar-and-facebook" aria-label="Anchor link for: Myanmar and Facebook">🔗</a></h4>
<p>What would a real world example of this look like? Have you ever thought about how social media could be connected to genocidal campaigns? This is what the United Nations is <a href="https://www.reuters.com/article/us-myanmar-rohingya-un/myanmar-generals-had-genocidal-intent-against-rohingya-must-face-justice-u-n-idUSKCN1LC0KN">asking of Facebook</a> in the role of the news feed in inciting genocide. But why would the U.N. ask these questions of Facebook?</p>
<p>The problem identified with Facebook is the news feed. The news feed optimizes for &ldquo;engaging content&rdquo;. To understand this, we have to define what &ldquo;engaging content&rdquo; means. Studies have shown that optimizing for &ldquo;engagement&rdquo; increases recommendations for extremist and alarmist content. Researchers knew the potential of &ldquo;engaging content&rdquo; to be misused, years before the Rohingya genocide began in Myanmar.</p>
<p>Then, the warnings in research became real. Religious and military leaders created &ldquo;fake news&rdquo; to divide the citizens of Myanmar. This &ldquo;fake news&rdquo; campaign is suspected to be a major contributing factor of the ethnic cleaning of the Rohingya people in Myanmar.</p>
<p>Obviously Facebook didn&rsquo;t take genocide into account in their feature planning when building the news feed. Yet it was still a contributing factor. And because of the research and warnings delivered to Facebook before the genocide, they did know about the potential for misuse.</p>
<p>So, who is responsible? Facebook? Myanmar religious and military leaders? Nobody? Even today, nobody will take responsibility. But what we do know is that profit was placed over people.</p>
<p>Thus, we must demand for a freedom that delivers accountability and responsibility in a world increasingly defined and shaped by automated decision-making. We are already in a &ldquo;catch-up&rdquo; mode to the changing world in this regard.</p>

<h3 id="3-appeal-a-decision">3. Appeal a decision&nbsp;<a class="hanchor" href="#3-appeal-a-decision" aria-label="Anchor link for: 3. Appeal a decision">🔗</a></h3>
<p>No decision-making system is ever perfect. We are <em>always</em> missing some data. So, lastly, you should also have the freedom to appeal a decision that impacts you.</p>
<p>In your life, have you ever told a story to help someone empathize with your situation? Have you ever had to explain a misconstrued fact about your background or history? You are probably familiar with the phrase, &ldquo;walk in someone else&rsquo;s shoes&rdquo;. Our ability to empathize and understand is what connects us as humans. It helps avert disaster more often than you think.</p>
<p>There are always hidden stories not captured by a set of data points. Thus, we should also have the opportunity to break through automated systems that influence an organization. We deserve the opportunity to appeal to the people behind the systems in order to use our humanity.</p>

<h4 id="resumecv-filtering">Resume/CV filtering&nbsp;<a class="hanchor" href="#resumecv-filtering" aria-label="Anchor link for: Resume/CV filtering">🔗</a></h4>
<p>If you have ever applied for a job, you might be familiar with the importance of keywords and certain requirements on your resume or C.V. Automated tools already exist to review these documents and filter out candidates.</p>
<p>But what is the point of interviews? Where you talk with a real person? Interviews are a chance to tell our own hidden stories and explain the gap between what is on our CV and what is not. It gives us a chance to build empathy between us and who we want to be our employer.</p>

<h4 id="practical-examples">Practical examples&nbsp;<a class="hanchor" href="#practical-examples" aria-label="Anchor link for: Practical examples">🔗</a></h4>
<p>It is not hard to look for examples of appealing systems in our society. Two examples are appellate courts and credit denials in the U.S.</p>
<p>Appellate courts are legal systems where we appeal decisions we think were unfair or incorrect. Sometimes this is because of an unfair trial. It could also be because of a biased judge. Either way, a system is in place to appeal a legal decision.</p>
<p>A similar system exists in the U.S. if you are denied a credit offer or loan. You can appeal to an impartial third-party if you believe a credit offer or loan was denied to you on unfair criteria. again, there is a system in place to appeal a decision that could have significant personal impact to you.</p>
<p>How else could we describe the freedom to appeal? We must not erase the opportunity for human connection and empathy when these decisions are made. Even by automated systems. To do so is to deny our humanity.</p>

<h2 id="where-do-we-go-from-here">Where do we go from here?&nbsp;<a class="hanchor" href="#where-do-we-go-from-here" aria-label="Anchor link for: Where do we go from here?">🔗</a></h2>
<p>The stakes have never been higher. These systems are being built not next year, not next month, not tomorrow, but <strong>now</strong>. These problems are not going to go away. They are only going to continue and grow. But we know we can imagine and have a better world, because we have to. The alternative is simply unacceptable.</p>
<p>The history of the Free Software movement <a href="https://jwfblog.wpenginepowered.com/2020/04/how-did-free-software-build-a-social-movement/">left us clues</a> about how to build a social movement to address problematic patterns in our digital society. So, let&rsquo;s take the cues and demand for our Freedoms to be respected, just like those who came before us nearly 40 years ago.</p>
<p>If there is anything to take away from this post, or the original talk, it is this: me, you, and everyone has some power to make change. So, let&rsquo;s build a future that we own, together, for everyone.</p>
<hr>
<p><em>For more details and ideas on how we as individuals can protect these Freedoms and how to get others to respect these Freedoms, <a href="https://fosdem.org/2020/schedule/event/ethical_ai/">watch the full talk</a>!</em></p>]]></description></item><item><title>Hannah/Honor Loeb: A reflection on death and forgiveness</title><link>https://jwheel.org/blog/2020/04/hannah-honor-loeb-reflection-death-forgiveness/</link><pubDate>Thu, 16 Apr 2020 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2020/04/hannah-honor-loeb-reflection-death-forgiveness/</guid><description><![CDATA[<p>[<em>tw – death, grief, gender discrimination</em>]</p>
<p>Grief is a strange emotion. One text message read early in the morning can send your day into a long walk down the beach of your own memories. Memories flood back, making us conscious that these lost moments of time were never really lost to us, but locked under deep layers of interlocking memories and contexts that only had to be connected back together, like a broken circuit. Today, my memories and heart are on my former summer camp roommate and friend Hannah/Honor Loeb. (I knew her as Hannah in her life, but at time of death, she identified as Honor, so that is the name I will use for this post.)</p>
<p>When I think of you, Honor, a mixed spectrum of emotions comes over me.</p>
<p>First, I feel selfish for making a post that is probably as much for me as it is for you. A great irony in death are the many interpretations of an explanation it brings. It is impossible to know exactly how the deceased would wish for their death to be remembered, because they are not present. Yet those who were connected to the deceased also experience their own spectrum of emotions. Perhaps it is human for us to make the death of someone else about ourselves, where we become included in the attention that death brings. But perhaps it is also the natural experience of how we process grief and trauma, in that making someone else&rsquo;s death about us, it affords us the privilege and opportunity to reflect on the meaning of their life, and how we will continue to live our life in light of their absence.</p>
<p>Second, I feel happiness and joy. I remember my first experience living together with you as roommates at the Duke University <a href="https://en.wikipedia.org/wiki/Talent_Identification_Program">Talent Identification Program</a> at the University of Georgia. I remember the trips from Georgia to Alabama to visit and stay with your family. I remember the time you showed me <em><a href="https://en.wikipedia.org/wiki/Battlestar_Galactica">Battlestar Galactica</a></em> for the first time, and staying up with me to watch episode after episode. Even though you had probably seen these episodes countless times before. I remember the warm sunny mornings in Montgomery when we would go out for breakfast and we would talk about life. I remember when at the end of every meal out, I never had a choice of whether I would pay for myself or not.</p>
<p>Third, I feel guilt and shame. I remember being afraid to invite you to my home in Georgia, because my home was not a safe place then. I remember when you drove from Ithaca to visit me in Rochester, and you let me interview you as a member of the trans community for a class assignment. Then, months later, I remember not replying to your texts, missing your calls, and always putting off invitations to meet. I remember seeing our lives slowly drift apart, and how I felt powerless to do anything about it. Even if the powerlessness was imagined. I remember not knowing how to help you with your emotional burdens when I was still figuring out how to carry my own experiences and traumas. I remember the random times in my life where you did come across my mind, unprompted. In those moments, I thought of all I learned from you and how you lived in life. In those moments, I remember hoping you were well, but I also remember my fear and hesitation about reaching out to you after so long. I remember consciously deciding not to try the phone number or the email I had saved for you from 2013. Maybe your contact info changed eventually. But maybe it didn&rsquo;t. I&rsquo;ll never know.</p>
<p>Today, I learned that you passed away. You are dead. I will never get to see your smile, I will never get to hear your voice, and I will never get to have a warm hug with you again. These are all hard truths that I must acknowledge. Like I said, grief is a strange emotion. We all handle and process grief in unique, personalized ways that reflect our life experiences. For me, I have to define and understand the losses of this experience in order to practice gratitude and appreciation for the positive moments and experiences we shared.</p>
<p>The end of a life is never black-and-white. As you always exemplified in being a powerful trans voice from the socially-conservative state of Alabama, a binary understanding of complex social issues is rarely sufficient. Experiencing my grief from the end of your life is a wide spectrum of emotions because your life spanned several different emotions. Instead of categorizing my different emotions into their categorical boxes, I am allowing them to all wash over me. The happiness, the joy, the sadness, the anger, the selfishness, the guilt, and the shame. I know I cannot deny any of these emotions because they are all a part of you.</p>
<p>I have to accept these emotions as feedback to what your life means to me in this moment. I appreciate the great ways you expanded my mind and taught me to see the world differently. I lament the ways I let our connection fade and sputter, and that the last significant moment I have to connect with you is in your death. From what you taught me as a teenager, I began to see beyond the binary belief instilled in me from my youth. From what you taught me as a young adult, I know that how we carry our relationships, friendships, and love throughout life is always in some part our own responsibility.</p>
<p>When reading the news of your death, I have to be honest with myself. A part of me was not surprised or entirely shocked by this news. In a world where queer and trans folk are often treated as second-class humans, the pandemic of mental illness and suicide are undeniable in LGBTQ+ communities. I don&rsquo;t understand how I feel even now to learn that your death was from a &ldquo;non-COVID infection&rdquo;. You fell sick. To what degree this infection inflicted pain upon you, I don&rsquo;t know. All I know is, the path in life I followed brings me to this point where the first thing I hear about you in a number of years is your death.</p>
<p>Part of me knows I cannot assign myself blame for these circumstances. I know I alone cannot wear all blame because we live in an interdependent world, where every effect and outcome is linked by several smaller causes. But if only for myself, I have to acknowledge what my role is in your life and how I will choose to continue my life in the knowledge that yours ended too soon. I acknowledge that I probably played differing roles in your life, sometimes a loving friend, and sometimes an apathetic jerk. But again, life is often not so binary, not in life nor in death. I only hope that if you had the opportunity to read this, you would be able to forgive me for the ways I wronged you in your living life, and for you to know how much I really did love you.</p>]]></description></item><item><title>How did Free Software build a social movement?</title><link>https://jwheel.org/blog/2020/04/how-did-free-software-build-a-social-movement/</link><pubDate>Tue, 14 Apr 2020 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2020/04/how-did-free-software-build-a-social-movement/</guid><description><![CDATA[<p>The Free Software movement is rooted to origins in the 1980s. As part of a talk I gave with my colleague and friend Mike Nolan <a href="https://jwfblog.wpenginepowered.com/2020/04/fosdem-2020-pt-2-can-free-software-include-ethical-ai-systems/">at FOSDEM 2020</a>, we analyzed how the Free Software movement emerged as a response to a changing digital world in three different phases. This blog post is an exploration and framing of that history to understand how the social movement we call &ldquo;Free Software&rdquo; was constructed.</p>

<h2 id="why-does-this-matter">Why does this matter?&nbsp;<a class="hanchor" href="#why-does-this-matter" aria-label="Anchor link for: Why does this matter?">🔗</a></h2>
<p>This exploration and thought experiment is important to understand when revisiting social movements in technology in the current day. In the FOSDEM 2020 talk Mike and I gave, we presented three possible digital &ldquo;freedoms&rdquo; for artificial intelligence. The rights-based approach we presented at FOSDEM 2020 was inspired by the origin of the Free Software movement.</p>
<p>But to understand how we got to today with thousands of contributors to the Linux project, billions of dollars in open source company buyouts, and the words &ldquo;open source&rdquo; used on mainstream cable news channels, we have to start from the beginning, in 1983.</p>

<h2 id="27-sept-1983-gnu-project-announced">27 Sept. 1983: GNU Project announced&nbsp;<a class="hanchor" href="#27-sept-1983-gnu-project-announced" aria-label="Anchor link for: 27 Sept. 1983: GNU Project announced">🔗</a></h2>
<p>On 27 September 1983, the <a href="https://www.gnu.org/gnu/initial-announcement.en.html">GNU Project was announced</a> by Richard Stallman. The GNU Project was a collection of Free Software tools for building a free operating system. But it was also more than that. The GNU Project came with a vision to give computer users freedom and control of their use of computers. To do this, the GNU Project advocated for four fundamental freedoms:</p>
<ul>
<li>Run software in any way desired</li>
<li>Copy and distribute the software</li>
<li>Study it (i.e. reading the source code)</li>
<li>Modify it and make changes</li>
</ul>
<p>Today, we call these the <strong><a href="https://www.gnu.org/philosophy/free-sw.en.html">Four Freedoms</a></strong>.</p>
<p>So, the GNU Project was founded with these fundamental freedoms as the motivation for why they did what they did. It was more than shipping code for code&rsquo;s sake, but to lead by example in how software could be developed without sacrificing the rights of users.</p>

<h2 id="4-oct-1985-free-software-foundation-founded">4 Oct. 1985: Free Software Foundation founded&nbsp;<a class="hanchor" href="#4-oct-1985-free-software-foundation-founded" aria-label="Anchor link for: 4 Oct. 1985: Free Software Foundation founded">🔗</a></h2>
<p>Next, skip ahead to 4 October 1985. Two years after the launch of GNU, the <a href="https://en.wikipedia.org/wiki/Free_Software_Foundation#History">Free Software Foundation (F.S.F.) is founded</a> to support and sustain GNU and the Free Software movement. The values of the GNU Project were important and valuable, but it wasn&rsquo;t enough to leave them out in the world on their own.</p>
<p>At first, the F.S.F. focused on employing software developers to work on Free Software and the GNU Project. Later, the F.S.F. transitioned to legal and structural issues to support the Free Software community.</p>
<p>So, it is one thing to have your values and ethics out there, but they need to be protected and respected by the rest of the world too. The F.S.F. represented the sustainability of protecting these rights and beliefs, originally put forth by GNU.</p>
<p>While the F.S.F. does help sustain those rights, how does a nonprofit foundation actually enforce these rights in practice?</p>

<h2 id="25-feb-1989-gnu-general-public-license-created">25 Feb. 1989: GNU General Public License created&nbsp;<a class="hanchor" href="#25-feb-1989-gnu-general-public-license-created" aria-label="Anchor link for: 25 Feb. 1989: GNU General Public License created">🔗</a></h2>
<p>Finally, we skip ahead four more years to 25 February 1989: the <a href="https://www.gnu.org/licenses/old-licenses/gpl-1.0.en.html">first version of the GNU Public License</a> (G.P.L.) is created. This is the license that gave &ldquo;copyleft&rdquo; a name. It was written and released for the GNU Project, but the license itself was stewarded by the F.S.F.</p>
<p>The G.P.L. put power in the hands of individual people and activists to shape how others used their software. Thus, copyleft is put into a practical legal policy. In a sense, the G.P.L. allowed software developers to place the Four Freedoms at the core of their code.</p>
<p>Although enforcement of copyleft licenses has a blemished history, it was still the &ldquo;teeth&rdquo; in translating these values and values to the rest of the world. It took inspiration from how copyright was not something often considered when distributing software <em>until</em> the early 1980s.</p>
<p>And thus, copyleft becomes a radical invention in software with the proliferation of the G.P.L., especially in its adoption in prominent projects like the Linux kernel.</p>

<h2 id="is-the-past-relevant-to-social-movements-today">Is the past relevant to social movements today?&nbsp;<a class="hanchor" href="#is-the-past-relevant-to-social-movements-today" aria-label="Anchor link for: Is the past relevant to social movements today?">🔗</a></h2>
<p>So this was a lot of history. Is the past relevant to where we are today? First, consider how the early Free Software movement responded to these emerging societal issues in the 1980s.</p>
<p>Free Software was a response to the changing ecosystem of software distribution. Software became more valued because of a standardization on hardware that didn&rsquo;t exist previously. There were simply fewer architectures to compile for!</p>
<p>Suddenly, the value of software increased. It became a commodity.</p>
<p>Before this commodification of software, the Four Freedoms were, in a sense, the default way of distributing and sharing software. After commodification, this was no longer true. The Four Freedoms were rooted in a belief that there are essential rights that belong to all users of computers and computer systems. Stallman observed this change directly at the MIT Media Lab in the 1970s and early 1980s. This motivated him and many others to stand up for Software Freedom by asserting these freedoms.</p>
<p>To respond to commodification of software, Free Software took a freedom-based approach to established their values, as the Four Freedoms. So, looking back 40 years ago, is it possible to extend and make the past relevant again in today&rsquo;s changing world?</p>
<p>Before we can answer that, we have to first ask. How has the world changed?</p>

<h2 id="your-future-is-the-new-commodity">Your future is the new commodity.&nbsp;<a class="hanchor" href="#your-future-is-the-new-commodity" aria-label="Anchor link for: Your future is the new commodity.">🔗</a></h2>
<p>The history of Free Software overlaps with what is happening now.</p>
<p>Today the world is about predictions: predictions about human futures. This is accomplished by the combination of software and data. Human futures are a simple formula: Data + Software. Or, artificial intelligence and machine learning.</p>
<p>But how are human futures becoming a commodity? In the 1980s, software became the thing we &ldquo;sold&rdquo;. It had inherent value. Today, the ability to predict what you are doing to do next is valuable. This makes both your and my future the new commodity. Where will we go next? What will we buy next? Who have we contacted recently?</p>
<p>But data is only one piece of this big puzzle. It is the enabling force for determining our futures. Third-party organizations collect the world&rsquo;s data on a massive, centralized scale. Your data is what allows companies to sell your future.</p>
<p>To add a metaphor, data is like oil, not gold. You consume the input (data) to sell the output (human futures).</p>

<h2 id="where-are-we-today">Where are we today?&nbsp;<a class="hanchor" href="#where-are-we-today" aria-label="Anchor link for: Where are we today?">🔗</a></h2>
<p>So, how have we responded to our changing world?</p>
<p>There have been some successful resistance to the new value of user data and human futures. The privacy movement and legislation like G.D.P.R. are representative of this.</p>
<p>However, data privacy is only one part of the big picture. Focusing on <strong>individual empowerment does not protect us from societal effects</strong>. Consider <a href="https://en.wikipedia.org/wiki/Predictive_policing#Criticisms">predictive policing</a> and <a href="https://www.wired.com/2017/04/courts-using-ai-sentence-criminals-must-stop-now/">court rulings</a> as two examples.</p>
<p>Ultimately, the data privacy movement has been a key factor in combating the effects of surveillance capitalism, but there are still gaps. Mike and I noticed we need to approach topics like artificial intelligence not in pieces, but as a whole.</p>
<p>And some organizations have recognized this challenge and are working to address it. &ldquo;Working groups&rdquo; and reports with non-mandatory recommendations are on the rise. However, these groups are not effective on moving forward ways of ensuring people are effectively protected from the unforeseen harms of AI systems. &ldquo;Light self-regulation&rdquo; works on an opt-in model, and it is against the interest of some actors to opt in.</p>
<p>So, if we are in the middle of this societal shift from software as a commodity to human futures as a commodity, where do we go from here? Do we choose chaos or community?</p>
<hr>
<p><em>At time of publication, I am still wrestling with these questions. As are a lot of people! To get a wider picture of what is on my mind in 2020, <a href="https://jwfblog.wpenginepowered.com/tag/2020-foss-conferences/">read my event reports</a> from my pre-coronavirus 2020 travels.</em></p>
<p><em>Photo by <a href="https://unsplash.com/@shanerounce?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Shane Rounce</a> on <a href="https://unsplash.com/s/photos/together">Unsplash</a>.</em></p>]]></description></item><item><title>CopyleftConf 2020: quick rewind</title><link>https://jwheel.org/blog/2020/04/copyleftconf-2020-quick-rewind/</link><pubDate>Thu, 09 Apr 2020 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2020/04/copyleftconf-2020-quick-rewind/</guid><description><![CDATA[<p><strong>CopyleftConf 2020</strong> took place on Monday, 3 February, 2020 in Brussels, Belgium:</p>
<blockquote>
<p>This will be the second annual International Copyleft Conference. Participants from throughout the copyleft world — developers, strategists, enforcement organizations, scholars and critics — will be welcomed for an in-depth, high bandwidth, and expert-level discussion about the day-to-day details of using copyleft licensing, obstacles facing copyleft and the future of copyleft as a strategy to advance and defend software freedom for users and developers around the world.</p>
<p>This event will provide a friendly and safe place for discussion of all aspects of copyleft, including as a key strategy for defending software freedom!</p>
<p><a href="https://2020.copyleftconf.org/">Official conference website</a></p>
</blockquote>
<p>This was my first time attending CopyleftConf. I attended on behalf of <a href="https://fossrit.github.io/librecorps/">RIT LibreCorps</a> to represent the sustainability efforts at the <a href="https://fossrit.github.io/about/">RIT FOSS@MAGIC initiative</a>. However, I also represented myself as an individual in the Free Software movement. For CopyleftConf 2020, I arrived hoping to learn more about where we, as the Free Software community, are going. I also hoped to gain a deeper ethical perspective about our digital society.</p>
<p>
<figure>
  <img src="/blog/2020/04/IMG_20200203_094048593_HDR.jpg" alt="Me excitingly looking up to the main stage, holding my CopyleftConf 2020 schedule, after having bought my ticket earlier that same morning." loading="lazy">
  <figcaption>Me excitingly holding my CopyleftConf 2020 schedule after having bought my ticket earlier that same morning.</figcaption>
</figure>
</p>
<p>Event reports take many forms. Since CopyleftConf 2020 is structured in a unique format, my event report is structured as follows:</p>
<ul>
<li><strong>At a glance: structure and key takeaways</strong>: High-level overview of what CopyleftConf 2020 was like. What the biggest ideas on my mind were at the end of the day.</li>
<li><strong>Copyleft adopt curves: what drove copyright adoption then (or now?)</strong>: Musings on the history of copyleft and movement building.</li>
<li><strong>Free Software, but for kids</strong>: Children and teenagers are already building open source communities. How do we include the next generation?</li>
<li><strong>Where are we going?</strong>: Software ethics and copyleft licensing.</li>
</ul>

<h2 id="at-a-glance-structure-and-key-takeaways">At a glance: structure and key takeaways&nbsp;<a class="hanchor" href="#at-a-glance-structure-and-key-takeaways" aria-label="Anchor link for: At a glance: structure and key takeaways">🔗</a></h2>
<p>If you’re here for the quick overview, this is it.</p>
<p>CopyleftConf 2020 is one of the best conferences I have attended. I bought my ticket the morning of the conference. Karen Sandler and Bradley Kuhn fired me up the day before in their <a href="https://jwfblog.wpenginepowered.com/2020/03/fosdem-2020-pt-1-play-by-play/">FOSDEM 2020 talk</a>. My initial reluctance to go was because I assumed it was a conference for FOSS lawyers. While it definitely includes that group, it isn&rsquo;t exclusive to that group. CopyleftConf 2020 collected people from a diverse range of experiences and backgrounds in the open source world.</p>
<p>However, I also realized the &ldquo;movers and shakers&rdquo; in the Free Software world have been around a while. Many people there are embedded in this ecosystem for the last 10, 20, or even 30 years. I <em>think</em> I was the youngest person there. I realized Free Software has not done an excellent job of including my generation. This left me with interesting reflections on the future of copyleft and its ability to transfer lessons and values on to the next generation.</p>

<h3 id="structure-dialogue-and-discussion">Structure: Dialogue and discussion&nbsp;<a class="hanchor" href="#structure-dialogue-and-discussion" aria-label="Anchor link for: Structure: Dialogue and discussion">🔗</a></h3>
<p>The best way to describe the format of CopyleftConf 2020 is &ldquo;dialogue and discussion&rdquo;. The first half of the conference started with traditional sessions, with speakers and slide decks. The end of the conference moved towards open panels with stronger audience participation. Most panels centered around topics or ideas addressed in the morning sessions.</p>
<p>I attended these sessions:</p>
<ul>
<li><a href="https://2020.copyleftconf.org/schedule/presentation/20/">Keynote</a> (<em><a href="https://twitter.com/keynote2k">Tony Sebro</a></em>)</li>
<li><a href="https://2020.copyleftconf.org/schedule/presentation/9/">Copyleft adoption curves: what drove adoption then (or now?)</a> (<a href="https://twitter.com/luis_in_brief"><em>Luis Villa</em></a>)</li>
<li><a href="https://2020.copyleftconf.org/schedule/presentation/13/">Copyleft Expansion: What should &ndash; and shouldn&rsquo;t &ndash; be on the table?</a> (<em>Deb Nicholson, Bradley M. Kuhn, Allison Randal, Heather J. Meeker, John Sullivan</em>)</li>
<li><a href="https://2020.copyleftconf.org/schedule/presentation/17/">The Rising Ethical Storm in Open Source</a> (<a href="https://twitter.com/CoralineAda"><em>Coraline Ada Ehmke</em></a>)</li>
<li><a href="https://2020.copyleftconf.org/schedule/presentation/19/">Software Ethics and Copyleft Licensing</a> (<em><a href="https://twitter.com/o0karen0o">Karen Sandler</a></em>)</li>
</ul>
<p>I came up with three key takeaways from CopyleftConf 2020 as a whole (not including the detailed sections further below):</p>

<h3 id="1-open-source-is-in-an-identity-crisis">1. Open source is in an identity crisis.&nbsp;<a class="hanchor" href="#1-open-source-is-in-an-identity-crisis" aria-label="Anchor link for: 1. Open source is in an identity crisis.">🔗</a></h3>
<p>Many people are confused. The confusion is simultaneously indecisive and divisive. I believe the identity crisis stems from that early decision in 1997 about what we call this particularly different way of developing and collaborating on software and technology. Free Software or open source? One is politically charged and historically exclusive, while the other is more neutral and business-friendly, and more inclusive to people who believe in compromise. Today, we are seeing a similar divide emerge between Free/Open Source and Ethical Source.</p>
<p>There are several emotions. It is deeply personal. For some, the promises of free/open source failed our collective humanity. For others, open source is a vastly successful turn of events to make the closed world more open. Yet for others still, it is both. CopyleftConf 2020 took a highlighter to this tension between what we consider right and wrong. It also questioned what the role of Free Software is in all of this.</p>
<p>I don&rsquo;t think anyone has the answer yet. Surely some people left CopyleftConf 2020 with a more clear view if they think licensing is a viable approach or not. But CopyleftConf 2020 did not have this answer. It just made it clear that most of us are still wrestling with this.</p>

<h3 id="2-millennials-are-underrepresented">2. Millennials are underrepresented.&nbsp;<a class="hanchor" href="#2-millennials-are-underrepresented" aria-label="Anchor link for: 2. Millennials are underrepresented.">🔗</a></h3>
<p>Most of the time I was at CopyleftConf 2020, I had massive imposter syndrome. This is no fault of the conference or the great steps the organizers took to make it inclusive, but wow. There were so many people there who I have seen all across Twitter. People who are moving and shaking in different realms of the open source world.</p>
<p>Yet as I looked around the room, I started to wonder what the average age demographic of the room was. Being in my early 20s, I felt like I was in a room of Free Software giants. Many people there have been pushing the conversation forward and definitively fighting for Software Freedom for a decade or more.</p>
<p>And then there was me. I don&rsquo;t know what my role or higher calling is yet in this great big movement we call Free Software. While I was glad to be in the room, I felt sorely underrepresented in age.</p>

<h4 id="born-digital">Born digital&nbsp;<a class="hanchor" href="#born-digital" aria-label="Anchor link for: Born digital">🔗</a></h4>
<p>I couldn&rsquo;t help but find it unusual though. My generation and those after me are the first generations who were born into the digital society, built by those who came before us. When I was four years old, I was privileged to have my own computer. By six, I was connected to the Internet (even if it was dial-up). By fourteen, I was in a Linux command line running my own Minecraft server with thousands of players.</p>
<p>While my perspective is rooted in some privilege, there is something interesting in my experience. I was born into a world where I didn&rsquo;t make the choices of what hardware or software I used. In the beginning, everything was handed to me or provided for me.</p>
<p>For kids and teenagers today, this couldn&rsquo;t be more of a reality. Before COVID-19, when you went out to a restaurant or public place, how often would you see a small kid clutching a tablet, provided by an exhausted parent? Adolescents today grew up in the always-online worlds of Google and Snapchat.</p>
<p>Today&rsquo;s teenagers and young adults I know are often keenly aware that they are the prey in a complex digital world they are already so deeply embedded in. So, why resist at all? To them, there is little point in resisting because all the technology decisions made for them early in life locked them deeper into this &ldquo;predator-prey&rdquo; ecosystem.</p>

<h4 id="is-free-software-ready-for-the-millennials">Is Free Software ready for the millennials?&nbsp;<a class="hanchor" href="#is-free-software-ready-for-the-millennials" aria-label="Anchor link for: Is Free Software ready for the millennials?">🔗</a></h4>
<p>So, I felt like an imposter at this conference of people who are wise to the role of Software Freedom in our new digital society, but never grew up in the kind of world I did. A lot of the people in the room at CopyleftConf 2020 developed their worldview, ethical perspectives, and software preferences as the world changed around them. Me and other people of my generation were born into this world.</p>
<p>It makes the conversation around Software Freedom very different, and also challenging, because the next ten and twenty years of Software Freedom will have to include today&rsquo;s youth to be truly sustainable.</p>

<h3 id="3-the-world-is-changing-will-free-software">3. The world is changing. Will Free Software?&nbsp;<a class="hanchor" href="#3-the-world-is-changing-will-free-software" aria-label="Anchor link for: 3. The world is changing. Will Free Software?">🔗</a></h3>
<p>Related to the identity crisis and under-representation of youth, the theme of change begins to emerge. Stallman and other Free Software leaders in the 1980s and 1990s were ahead of their time to realize the importance of Software Freedom in respecting and protecting user freedom. Some of those same people were also in the room at CopyleftConf 2020.</p>
<p>But today&rsquo;s world is changing. Software became the commodity in the 1970s and 1980s. Free Software was the resistance. Today, data is the new digital commodity. Software is just one piece of a bigger puzzle. Software Freedom may protect one aspect of our digital lives, but it would be nonsensical to assume the digital world would stay the same. Why should Free Software?</p>

<h4 id="the-2020s-will-be-definitive">The 2020s will be definitive&nbsp;<a class="hanchor" href="#the-2020s-will-be-definitive" aria-label="Anchor link for: The 2020s will be definitive">🔗</a></h4>
<p>So, CopyleftConf 2020 made me realize that the next ten years will be definitive. The 2020s will determine whether open source becomes yet another cog in strengthening our capitalist society and enthroning corporations as a great benefactor to technology, or if Software Freedom undergoes some sort of transformation to meet the new demands of freedom in our digital world.</p>
<p>No matter your political leanings, read any news site that isn&rsquo;t a tech journal and tell me honestly that there are not some scary trends in our technology world. COVID-19 is just the latest example, with our data privacy and digital rights being on the sacrificial alter for our &ldquo;safety&rdquo; and &ldquo;protection&rdquo;. This line is all too common. I have heard it as a justification of many things across my life since September 2001.</p>
<p>So, what will Free Software do?</p>

<h2 id="copyleft-adoption-curves-what-drove-copyright-adoption-then-or-now">Copyleft adoption curves: what drove copyright adoption then (or now?)&nbsp;<a class="hanchor" href="#copyleft-adoption-curves-what-drove-copyright-adoption-then-or-now" aria-label="Anchor link for: Copyleft adoption curves: what drove copyright adoption then (or now?)">🔗</a></h2>
<blockquote>
<p>Copyleft adoption has changed significantly over time, for better and for worse. This talk will survey the many factors that drive adoption, with particular focus on GPL v2 and Affero GPL v3. While some factors are obvious and reasonably well-understood (particularly the shift towards SaaS economics) many other nuanced factors play in as well.</p>
<p><a href="https://twitter.com/luis_in_brief">Luis Villa</a></p>
</blockquote>
<p>What I highlighted in my notes from Luis&rsquo;s talk was his history lesson on adoption. While the history of Free Software wasn&rsquo;t new to me, nor most people in the room, Luis took it in a different way. His history lesson was a reflection on &ldquo;why?&rdquo; and not just &ldquo;what?&rdquo;</p>
<p>Whether you think Free Software &ldquo;won&rdquo; or not, open source is here to stay. So, how did we get to where we are today? How did a famous software company go from calling open source an &ldquo;intellectual property cancer&rdquo; in 2001 to investing billions of dollars into open source and open source companies by 2020?</p>

<h3 id="add-more-chairs-to-the-table">Add more chairs to the table&nbsp;<a class="hanchor" href="#add-more-chairs-to-the-table" aria-label="Anchor link for: Add more chairs to the table">🔗</a></h3>
<p>I loved this quote that Luis dropped: &ldquo;<strong>Movement building is the only way to influence political change.</strong>&rdquo; Luis gave examples from the 1990s of how evangelism and education were part of the building blocks of open source. There were &ldquo;leading apps&rdquo; that brought new people to the Free Software (or open source) table. Mozilla was the first browser that brought common lawyers in. A focus on education for lawyers, such as the F.S.F.&rsquo;s 22,000 word F.A.Q., converted a motivation to learn into practical knowledge used for compliance work.</p>
<p>
<figure>
  <img src="/blog/2020/04/IMG_20200203_105508557_HDR.jpg" alt="Luis Villa on copyleft adoption curves. Slide reads: &ldquo;tl;dr (positive version): if you build a movement, maybe you won&rsquo;t need a license!&rdquo;" loading="lazy">
  <figcaption>Luis Villa on copyleft adoption curves.</figcaption>
</figure>
</p>
<p>However, I think Luis&rsquo;s goal was to define, not to prescribe. He implied that building a movement doesn&rsquo;t start with writing a license, based on his personal experiences (he did lead drafting of the Mozilla Public License). My takeaway from Luis is that we need to think about how we build a movement that includes people who aren&rsquo;t at the table today to build a strong foundation for what comes next.</p>

<h2 id="free-software-but-for-kids">Free Software, but for kids&nbsp;<a class="hanchor" href="#free-software-but-for-kids" aria-label="Anchor link for: Free Software, but for kids">🔗</a></h2>
<p>There was a <a href="https://2020.copyleftconf.org/schedule/presentation/13/">panel</a> on copyleft expansion and what should and shouldn&rsquo;t be at the table. At some point, the role of &ldquo;the next generation&rdquo; came up in heralding the values of copyleft licensing forward in light of the popularity of permissive licenses.</p>
<p>This was personal. My first experience in the open source world was as a community member and later a volunteer staff member of the largest open source Minecraft server software project. In my time in that community, I learned a lot. I saw a <a href="https://jwfblog.wpenginepowered.com/2020/04/open-source-minecraft-bukkit-gpl/">major breakdown of the GPL</a> for a community of hundreds of thousands of young adults, teenagers, and children. So, indeed, how is &ldquo;the next generation&rdquo; going to herald these values of copyleft licensing?</p>

<h3 id="talk-with-us-not-at-us">Talk <em>with</em> us, not <em>at</em> us&nbsp;<a class="hanchor" href="#talk-with-us-not-at-us" aria-label="Anchor link for: Talk with us, not at us">🔗</a></h3>
<p>It is interesting to be present in these conversations about &ldquo;the next generation&rdquo; because it usually feels like people are talking at me instead of with me. It took some reflection time to realize this after CopyleftConf 2020, but I feel like some older folks like to imagine that younger folks will come on board and just start steering the ship in the same course it has always traveled. Some younger folks may be fine with that.</p>
<p>But I also think a lot of younger people will ask more of Free Software because of our collective experiences with Free Software licenses. From my hey-days in the Minecraft community, there is bad blood towards the GPL and copyleft licensing because of the scars it left on the community, even if it was really because the GPL should never have been used in that context.</p>
<p>But the demands for more also stem from the collective treatment by those senior to us in traditional &ldquo;FOSS circles.&rdquo; Even at my university, I also see how students become bitter and frustrated in instances where senior faculty and older community members insist on a Free Software-first, no-compromises approach. As if it were so simple for my generation.</p>
<p>I already explained the perspective of younger folks earlier in this blog post. But the way some senior folks treat us in the proper Free Software world is sometimes exclusionary and off-putting, even if that isn&rsquo;t the intention. It discards great opportunity for guidance and mentorship. There is an innumerable amount of times an older person completely dismissed my decision to use a proprietary or mixed-source platform for a community, yet they lament about not having the patience to troubleshoot the Free Software tools they rely on when they fail (mailing lists and email spam filters, I&rsquo;m looking at you).</p>

<h3 id="teach-early-and-teach-often">Teach early and teach often&nbsp;<a class="hanchor" href="#teach-early-and-teach-often" aria-label="Anchor link for: Teach early and teach often">🔗</a></h3>
<p>But that point aside, let&rsquo;s bring it back to the panel. I think it was Allison Randall and John Sullivan who emphasized the importance of early education around the concepts of Software Freedom. The average middle school student interested in STEM will not comprehend the GPL. However, the Four Freedoms (by design) are easy to comprehend. The freedoms to Read, Run, Remix, and Redistribute are not that difficult to understand. Perhaps part of the answer lies in how we think about messaging to younger folks and keeping foundational concepts like the Four Freedoms at the forefront.</p>
<p>I still lament over the way that Free Software built itself in a technology-centered way instead of a people-centered way, but I digress.</p>

<h2 id="where-are-we-going">Where are we going?&nbsp;<a class="hanchor" href="#where-are-we-going" aria-label="Anchor link for: Where are we going?">🔗</a></h2>
<p>The hottest discussions I participated in were from <a href="https://2020.copyleftconf.org/schedule/presentation/17/">The Rising Ethical Storm in Open Source</a> (<a href="https://twitter.com/CoralineAda">Coraline Ada Ehmke</a>) and <a href="https://2020.copyleftconf.org/schedule/presentation/19/">Software Ethics and Copyleft Licensing</a>, emceed by Karen Sandler. Coraline dropped absolute <strong><em>fire</em></strong> in her talk, even knowing that the essence of her talk would alienate some people. But it was a call-out to us folks in tech who consciously or unconsciously live these values that our Free Software movement is built upon: the freedoms of personal liberty, as it lends itself both for justice and harm.</p>
<p>
<figure>
  <img src="/blog/2020/04/IMG_20200203_140443994_HDR.jpg" alt="Coraline Ada Ehmke on the Rising Ethical Storm in Open Source. Slide reads: &ldquo;Software freedom must not come before human freedom.&rdquo;" loading="lazy">
  <figcaption>Coraline Ada Ehmke on the Rising Ethical Storm in Open Source.</figcaption>
</figure>
</p>
<p>I won&rsquo;t spend a lot of time summarizing these talks and sessions, but one interesting thing to look up that Coraline mentioned was the Parable of the Locksmith.</p>
<p>During Karen&rsquo;s session, I penned what ended up being a short speech in my notebook. When I was eventually passed the mic, I tried to fit too much into too little time, and I was not fully respectful of other folks who also had something to contribute to the discussion. So, instead, I will recap the full essence of what I wanted to say in my blog post.</p>

<h3 id="our-software-freedoms-are-not-enough">Our software freedoms are not enough&nbsp;<a class="hanchor" href="#our-software-freedoms-are-not-enough" aria-label="Anchor link for: Our software freedoms are not enough">🔗</a></h3>
<p>The Four Freedoms, the foundation of all copyleft licenses, is not enough.</p>
<p>On the Saturday before CopyleftConf 2020, I presented at FOSDEM 2020 with my colleague and dear friend Mike Nolan on <a href="https://fosdem.org/2020/schedule/event/ethical_ai/">three new freedoms for AI</a> that go beyond software. In our talk, we analyzed the history of how Free Software began as a social movement. It roughly flowed as follows:</p>
<ol>
<li><strong>GNU Project, 1983</strong>: Establishment of values</li>
<li><strong>Free Software Foundation, 1985</strong>: Establishment of organization to champion the values</li>
<li><strong>GNU Public License, 1989</strong>: Establishment of license to enforce and protect the values</li>
</ol>
<p>In today&rsquo;s complex and changing world, we need more than Free Software&rsquo;s Four Freedoms. This libertarian base was susceptible to the co-opting of its values as &ldquo;open source.&rdquo; It was always inevitable, because Free Software was built from the strengths and biases of those who founded the movement (i.e. Richard Stallman).</p>
<p><strong>Free Software was designed with technology at its center, not people. This is to say, it was poorly designed.</strong></p>
<p>Now, we have an ethical dilemma that was always possible because Freedom means freedom to do as you wish, not the freedom of all people.</p>
<p>Some context for discussing legal issues is key, but we need to push the conversation forward beyond semantics. We need to identify whether unethical uses of our software is something we will tolerate. We can&rsquo;t continue to ignore or delegate social responsibilities for what we do.</p>

<h3 id="so-now-what">So, now what?&nbsp;<a class="hanchor" href="#so-now-what" aria-label="Anchor link for: So, now what?">🔗</a></h3>
<p>On one hand, we need to be ready to have these conversations about real effects and the impact of what we do on people. Look at the <a href="https://www.reuters.com/article/us-myanmar-rohingya-un/myanmar-generals-had-genocidal-intent-against-rohingya-must-face-justice-u-n-idUSKCN1LC0KN">Facebook news feed and the Myanmar genocide</a>. Legal semantics is where we are stuck since we defined the Four Freedoms. But these freedoms are no longer enough.</p>
<p>There is not one answer of where we are going. There are only multilateral answers. We have to be intersectional and inclusive for where we go from here. Free Software needs to turn to its allies not only in law and licenses, but also in labor organizing and regulation authorities.</p>
<p>One direction on my mind is continuing to support D&amp;I initiatives like Outreachy. Outreachy interns do awesome things during their internships, and many continue to do awesome things even when their internships end. Bringing more diverse perspectives to the table, especially from underprivileged groups, is key to giving those perspectives equitable power and influence.</p>

<h3 id="we-do-have-the-power">We <em>do</em> have the power.&nbsp;<a class="hanchor" href="#we-do-have-the-power" aria-label="Anchor link for: We do have the power.">🔗</a></h3>
<p>But everyone in that room at CopyleftConf 2020, and you, the reader, have some power. We all have some room to influence change for good. But we cannot avoid the discomfort. We can not keep turning away our eyes.</p>
<p>So, what will you do?</p>
<p>For me, I am wrestling with that question actively as I continue to make my way out into the world.</p>

<h2 id="thanks-folx">Thanks folx!&nbsp;<a class="hanchor" href="#thanks-folx" aria-label="Anchor link for: Thanks folx!">🔗</a></h2>
<p>To wrap up this CopyleftConf 2020 report, a few thank-yous are in order:</p>
<ul>
<li><strong><a href="https://www.rit.edu/computing/directory/sxjics-stephen-jacobs">Stephen Jacobs</a></strong>: For always being supportive for yet another trip abroad and helping me push my career forward in a number of ways (and footing the bill!)</li>
<li><strong><a href="https://nolski.rocks/">Mike Nolan</a></strong>: My co-conspirator, partner in FOSS, and comrade in arms</li>
<li><strong><a href="https://sfconservancy.org/">Software Freedom Conservancy</a></strong>: For creating and holding this important space.</li>
</ul>
<p>CopyleftConf 2020 continues to give me a lot to think about and consider. I’m fortunate to have attended. I hope this event report gives additional visibility to some of the conversations held in Brussels this year.</p>]]></description></item><item><title>The day open source died: a story about Minecraft, Bukkit, and the GPL</title><link>https://jwheel.org/blog/2020/04/open-source-minecraft-bukkit-gpl/</link><pubDate>Tue, 07 Apr 2020 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2020/04/open-source-minecraft-bukkit-gpl/</guid><description><![CDATA[<p>Once upon a time, when I was a teenager, I volunteered in the Minecraft open source community. I volunteered as a staff member of the largest open source Minecraft server today, called <a href="https://www.spigotmc.org/wiki/about-spigot/">Spigot</a>. Spigot is a fork of the Bukkit project.</p>
<p>This blog post is a story roughly covering 2010 to 2014 on the meaning, values, and promise of open source. This story impacted a community of hundreds of thousands of people, mostly adolescent children, teenagers, and young adults. It is a tale about the simultaneous success and failure of the GNU Public License (GPL).</p>

<h2 id="from-the-beginning-bukkit-minecraft-and-the-gpl">From the beginning: Bukkit, Minecraft, and the GPL&nbsp;<a class="hanchor" href="#from-the-beginning-bukkit-minecraft-and-the-gpl" aria-label="Anchor link for: From the beginning: Bukkit, Minecraft, and the GPL">🔗</a></h2>
<p>In the beginning, in December 2010, there was <strong>Bukkit</strong>.</p>
<p>
<figure>
  <img src="/blog/2020/03/bukkit-logo.png" alt="Bukkit Project logo" loading="lazy">
</figure>
</p>
<blockquote>
<p>Bukkit is an up-and-coming Minecraft Server mod that will completely change how running and modifying a Minecraft server is done - making managing and creating servers easier and providing more flexibility. Learning from the mistakes made by other mods, Bukkit aims to be different and fill the void left by them: built from the ground up we&rsquo;ve focused on performance, ease-of-use, extreme customisability and better communication between the Team and, you, our users. The overall design of Bukkit has been inspired by other mods and our experience as Minecraft players just like yourselves, giving us a unique perspective and advantage going into the creation of the Bukkit Project.</p>
<p><a href="https://web.archive.org/web/20141211115250/https://bukkit.org/pages/about-us/">About Us</a>, Bukkit.org</p>
</blockquote>
<p>Bukkit was an open source server for Minecraft. It provided an API for developers to create plugins that extended Minecraft in unique and fun ways. While Bukkit was not the first open source Minecraft server, it was the first organized project. Bukkit launched with the GNU Public License (GPL) v3 license.</p>
<p>From 2011 to 2014, Bukkit was the de-facto standard for running a Minecraft multiplayer game server. Over time, more Bukkit servers (and derivatives) were used than the official server software distributed by Mojang. Mojang is the company responsible for Minecraft development.</p>

<h3 id="hard-work-on-bukkit-recognized">Hard work on Bukkit recognized&nbsp;<a class="hanchor" href="#hard-work-on-bukkit-recognized" aria-label="Anchor link for: Hard work on Bukkit recognized">🔗</a></h3>
<p>The project&rsquo;s success was also recognized by Mojang too. At the first-ever Minecraft convention in 2011, MINECON, four Bukkit lead developers were hired by Mojang to work on Minecraft. All but one of the hired employees then departed from Bukkit. That one developer who remained active in Bukkit would depart from Mojang mysteriously in 2013.</p>
<blockquote class="twitter-tweet" data-dnt="true"><p lang="en" dir="ltr">Had a great time working for Mojang but it&#39;s time for me to pursue other interests. As of yesterday, I am no longer working for Mojang.</p>&mdash; EvilSeph (@EvilSeph) <a href="https://twitter.com/EvilSeph/status/385537792794959872?ref_src=twsrc%5Etfw">October 2, 2013</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>


<p>However, there was always one caveat. Bukkit was an open source project licensed under the GPLv3. However, it also reverse-engineered some parts of the Minecraft game code to build its server code and API. This was never a problem for Bukkit or Mojang:</p>
<blockquote>
<p>&ldquo;When we started up Bukkit in December of 2010, we decided we wanted to do things right. Right from the beginning we wanted to be sure we were bringing about a positive change to Minecraft, one that Mojang themselves would approve of. To that end, we set up a meeting with Mojang to get a feel for their opinions on our project and make sure we weren&rsquo;t doing anything they didn&rsquo;t like. The gist of the meeting was that Mojang &ldquo;liked what we were doing&rdquo; but not how we had to go about doing things. Unfortunately, we both knew that we had no alternatives, so we continued along - albeit now with the reassurance that our project would most likely not be shut down any time in the future.&rdquo;</p>
<p>EvilSeph (Warren Loo), &ldquo;<a href="https://web.archive.org/web/20150112163638/https://bukkit.org/threads/bukkit-the-next-chapter.62489/">Bukkit: The Next Chapter</a>&rdquo;</p>
</blockquote>
<p>Nobody ever raised a copyright issue over the reverse-engineered code from Minecraft in Bukkit. Yet, for years, the GPL code released by Bukkit included bits from official Minecraft code.</p>

<h2 id="act-1-the-minecraft-eula">Act 1: The Minecraft EULA&nbsp;<a class="hanchor" href="#act-1-the-minecraft-eula" aria-label="Anchor link for: Act 1: The Minecraft EULA">🔗</a></h2>
<p><em>An alternative perspective on the Minecraft EULA is in this Guardian article. &ldquo;<a href="https://www.theguardian.com/technology/2014/jun/24/minecraft-how-a-change-to-the-rules-is-tearing-the-community-apart">Minecraft: how a change to the rules is tearing the community apart.</a>&rdquo;</em></p>
<hr>
<p>All was fine for a number of years. Bukkit was a volunteer-led project even after some of its core developers were hired to work at Mojang. However, in 2014, unrelated tension started to grow in the Minecraft community.</p>
<p>The tension was about the language used in Minecraft&rsquo;s End User License Agreement (EULA). The EULA used ambiguous language over the monetization of Minecraft multiplayer servers:</p>
<blockquote>
<p>&ldquo;The one major rule is that you must not distribute anything we‘ve made. By “distribute anything we‘ve made” what we mean is “give copies of the game away, make commercial use of, try to make money from, or let other people get access to our game and its parts in a way that is unfair or unreasonable&rdquo;.&quot;</p>
<p>2014: <a href="https://web.archive.org/web/20140706191831/https://account.mojang.com/documents/minecraft_eula">account.mojang.com/documents/minecraft_eula</a></p>
</blockquote>
<p>While many open source projects flourished around Minecraft, a huge game server industry also co-existed in this ecosystem. Multiplayer server owners running Bukkit (or derivative projects, like Spigot) created web stores for their servers. Players paid real money to buy in-game perks for a specific multiplayer server. Using open source plugins, players paid for things like item packages with diamond swords or virtual currency to spend in-game.</p>
<p>This behavior was allowed to flourish for years. However, the EULA was discreetly edited in December 2013. In mid-2014, someone in the community noticed the changed language. They tweeted and tagged a Mojang employee asking if this meant multiplayer servers had to stop selling in-game items for real money. In as much detail that a 2014 tweet with a 140-character limit allowed, the Mojang employee confirmed the EULA language did technically forbid that.</p>

<h3 id="panic-in-the-bukkit-server">Panic! In The Bukkit Server&nbsp;<a class="hanchor" href="#panic-in-the-bukkit-server" aria-label="Anchor link for: Panic! In The Bukkit Server">🔗</a></h3>
<p>&ldquo;<em>Then, everything changed when the Fire Nation attacked.</em>&rdquo;</p>
<p>The community erupted into chaos. Suddenly, a community that had mostly co-existed peacefully was at a virtual war with each other. The situation was understandable from both ends, if for different reasons.</p>
<p>Anyone could start their own multiplayer server. So it was possible for malicious servers to scam players (usually young children) of money. Usually this happened by failing to deliver on the purchases or closing down after a period. Frequently, Mojang was contacted for help (usually by angry parents) about game servers Mojang did not control.</p>
<p>At the same time, many good people built (probably unwise) business models around the permissive nature of Minecraft intellectual property. The open source software made it easy to extend Minecraft in ways Mojang did not intend.</p>

<h2 id="act-2-the-bukkit-cards-are-revealed">Act 2: The Bukkit cards are revealed&nbsp;<a class="hanchor" href="#act-2-the-bukkit-cards-are-revealed" aria-label="Anchor link for: Act 2: The Bukkit cards are revealed">🔗</a></h2>
<p>Tension was already high between the the trinity of business owners, open source developers, and Mojang. By 2014, Mojang was a multi-million dollar company (even before their multi-billion Microsoft buyout). The EULA tension placed a heavy burden on the open source developers, who received pressure from both ends.</p>
<p>Then, the unexpected happened on August 21st, 2014. The Bukkit project lead, Warren Loo (EvilSeph), announced the end of development on the Bukkit project:</p>
<blockquote class="twitter-tweet" data-dnt="true"><p lang="en" dir="ltr">.<a href="https://twitter.com/CraftBukkit?ref_src=twsrc%5Etfw">@CraftBukkit</a>: It&#39;s time to say goodbye - <a href="http://t.co/LRG2uiMbDe">http://t.co/LRG2uiMbDe</a></p>&mdash; EvilSeph (@EvilSeph) <a href="https://twitter.com/EvilSeph/status/502360729803317248?ref_src=twsrc%5Etfw">August 21, 2014</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>


<blockquote>
<p>Read the <a href="https://web.archive.org/web/20151105173217/https://bukkit.org/threads/bukkit-its-time-to-say.305106/">full announcement</a> from Bukkit team</p>
</blockquote>

<h3 id="bukkit-gets-owned">Bukkit gets &ldquo;owned&rdquo;&nbsp;<a class="hanchor" href="#bukkit-gets-owned" aria-label="Anchor link for: Bukkit gets &ldquo;owned&rdquo;">🔗</a></h3>
<p>This was sad news. But the real shock came an hour later when the lead developer of Minecraft at Mojang shot back on Twitter:</p>
<blockquote class="twitter-tweet" data-dnt="true"><p lang="en" dir="ltr">Warren over at bukkit seems to have forgotten that the project was bought by Mojang over two years ago, and isn&#39;t his to discontinue.</p>&mdash; Jens Bergensten (@jeb_) <a href="https://twitter.com/jeb_/status/502380018216206336?ref_src=twsrc%5Etfw">August 21, 2014</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>


<p>Two other former Bukkit developers working at Mojang chimed in too:</p>
<blockquote class="twitter-tweet" data-dnt="true"><p lang="en" dir="ltr">We took ownership of the Bukkit github repos &amp; project. We&#39;ll see what happens from here.</p>&mdash; Erik Broes (@_grum) <a href="https://twitter.com/_grum/status/502381523241144320?ref_src=twsrc%5Etfw">August 21, 2014</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>


<blockquote class="twitter-tweet" data-dnt="true"><p lang="en" dir="ltr">To make this clear: Mojang owns Bukkit. I&#39;m personally going to update Bukkit to 1.8 myself. Bukkit IS NOT and WILL NOT BE the official API.</p>&mdash; Nathan Adams (@Dinnerbone) <a href="https://twitter.com/Dinnerbone/status/502389963606867968?ref_src=twsrc%5Etfw">August 21, 2014</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>


<p>It was now revealed that the Bukkit open source developers hired by Mojang in 2011 had given up their personal copyright and rights to their open source contributions as part of their employment contracts. The open source developer and business owner communities both learned this abruptly over a 140-character tweet.</p>
<p>The community was confused, upset, and angry.</p>
<blockquote>
<p>&ldquo;The decision to keep the acquisition of the Bukkit codebase a secret was made between Mojang and Curse, which only recently came to light. I was completely unaware that I had spent the last two years of my life as a Bukkit Administrator, and successor to the project lead, under the illusion that the project was independently ran. Had I known back then perhaps my choice would have been different, perhaps not. It’s easy to speculate on what might have been, but unless faced head on with the choice, the decision is not always clear.&rdquo;</p>
<p>TnT, &ldquo;<a href="https://web.archive.org/web/20150215082334/https://bukkit.org/threads/so-long-and-thanks-for-all-the-fish.305350/">So long, and thanks for all the fish</a>&rdquo;</p>
</blockquote>
<p>What is known now was that for about three years, the volunteer-driven open source project was &ldquo;owned&rdquo; by company valued for millions of dollars that did little to support the open source project that helped build a community around the game. The only visible contribution made by Mojang to Bukkit was the explicit permission to continue their endeavor in the legal gray area.</p>

<h2 id="act-3-dmca-take-down-of-bukkit">Act 3: DMCA take-down of Bukkit&nbsp;<a class="hanchor" href="#act-3-dmca-take-down-of-bukkit" aria-label="Anchor link for: Act 3: DMCA take-down of Bukkit">🔗</a></h2>
<p>On September 5th, 2014, a lead developer not hired by Mojang, who had contributed over 15,000 lines of code to the project, invoked a <a href="https://en.wikipedia.org/wiki/Digital_Millennium_Copyright_Act">Digital Millennium Copyright Act</a> (DMCA) take-down on all of <a href="https://github.com/github/dmca/blob/master/2014/2014-09-05-CraftBukkit.md">his personal contributions</a> to the project (and all derivative projects). <strong>In a day, all the source code for a project used ~3x more than Mojang&rsquo;s official server software disappeared from the Internet</strong>.</p>
<p>It is easy to understand why this lead developer did what he did. To find out the last few years of your life spent volunteering on a game project that was secretly owned by a multi-million dollar company is a shattering experience. It&rsquo;s essentially free labor. But at the same time, this was a project used by hundreds of thousands of people around the world. It was more than a project; it was also a community.</p>
<p>One of the lead developers of Bukkit said this of the project in their <a href="https://web.archive.org/web/20161213172659/https://bukkit.org/threads/bukkit-an-autobiography.310083/">resignation letter to the community</a>:</p>
<blockquote>
<p>&ldquo;The Bukkit Project is so much more than CraftBukkit, getting updates out and providing API. It&rsquo;s about giving the community a place where they feel welcomed and can program to their hearts&rsquo; content with the use of our product. The Bukkit API gave people the ability to change the behavior of Minecraft, but it would have meant nothing without the contributions from the plugin developers in the community.&rdquo;</p>
<p><a href="https://bukkit.org/members/feildmaster.82116/">feildmaster</a></p>
</blockquote>
<p>The DMCA take-down wasn&rsquo;t just a take-down of the software; it also was a take-down of a community. The overnight disappearance of Bukkit left a huge power vacuum full of bitterness, personal harassment, and doxing. (Don&rsquo;t forget this was also the era of <a href="https://en.wikipedia.org/wiki/Gamergate_controversy">#GamerGate</a>.)</p>

<h2 id="who-was-this-community">Who was this community?&nbsp;<a class="hanchor" href="#who-was-this-community" aria-label="Anchor link for: Who was this community?">🔗</a></h2>
<p>The project I participated with, Spigot, was a fork of Bukkit created in 2012. Like Bukkit, Spigot was also hit by the DMCA take-down, although the Spigot team worked out a clever legal workaround to continue development.</p>
<p>A huge plugin community and third-party software around Bukkit&rsquo;s API grew around both Bukkit and Spigot. The unusual thing was, with few exceptions, most of the leaders of these communities were young adults in their 20s, teenagers, or even 11 year old kids. Open source wasn&rsquo;t a strongly understood concept in this community. <strong>It was just what everyone did</strong>. The messaging around licensing was <a href="https://www.spigotmc.org/threads/the-most-important-part-of-your-project-might-not-even-be-a-line-of-code.121682/">not always great</a>, but working in the open was the nature of how this gaming community operated.</p>

<h3 id="the-spirit-of-open-source-died">The spirit of open source died&nbsp;<a class="hanchor" href="#the-spirit-of-open-source-died" aria-label="Anchor link for: The spirit of open source died">🔗</a></h3>
<p>For this community, the promise and glory of open source died. For years, the Bukkit developer team shared their belief in open source with the community:</p>
<blockquote>
<p>&ldquo;Bukkit chose to go the open source route with our API for several reasons. Not only is open source awesome, but we knew that there were many talented individuals within the Minecraft community that could help us evolve, mature and grow our project much faster than we could have ever dreamed on our own.&rdquo;</p>
<p>EvilSeph (Warren Loo), &ldquo;<a href="https://web.archive.org/web/20150308122118/https://bukkit.org/threads/bukkit-project-changes-and-improvements.133798/">Bukkit Project Changes and Improvements</a>&rdquo;</p>
</blockquote>
<p>But with the complications of a project doomed to failure under the GPL that never should have been, combined with the hidden secret of ownership and DMCA take-down of open source code, the promise of open source both helped and failed this community.</p>

<h3 id="who-was-right-who-was-wrong">Who was right? Who was wrong?&nbsp;<a class="hanchor" href="#who-was-right-who-was-wrong" aria-label="Anchor link for: Who was right? Who was wrong?">🔗</a></h3>
<p>On one hand, the lead developer who issued the DMCA take-down was able to vent the frustration faced by those who discovered their secret &ldquo;free labor&rdquo; agreement with Mojang (at a great personal cost, as he was harassed, stalked, and received death threats). On the other hand, the collective community faced the end of an era brought about extraordinary circumstances that actually voided the GPL as a valid license:</p>
<blockquote>
<p>&ldquo;A license is a contract. There are many reasons why a contract would be void, and many conditions that make a contract invalid from the get-go. One such condition is being “tricked” into the agreement, which would include agreeing to work on a project under false pretenses. As stated above, an open source project being secretly purchased by a company, in hopes to have that company’s game be improved through it, is as close to a loophole for free labor as you will find. Free labor was outlawed in this country a while ago. We had a whole war about it.&rdquo;</p>
<p>/u/VideoGameAttorney, &ldquo;<a href="https://www.reddit.com/r/Minecraft/comments/2fk5nn/my_response_to_vubui_mojang_and_the_hundreds_yes/">My Response to Vubui, Mojang, and the hundreds (yes, hundreds) of you who asked me to weigh in on this.</a>&rdquo;</p>
</blockquote>
<p>The only conclusion I can muster on this saga is from that same Reddit thread: &ldquo;<em>But at the end of the day, don’t just believe one side is “good” and the other “bad” here. These things are rarely so simple.</em>&rdquo;</p>

<h2 id="why-did-i-write-this">Why did I write this?&nbsp;<a class="hanchor" href="#why-did-i-write-this" aria-label="Anchor link for: Why did I write this?">🔗</a></h2>
<p>Because I keep coming back to this story, across my life. I was writing an event report about a <a href="https://jwfblog.wpenginepowered.com/2020/04/copyleftconf-2020-quick-rewind/">copyleft licensing conference</a> I went to <a href="https://jwfblog.wpenginepowered.com/tag/2020-foss-conferences/">in February 2020</a>, when I recapped this same story to someone there in-person. It wasn&rsquo;t the first time I told this story at a conference though. It&rsquo;s such an interesting case study of copyleft licensing.</p>
<p>Because it is in the open source gaming world and the largest demographic of this particular gaming community is under 30 years old, many folks who have been &ldquo;around the block&rdquo; in open source are unaware of this story.</p>
<p>But as my first open source community and also something I invested nearly a whole decade of my life into (as have countless others), this experience shaped my outlook on open source and community in an unusual way. It&rsquo;s an experience I can&rsquo;t forget. Even if I only have an abrupt ending to this story, it&rsquo;s a story that I think deserves to be told, in respect to those who invested far more time, energy, money, and tears in this than I ever have.</p>]]></description></item><item><title>TeleIRC v2.0.0: March 2020 progress update</title><link>https://jwheel.org/blog/2020/03/teleirc-v2-0-0-march-2020-progress-update/</link><pubDate>Thu, 19 Mar 2020 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2020/03/teleirc-v2-0-0-march-2020-progress-update/</guid><description><![CDATA[<p>Since September 2019, the <a href="https://ritlug.com/">RITlug</a> TeleIRC team is hard at work on the <a href="https://github.com/RITlug/teleirc/milestone/8">v2.0.0 release</a> of TeleIRC. This blog post is a short update on what is coming in TeleIRC v2.0.0, our progress so far, and when to expect the next major release.</p>

<h2 id="whats-coming-in-teleirc-v200">What&rsquo;s coming in TeleIRC v2.0.0?&nbsp;<a class="hanchor" href="#whats-coming-in-teleirc-v200" aria-label="Anchor link for: What&rsquo;s coming in TeleIRC v2.0.0?">🔗</a></h2>
<p>TeleIRC v2.0.0 is a complete rewrite of TeleIRC. The team is migrating the code base <a href="https://github.com/RITlug/teleirc/issues/163">from NodeJS to Go</a>. In September 2019, the team began scoping the requirements and how to approach this large task. TeleIRC v2.0.0 does not add new features, but aims to have feature parity with the v1.x.x version of TeleIRC.</p>
<p>You might be asking, why bother with a total rewrite? What does this actually accomplish for the project? To answer this question, some historical context is needed!</p>

<h3 id="teleirc-v100-was-an-experiment">TeleIRC v1.0.0 was an experiment.&nbsp;<a class="hanchor" href="#teleirc-v100-was-an-experiment" aria-label="Anchor link for: TeleIRC v1.0.0 was an experiment.">🔗</a></h3>
<p><a href="https://github.com/RITlug/teleirc/releases/tag/v1.0.0">TeleIRC v1.0.0</a> was originally created and released in September 2016 by RIT alum <a href="https://github.com/repkam09">Mark Repka</a>. Mark created TeleIRC as a cool project for the RIT Linux Users Group (RITlug) when he was a student and vice president of RITlug. The project was written in hackathon spirit: to prove that something that was not yet common wasn&rsquo;t that hard to do.</p>
<p>Fast forward to today: TeleIRC ends up being pretty popular! As do chat bridges (Matterbridge, Matrix/Riot, etc.) as a whole. The <a href="https://docs.fedoraproject.org/en-US/project/">Fedora Project</a> is one of our largest users, with a dedicated <a href="https://docs.fedoraproject.org/en-US/teleirc-sig/">Special Interest Group</a> to manage the bots. The <a href="https://www.libreoffice.org/about-us/who-are-we/">LibreOffice community</a> is another one of our biggest users. Several international communities also adopted TeleIRC to make their chat rooms more accessible to a new generation of open source fans. Some example users are Linux and BSD user groups and hackerspaces in Argentina, Albania, and across Asia. You can see the <a href="https://docs.teleirc.com/en/latest/about/who-uses-teleirc/">full list of TeleIRC users</a> for yourself.</p>
<p>TeleIRC has grown in a way we never thought it would. Which is awesome! But the project was not originally designed to grow or scale the way it has. Additionally, by being at a university, contributors come and go as students graduate and move on to industry. We also have to think about how to maintain TeleIRC beyond the typical student life-cycle common in the academic world.</p>

<h3 id="lets-approach-teleirc-v200-as-engineers">Let&rsquo;s approach TeleIRC v2.0.0 as engineers.&nbsp;<a class="hanchor" href="#lets-approach-teleirc-v200-as-engineers" aria-label="Anchor link for: Let&rsquo;s approach TeleIRC v2.0.0 as engineers.">🔗</a></h3>
<p>A full rewrite allows us to fully leverage our knowledge as software engineers. In 2020, we know TeleIRC has a large user community and is an important part of how many open source communities communicate. We also know that breaking code into smaller, more modular pieces makes it easier to maintain and bring in new contributors. A full rewrite allows us to apply the lessons the team has learned over the years, in a way that incremental feature releases does not allow.</p>
<p>A few areas are in clear focus for the TeleIRC v2.0.0 rewrite:</p>
<ol>
<li>Write clean, simple code that is easy to understand</li>
<li>Test the code so it is easy to tell when things are working and when they aren&rsquo;t</li>
<li>Think about how to bring in new contributors to continue the project in the future</li>
</ol>
<p>But maybe you are also asking, why the jump to Go?</p>

<h3 id="a-go-rewrite-distinguishes-our-project">A Go rewrite distinguishes our project.&nbsp;<a class="hanchor" href="#a-go-rewrite-distinguishes-our-project" aria-label="Anchor link for: A Go rewrite distinguishes our project.">🔗</a></h3>
<p>When Mark and I launched the project in 2016, we didn&rsquo;t look around to see if anything else like RITlug&rsquo;s TeleIRC already existed. Turns out, there was <a href="https://github.com/FruitieX/teleirc">another NodeJS project</a> with the same name. Skip forward a few years, and there are also projects like <a href="https://github.com/42wim/matterbridge">Matterbridge</a>, <a href="https://github.com/sfan5/pytgbridge">pytgbridge</a>, and <a href="https://github.com/xypiie/teleirc">other implementations</a>. So, with all this commotion out there these days, why bother with our version of yet another chat bridge?</p>
<p>First, there is one design principle guiding our project from others like us: to do one thing and to do it well. Matterbridge is an excellent tool, and we even use it in conjunction with TeleIRC at our university. However, it is a complex tool with many features and options. For some people, this is a non-issue. But the TeleIRC team likes to think there is beauty in simplicity. Instead of offering a tool with the most features and configuration options, we aspire to do a single thing and to do it really well: connect Telegram groups and IRC channels together.</p>
<p>Second, although the FruitieX/teleirc project is archived today, it was once the biggest alternative to our project, also written in NodeJS. When we decided to launch TeleIRC v2.0.0 development, it had a larger community and user base then ours. So instead of offering a &ldquo;similar but different&rdquo; NodeJS project, we would be the first Telegram-IRC bridge written in Go. (Yes, Matterbridge is also written in Go, but see the above paragraph.)</p>
<p>Third… many of the existing maintainers of TeleIRC simply wanted an excuse to learn Go. It is an opportunity to expand our knowledge, experience, and skills, especially since we are students preparing to enter the industry.</p>

<h3 id="go-has-a-better-story-for-kubernetes--openshift">Go has a better story for Kubernetes / OpenShift.&nbsp;<a class="hanchor" href="#go-has-a-better-story-for-kubernetes--openshift" aria-label="Anchor link for: Go has a better story for Kubernetes / OpenShift.">🔗</a></h3>
<p>Finally, we are carefully considering the needs of one of our biggest downstream users: the <strong>Fedora Project</strong>. Several TeleIRC developers also support Fedora&rsquo;s TeleIRC SIG. Recently, the Fedora Infrastructure team launched an OpenShift instance for the Fedora community, called <a href="https://fedoraproject.org/wiki/Infrastructure/Communishift">Communishift</a>. All existing infrastructure in Fedora is gradually moving from virtual machines or OpenStack to OpenShift. To support this migration, we want to make a Go-based TeleIRC as easy to deploy in OpenShift as possible.</p>
<p>And fortunately, Go has a great story in the container orchestration world. Kubernetes and OpenShift are also Go-based projects. Go is the dominant language of this ecosystem. Its excellent performance in the niche of networking makes it a great choice for what TeleIRC does.</p>
<p>Now that you know more about the &ldquo;why is this happening,&rdquo; let&rsquo;s talk on where things are and what you can expect!</p>

<h2 id="teleirc-v200-progress-so-far">TeleIRC v2.0.0: Progress so far&nbsp;<a class="hanchor" href="#teleirc-v200-progress-so-far" aria-label="Anchor link for: TeleIRC v2.0.0: Progress so far">🔗</a></h2>
<p><strong>TeleIRC v2.0.0 is approximately 76% complete</strong>. All progress is tracked in the <a href="https://github.com/RITlug/teleirc/milestone/8">v2.0.0 milestone</a> on GitHub. <a href="https://github.com/RITlug/teleirc/milestone/8?closed=1">46 issues and pull requests were closed</a> since we began in September 2019. At publishing time, about 16 more issues and pull requests are left before we cut the v2.0.0 release.</p>
<p>Earlier in 2019, the maintainer team consisted of <a href="https://github.com/justwheel">Justin Wheeler</a>, <a href="https://github.com/Tjzabel">Tim Zabel</a>, <a href="https://github.com/xforever1313">Seth Hendrick</a>, <a href="https://github.com/thenaterhood">Nate Levesque</a>, <a href="https://github.com/nic-hartley">Nic Hartley</a>, and <a href="https://github.com/robbyoconnor">Robby O&rsquo;Connor</a>. Now joining the committer group, we are happy to welcome <strong><a href="https://github.com/Zedjones">Nicholas Jones</a>, <a href="https://github.com/10eMyrT">Kevin Assogba</a>, and <a href="https://github.com/kennedy">Kennedy Kong</a></strong> to the team. The current core group of maintainers for v2.0.0 are Justin, Tim, Nicholas, Kevin, and Kennedy.</p>

<h2 id="when-to-expect-teleirc-v200">When to expect TeleIRC v2.0.0&nbsp;<a class="hanchor" href="#when-to-expect-teleirc-v200" aria-label="Anchor link for: When to expect TeleIRC v2.0.0">🔗</a></h2>
<p>TeleIRC v2.0.0 is targeted for a release date of <strong>Friday, May 15th, 2020</strong>. At this point, we expect to have full feature parity with the v1.x.x version. We will recommend all existing users to upgrade to the latest release then.</p>
<p>In the meanwhile, the team is getting ready to <a href="https://github.com/RITlug/teleirc/issues/265">cut a v2.0.0-pre1 release</a>, our first &ldquo;pre-release&rdquo; of the Go port. We expect this release to be available on our <em><a href="https://github.com/RITlug/teleirc/releases">Releases</a></em> by Saturday, March 28th. Along with the v2.0.0-pre1 release, there are a few other details to note:</p>
<ol>
<li><a href="https://github.com/RITlug/teleirc/milestone/9?closed=1">TeleIRC v1.5.0</a>, the final version of the NodeJS version, will be released.</li>
<li>No future contributions will be accepted to the NodeJS version.</li>
<li><code>master</code> branch in git will reflect the latest Go version of TeleIRC.</li>
</ol>
<p>Once the v2.0.0-pre1 release is available, we want help to take it for a test drive! If TeleIRC is critical for you, we do not recommend using it yet, as it does not have full feature parity yet. But your early feedback can help improve the future of the next release while we are in active development.</p>

<h2 id="get-involved-with-teleirc">Get involved with TeleIRC!&nbsp;<a class="hanchor" href="#get-involved-with-teleirc" aria-label="Anchor link for: Get involved with TeleIRC!">🔗</a></h2>
<p>You can be a part of the upcoming TeleIRC v2.0.0 release. We&rsquo;d love your help! There is no formal commitment to contributing, although we ask for participation through a single sprint cycle.</p>
<p>Read our <a href="https://docs.teleirc.com/en/latest/dev/contributing/"><em>Contributing guidelines</em></a> on how to get started with TeleIRC. <a href="https://rit.bluejeans.com/564315135">Virtual developer meetings</a> take place every Saturday at 15:00 US EDT, so anyone can join and participate.</p>
<p>Come say hello in our developer chat rooms, either on <a href="https://webchat.freenode.net/#ritlug-teleirc">IRC</a> or in <a href="https://t.me/teleirc">Telegram</a>!</p>
<hr>
<p><em><a href="https://unsplash.com/photos/guiQYiRxkZY">Background photo</a> by <a href="https://unsplash.com/@epicantus">Daria Nepriakhina</a> on <a href="https://unsplash.com/">Unsplash</a>.</em></p>]]></description></item><item><title>Essay response: Interlocking role of media</title><link>https://jwheel.org/blog/2020/03/essay-response-interlocking-role-of-media/</link><pubDate>Tue, 17 Mar 2020 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2020/03/essay-response-interlocking-role-of-media/</guid><description><![CDATA[<p>This blog post is an essay response from a class I took at the <a href="https://www.rit.edu/">Rochester Institute of Technology</a>, WGST-357: <strong>Communication, Gender, and Media</strong>. This course was taught by <a href="https://www.rit.edu/directory/nsggpt-nickesia-gordon">Dr. Nickesia Gordon</a>. The essay prompt encouraged us to reflect broadly on the role of media in society. I liked my response and wanted to re-share it on my blog.</p>
<p><em>(Dr. Gordon, if you find this: I hope you don&rsquo;t mind, I mean the best!)</em></p>

<h4 id="what-are-some-ways-in-which-media-interlocks-with-other-institutions-what-does-this-interlocking-suggest-about-the-role-of-media-in-society">What are some ways in which media interlocks with other institutions? What does this interlocking suggest about the role of media in society?&nbsp;<a class="hanchor" href="#what-are-some-ways-in-which-media-interlocks-with-other-institutions-what-does-this-interlocking-suggest-about-the-role-of-media-in-society" aria-label="Anchor link for: What are some ways in which media interlocks with other institutions? What does this interlocking suggest about the role of media in society?">🔗</a></h4>
<p>Media is a fundamental aspect to other institutions, if media is considered a form of communication. Media is defined broadly: pictures, videos, interactive content, games, social media, and journalism, to name a few. Media interlocks with other institutions as a tool that fits into other categories of work, in an intersectional way.</p>
<p>To use social media as an example, the government of Iran is an example of how a totalitarian institution manipulates media to influence popular opinion and perspective, and also to drown out voices of activists and those fighting for social justice. The Washington Post is a newspaper owned by the world&rsquo;s wealthiest man, who also runs one of the companies that wields increasing reach over many aspects of our digital life. The relationship of media institutions as reliable and trustworthy platforms of information and perspective is jeopardized by the corrupting role of power, often in the form of money and capital.</p>
<p>Identifying how the role of media is influenced by power is a vital skill to be a consumer of information in the 21st century. At an unprecedented rate, we consume information more than any other generation before us. The availability of information at our fingertips on the Internet and the advent of ephemeral media requires us to process more information than our brains can handle. In lieu of a surplus of media, content, and information, it is important to be able to question our media, its motives, and to understand biases that may be at play to persuade us to view a topic or issue a particular way.</p>
<p><em>Justin Wheeler (Dec. 13, 2019)</em></p>]]></description></item><item><title>FOSDEM 2020, pt. 1: Play by play</title><link>https://jwheel.org/blog/2020/03/fosdem-2020-pt-1-play-by-play/</link><pubDate>Thu, 05 Mar 2020 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2020/03/fosdem-2020-pt-1-play-by-play/</guid><description><![CDATA[<p>FOSDEM 2020 took place from Saturday, 1 February, 2020 to Sunday, 2 February, 2020 in Brussels, Belgium (shortly after <a href="https://jwfblog.wpenginepowered.com/2020/02/sustain-oss-2020-quick-rewind/">Sustain OSS 2020</a> and <a href="https://jwfblog.wpenginepowered.com/2020/02/chaosscon-eu-2020-play-by-play/">CHAOSScon EU 2020</a>):</p>
<blockquote>
<p>FOSDEM is a free and non-commercial event organized by the community for the community. The goal is to provide free and open source software developers and communities a place to meet to:</p>
<p>- Get in touch with other developers and projects;</p>
<p>- Be informed about the latest developments in the free software world;</p>
<p>- Be informed about the latest developments in the open source world;</p>
<p>- Attend interesting talks and presentations on various topics by project leaders and committers;</p>
<p>- To promote the development and benefits of free software and open source solutions.</p>
<p><a href="https://web.archive.org/web/20200202125844/https://fosdem.org/2020/about/">fosdem.org/2020/about/</a></p>
</blockquote>
<p>This is my third time attending FOSDEM. I attended on behalf of <a href="https://fossrit.github.io/librecorps/">RIT LibreCorps</a> to represent our engagement with the <a href="https://www.unicef.org/innovation/">UNICEF Office of Innovation</a> and the <a href="https://unicefinnovationfund.org/">Innovation Fund</a>. For FOSDEM 2020, I arrived ready to give my talk (coming in pt. 2) and honestly to see where the weekend took me.</p>
<p>Planning out FOSDEM is hard. So, my strategy is to figure it out as I go, since most of what I get out of FOSDEM comes from casual conversations and &ldquo;hallway track.&rdquo;</p>

<h2 id="sessions-play-by-play">Sessions: Play-by-play&nbsp;<a class="hanchor" href="#sessions-play-by-play" aria-label="Anchor link for: Sessions: Play-by-play">🔗</a></h2>
<p>Event reports take many forms. My form is an expanded version of my session notes along with key takeaways. Said another way, my event report is biased towards what is interesting to me. You can also skim the headings to find what interests you.</p>
<p>Also, I live-tweeted several sessions of FOSDEM 2020, so some sections include tweet excerpts with pictures.</p>

<h3 id="building-ethical-software-under-capitalism">Building ethical software under capitalism&nbsp;<a class="hanchor" href="#building-ethical-software-under-capitalism" aria-label="Anchor link for: Building ethical software under capitalism">🔗</a></h3>
<blockquote>
<p>The software that is the easiest to build &ndash; the software that is the easiest to fund the development of &ndash; tends to serve those who are already extremely well-served. So, how do we bridge the gap between what society needs and what many people with money want to fund? Free and open source software platforms can get us part of the way there, but without some big changes, it won&rsquo;t be enough. Let&rsquo;s talk structure!</p>
<p><a href="https://fosdem.org/2020/schedule/event/capitalismethicaloss/">Deb Nicholson</a></p>
</blockquote>
<p>Deb is making a <a href="https://jwfblog.wpenginepowered.com/tag/2020-foss-conferences/">regular appearance</a> on my blog.</p>
<p>A foundational piece of Deb&rsquo;s FOSDEM 2020 talk is something I started calling the &ldquo;buck factor.&rdquo; In 20 minutes, she gave context for the challenges of fundraising and achieving financial sustainability for open source projects with ethical missions. She also commented on the divides between &ldquo;community&rdquo; and &ldquo;enterprise,&rdquo; and how they are frequently on opposing ends of a spectrum.</p>
<p>Deb offered suggestions on how the Free Software movement can stand up and protect our shared values. Some are practical and others are aspirational, but I believe Deb aimed to get the audience thinking in different angles on this challenge:</p>
<ul>
<li>Encourage self-reporting within organizations
<ul>
<li>Build an ethical strategy inside an organization</li>
</ul>
</li>
<li>Labor organizing</li>
<li>Build alternatives:
<ul>
<li>Community-driven non-profits</li>
<li>Worker-controlled options (e.g. worker co-ops)</li>
</ul>
</li>
<li>Advocate for policy changes (e.g. public utilities)</li>
</ul>
<p>I also learned new vocabulary from Deb: <a href="https://en.wikipedia.org/wiki/Pink_capitalism">rainbow/pink capitalism</a>.</p>

<h3 id="growing-sustainable-contributions-through-ambassador-programs">Growing sustainable contributions through ambassador programs&nbsp;<a class="hanchor" href="#growing-sustainable-contributions-through-ambassador-programs" aria-label="Anchor link for: Growing sustainable contributions through ambassador programs">🔗</a></h3>
<blockquote>
<p>Open Source Program Offices are utilizing ambassador programs more and more. We&rsquo;ll talk about why we decided to implement ambassador programs, how we implemented them, got buy-in (from a time and budget standpoint), and more.</p>
<p>Additionally, we&rsquo;ll both talk about how we use this program to scale and reach thousands of developers internally. Also, we&rsquo;ll throw in a few case studies and lessons learned throughout our (ongoing) journeys.</p>
<p>During this talk we’ll go over what an ambassador program is, how we decided to use them in our organizations, the path to buy-in and budget approval, how they were implemented, results we saw, and lessons learned. We’ll present specific case studies of how our Ambassador Programs helped with specific campaigns and how that fosters open source sustainability.</p>
<p><a href="https://fosdem.org/2020/schedule/event/ambassadornetworks/">Shilla Saebi &amp; Alison Yu</a></p>
</blockquote>
<p>Shilla and Alison shared their experiences and advice in building open source ambassador programs at the Indeed and Comcast <strong>open source program offices</strong> (OSPOs). In the Community devroom at FOSDEM 2020, they introduced their ambassador programs, what goals and responsibilities of ambassadors were, and lessons learned from building their ambassador programs.</p>

<h4 id="what-is-an-ambassador-program">What is an ambassador program?&nbsp;<a class="hanchor" href="#what-is-an-ambassador-program" aria-label="Anchor link for: What is an ambassador program?">🔗</a></h4>
<p>Ambassador programs were created in response to a growing need for decentralization in the OSPO. An OSPO team is a finite group of people with finite resources and time. To be successful in internally promoting open source, an ambassador program empowers others and builds open source allies across an organization. Similar to how technology must scale in order to grow, consider the &ldquo;people&rdquo; factor as something that must scale in order to grow.</p>
<p>When launching ambassador programs, both Indeed and Comcast planned multiple phases. In the beginning, it started with an exploratory <strong>pilot program phase</strong>. The OSPOs identified success metrics and transparently set a date to reevaluate program efforts. A small number of open source leaders inside each organization were invited to participate.</p>
<p>Then, over time, early success led to a gradual <strong>expansion phase</strong>. More people were recruited with an internal kick-off and training week. Each quarter, ambassadors received an events stipend to represent projects and the organization at local conferences and community events.</p>

<h4 id="who-and-what-are-ambassadors">Who and what are ambassadors?&nbsp;<a class="hanchor" href="#who-and-what-are-ambassadors" aria-label="Anchor link for: Who and what are ambassadors?">🔗</a></h4>
<p>Ambassadors are like a &ldquo;working group&rdquo; of volunteers. They are champions and advocates of open source inside an organization or community. Ambassadors can be both internal and external: internal to a company or organization, but also external members of a community outside of a single organization.</p>
<p>But what kind of person makes a good fit for an ambassador role? There is no one-size-fits-all approach. However, Indeed and Comcast shared strategies they used to identify strong candidates for their ambassador programs:</p>
<ul>
<li>Prior experience contributing to an upstream project</li>
<li>Already an advocate for open source (internally or externally)</li>
<li>Willingness of managers to support participation</li>
<li>Ability to pass an online learning assignment on open source</li>
</ul>

<h4 id="what-do-ambassadors-do">What do ambassadors do?&nbsp;<a class="hanchor" href="#what-do-ambassadors-do" aria-label="Anchor link for: What do ambassadors do?">🔗</a></h4>
<p>Responsibilities are different at different organization. Ambassador programs at Indeed and Comcast share three common ways to participate:</p>
<ul>
<li>Evangelize open source</li>
<li>Participate in internal policy review</li>
<li>Advise in license reviews</li>
</ul>
<p>Additionally, a culture goal was to shift the perspective of open source away from &ldquo;one and done.&rdquo; Or rather, the OSPOs aspired to promote long-term contributions and partnerships with open source projects and their communities.</p>

<h4 id="how-to-incentivize-ambassadors">How to incentivize ambassadors?&nbsp;<a class="hanchor" href="#how-to-incentivize-ambassadors" aria-label="Anchor link for: How to incentivize ambassadors?">🔗</a></h4>
<p>Some people may fulfill ambassador responsibilities as part of their paid work. However, most people adopt a volunteer ethos. Ambassadors are not <em>just</em> colleagues representing open source inside an organization. They are also <em>people</em> with their own aspirations and goals too.</p>
<p><strong>Personal development opportunities</strong> are effective incentives for participating. For example, an in-person training week teaches new skills to ambassadors based on areas of identified growth. Getting <strong>mentorship</strong> is also key to enable participation. Mentorship opportunities lower the &ldquo;<a href="https://en.wikipedia.org/wiki/Bus_factor">bus factor</a>&rdquo; of an OSPO. It also recruits ambassadors to identify colleagues doing unrecognized open source work. Instead of leaving them out on the fringe, bring them in as co-conspirators!</p>
<p>Additionally, <strong>organization-supported travel</strong> is one way to validate an ambassador&rsquo;s time and effort. This furthers an ambassador&rsquo;s careers by connecting them to more opportunities in the industry. They get the chance to build their network across other organizations, projects, and communities to facilitate inter-organizational collaboration.</p>
<p>Finally, ambassadors were incentivized through their ability to <strong>influence program direction</strong>. Ambassadors are empowered by contributing to the direction and strategy of the ambassador program itself. Inclusion is key, so ideas, suggestions, and criticisms from ambassadors are actually reflected in program policy. After all, they are the ones who are directly impacted by future program policy. As key stakeholders in the program, their voices are important to include.</p>

<h4 id="lessons-learned">Lessons learned&nbsp;<a class="hanchor" href="#lessons-learned" aria-label="Anchor link for: Lessons learned">🔗</a></h4>
<p>Shilla and Alison listed off some &ldquo;lessons learned&rdquo; and ideas on where to take their ambassador programs next:</p>
<ul>
<li>Ambassadors appreciated structure and knowing transparently how they are measured</li>
<li>Needed more support from OSPO than originally expected</li>
<li>More opportunities for feedback
<ul>
<li>Specifically, more 1x1 conversations</li>
</ul>
</li>
<li>Check for manager support at the beginning
<ul>
<li><em>Example</em>: Employee gets manager approval to spend 10% of their paid time as an ambassador</li>
</ul>
</li>
<li>Schedule more ambassador community calls for access to OSPO and mentors</li>
<li>Share more swag with ambassadors!</li>
<li>Set clear expectations (or as clear as possible) in advance</li>
<li>Provide more training opportunities for ambassadors
<ul>
<li>Open source is broad; many people have experience in some areas but could use mentorship/guidance in other areas</li>
</ul>
</li>
<li>Create stretch goals for ambitious folks to reach for</li>
</ul>

<h4 id="future-goals">Future goals&nbsp;<a class="hanchor" href="#future-goals" aria-label="Anchor link for: Future goals">🔗</a></h4>
<ul>
<li>Provide internal resources to build allies in organization</li>
<li>Create digital badges to identify organization/project ambassadors across the web and also internally</li>
<li>Highlight/recognize ambassadors in visible ways</li>
<li>Schedule mandatory 1x1 check-ins between ambassadors and OSPO mentors</li>
</ul>

<h3 id="open-source-won-but-software-freedom-hasnt-yet">Open source won, but Software Freedom hasn&rsquo;t yet&nbsp;<a class="hanchor" href="#open-source-won-but-software-freedom-hasnt-yet" aria-label="Anchor link for: Open source won, but Software Freedom hasn&rsquo;t yet">🔗</a></h3>
<blockquote>
<p>Karen and Bradley, building on the substantial feedback from last year&rsquo;s keynote, follow up their 2019 FOSDEM keynote with real-world suggestions, ideas, and discussion about how we, as software freedom activists, can live in a world with so much proprietary software. Software freedom is hard to find, but we can find it together, and we can support each other when we must face the proprietary software world and make hard decisions. Let&rsquo;s figure it out together and support each other!</p>
<p><a href="https://fosdem.org/2020/schedule/event/open_source_won/">Bradley M. Kuhn &amp; Karen Sandler</a></p>
</blockquote>
<p>This was the most powerful talk I attended at FOSDEM 2020.</p>
<p>Kuhn and Sandler asked how we decide what is right for Software Freedom and how to increase the impact of our advocacy. Being a Free Software &ldquo;purist&rdquo; is increasingly difficult in our world. The Free Software movement must recognize the privilege of access. If the most underprivileged people are not included in our movement, we collectively lose the metaphorical &ldquo;battle&rdquo; of Free vs. Proprietary.</p>

<h4 id="resisting-in-2020-is-not-the-same-as-in-2000">Resisting in 2020 is not the same as in 2000&nbsp;<a class="hanchor" href="#resisting-in-2020-is-not-the-same-as-in-2000" aria-label="Anchor link for: Resisting in 2020 is not the same as in 2000">🔗</a></h4>
<p>Kuhn and Sandler state in no uncertain terms that resisting proprietary software is increasingly difficult. <a href="https://www.digitaltrends.com/cool-tech/cyborg-law-and-rights-of-augmented-humans/">Sandler&rsquo;s pacemaker</a> is one of the most compelling examples. But from another perspective, the advent of &ldquo;digital-only deals&rdquo; is also common. Digital deals for a smartphone may not be essential, but what about grocery coupons on food? It is easy to avoid these deals if you&rsquo;re well off. But it is less of an option if you live paycheck to paycheck. The savings have a bigger impact relative to you. Choosing data privacy means choosing a financial disadvantage. Choosing data privacy means losing out on saving money on essential goods. To protect personal privacy means to lose access to savings not available on any platform except proprietary software.</p>
<p>A follow-up question might ask why we cave to proprietary software where we <em>do</em> have some power as consumers. But not having access is embarrassing. There is social pressure designed into parts of our society that makes saying &ldquo;no thank you&rdquo; difficult. Sandler gave an example of Disney&rsquo;s theme parks, where &ldquo;Fast Pass&rdquo; access is made available as a proprietary phone app that requires access to personal data in order to work. &ldquo;Fast Pass&rdquo; allows you to skip lines for rides and attractions. Explaining the principles of Software Freedom to children while waiting in longer queues is not a powerful appeal. While the Disney example is from a place of higher privilege, it is one perspective of many that shows power of social pressures that stigmatize choices that better protect us an individuals and consumers.</p>

<h4 id="stop-shaming">Stop shaming&nbsp;<a class="hanchor" href="#stop-shaming" aria-label="Anchor link for: Stop shaming">🔗</a></h4>
<p>Kuhn and Sandler made a powerful appeal. <strong>Stop shaming for using proprietary software. Start educating respectfully about software ethics</strong>. Free Software conferences sometimes trend towards being a proprietary dumping ground. However the Free Software community sometimes exists in a small bubble. In broader, societal terms, we are losing the freedom to choose Free Software. We need to put pressure on our companies and organizations to create the <em>right</em> kind of Free Software; that is, sustainable software that respects our freedoms by design. Our software is not sustainable unless it respects our Freedoms.</p>

<h3 id="design-contributions-to-oss-learnings-from-the-open-design-project-at-ushahidi">Design contributions to OSS: Learnings from the Open Design project at Ushahidi&nbsp;<a class="hanchor" href="#design-contributions-to-oss-learnings-from-the-open-design-project-at-ushahidi" aria-label="Anchor link for: Design contributions to OSS: Learnings from the Open Design project at Ushahidi">🔗</a></h3>
<blockquote>
<p>Ushahidi builds OSS humanitarian tools, remotely for some of the most marginalized people across the globe. To tackle these systemic problems with how to ‘open source’ a design effort and bring the community along with the ‘on-staff’ Ushahidi designers, we’ve been piloting a series of design events on our OSS crisis communication tool TenFour with our partners Designit and Adobe. Together, we’re looking to solve the problems with how open source design can work by engaging through meaningful technology that makes a difference in the world.</p>
<p>In this session, we&rsquo;ll briefly cover the history of the project and the main problems we attempted to solve and we&rsquo;ll present the learning and adaptions to our workshop framework and methodology that aims to engage design teams and individuals that are not yet &lsquo;on-board&rsquo; with OSS as an ethos or movement.</p>
<p><a href="https://fosdem.org/2020/schedule/event/design_contributions_to_oss/">Eriol Fox</a></p>
</blockquote>
<p>I had two useful takeaways from Eriol&rsquo;s FOSDEM 2020 talk in the Design devroom:</p>
<ol>
<li>Perception of &ldquo;open source&rdquo; in design world is largely undefined and unknown (because of systemic challenges)</li>
<li>Open source folks can learn more about what design work looks like when encouraging designers to participate</li>
</ol>

<h4 id="open-source-perception">Open source perception&nbsp;<a class="hanchor" href="#open-source-perception" aria-label="Anchor link for: Open source perception">🔗</a></h4>
<p>Eriol noted that most designers are in the dark about what open source is or what it can be. Open source is not included in design education. Also it is not incentivized in hiring for designers. If open source is poorly understood as a strength in the design community, how can designers use open source to build their CVs/resumes?</p>
<p>While they noted the root cause of this perception is systemic and difficult to change, it is helpful to weigh this perspective as an open source contributor. Developers and community managers should consider the systemic challenges when encouraging design contributions to an open source project.</p>
<p>For developers, open source is going mainstream. Without being prompted, you might be asked about open source in an engineering job interview. But it is different for designers. So you might have to &ldquo;design&rdquo; a different approach to effectively engage designers in our communities. (<em>pardon the pun</em>)</p>

<h4 id="learn-what-design-work-looks-like">Learn what design work looks like&nbsp;<a class="hanchor" href="#learn-what-design-work-looks-like" aria-label="Anchor link for: Learn what design work looks like">🔗</a></h4>
<p>Open source developers, program managers, and community managers may have an uninformed view of what design work is. Eriol&rsquo;s work in the <a href="https://opendesign.ushahidi.com/">Open Design project</a> at Ushahidi included workshops with topics about how to construct tasks for designers and developers together.</p>
<p>Listening to their talk, I became conscious of my poor understanding of design work. I realize I have some areas to grow and improve my understanding of open design. Eriol gave some specific examples of design work I want to explore further:</p>
<ul>
<li>Empathy mapping</li>
<li>Defining problems</li>
<li>Ideation</li>
<li>Storyboarding</li>
<li>Sketching and prototyping</li>
</ul>
<p>Also they gave a humanitarian-centered example of <strong>inviting a &ldquo;witness&rdquo;</strong> into the software design process. Or in other words, inviting someone part of the group that primarily &ldquo;needs&rdquo; the software. In the developer world, we are familiar with user testing or conducting focus groups and interviews. But those steps typically come <em>after</em> we have a product or design to get feedback on. Inviting a witness happens early, before much or any code is written. They bring a unique perspective of someone impacted by a particular problem or issue that the software will address.</p>
<p>I want to explore this one deeper. It takes more effort to practice active inclusion for someone who is a non-engineer to feel their opinions and perspective are useful and important in a room of engineers and product managers.</p>

<h4 id="twitter-thread">Twitter thread!&nbsp;<a class="hanchor" href="#twitter-thread" aria-label="Anchor link for: Twitter thread!">🔗</a></h4>
<p>Did I live-tweet this one? You bet.</p>







<h3 id="what-makes-people-come-and-what-makes-them-stay">What makes people come and what makes them stay&nbsp;<a class="hanchor" href="#what-makes-people-come-and-what-makes-them-stay" aria-label="Anchor link for: What makes people come and what makes them stay">🔗</a></h3>
<blockquote>
<p>Over the years the tech industry has been trying to change its diversity and inclusion statistics but that seems to have been a hard nut to crack. This is a talk about what makes people come, but then also what makes people stay. Because diversity is inviting people to the dance, but inclusion is enabling them to join it. Let&rsquo;s figure out how you can make people come and want to stay in your organizations, and teams, and let&rsquo;s see one use-case where Mozilla did the same.</p>
<p><a href="https://fosdem.org/2020/schedule/event/what_makes_people_come_and_what_makes_them_stay/">Gloria Dwomoh</a></p>
</blockquote>
<p>I meticulously live-tweeted this one. Check out the tweet thread below! There are lots of pictures too.</p>







<h2 id="beyond-fosdem-2020">Beyond FOSDEM 2020&nbsp;<a class="hanchor" href="#beyond-fosdem-2020" aria-label="Anchor link for: Beyond FOSDEM 2020">🔗</a></h2>
<p>Of course, there is much more to FOSDEM than just a conference. Some highlights outside of the conference were my daily reflective breakfasts with Mike, a ramen lunch with him and Gloria Dwomoh, and evening dinners with Remy DeCausemaker, Georg Link, and Justin Dorfman.</p>
<p>Also, originally I intended to give myself the Monday after FOSDEM off to recover and work from home. However, I heard about this other little conference called <a href="https://2020.copyleftconf.org/about/">Copyleft Conf</a> happening the next day. So, I ended up buying a last-minute ticket for this one too! <strong><a href="https://jwfblog.wpenginepowered.com/2020/04/copyleftconf-2020-quick-rewind/">Read the details in my full event report!</a></strong></p>

<h2 id="thanks-folx">Thanks folx!&nbsp;<a class="hanchor" href="#thanks-folx" aria-label="Anchor link for: Thanks folx!">🔗</a></h2>
<p>To wrap up this FOSDEM 2020 report, a few thank-yous are in order:</p>
<ul>
<li><strong><a href="https://www.rit.edu/computing/directory/sxjics-stephen-jacobs">Stephen Jacobs</a></strong>: For always being supportive for yet another trip abroad and helping me push my career forward in a number of ways (and footing the bill!)</li>
<li><strong><a href="https://nolski.rocks/">Mike Nolan</a></strong>: My co-conspirator, partner in FOSS, and comrade in arms (<em>HELL NO, MANIAC!</em>)</li>
</ul>
<p>I saw many familiar faces and also met many people I previously only knew from Twitter. FOSDEM 2020 takes a lot out of me, but it is always fulfilling to get a healthy dose of the Software Freedom perspective to fill me up on why I do what I do.</p>
<p>Until next time!</p>]]></description></item><item><title>CHAOSScon EU 2020: play by play</title><link>https://jwheel.org/blog/2020/02/chaosscon-eu-2020-play-by-play/</link><pubDate>Tue, 25 Feb 2020 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2020/02/chaosscon-eu-2020-play-by-play/</guid><description><![CDATA[<p>CHAOSScon EU 2020 took place on Friday, 31 January, 2020 in Brussels, Belgium (the day after <a href="https://jwfblog.wpenginepowered.com/2020/02/sustain-oss-2020-quick-rewind/">Sustain OSS 2020</a>):</p>
<blockquote>
<p>Learn about open source project health metrics and tools used by open source projects, communities, and engineering teams to track and analyze their community work. This conference will provide a venue for discussing open source project health, CHAOSS updates, use cases, and hands-on workshops for developers, community managers, project managers, and anyone interested in measuring open source project health. We will also share insights from the CHAOSS working groups on Diversity and Inclusion, Evolution, Risk, Value, and Common Metrics.</p>
<p><a href="https://web.archive.org/web/20200219170041/https://chaoss.community/chaosscon-2020-eu/">chaoss.community/chaosscon-2020-eu/</a></p>
</blockquote>
<p>This is my second time attending CHAOSScon. I attended on behalf of <a href="https://fossrit.github.io/librecorps/">RIT LibreCorps</a> to represent our engagement with the <a href="https://www.unicef.org/innovation/">UNICEF Office of Innovation</a> and the <a href="https://unicefinnovationfund.org/">Innovation Fund</a>. For CHAOSScon EU 2020, I arrived hoping to learn more about effective metric collection strategies for open source communities and also get a deeper understanding of the technology behind <a href="https://chaoss.github.io/grimoirelab/">GrimoireLab</a>.</p>

<h2 id="sessions-play-by-play">Sessions: Play-by-play&nbsp;<a class="hanchor" href="#sessions-play-by-play" aria-label="Anchor link for: Sessions: Play-by-play">🔗</a></h2>
<p>Event reports take many forms. My form is an expanded version of my session notes along with key takeaways. Said another way, my event report is biased towards what is interesting to me. You can also skim the headings to find what interests you.</p>
<p>Also, I live-tweeted several sessions of CHAOSScon EU 2020, so some sections include tweet excerpts with pictures.</p>

<h3 id="ethics-what-you-know--what-you-dont-know">Ethics: What You Know &amp; What You Don&rsquo;t Know&nbsp;<a class="hanchor" href="#ethics-what-you-know--what-you-dont-know" aria-label="Anchor link for: Ethics: What You Know &amp; What You Don&rsquo;t Know">🔗</a></h3>
<blockquote>
<p>Metrics give us a lot of insight into what&rsquo;s going on with our projects &ndash; but only if we have enough context. The catch is that personal biases and pre-conceptions are extremely hard to filter for so no one person can see everything. Those gaps means that even the most well-meaning of us could end up doing more harm than good. In this talk, I&rsquo;ll share a few examples of the ways human brains make assumptions, some of our typical blind spots and how incomplete data can cause harm when deployed without any checks. For folks who collect, analyze and ultimately make mission critical decisions with metrics, the challenge is to constantly maintain a bit of healthy skepticism of what the numbers seem to be telling us.</p>
<p><a href="https://chaoss.community/chaosscon-2020-eu/#user-content-deb-nicholson">Deb Nicholson</a></p>
</blockquote>
<p>Deb&rsquo;s session was a great opener to a day focused on metrics and automated reporting. Her talk underscored unconscious bias and the ways poorly-designed metrics fail us. We should take an active approach to questioning our perspectives and take suggestions with grace.</p>
<p>During Q&amp;A, my colleague <a href="https://nolski.rocks/">Mike</a> asked for advice on pushing back on management when they ask for bad metrics. Deb suggested a clever strategy to respond in these situations:</p>
<ol>
<li>Provide the metric asked for</li>
<li>Provide a metric that contradicts what was asked for</li>
<li>Provide the metric they should have asked for</li>
</ol>

<h3 id="heat-light-and-love-telling-twitters-open-source-program-offices-story">Heat, Light, and Love: Telling Twitter&rsquo;s Open Source Program Office&rsquo;s Story&nbsp;<a class="hanchor" href="#heat-light-and-love-telling-twitters-open-source-program-offices-story" aria-label="Anchor link for: Heat, Light, and Love: Telling Twitter&rsquo;s Open Source Program Office&rsquo;s Story">🔗</a></h3>
<blockquote>
<p>Making it simple to trust, ship, and grow open source at Twitter demanded visibility into contribution trends that were not readily available. Twitter&rsquo;s open source program office and the Augur project collaborated with CHAOSS using student interns from Google&rsquo;s Summer of Code, Twitter&rsquo;s intern program and the University of Missouri. First, this talk describes Twitter&rsquo;s engaging interface design and its fit to the needs of Open Source stakeholders within Twitter, but also outside the open source program office. Second, we describe how an open API and data collection tool, Augur, evolved in close collaboration with Twitter.</p>
<p><a href="https://chaoss.community/chaosscon-2020-eu/#user-content-sean-goggins">Sean Goggins</a> &amp; <a href="https://chaoss.community/chaosscon-2020-eu/#user-content-remy-decausemaker">Remy DeCausemaker</a></p>
</blockquote>
<p>This one inspired me. It represented a dream of mine for many open source communities. Sean and Remy presented on three years of building an <a href="https://twitter.github.io/year-in-review">automated metrics visualization site</a> with <a href="https://chaoss.github.io/grimoirelab/">GrimoireLab</a> and <a href="https://github.com/chaoss/augur">Augur</a>. The visualization was powerful to communicate the value of open source engagement, participation, and investment to internal and external stakeholders.</p>
<p>The work was based on a philosophy familiar to me from working with Remy years ago in the Fedora Project community:</p>
<p>
<figure>
  <img src="/blog/2020/02/Screenshot_2020-02-21-Twitter-Open-Source.png" alt="From CHAOSScon EU 2020: Twitter&rsquo;s open source philosophy: heat, light, and love" loading="lazy">
  <figcaption>Twitter’s open source philosophy: heat, light, and love</figcaption>
</figure>
</p>
<p>If we are speaking in metaphors, one way to extend Remy&rsquo;s &ldquo;light&rdquo; metaphor is tying in a theatrical concept: <strong>stage lights and backstage lights</strong>.</p>
<p>Stage lights are the metrics and insights to present out to the world. They are front and center! These insights validate your mission to an external audience.</p>
<p>Backstage lights are for an internal audience. These metrics and insights illuminate the inside of an organization and build understanding of who and what is there. These are useful to validate work and efforts to funders, or perhaps your CFO.</p>
<p>This talk served as inspiration for something I hope to explore later in 2020.</p>

<h3 id="measuring-culture">Measuring Culture&nbsp;<a class="hanchor" href="#measuring-culture" aria-label="Anchor link for: Measuring Culture">🔗</a></h3>
<blockquote>
<p>They say you can’t be certain of anything unless it can be measured – so what about culture? We know it exists and can be passed on to others, so there must be a way to measure it. Using Apache Kibble we attempt to look for cultural indicators at the Apache Software Foundation, set a cultural benchmark then match real Apache projects against it. In theory we would expect a perfect match but as the results show, culture isn’t that simple.</p>
<p><a href="https://chaoss.community/chaosscon-2020-eu/#user-content-sharan-foga">Sharan Foga</a></p>
</blockquote>

<blockquote>
<p>Sharan introduced five factors to measure culture: <strong>bus factor, contributor experience, contributor retention, sentiment analysis, and key phrase extraction</strong>.</p>
</blockquote>
<p>Sharan defined culture as what we believe <em>and</em> what we do. So, she introduced five indicators for open source communities to measure culture. These came from learnings at the <a href="https://apache.org/foundation/">Apache Software Foundation</a>&rsquo;s <a href="https://kibble.apache.org/">Kibble project</a>:</p>
<ul>
<li><strong>Pony (&ldquo;bus&rdquo;) factor</strong>:
<ul>
<li>&ldquo;Committership&rdquo;</li>
<li>Authorship</li>
<li>Meta factor (# of organizations involved)</li>
</ul>
</li>
<li><strong>Contributor experience / contributor retention</strong>:
<ul>
<li>People who (re)joined</li>
<li>People who quit (why?)</li>
<li>People retained</li>
<li>Active contributors</li>
<li>Cross the above over time (e.g. # of months/years involved)</li>
</ul>
</li>
<li><strong>Mood, or sentiment analysis</strong>: Look for these moods…
<ul>
<li>Trust</li>
<li>Surprise</li>
<li>Neutrality</li>
<li>Sadness</li>
<li>Positivity</li>
<li>Anger</li>
<li>Negativity</li>
<li>Joy</li>
<li>Anticipation</li>
<li>Disgust</li>
<li>Fear</li>
</ul>
</li>
<li><strong>Key phrase analysis</strong>: Understand community jargon (e.g. if &ldquo;+1&rdquo; is used to indicate agreement)</li>
</ul>
<p>I had two key takeaways. First, <strong>nothing matches completely</strong>, so don&rsquo;t over-rely on one factor or metric. Second, <strong>identify <em>your</em> baseline indicators and iterate</strong> on those. For the above indicators, maybe these are specific to Apache projects. Maybe they apply to your projects too… or maybe they don&rsquo;t!</p>

<h3 id="meet-cauldron-your-saas-software-development-analytics-solution">Meet Cauldron! Your SaaS Software Development Analytics solution&nbsp;<a class="hanchor" href="#meet-cauldron-your-saas-software-development-analytics-solution" aria-label="Anchor link for: Meet Cauldron! Your SaaS Software Development Analytics solution">🔗</a></h3>
<blockquote>
<p>Cauldron is a brand-new free <strong>open source SaaS</strong> able to analyze software development community and processes. It relies on <a href="https://chaoss.github.io/grimoirelab">CHAOSS GrimoireLab</a> to collect and process data from different tools used in software development such as git, GitLab, GitHub and/or social platforms like Meetup, and <a href="https://opendistro.github.io/for-elasticsearch/"><strong>Open Distro for ElasticSearch</strong></a> to store and to display the project data. The talk shows how Cauldron can be easily put into action to analyze the software projects that matter to the attendees, and to get some CHAOSS metrics about them.</p>
<p><a href="https://chaoss.community/chaosscon-2020-eu/#user-content-jose-manrique-lopez-de-la-fuente">Jose Manrique Lopez de la Fuente</a></p>
</blockquote>

<p>I had no written notes other than &ldquo;wow!&rdquo;</p>
<p><em>Finally</em>, Bitergia built a hosted GrimoireLab service, called <a href="https://cauldron.io/"><strong>Cauldron</strong></a>. Cauldron takes the pain out of hosting your own GrimoireLab infrastructure. It is in early alpha and does not support all the data sources available in GrimoireLab yet, but it is promising.</p>
<p>In the <a href="https://fossrit.github.io/about/">FOSS@MAGIC community</a>, we want GrimoireLab to understand our open source community at the <a href="https://www.rit.edu/">Rochester Institute of Technology</a>, home of the <a href="https://www.rit.edu/study/free-and-open-source-software-and-free-culture-minor">first academic minor</a> in free/open source. But as I go deeper, I realize GrimoireLab is very complex. Since my contract with RIT ends in a month, I want to leave something sustainable for my successors. Cauldron seems like a valid option.</p>
<p>I have some homework to do!</p>

<h3 id="language-barriers-for-open-source-contributors">Language barriers for open source contributors&nbsp;<a class="hanchor" href="#language-barriers-for-open-source-contributors" aria-label="Anchor link for: Language barriers for open source contributors">🔗</a></h3>
<blockquote>
<p>While open source development is common across the world, projects from countries outside North America and Europe, such as China, have difficulties attracting international contributors. One major reason for this is language differences. The presentation provides an overview of the diversity of non-native English speakers in different open source ecosystems. Furthermore, we will provide results about whether or not those contributors face a language barrier when contributing to open source projects. The presentation concludes with a discussion on how we can create metrics to assess the spoken language diversity in open source communities and how to include those people in the community more easily.</p>
<p><a href="https://chaoss.community/chaosscon-2020-eu/#user-content-isabella-vieira-ferreira">Isabella Vieira Ferreira</a></p>
</blockquote>


<blockquote class="twitter-tweet" data-dnt="true"><p lang="en" dir="ltr">Fascinating work from <a href="https://twitter.com/isaferreira_57?ref_src=twsrc%5Etfw">@isaferreira_57</a> on language barrier in <a href="https://twitter.com/hashtag/opensource?src=hash&amp;ref_src=twsrc%5Etfw">#opensource</a>. <a href="https://twitter.com/hashtag/choasscon?src=hash&amp;ref_src=twsrc%5Etfw">#choasscon</a><br><br>Contributing + participating in a project operating in a language (technical too!) that&#39;s not one&#39;s first always require more effort– a useful reminder to be kind and empathetic 💖💖 <a href="https://t.co/3cJ6qWWSsH">https://t.co/3cJ6qWWSsH</a></p>&mdash; Emmy Tsang (@emmy_ft) <a href="https://twitter.com/emmy_ft/status/1223240475395678208?ref_src=twsrc%5Etfw">January 31, 2020</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>


<p>Isabella&rsquo;s talk was insightful and challenged my unconscious bias. An interesting insight from two case studies was translators did not transition over time to software development contributions.</p>
<p>I believe a bias exists in open source projects with active localization communities. I have seen project leaders invest in localization efforts as one way to bring new people into a community. While it does bring new people in, there is a subtle implication that &ldquo;bringing new people in&rdquo; means bringing software contributions. That&rsquo;s not always the case. Instead, the value of translation work needs to be quantified beyond just software contributions.</p>
<p>This is especially true for supporting grassroots advocacy communities. Localization may not build your developer community, but it can support stronger local communities in regions where English is not the first language.</p>

<h3 id="metrics-are-more-than-the-sum-of-their-parts">Metrics are more than the sum of their parts&nbsp;<a class="hanchor" href="#metrics-are-more-than-the-sum-of-their-parts" aria-label="Anchor link for: Metrics are more than the sum of their parts">🔗</a></h3>
<blockquote>
<p>We are in a state of Community building that maps success to metrics like lines of code and GitHub stars. I would like us to explore where these metrics fall short on capturing the most significant value of a community, and how we can use other metrics to show the much larger impact Community organizations like Developer Relations (DevRel) can have on a business. This improved process begins with mapping value to business need, pairing it with a community need, and back to the business opportunities. There will be practical advice on how to pitch and position Community, whether you’re a Community Manager, Developer Advocate, or other Developer Relations professional.</p>
<p><a href="https://chaoss.community/chaosscon-2020-eu/#user-content-matt-broberg">Matt Broberg</a></p>
</blockquote>


<p>Matt&rsquo;s CHAOSScon EU 2020 session pitched strategy on communicating the value of developer relations to our organizations. He covered a lot of material and left me many thoughts to reflect on. I look forward to seeing the video recording of this talk to reflect further on integrating his ideas into my day-to-day. The themes of Matt&rsquo;s talk struck a chord with me for challenging advocacy work ahead for me in 2020.</p>

<h3 id="emerging-tech-open-source-scoring-system-etoss">Emerging Tech Open-Source Scoring System (ETOSS)&nbsp;<a class="hanchor" href="#emerging-tech-open-source-scoring-system-etoss" aria-label="Anchor link for: Emerging Tech Open-Source Scoring System (ETOSS)">🔗</a></h3>
<blockquote>
<p>This is a framework used by the UNICEF Innovation Fund, to evaluate and track the strategic position and growth potential of the early stage startups in its portfolio. The focus is on startups building open source frontier tech: Blockchain, Data Science, Artificial Intelligence and Extended Reality. It classifies the startups into four quadrants, based on two dimensions: the software developed (technology), and the financial sustainability of the project (business sustainability).</p>
<p><a href="https://chaoss.community/chaosscon-2020-eu/#user-content-cecilia-chapiro">Cecilia Chapiro</a> &amp; <a href="https://chaoss.community/chaosscon-2020-eu/#user-content-justin-w-flory">Justin Wheeler</a></p>
</blockquote>
<blockquote class="twitter-tweet" data-dnt="true"><p lang="en" dir="ltr">.@jflory7: The UNICEF tech KPIs are quite similar to <a href="https://twitter.com/CHAOSSproj?ref_src=twsrc%5Etfw">@CHAOSSproj</a> metrics - there are also business sustainability metric to measure, placing organisations / tech projects on a sustainable and tech scale... <a href="https://twitter.com/hashtag/CHAOSScon?src=hash&amp;ref_src=twsrc%5Etfw">#CHAOSScon</a> <a href="https://t.co/e3M440FMS4">pic.twitter.com/e3M440FMS4</a></p>&mdash; yo yehudi stays away from humans! 🏳️‍🌈 (@yoyehudi) <a href="https://twitter.com/yoyehudi/status/1223246459602194433?ref_src=twsrc%5Etfw">January 31, 2020</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>


<blockquote class="twitter-tweet" data-dnt="true"><p lang="en" dir="ltr">Interested in getting involved? Contact details for @jflory7 and <a href="https://twitter.com/ceciliachapiro?ref_src=twsrc%5Etfw">@ceciliachapiro</a> here! <a href="https://twitter.com/hashtag/CHAOSScon?src=hash&amp;ref_src=twsrc%5Etfw">#CHAOSScon</a> <a href="https://t.co/jMsfiCK9Rg">pic.twitter.com/jMsfiCK9Rg</a></p>&mdash; yo yehudi stays away from humans! 🏳️‍🌈 (@yoyehudi) <a href="https://twitter.com/yoyehudi/status/1223246907163758599?ref_src=twsrc%5Etfw">January 31, 2020</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>


<blockquote class="twitter-tweet" data-dnt="true"><p lang="en" dir="ltr">@jflory7 thanks for the great talk, great to hear <a href="https://twitter.com/UNICEFinnovate?ref_src=twsrc%5Etfw">@UNICEFinnovate</a> is actively funding OSS for the greater-good! <a href="https://twitter.com/hashtag/CHAOSScon?src=hash&amp;ref_src=twsrc%5Etfw">#CHAOSScon</a> <a href="https://t.co/g81koSI4Ov">pic.twitter.com/g81koSI4Ov</a></p>&mdash; Farbod Saraf (@farbodsaraf) <a href="https://twitter.com/farbodsaraf/status/1223247589317009409?ref_src=twsrc%5Etfw">January 31, 2020</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>


<blockquote class="twitter-tweet" data-dnt="true"><p lang="en" dir="ltr"><a href="https://twitter.com/hashtag/opensource?src=hash&amp;ref_src=twsrc%5Etfw">#opensource</a> rubric mentioned by @jflory7 at <a href="https://twitter.com/hashtag/CHAOSScon?src=hash&amp;ref_src=twsrc%5Etfw">#CHAOSScon</a> <a href="https://t.co/U2pIZsgrMz">https://t.co/U2pIZsgrMz</a><br><br>It helped me evaluate the last proposal we received at <a href="https://twitter.com/eLifeInnovation?ref_src=twsrc%5Etfw">@eLifeInnovation</a> 🙌🙌</p>&mdash; Emmy Tsang (@emmy_ft) <a href="https://twitter.com/emmy_ft/status/1223249000058540032?ref_src=twsrc%5Etfw">January 31, 2020</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>


<p>Hey, it&rsquo;s me!</p>
<p>My colleague <strong><a href="https://twitter.com/ceciliachapiro">Cecilia Chapiro</a></strong> proposed a session for CHAOSScon EU 2020 on how the <a href="https://unicefinnovationfund.org/">UNICEF Innovation Fund</a> evaluates the health and success of funded open source projects. However, due to travel complications, she was unable to attend. I presented her slides and work on her behalf at CHAOSScon EU 2020.</p>
<p>Many people were excited, if not also surprised, to hear that UNICEF funds humanitarian open source. In Cecilia&rsquo;s evaluation framework, there are two key areas: <strong>business sustainability indicators</strong> and <strong>technology indicators</strong>. There were good questions about how UNICEF measures on business sustainability. I hope to further explore GrimoireLab/Cauldron to better automate how we measure sustainability with industry-standard tools from the open source ecosystem.</p>
<p>I also gave a shout-out to <a href="https://fossrit.github.io/librecorps/">RIT LibreCorps</a> and the <a href="https://opensource.com/article/19/12/humanitarian-startups-open-source">resources we maintain</a> to help UNICEF and the Innovation Fund cohorts build and support sustainable open source projects.</p>
<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
      <iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube-nocookie.com/embed/t2Lyv6G_fvU?autoplay=0&amp;controls=1&amp;end=0&amp;loop=0&amp;mute=0&amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"></iframe>
    </div>


<h3 id="open-and-reproducible-research-with-community-driven-research-software-metrics">Open and Reproducible Research with Community-driven Research Software Metrics&nbsp;<a class="hanchor" href="#open-and-reproducible-research-with-community-driven-research-software-metrics" aria-label="Anchor link for: Open and Reproducible Research with Community-driven Research Software Metrics">🔗</a></h3>
<blockquote>
<p>What do artificial neural networks, images of the black hole, and SETI@home all have in common? They all trace their roots to research software. In this session, we hope to explore metrics and best practices for evaluating open research software. Research software engineers are evaluated largely based on the numbers of publications and citations. However, metrics based on the number of publications encourage re-creating ‘new’ things or re-implementations instead of reuse, and there are huge variations in existing practices to cite software, meaning software isn&rsquo;t always cited or citations aren’t always captured. Better metrics that reflect the health of research software is crucial to avoid gamification, incentivizing research software engineers to follow best software development practices by recognizing and rewarding their effort appropriately, and ultimately advancing open science and improving the reproducibility of research.</p>
<p><a href="https://chaoss.community/chaosscon-2020-eu/#user-content-yo-yehudi">Yo Yehudi</a></p>
</blockquote>

<p>Yo teamed up with <a href="https://twitter.com/emmy_ft">Emmy Tsang</a> and <a href="https://twitter.com/matkuzak">Mateusz Kuzak</a> to deliver this session. I appreciated the audience participation in the second half, which was a creative idea for a session later in the day. It helped revive the conference energy!</p>
<p>Yo and the team captured <a href="https://discourse.sustainoss.org/t/blog-post-that-mentions-sustain-summit-academic-session/286">excellent notes from their time across Brussels</a>, so look there for a deeper dive if this is interesting to you.</p>

<h3 id="diversity--inclusion-badging-program">Diversity &amp; Inclusion Badging Program&nbsp;<a class="hanchor" href="#diversity--inclusion-badging-program" aria-label="Anchor link for: Diversity &amp; Inclusion Badging Program">🔗</a></h3>
<blockquote>
<p>Within IT, open source software exhibits some of the worst D&amp;I. The open source survey run by GitHub states that only 3% of contributors to open source software are female (GitHub, 2017). While open source has made strides in some aspects of D&amp;I, such as event inclusivity (Irwin, 2017) and community engagement to support organizational diversity (Alexander, 2019), work remains. The proposed is aimed at contributing to this positive growth through the development of a D&amp;I badging system. In open source, badges are available for community leaders to publicly display, providing a way for projects to signal their attention to such things as community health and software security. We can draw from this badging work to improve D&amp;I in open source. In this talk, I will discuss complexities associated with D&amp;I metrics and propose a D&amp;I badging system that provides open source communities the ability to make diversity and inclusion within open source projects more transparent.</p>
<p><a href="https://chaoss.community/chaosscon-2020-eu/#user-content-matt-germonprez">Matt Germonprez</a></p>
</blockquote>

<p>First, I must pay my full respect and gratitude to Matt for digging into this topic. It is hard. It is tricky. Nobody I know of is working on this. So, my feedback comes from a place of love because this is an important topic to me too, and I appreciate Matt&rsquo;s work! <strong>Thank you Matt and the <a href="https://chaoss.community/diversity-and-inclusion/">CHAOSS D&amp;I Working Group</a></strong>.</p>

<h4 id="critique-is-a-badging-system-how-to-do-this"><em>Critique</em>: Is a badging system how to do this?&nbsp;<a class="hanchor" href="#critique-is-a-badging-system-how-to-do-this" aria-label="Anchor link for: Critique: Is a badging system how to do this?">🔗</a></h4>
<p>Matt presented a strategy to incentivize organizations and projects to follow best practices for diversity and inclusion (D&amp;I) through a badging system. Organizations embed a badge on their project website or README when following best practices. This provides an easy way for new contributors to understand if a project community is inclusive and values equality before contributing. Since best practices are defined not by a single organization, there is a way to measure if an organization is living up to their commitment to D&amp;I.</p>
<p>However, a badging system seems like a difficult way to practically measure an organization&rsquo;s commitment to D&amp;I. There is a risk for <strong>manipulating trust of the system</strong> at the expense of open source novices. Novices have the least context and direct experience to see through an unauthentic commitment. Also, <strong>ongoing compliance seems difficult to enforce over time</strong> with a badging system. Maybe initially an organization or project is &ldquo;checked off&rdquo; for D&amp;I best practices. But if project leadership or management changes, community culture can also shift. How do you account for change?</p>
<p>Instead of badges, perhaps a <strong>central, inter-organizational certification body</strong> makes more sense to achieve this goal. A certification body acts as a central authority for validating accountability. They also have an authority to assign (or revoke) public recognition of organizations and projects with authentic, ongoing commitments to diversity and inclusion.</p>
<p>There is potential here, but I don&rsquo;t think gamifying D&amp;I best practices with a badging system is the way. We need a long-term, <em><strong>human</strong></em>-centered process in evaluating D&amp;I. We need to build in human-centered evaluation as a &ldquo;feature&rdquo; to truly hold projects accountable to their commitments.</p>

<h4 id="addendum-events-and-inclusivity"><em>Addendum</em>: Events and inclusivity&nbsp;<a class="hanchor" href="#addendum-events-and-inclusivity" aria-label="Anchor link for: Addendum: Events and inclusivity">🔗</a></h4>
<p>There are a few things I&rsquo;m genuinely proud to have contributed to open source. Most of them aren&rsquo;t code. <strong>International candy swaps</strong> at conferences are one of those things.</p>
<blockquote class="twitter-tweet" data-dnt="true"><p lang="en" dir="ltr">Time for the international candy swap! There are so many things to love about <a href="https://twitter.com/hashtag/DevConf_CZ?src=hash&amp;ref_src=twsrc%5Etfw">#DevConf_CZ</a> but the geographic diversity of attendees might be my favorite part. Thank you for organizing, <a href="https://twitter.com/jonatoni?ref_src=twsrc%5Etfw">@jonatoni</a> &amp; @jflory7! <a href="https://t.co/rU1ETp5aTa">pic.twitter.com/rU1ETp5aTa</a></p>&mdash; Mary Thengvall (she/her); mary-grace.bsky.social (@mary_grace) <a href="https://twitter.com/mary_grace/status/1221075300584448000?ref_src=twsrc%5Etfw">January 25, 2020</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>


<blockquote>
<p>DevConf CZ 2020 candy swap, mentioned in a <a href="https://jwfblog.wpenginepowered.com/2020/02/devconf-cz-2020-play-by-play/">previous blog post</a></p>
</blockquote>
<p>Candy swaps are fun, informal events hosted during a conference. Attendees bring local candies, sweets, or snacks from their hometowns to the conference. For an hour or so, folks gather together to swap candies. Before sampling the sweets, everyone introduces themselves, where they are from, and anything special about what they brought with them. When everyone introduces themselves and their candies, the floor is open to sample from the collected assortment.</p>
<p>This is a fun and engaging way to get to know other attendees beyond the conference&rsquo;s context. Conferences collect people around a specific context: be it technology, metrics, design, engineering, or something else. But beyond that specific context, we are also people! We have families, we have friends, and we eat food. We have things we miss about home when we travel hundreds or even thousands of miles from home. Events like candy swaps help us connect to other people not just as conference attendees, but as people. You learn something new about each other, and if you&rsquo;re bold, you try something new too.</p>
<p>While it is not a metric in itself, it would be cool to see things like this included as practical examples of how to evaluate &ldquo;family friendliness&rdquo; or inclusivity at events.</p>

<h3 id="true-confessions-the-seven-deadly-sins-of-open-source-communities">True Confessions: The Seven Deadly Sins of Open Source Communities&nbsp;<a class="hanchor" href="#true-confessions-the-seven-deadly-sins-of-open-source-communities" aria-label="Anchor link for: True Confessions: The Seven Deadly Sins of Open Source Communities">🔗</a></h3>
<blockquote>
<p>This talk would take a humorous approach to explaining what really no one should do when managing and measuring open source community best practices, with the primary goal of instilling positive open source development practices to the audience. Such &ldquo;&ldquo;don&rsquo;ts&rdquo;&rdquo; include not documenting anything, establishing no clear paths to success, and not bothering to communicate.</p>
<p><a href="https://chaoss.community/chaosscon-2020-eu/#user-content-brian-proffitt">Brian Proffitt</a></p>
</blockquote>

<p>Brian explained what to avoid in building healthy open source communities. While I was already familiar with most of them, the most interesting &ldquo;sin&rdquo; for me was the last one: &ldquo;<em><strong>not seeing ourselves in others</strong></em>.&rdquo;</p>
<p>Brian offered mitigation strategies and metrics for the first six sins, but he acknowledged &ldquo;not seeing yourself in others&rdquo; is hard to mitigate and measure. However, I think things like candy swaps (explained above) are one possible way to do this. They connect us to others in an authentically human way, beyond the specific context of a conference we traveled for.</p>
<p>This is more challenging when interaction is virtual. Virtual systems often take away communication cues that make us human! I&rsquo;m still thinking on how to mitigate &ldquo;not seeing ourselves in others&rdquo; if interaction is mostly virtual. (For what it is worth, I don&rsquo;t think running open source project meetings in V.R. is the answer either.)</p>

<h2 id="beyond-chaosscon-eu-2020">Beyond CHAOSScon EU 2020&nbsp;<a class="hanchor" href="#beyond-chaosscon-eu-2020" aria-label="Anchor link for: Beyond CHAOSScon EU 2020">🔗</a></h2>
<p>An event report wouldn&rsquo;t be complete without mentioning the hallway track. It was great to see familiar faces and also meet new folks at CHAOSScon EU 2020.</p>
<p>I had a great lunch conversation with <a href="https://fsfe.org/about/albers/albers">Erik Albers</a> from Free Software Foundation Europe. It was cool to meet a facilitator of the <em><a href="https://publiccode.eu/">Public Money? Public Code!</a></em> campaign. Hopefully there are future opportunities to collaborate with <a href="https://fossrit.github.io/librecorps/">RIT LibreCorps</a> and <a href="https://fosdem.org/2020/schedule/event/ethical_ai/">AI freedoms</a>.</p>
<p>As always, face time with <a href="https://nolski.rocks/">Mike Nolan</a> and an OG mentor of mine, <a href="https://twitter.com/Remy_D">Remy DeCausemaker</a>, is appreciated and fulfilling. I wish I could get more of it around the year.</p>

<h2 id="thanks-folx">Thanks folx!&nbsp;<a class="hanchor" href="#thanks-folx" aria-label="Anchor link for: Thanks folx!">🔗</a></h2>
<p>To wrap up this CHAOSScon EU 2020 report, a few thank-yous are in order:</p>
<ul>
<li><strong><a href="https://twitter.com/ceciliachapiro">Cecilia Chapiro</a></strong>: Thanks for putting your work forward to the wider open source community!</li>
<li><strong><a href="https://www.rit.edu/computing/directory/sxjics-stephen-jacobs">Stephen Jacobs</a></strong>: For always being supportive for yet another trip abroad and helping me push my career forward in a number of ways (and footing the bill!)</li>
<li><strong><a href="https://nolski.rocks/">Mike Nolan</a></strong>: My co-conspirator, partner in FOSS, and comrade in arms</li>
</ul>
<p>I hope to continue conversations started here later into 2020 and keep talking with folks doing great things for the ecosystem. Until next time!</p>]]></description></item><item><title>Sustain OSS 2020: quick rewind</title><link>https://jwheel.org/blog/2020/02/sustain-oss-2020-quick-rewind/</link><pubDate>Thu, 20 Feb 2020 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2020/02/sustain-oss-2020-quick-rewind/</guid><description><![CDATA[<p>The <strong>2020 Sustain Open Source Summit</strong> took place on Thursday, 30 January, 2020 in Brussels, Belgium:</p>
<blockquote>
<p>Sustain Summit events are led by a facilitator. There are no keynotes, talks, or sponsor demos. Your undivided attention is required. Phones and laptops should not be used throughout the day and you will be asked to put devices away if they are a distraction to you or anyone else.</p>
<p>When we talk about sustainability, we are talking both and equally about the sustainability of resources and the sustainability of its people. We hope you can join us for the conversation.</p>
<p><a href="https://web.archive.org/web/20200218215832/https://sustainoss.org/summit-2020/">sustainoss.org/summit-2020/</a></p>
</blockquote>
<p>This is my second time attending Sustain OSS (see my <a href="https://jwfblog.wpenginepowered.com/2018/11/sustain-oss-2018-quick-rewind/">2018 event report</a>). I attended on behalf of <a href="https://fossrit.github.io/librecorps/">RIT LibreCorps</a> to represent the sustainability efforts at the <a href="https://fossrit.github.io/about/">RIT FOSS@MAGIC initiative</a>, but also to represent myself as an individual and sustainer in the open source movement. For Sustain OSS 2020, I arrived hoping to learn more about community-first governance models. I left with a lot of notes and the first blueprints for <em>Principles of Authentic Participation</em>.</p>
<p>Event reports take many forms. Since Sustain is structured in a unique format, my event report is structured as follows:</p>
<ul>
<li><strong>At a glance: structure and key takeaways</strong>: High-level overview of what the conference is like and the biggest ideas on my mind at the end of the day</li>
<li><strong>Community-first governance</strong>: I came ready to explore this idea, and had a unique conversation about citizen assemblies</li>
<li><strong>Principles of Authentic Participation</strong>: Impromptu session I facilitated, and thus spent most of my time focused on</li>
</ul>

<h2 id="at-a-glance-structure-and-key-takeaways">At a glance: structure and key takeaways&nbsp;<a class="hanchor" href="#at-a-glance-structure-and-key-takeaways" aria-label="Anchor link for: At a glance: structure and key takeaways">🔗</a></h2>
<p>If you&rsquo;re here for the quick overview, this is it.</p>
<p>I loved Sustain OSS 2020 because it is a unique collection of people from various backgrounds in the Free/Open Source movement. Both old and new folks, software engineers and designers, open source program office folks and the FOSS lawyers, all together in one room. Perhaps the best part for me is leaving with a sense of empowerment and connection to a bigger movement of people.</p>


<h3 id="speed-breakout-sessions">Speed breakout sessions&nbsp;<a class="hanchor" href="#speed-breakout-sessions" aria-label="Anchor link for: Speed breakout sessions">🔗</a></h3>
<p>The first half of Sustain 2020 started with speed breakout sessions led by many facilitators. There were around twelve small discussion groups focused on specific topics. You could spend 4-5 minutes at six topic groups. Choosing was hard! These speed sessions are primers on what to spend the second half of the day focused on, in a more detailed discussion.</p>
<p>I attended these sessions:</p>
<ol>
<li>Diversity and inclusion</li>
<li>Open source movement in Africa</li>
<li>Minimum Viable Product: Good governance models</li>
<li>Documentation</li>
<li>20 years of sustainability</li>
<li>Models for corporate accountability as open source community members / what does it mean to be a corporate member of open source communities?</li>
</ol>

<h3 id="key-takeaways">Key takeaways&nbsp;<a class="hanchor" href="#key-takeaways" aria-label="Anchor link for: Key takeaways">🔗</a></h3>
<p>I came up with four key takeaways from Sustain OSS 2020 as a whole (not including the detailed sections further below):</p>

<h4 id="inclusion-is-local">Inclusion is local&nbsp;<a class="hanchor" href="#inclusion-is-local" aria-label="Anchor link for: Inclusion is local">🔗</a></h4>
<p>When reaching out to new areas and demographics, include local community leaders. This is to say, if you are organizing communities in Asia or Africa, the success of your outreach campaign depends on your ability to enable and include existing community leaders in these regions. <strong>Local perspective is required</strong> for authentic grassroots success.</p>

<h4 id="rules-for-revising-rules">Rules for revising rules&nbsp;<a class="hanchor" href="#rules-for-revising-rules" aria-label="Anchor link for: Rules for revising rules">🔗</a></h4>
<p>When defining community governance or policy, expect change. So, <strong>include ways to change the rules later</strong> when the world changes around your governance or policy.</p>

<h4 id="generalists-transition-to-specialists">Generalists transition to specialists&nbsp;<a class="hanchor" href="#generalists-transition-to-specialists" aria-label="Anchor link for: Generalists transition to specialists">🔗</a></h4>
<p>In the early phases of an organization or project, community members are often generalists. Fewer people wear many &ldquo;hats.&rdquo; But context-switching has a cost. As the organization/project grows, defined roles become more important. Defined roles avoid everyone doing everything.</p>
<p>Designers focus first on design. Developers focus first on code. By specializing, you <strong>maximize the potentialities of what your team brings</strong> to the table.</p>

<h4 id="we-got-the-power"><a href="https://www.youtube.com/watch?v=HSivlaSVk1k">We got the power</a>&nbsp;<a class="hanchor" href="#we-got-the-power" aria-label="Anchor link for: We got the power">🔗</a></h4>
<p>There was a breakout group about ethics in Free Software. Two emerging themes were creating <strong>ethics review boards</strong> at organizations and the power of <strong>labor organizing</strong>. Some suggested normalizing ethics training in employee on-boarding.</p>
<p>Most notably, there was a highlighted need for safer spaces for labor organizing discussions. Labor organizing comes at a high personal cost for many.</p>

<h2 id="community-first-governance-models">Community-first governance models&nbsp;<a class="hanchor" href="#community-first-governance-models" aria-label="Anchor link for: Community-first governance models">🔗</a></h2>
<p>I came to Sustain OSS 2020 ready to explore community-first governance models. In December, I <a href="https://jwfblog.wpenginepowered.com/2019/12/why-foss-is-still-not-on-activist-agendas/">published a blog post</a> on why Free Software is still not on activists&rsquo; agendas. Free Software outreach often emphasizes technology, not people or ethics. We focus on technology so much, we forget why this movement began in the first place. So, in a world where corporate interests in a project often conflict with interests of grassroots communities, I wanted to know what &ldquo;community-first governance&rdquo; really means.</p>
<p>For context, I consult with humanitarian organizations and non-profits that want to build community around their open source projects. But from personal experience, I realize community stakeholders need input to decision-making if the community is going to stick around.</p>

<h3 id="citizen-assemblies-in-open-source">Citizen assemblies in open source?&nbsp;<a class="hanchor" href="#citizen-assemblies-in-open-source" aria-label="Anchor link for: Citizen assemblies in open source?">🔗</a></h3>
<p>While I didn&rsquo;t explore this in a session, I did have an interesting conversation with Xavier about <strong>citizen assemblies</strong> and how open source communities might be modeled after them. Xavier explained citizen assemblies to me as a form of hyper-local representation in policy-making in regional governments. For example, U.S. citizens are obligated to serve on jury duty, or a jury with your peers on a court hearing. Similarly for citizen assemblies, individuals are selected at random based on different demographic factors. Those selected serve a period of time on a local legislative body.</p>
<p>In open source projects divided across different contexts, think about the demographics represented in our communities. What might the demographic factors look like?</p>
<ul>
<li>In internationally-dispersed communities, it might be approximate region or nationality.</li>
<li>In corporate-focused projects, it might be diversity of employers.</li>
</ul>
<p>Citizen assemblies in open source could mean a group of contributors are selected at random to serve on the executive decision-making body of a community. The decision to serve is always optional. If a selected person declines, another person is selected.</p>
<p>I think this is a crafty way to address a cultural divide often present in Global South communities. Many contributors subconsciously look for an <strong>invitation to contribute</strong>. Being explicit by selecting an eligible, qualified candidate actively includes perspectives not commonly represented. It could also be a way to get around imposter syndrome and self-(non)selection in communities that use committee governance models.</p>
<p>I am still sitting with this idea. But I think Xavier&rsquo;s idea of applying citizen assemblies to open source communities is valid. I&rsquo;m interested in exploring what this model could look like in practice when the opportunity for experimentation presents itself.</p>

<h2 id="principles-of-authentic-participation">Principles of Authentic Participation&nbsp;<a class="hanchor" href="#principles-of-authentic-participation" aria-label="Anchor link for: Principles of Authentic Participation">🔗</a></h2>
<p>I attended a session about corporate accountability in open source contributions. It evolved into a longer discussion about Principles of Authentic Participation. This week, I <a href="https://discourse.sustainoss.org/t/principles-of-authentic-participation-continuing-the-sustain-conversation/284">launched a wider discussion</a> about this on the Sustain OSS Discourse forums, so instead of repeating myself in this post, read the Discourse thread and leave your thoughts there.</p>
<p>However, for the reader&rsquo;s convenience, the six principles we drafted are below:</p>

<h3 id="authentic-participation-starts-early">Authentic Participation Starts Early.&nbsp;<a class="hanchor" href="#authentic-participation-starts-early" aria-label="Anchor link for: Authentic Participation Starts Early.">🔗</a></h3>
<p>This came out of discussions about organizations showing up with mature, fully-baked contributions over which the community had no input.</p>

<h3 id="authentic-participation-puts-the-community-first">Authentic Participation Puts The Community First.&nbsp;<a class="hanchor" href="#authentic-participation-puts-the-community-first" aria-label="Anchor link for: Authentic Participation Puts The Community First.">🔗</a></h3>
<p>This reflected the general consensus that when an organization and the community want different things, the community needs to come first.</p>

<h3 id="authentic-participation-starts-with-listening">Authentic Participation Starts With Listening.&nbsp;<a class="hanchor" href="#authentic-participation-starts-with-listening" aria-label="Anchor link for: Authentic Participation Starts With Listening.">🔗</a></h3>
<p>This was <a href="https://www.linkedin.com/in/duaneobrien/">Duane</a>’s reflection of some comments about folks showing up to projects with no historical context and telling them everything they were doing wrong.</p>

<h3 id="authentic-participation-has-transparent-motivations">Authentic Participation Has Transparent Motivations.&nbsp;<a class="hanchor" href="#authentic-participation-has-transparent-motivations" aria-label="Anchor link for: Authentic Participation Has Transparent Motivations.">🔗</a></h3>
<p>Without a shared understanding of the motivations, it’s impossible to resolve differences of opinion effectively. No hidden motives.</p>

<h3 id="authentic-participation-enforces-respectful-behavior">Authentic Participation Enforces Respectful Behavior.&nbsp;<a class="hanchor" href="#authentic-participation-enforces-respectful-behavior" aria-label="Anchor link for: Authentic Participation Enforces Respectful Behavior.">🔗</a></h3>
<p>This is about organizations taking responsibility for the behavior of their representatives.</p>

<h3 id="authentic-participation-ends-gracefully">Authentic Participation Ends Gracefully.&nbsp;<a class="hanchor" href="#authentic-participation-ends-gracefully" aria-label="Anchor link for: Authentic Participation Ends Gracefully.">🔗</a></h3>
<p>No sudden withdrawal of resources without notification and an exit plan. Clear documentation that would allow the community to pick up projects when a company decides to withdraw support.</p>

<h2 id="thanks-folx">Thanks folx!&nbsp;<a class="hanchor" href="#thanks-folx" aria-label="Anchor link for: Thanks folx!">🔗</a></h2>
<p>To wrap up this Sustain OSS report, a few thank-yous are in order:</p>
<ul>
<li><strong><a href="https://www.rit.edu/computing/directory/sxjics-stephen-jacobs">Stephen Jacobs</a></strong>: For always being supportive for yet another trip abroad and helping me push my career forward in a number of ways (and footing the bill!)</li>
<li><strong><a href="https://nolski.rocks/">Mike Nolan</a></strong>: My co-conspirator, partner in FOSS, and comrade in arms</li>
<li><strong>The <em>Principles of Authentic Participation</em> group</strong>: I didn&rsquo;t plan to facilitate at Sustain and I was nervous about it, but you all were wonderful. We had a fruitful discussion and I&rsquo;m looking forward to the follow-up.</li>
</ul>
<p>Sustain OSS 2020 continues to give me a lot to think about and consider. I’m fortunate to have attended. I hope this event report gives additional visibility to some of the conversations held in Brussels this year.</p>]]></description></item><item><title>DevConf CZ 2020: play by play</title><link>https://jwheel.org/blog/2020/02/devconf-cz-2020-play-by-play/</link><pubDate>Thu, 13 Feb 2020 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2020/02/devconf-cz-2020-play-by-play/</guid><description><![CDATA[<p>DevConf CZ 2020 took place from Friday, January 24th to Sunday January 27th in Brno, Czech Republic:</p>
<blockquote>
<p>DevConf.CZ 2020 is the 12th annual, free, Red Hat sponsored community conference for developers, admins, DevOps engineers, testers, documentation writers and other contributors to open source technologies. The conference includes topics on Linux, Middleware, Virtualization, Storage, Cloud and mobile. At DevConf.CZ, FLOSS communities sync, share, and hack on upstream projects together in the beautiful city of Brno, Czech Republic.</p>
<p><a href="https://www.devconf.info/cz/">devconf.info/cz/</a></p>
</blockquote>
<p>This is my third time attending DevConf CZ. I attended on behalf of <a href="https://fossrit.github.io/librecorps/">RIT LibreCorps</a> for professional development, before a week of work-related travel. DevConf CZ is also a great opportunity to meet friends and colleagues from across time zones. This year, I arrived hoping to better understand the future of Red Hat&rsquo;s technology, see how others are approaching complex problems in emerging technology and open source, and of course, to have yummy candy.</p>

<h2 id="sessions-play-by-play">Sessions: Play-by-play&nbsp;<a class="hanchor" href="#sessions-play-by-play" aria-label="Anchor link for: Sessions: Play-by-play">🔗</a></h2>
<p>Event reports take many forms. My form is an expanded version of my session notes along with key takeaways. Said another way, my event report is biased towards what is interesting to me. You can also skim the headings to find what interests you.</p>

<h3 id="diversity-and-inclusion-meet-up">Diversity and inclusion meet-up&nbsp;<a class="hanchor" href="#diversity-and-inclusion-meet-up" aria-label="Anchor link for: Diversity and inclusion meet-up">🔗</a></h3>
<blockquote>
<p>Would you like to meet other attendees who stand under the umbrella of &ldquo;Diversity and Inclusion&rdquo; or would you like a introduction into what Diversity and inclusion is and why it&rsquo;s a good thing? this is the session for you! All are welcome!</p>
<p><a href="https://devconfcz2020a.sched.com/event/YS2w/diversity-and-inclusion-meet-up">Imo Flood-Murphy</a></p>
</blockquote>
<p>This was a short, informal session ran by Imo to network and get a high-level introduction to diversity and inclusion in open source. Everyone in the room introduced themselves and gave a short explanation of who they were or what projects they represent. I appreciated the opportunity to meet others and better understand how Red Hat approaches diversity and inclusion.</p>
<p>A suggestion for next time is to allow more unstructured time for conversations. I think fun icebreakers get folks comfortable in a short amount of time to help make connections for the rest of the weekend.</p>

<h3 id="lessons-learned-from-testing-over-200000-lines-of-infrastructure-code">Lessons learned from testing over 200,000 lines of Infrastructure Code&nbsp;<a class="hanchor" href="#lessons-learned-from-testing-over-200000-lines-of-infrastructure-code" aria-label="Anchor link for: Lessons learned from testing over 200,000 lines of Infrastructure Code">🔗</a></h3>
<blockquote>
<p>If we are talking that infrastructure is code, then we should reuse practices from development for infrastructure, i.e.</p>
<p>1. S.O.L.I.D. for Ansible.</p>
<p>2.Pair devops-ing as part of XP practices.</p>
<p>3. Infrastructure Testing Pyramid: static/unit/integration/e2e tests.</p>
<p><a href="https://devconfcz2020a.sched.com/event/YS73/lessons-learned-from-testing-over-200000-lines-of-infrastructure-code">Lev Goncharov</a></p>
</blockquote>
<p>Lev shared best practices on building sustainable, tested infrastructure. Infrastructure-as-Code (IaC) was important to how T-Systems scaled their infrastructure over time.</p>
<p>My key takeaways:</p>
<ol>
<li>Smaller components:
<ol>
<li>More sustainable</li>
<li>Easier to maintain</li>
<li>Easier to test</li>
</ol>
</li>
<li>Ansible Roles encourage best use practices for Ansible</li>
<li>Spreading knowledge is essential (if nobody understands it, the code is broken)</li>
<li>Code review creates accountability</li>
<li>Use static analysis tools (<a href="https://github.com/koalaman/shellcheck">Shellcheck</a>, <a href="https://www.pylint.org/">Pylint</a>, <a href="https://docs.ansible.com/ansible-lint/">Ansible Lint</a>)</li>
<li>Write unit tests (<a href="https://github.com/kward/shunit2">shUnit2</a>, <a href="https://rspec.info/">Rspec</a>, <a href="https://docs.pytest.org/en/latest/">Pytest</a>, <a href="https://testinfra.readthedocs.io/en/latest/">Testinfra</a>, <a href="https://molecule.readthedocs.io/en/latest/">Ansible Molecule</a>)</li>
</ol>

<h3 id="content-as-code-technical-writers-as-developers">Content as code, technical writers as developers&nbsp;<a class="hanchor" href="#content-as-code-technical-writers-as-developers" aria-label="Anchor link for: Content as code, technical writers as developers">🔗</a></h3>
<blockquote>
<p>In the open-source project <a href="http://kyma-project.io">Kyma</a>, documentation is an integral part of code delivery. We, the project&rsquo;s Information Developers, believe that using the same tools and methodology as your good old code developers, we can create comprehensive and accurate documentation. During our talk, we’ll share the whys and hows of our approach, showing you that the &ldquo;developer&rdquo; in &ldquo;Information Developer&rdquo; isn&rsquo;t there just because it sounds cool. We&rsquo;ll prove that creating documentation goes beyond linguistic shenanigans and salvaging whatever information there is from a trainwreck that is the developer&rsquo;s notes. Testing solutions, finding our way around Kubernetes, tweaking the website, engaging with the community are just a few examples of what keeps us busy every day.</p>
<p><a href="https://devconfcz2020a.sched.com/event/YOvj/content-as-code-technical-writers-as-developers">Barbara Czyz, Tomasz Papiernik</a></p>
</blockquote>
<p>&ldquo;Information Developers&rdquo; is a cool phrase I learned. Barbara and Tomasz explained the value of technical writing and asserted documentation should live close to project code.</p>
<p>My key takeaways:</p>
<ol>
<li>Documenting processes like release notes enables others to join with less barriers</li>
<li><strong>Docs-as-Code (DaC)</strong>: Visibility of docs across development process is important
<ol>
<li>Placing docs with code encourages feedback loops and avoids silos</li>
</ol>
</li>
<li>Put links to docs in visible places (e.g. API messages, console messages)</li>
<li>Management aside: Emphasize/incentivize value of technical writing in your team</li>
<li>Remember bridges across skill areas is possible (technical writers can also be community-oriented people too)</li>
</ol>

<h3 id="uncharted-waters-documenting-emerging-technology">Uncharted waters: Documenting emerging technology&nbsp;<a class="hanchor" href="#uncharted-waters-documenting-emerging-technology" aria-label="Anchor link for: Uncharted waters: Documenting emerging technology">🔗</a></h3>
<blockquote>
<p>We can&rsquo;t help but feel the lure towards the hot new thing, especially when it comes to technology. Part of that lure is the breaking of ground, venturing into the unknown, and working on solutions to new problems. But a lot of the same things that make emerging technology fun and exciting to work on are exactly why it can be difficult to document. These challenges are quite different to those associated with mature products.</p>
<p>This talk is for anyone working on new products and emerging technology, or just interested in learning about fast-moving documentation. It is for the developer as much as it is for the writer, since it usually falls to them to write the early docs before a writer is added to the team.</p>
<p><a href="https://devconfcz2020a.sched.com/event/YOyU/uncharted-waters-documenting-emerging-technology">Andrew Burden</a></p>
</blockquote>
<p>This was the talk I didn&rsquo;t know I <strong><em>needed</em></strong> to go to.</p>
<p>Lately I work with &ldquo;emerging technology,&rdquo; which means different things to different people. Regardless of what emerging tech means to you, Andrew focused on how to write documentation in a fast-paced environment with &ldquo;pre-release&rdquo; technology, where things change fast and suddenly. Normally this is an excuse to <em>not</em> write docs, but Andrew showed, <em>yes</em>! It is possible to write good docs, even when context changes fast and often.</p>

<h4 id="key-considerations-of-fast-paced-technical-writers">Key considerations of fast-paced technical writers&nbsp;<a class="hanchor" href="#key-considerations-of-fast-paced-technical-writers" aria-label="Anchor link for: Key considerations of fast-paced technical writers">🔗</a></h4>
<p>An even balance of these considerations helps get into a user&rsquo;s mindset:</p>
<ol>
<li>Scope / scale of release</li>
<li>Release schedule</li>
<li>Developer meetings / face-time</li>
<li>Exposure with <code>$TECHNOLOGY</code></li>
<li>Deployment experience with <code>$TECHNOLOGY</code></li>
</ol>

<h4 id="surviving-the-information-wall">Surviving the information wall&nbsp;<a class="hanchor" href="#surviving-the-information-wall" aria-label="Anchor link for: Surviving the information wall">🔗</a></h4>
<p>The &ldquo;information wall&rdquo; is the endless wall of information and things to know about a project. If information is endless, how do technical writers survive?</p>
<ul>
<li>Take notes: Be like a scientist</li>
<li>Take notes about your notes</li>
<li>Be organized with your notes</li>
</ul>
<p>Obviously Andrew was getting at the value of note-taking. Practicing note-taking skills is critical to keep up with the pace of change.</p>

<h4 id="multi-version-syndrome">&ldquo;Multi-Version Syndrome&rdquo;&nbsp;<a class="hanchor" href="#multi-version-syndrome" aria-label="Anchor link for: &ldquo;Multi-Version Syndrome&rdquo;">🔗</a></h4>
<p>Sometimes you are writing features for things that will not be released in the next release. There is a risk of losing information across multiple releases (e.g. publishing the wrong thing too soon, or the right thing too late). Clarify the release schedule as you go. A good safeguard against losing information is to rigorously understand release cycle cadence and priority.</p>
<p>If your product isn&rsquo;t mature yet, anticipate change instead of avoiding it.</p>

<h4 id="access-to-technology-is-critical">Access to technology is critical&nbsp;<a class="hanchor" href="#access-to-technology-is-critical" aria-label="Anchor link for: Access to technology is critical">🔗</a></h4>
<p>Technical writers are often User 0. To understand the technology, you need access. There are interactive and non-interactive ways of getting access. Interactive ways are preferred because they are always reproducible.</p>
<ul>
<li>Interactive
<ul>
<li>Deploy your own</li>
<li>Get someone else to deploy it for you (but lose install context)</li>
</ul>
</li>
<li>Non-interactive
<ul>
<li>Live demos</li>
<li>Demo videos</li>
<li><a href="https://asciinema.org/">Asciicinema</a> (CLI-oriented)</li>
</ul>
</li>
</ul>

<h4 id="other-takeaways">Other takeaways&nbsp;<a class="hanchor" href="#other-takeaways" aria-label="Anchor link for: Other takeaways">🔗</a></h4>
<ul>
<li>Screenshots have high maintainability cost; avoid if possible
<ul>
<li>Sometimes good stop-gaps until something more maintainable</li>
</ul>
</li>
<li>Where to begin? Make a table-of-contents for the Minimum Viable Product
<ul>
<li>Never underestimate outlines (<em>ahem, like how I wrote this blog post…</em>)</li>
</ul>
</li>
<li>Avoid documentation scramble near release day:
<ul>
<li>Make lists / check-lists</li>
<li>Take more notes</li>
<li>Pre-release checklist</li>
<li>Think now, and for the future</li>
</ul>
</li>
<li>Audit your docs: On-boarding new people is a powerful opportunity to test out your docs</li>
</ul>
<p>Thanks Andrew for a deep dive on this narrow but important topic.</p>

<h3 id="community-management-not-less-than-a-curry">Community management: not less than a curry&nbsp;<a class="hanchor" href="#community-management-not-less-than-a-curry" aria-label="Anchor link for: Community management: not less than a curry">🔗</a></h3>
<blockquote>
<p>Every volunteer joins an Open Source community for a reason. The reasons could range from technical gains to finding his/her/their passion. This community of diverse volunteers require a leader who can not just mentor them with their interests but also a manager managing the community activities in terms of community engagement and planning. A community manager is not less than a candle of light and in this presentation, I would be highlighting my learnings and experiences about starting a community from scratch around a project and maintaining a healthy community management practices.</p>
<p><a href="https://devconfcz2020a.sched.com/event/YOpX/community-management-not-less-than-a-curry">Prathamesh Chavan</a></p>
</blockquote>
<p>Prathamesh designed an activity to help the audience understand community management. My key takeaway was community management is about connecting and understanding others as their authentic self.</p>
<p>In the activity, Prathamesh passed papers and pens to the audience. His session had three steps. Between each step, all attendees traded papers with another attendee:</p>
<ol>
<li>Define a project idea (why, how, what)</li>
<li>Identify challenges to idea (i.e. questions)</li>
<li>Answer challenges</li>
</ol>
<p>It reminded me of a similar workshop I attended before. This inspired me to work on <a href="https://github.com/justwheel/logbook/blob/master/notes/identity/question-burst-better-questioners.adoc">my own workshop idea</a> for a future conference.</p>

<h3 id="cognitive-biases-blind-spots-and-inclusion">Cognitive biases, blind spots, and inclusion&nbsp;<a class="hanchor" href="#cognitive-biases-blind-spots-and-inclusion" aria-label="Anchor link for: Cognitive biases, blind spots, and inclusion">🔗</a></h3>
<blockquote>
<p>Open source thrives on diversity. The last couple of years has seen huge strides in that aspect with codes of conduct and initiatives like the Contributor Covenant. While these advancements are crucial, they are not enough. In order to truly be inclusive, it’s not enough for the community members to be welcoming and unbiased, the communities’ processes and procedures really support inclusiveness by not only making marginalized members welcome, but allowing them to fully participate.</p>
<p><a href="https://devconfcz2020a.sched.com/event/YOoH/cognitive-biases-blindspots-and-inclusion">Allon Mureinik</a></p>
</blockquote>
<p>Allon recognizes the importance of diversity, but asking for improved diversity is one side of the coin. A friend recently shared a powerful quote with me: &ldquo;If diversity is being invited to the party, inclusion is being invited <em>to</em> dance.&rdquo; Allon&rsquo;s message was to dig deeper on including marginalized people in our project communities.</p>
<p>He identified ways we accidentally make our communities less inclusive because of our cognitive/unconscious biases. Everyone has blind spots! Allon suggested ways to be more conscious about inclusion in open source:</p>
<ul>
<li><strong>Knowledge barriers</strong>
<ul>
<li>Procedural knowledge, not just technical
<ul>
<li>How do you submit code? File a bug? Make meaningful contributions? These need to be documented</li>
</ul>
</li>
<li>Documentation fosters inclusivity</li>
</ul>
</li>
<li><strong>Language barriers</strong>
<ul>
<li>Working proficiency in English not universal</li>
<li>Conversations have extra barriers (e.g. communicating complex ideas, understanding advanced words)</li>
</ul>
</li>
<li><strong>Time barriers</strong>
<ul>
<li>Work schedules no longer 9 to 5</li>
<li>Remember other folks in different time zones</li>
<li>On giving feedback: Fast is not a metric! Be smart
<ul>
<li>Merging PRs while others are away, or shortly after opening it</li>
<li>Allow time for input on non-trivial changes</li>
</ul>
</li>
</ul>
</li>
<li><strong>Transparency barriers</strong>
<ul>
<li>If not in the open, it didn&rsquo;t open</li>
<li>Negative example: Contributor makes a PR, reviewer has face-to-face conversation with contributor, reviewer merges PR without public context</li>
<li>Default to open: in many ways
<ul>
<li>If you can&rsquo;t be open, at least be transparent</li>
</ul>
</li>
</ul>
</li>
</ul>

<h3 id="diversity-in-open-source-show-me-the-data">Diversity in open source: show me the data!&nbsp;<a class="hanchor" href="#diversity-in-open-source-show-me-the-data" aria-label="Anchor link for: Diversity in open source: show me the data!">🔗</a></h3>
<blockquote>
<p>How diverse is your work environment? Diverse communities are more effective, they allow us to share the strengths of the individuals who make up the community. Have you ever looked around and noticed that most of our Open Source communities are predominantly male? Why do you think that is? We’ll use gender diversity as a case study and share some intriguing data points. Let us convince you why it’s so important.</p>
<p>Regardless of your gender, we would love for you to join us! We will also give you some tips on how you can make a difference.</p>
<p><a href="https://devconfcz2020a.sched.com/event/YOtn/diversity-in-opensource-show-me-the-data">Serena Chechile Nichols, Denise Dumas</a></p>
</blockquote>
<p>Serena and Denise divided the talk into two sections: metrics and action. The way they presented, they brought the audience on the same page by visiting a variety of metrics and then transitioned to an empowering discussion about changing trends we see.</p>
<p>Next time, I hope to see expanded messaging by defining diversity beyond only women. Diversity was frequently tied to gender participation metrics in open source. While women are underrepresented, there are additional aspects of identity that can compound discrimination. Race, socioeconomic status, nationality, sexual orientation, and more also play a part in understanding challenges collectively faced in inclusion work.</p>

<h4 id="the-data">The data&nbsp;<a class="hanchor" href="#the-data" aria-label="Anchor link for: The data">🔗</a></h4>
<ul>
<li><strong>Gender differences by # of contributors</strong>:
<ul>
<li>GSoC 2018: 11.6% female-identifying contributors</li>
<li>OpenStack: 10.4% female-identifying contributors</li>
<li>Linux kernel: 9.9% female-identifying contributors</li>
</ul>
</li>
<li><strong>U.S. Dept. of Labor: 22.2% of technical roles filled by women</strong>
<ul>
<li>2014-2019: More women entering tech jobs at companies like Apple, Microsoft, Google, etc.</li>
</ul>
</li>
<li><strong>Years of experience by gender (&lt;9 years)</strong>:
<ul>
<li>66.2% female</li>
<li>52.9% non-binary/queer</li>
<li>50.1% male</li>
</ul>
</li>
<li><strong>GitHub user and developer survey</strong>:
<ul>
<li>95% male</li>
<li>3% female</li>
<li>1% non-binary</li>
</ul>
</li>
</ul>

<h4 id="lets-make-things-better">Let&rsquo;s make things better&nbsp;<a class="hanchor" href="#lets-make-things-better" aria-label="Anchor link for: Let&rsquo;s make things better">🔗</a></h4>
<p>Serena and Denise asserted diversity creates change. All changes come with challenges. Diversity can increase the friction in the process, but that is okay. They emphasized the need for multiple perspectives see past our initial biases (conveniently covered by Allon in the previous talk).</p>
<p>This transitioned to questions, comments, and thoughts from the audience. One interesting point was using the phrase, &ldquo;<a href="http://www.thagomizer.com/blog/2017/09/29/we-don-t-do-that-here.html">we don&rsquo;t do that here</a>&rdquo; to create and set norms. I gave a suggestion to look at projects you already participate in and see if there is a diversity and inclusion effort there already. If there is, see if there are ways to help and get involved. If not, consider starting one (or network with the <a href="https://discourse.opensourcediversity.org/">Open Source Diversity community</a>).</p>
<p>To wrap up, one recurring theme of Serena and Denise&rsquo;s talk is to make time to step back and evaluate the bigger picture. Questioning our biases is an important skill to practice. We need the space and time to recompute!</p>

<h3 id="candy-swap">Candy Swap&nbsp;<a class="hanchor" href="#candy-swap" aria-label="Anchor link for: Candy Swap">🔗</a></h3>
<blockquote>
<p>Do you have a unique sweet dessert or candy from your country or hometown? Do you love to try new and exciting foods from around the world? Spend an hour with fellows as we share stories and candies from the world with each other. Participants are invited to bring a unique confectionary or candy from their country or city to share with multiple other people. Before going around to try yummy things, all participants explain what item they bring and any story about its origins or where it is normally used. After sharing, everyone who brought something rotates around to try candies brought by others. After all participants have had a chance to sample, the rest of the community is invited to come and try anything remaining.</p>
<p><a href="https://devconfcz2020a.sched.com/event/YS6U/candy-swap">Jona Azizaj, Justin Wheeler</a></p>
</blockquote>
<p>I <em>am</em> biased when I say this is one of my favorite parts of conferences I go to. Jona originally proposed the candy swap for DevConf CZ. After unexpectedly adding DevConf CZ to my travel list for 2020, we teamed up to share the sweet tradition from Fedora Flock to DevConf CZ! This is one of my favorite conference traditions because I get to know other attendees in a context outside of technology. And food is always an easy way to win me over.</p>
<p>Instead of listening to me, see what other people have to say about it:</p>
<blockquote class="twitter-tweet" data-dnt="true"><p lang="en" dir="ltr">Time for the international candy swap! There are so many things to love about <a href="https://twitter.com/hashtag/DevConf_CZ?src=hash&amp;ref_src=twsrc%5Etfw">#DevConf_CZ</a> but the geographic diversity of attendees might be my favorite part. Thank you for organizing, <a href="https://twitter.com/jonatoni?ref_src=twsrc%5Etfw">@jonatoni</a> &amp; @jflory7! <a href="https://t.co/rU1ETp5aTa">pic.twitter.com/rU1ETp5aTa</a></p>&mdash; Mary Thengvall (she/her); mary-grace.bsky.social (@mary_grace) <a href="https://twitter.com/mary_grace/status/1221075300584448000?ref_src=twsrc%5Etfw">January 25, 2020</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>


<blockquote class="twitter-tweet" data-dnt="true"><p lang="en" dir="ltr">The &quot;sweetest&quot; activity of <a href="https://twitter.com/hashtag/devconf_cz?src=hash&amp;ref_src=twsrc%5Etfw">#devconf_cz</a>: Today at 3 PM! 🍬🍫<br>Join Candy Swap, share candies, sweets and stories with others from around the world! <a href="https://t.co/OlfdmgGa3a">https://t.co/OlfdmgGa3a</a> <a href="https://t.co/Jnlqi3lsaq">pic.twitter.com/Jnlqi3lsaq</a></p>&mdash; DevConf.CZ (@devconf_cz) <a href="https://twitter.com/devconf_cz/status/1221026710969298947?ref_src=twsrc%5Etfw">January 25, 2020</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>


<blockquote class="twitter-tweet" data-dnt="true"><p lang="en" dir="ltr">Candy Swap time at <a href="https://twitter.com/hashtag/DevConf_CZ?src=hash&amp;ref_src=twsrc%5Etfw">#DevConf_CZ</a> 😍 <a href="https://t.co/zFCNnXZoJf">pic.twitter.com/zFCNnXZoJf</a></p>&mdash; Jona Azizaj👩🏻‍💻 🥑 @jonatoni@mastodon.social (@jonatoni) <a href="https://twitter.com/jonatoni/status/1221076375081062400?ref_src=twsrc%5Etfw">January 25, 2020</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>


<blockquote class="twitter-tweet" data-dnt="true"><p lang="en" dir="ltr">Well I experienced this for the <a href="https://twitter.com/hashtag/Flock?src=hash&amp;ref_src=twsrc%5Etfw">#Flock</a> 2019. It&#39;s a great opportunity to know the tastebuds of diverse people and enjoy! :D</p>&mdash; Aal (Alisha)🌻 (@withloveaal) <a href="https://twitter.com/withloveaal/status/1221366223381778434?ref_src=twsrc%5Etfw">January 26, 2020</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>



<h3 id="from-outreachy-to-cancer-research">From Outreachy to cancer research&nbsp;<a class="hanchor" href="#from-outreachy-to-cancer-research" aria-label="Anchor link for: From Outreachy to cancer research">🔗</a></h3>
<blockquote>
<p>Outreachy program is helping women and other underrepresented people to make first steps in tech career. Picking a project, making first open source contributions, working on assigned project and learning from advanced people. But what happens when this three months are over? Can Outreachy be a lifechanging experience?</p>
<p>I will share my story of conversion from a chemist and full time parent into a Fedora Outreachy intern and how I found my place as a junior software developer in cancer genomics research at IRB Barcelona.</p>
<p><a href="https://devconfcz2020a.sched.com/event/YOwh/from-outreachy-to-cancer-research">Lenka Segura</a></p>
</blockquote>
<p>This was a favorite of the weekend. &ldquo;Fedora Outreachy intern Lenka Segura on how Outreachy opened the door for her career to cancer research at IRB Barcelona!&rdquo;</p>
<p>I put effort into live-tweeting a Twitter thread. Get the full scoop there!</p>


<h3 id="connect-and-grow-your-community-through-meetups">Connect and grow your community through meetups&nbsp;<a class="hanchor" href="#connect-and-grow-your-community-through-meetups" aria-label="Anchor link for: Connect and grow your community through meetups">🔗</a></h3>
<blockquote>
<p>Open source communities collaborate in a multitude of ways - chatting on irc, submitting issues and contributing code on GitHub, discussing and sharing ideas on reddit and other social channels. Face to face gatherings add another dimension to that, where community members can learn and share their experiences. Local meetups provide a venue for people with similar interests to socialize and connect. However, organizing meetups is not trivial. How do we encourage and motivate the community to arrange meetups, and to keep the momentum? In my one year with the Ansible community, we have doubled the number of active meetups in Europe. These meetups are community driven, rather than Red Hat. Find out how we use metrics to analyze the situation and needs, and the steps we are taking to reach our goals of connecting with even more community members. Learn from our mistakes and challenges (100 RSVPs and only 20 turned up?), plus some tips to make your meetups more inclusive.</p>
<p><a href="https://devconfcz2020a.sched.com/event/YOr2/connect-and-grow-your-community-through-meetups">Carol Chen</a></p>
</blockquote>
<p>Carol explained the role of local meet-ups around the world in building communities around software projects. She emphasized that single metrics are not always useful, so it is more helpful to evaluate on multiple areas. The most useful takeaway for me was the 5 W&rsquo;s: why, who, what, when, where.</p>
<ul>
<li><strong>Why?</strong> Common curiosity (noticing something new in your community)</li>
<li><strong>Who?</strong> Connections and networking</li>
<li><strong>What?</strong> Concise, compelling content
<ul>
<li>Consider venue travel (how to make it worth their while?)</li>
<li>Provide alternatives to git-based submissions</li>
<li>All talks don&rsquo;t have to be technical! Diversify to appeal to wider audiences
<ul>
<li>Announcements for future events, work-life talks</li>
<li>We are more than just the technology we work with</li>
</ul>
</li>
</ul>
</li>
<li><strong>When?</strong> Consistency
<ul>
<li>Helps with venue scheduling</li>
<li>Helps retain attendee focus and build habits</li>
</ul>
</li>
</ul>
<p>Carol also gave suggestions for common points to think about for improved inclusion. All of these need active, not passive inclusion.</p>
<ul>
<li>Special needs / disabilities</li>
<li>Food allergies</li>
<li>Beverage preference (often alcohol/non-alcoholic)</li>
<li>Language</li>
<li>Traffic-light communication stickers</li>
<li>Photography lanyards</li>
<li>Gender pronouns</li>
</ul>

<h2 id="beyond-devconf-cz">Beyond DevConf CZ&nbsp;<a class="hanchor" href="#beyond-devconf-cz" aria-label="Anchor link for: Beyond DevConf CZ">🔗</a></h2>
<p>While the sessions are excellent and fulfilling (and sometimes frustrating when you miss a good talk with a full room), DevConf is also more than the sessions. It&rsquo;s also the people and conversations that happen in the &ldquo;hallway track.&rdquo; It was nice to see many old friends and make new ones.</p>
<p>I spent a few extra days before and after DevConf CZ in Brno. In some of that time, my colleague <a href="https://nolski.rocks/">Mike Nolan</a> and I rehearsed in-person for our FOSDEM talk the following weekend (to come in a future blog post). I also enjoyed coffee and waffles with Marie, Sumantro, and Misc!</p>
<p>
<figure>
  <img src="/blog/2020/02/IMG_20200124_212601881_HDR-scaled.jpg" alt="" loading="lazy">
</figure>
</p>
<p>
<figure>
  <img src="/blog/2020/02/IMG_20200124_212616232-rotated.jpg" alt="" loading="lazy">
</figure>
</p>
<p>
<figure>
  <img src="/blog/2020/02/IMG_20200129_105148632_HDR-scaled.jpg" alt="" loading="lazy">
</figure>
</p>
<p>
<figure>
  <img src="/blog/2020/02/IMG_20200129_124253219.jpg" alt="" loading="lazy">
</figure>
</p>
<blockquote>
<p>A few memories of a great week in Brno</p>
</blockquote>

<h2 id="until-next-time">Until next time!&nbsp;<a class="hanchor" href="#until-next-time" aria-label="Anchor link for: Until next time!">🔗</a></h2>
<p>I learn a lot and have a lot of fun at DevConf CZ. I&rsquo;m happy to return for a third year. Hats-off to the organizers and volunteers who pulled it all off. Each year, DevConf gradually makes improvements. It&rsquo;s nice to see inclusion prioritized across the board.</p>
<p>Thanks also goes out to <a href="https://fossrit.github.io/librecorps/">RIT LibreCorps</a> for sponsoring my trip. Extra thanks to Jona Azizaj!</p>]]></description></item><item><title>Maladjusted</title><link>https://jwheel.org/blog/2019/12/maladjusted/</link><pubDate>Tue, 17 Dec 2019 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2019/12/maladjusted/</guid><description><![CDATA[<p>— <a href="https://en.wikipedia.org/wiki/Martin_Luther_King_Jr.">Dr. Martin Luther King Jr.</a> (1967)</p>
<blockquote class="twitter-tweet" data-dnt="true"><p lang="en" dir="ltr">I never intend to adjust myself to injustice. <br><br>“I’m proud to be maladjusted.” <a href="https://t.co/TFBiWBy6Xc">https://t.co/TFBiWBy6Xc</a></p>&mdash; Be A King (@BerniceKing) <a href="https://twitter.com/BerniceKing/status/1205164478003855361?ref_src=twsrc%5Etfw">December 12, 2019</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>


]]></description></item><item><title>Why FOSS is still not on activist agendas</title><link>https://jwheel.org/blog/2019/12/why-foss-is-still-not-on-activist-agendas/</link><pubDate>Fri, 13 Dec 2019 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2019/12/why-foss-is-still-not-on-activist-agendas/</guid><description><![CDATA[<p>On December 13th, 2006, author <a href="https://en.wikipedia.org/wiki/Bruce_Byfield">Bruce Byfield</a> reflected on why he thought Free and Open Source Software (F.O.S.S.) was <a href="https://web.archive.org/web/20191130172436/https://www.linux.com/news/why-foss-isnt-activist-agendas/">not on activist agendas</a>. My interpretation of his views are that a knowledge barrier about technology makes FOSS less accessible, the insular nature of activism makes collaboration difficult, and FOSS activists reaching out to other activists with shared values should be encouraged. On December 13th, 2019, is FOSS on activist agendas? The answer is not black or white, but a gray somewhere in the middle. This is my response to Byfield&rsquo;s article, thirteen years later, on what he got right but also what he left out.</p>

<h2 id="where-byfield-was-accurate">Where Byfield was accurate&nbsp;<a class="hanchor" href="#where-byfield-was-accurate" aria-label="Anchor link for: Where Byfield was accurate">🔗</a></h2>
<p>While I don&rsquo;t agree with all of Byfield&rsquo;s sentiments, he identified some key challenges that still hold truth today: <strong>a predisposition to focus on differences and not similarities, an outreach approach centered on ethics and not software, and the importance of opportunities for intersectional interaction</strong>.</p>

<h3 id="predisposition-towards-difference">Predisposition towards difference&nbsp;<a class="hanchor" href="#predisposition-towards-difference" aria-label="Anchor link for: Predisposition towards difference">🔗</a></h3>
<p><em>First</em>, Byfield notes the differing age groups of the activist communities and the tendency for viewing others by their differences first, not their similarities. He seems to attribute the tendency to view others by differences first as a characteristic of older generations; however, this is not necessarily the full truth.</p>
<p>As a member of the young activist community, this explanation is too simplistic of the underlying cause. There is also a political motivation by established power to sow division among the population of a nation-state. It makes community organizing more difficult and presents diversity as an issue to &ldquo;solve&rdquo; instead of a source of greater unity and common strength.</p>
<p>This is exemplified by the social media algorithms of today that reward sensational content (judged on likes, views, clicks, or other user feedback) and share it widely across a huge platform. In 2006, it was difficult to imagine the relationship social media would have in the lives of an everyday person; today, a great deal of social power is granted to those who understand how to leverage social media, either for good (e.g. social activism) or harm (e.g. deceptively persuading large parts of a nation-state&rsquo;s population leading up to a national election).</p>
<p>The politics of division are within the fabric of our political systems; this is a challenge for modern-day activism and community organizing to overcome. In identifying this as a challenge, Byfield is correct that a differences-first approach makes it harder to share and spread the importance of FOSS in other activism circles, especially as technology becomes an increasingly relevant way of how we experience our lives and how our systems of law and justice are enforced.</p>

<h3 id="outreach-on-ethics-not-software">Outreach on ethics, not software&nbsp;<a class="hanchor" href="#outreach-on-ethics-not-software" aria-label="Anchor link for: Outreach on ethics, not software">🔗</a></h3>
<p><em>Second</em>, Byfield suggests an ethics-based approach to outreach is more effective than a software-based approach. This is also correctly noted, even if perhaps overemphasized. The jargon and language of the technology world is not accessible to the large majority of the global population. While some degree of technology literacy might be expected in some populations, much of the existing FOSS community is deeply rooted in technology. Sometimes this limited perspective is counterproductive.</p>
<p>This revisits the rebranding of &ldquo;Free Software&rdquo; as &ldquo;open source&rdquo; in 1997. For many subsets of the wider open source community in 2019, the default approach to open source software is merely a secondary thought for how to collaboratively work on technology. This is part of the outcome of the Open Source Initiative&rsquo;s gamble in 1997 by beginning to emphasize the business sensibility and practicality of open source, and de-emphasize the social roots of Free Software (or rather, try and position itself as some sort of translator between these two &ldquo;worlds&rdquo;, as if they cannot be spoken of together in the same room).</p>
<p>As such, those who work on open source software projects are not necessarily predisposed to assume the role of an activist. Truly if <em>Free</em> Software is to take root outside of technology, then those who see the ethical values of Free Software need to better organize and promote the values of FOSS externally. This will contribute to the diversity of Free Software activism by helping non-technology activists add FOSS as a tool to their existing work.</p>

<h3 id="intersectional-movement-building-is-the-future">Intersectional movement building is the future&nbsp;<a class="hanchor" href="#intersectional-movement-building-is-the-future" aria-label="Anchor link for: Intersectional movement building is the future">🔗</a></h3>
<p><em>Thirdly</em> and finally, and perhaps most importantly, Byfield suggests the importance of intersectional interactions between Free Software communities and other activist communities. This is a fundamental requirement for the growth of Free Software as a social movement. Those of us in Free Software see the world around us informed by a background informed by technology; this background is emphasized in a world that is generating new, advanced technology at an unprecedented rate. However, while software and technology are important parts of the world around us, they are not <em>the</em> world around us. They are one part of a greater picture of fighting for a common good and welfare for all people. There are others in similar niches who have a deep understanding of their problem space and how they want to approach a challenge.</p>
<blockquote>
<p>“One group may be working against child poverty, another for recycling, but the people in these organizations can almost be transferred from one to the next.”</p>
<p><a href="https://en.wikipedia.org/wiki/Peter_T._Brown">Peter T. Brown</a>, Free Software Foundation Executive Director (2006)</p>
</blockquote>
<p>Just like a healthy garden, cross-pollination of these niches is vital to help others understand how we can help each other in accomplishing our mutual goals (this also feeds into why the politics of division explained above is so pervasive and difficult). Bringing Free Software technologists to activist communities where there is not an overwhelming Free Software background (and vice versa) is vital to building an intersectional social movement that strengthens the social impact of Free Software, not just open source.</p>

<h2 id="where-byfield-didnt-go-far-enough">Where Byfield didn&rsquo;t go far enough&nbsp;<a class="hanchor" href="#where-byfield-didnt-go-far-enough" aria-label="Anchor link for: Where Byfield didn&rsquo;t go far enough">🔗</a></h2>
<p>Byfield made one assumption on how activists have &ldquo;their own share of insularity&rdquo; and that the presence of connections between two movements does not mean they could immediately connect their existing beliefs with new ones. Fioretti&rsquo;s challenge was in others understanding why they should listen to him; there was a lack of foundational knowledge of open source and technology that is normally assumed of someone who works as a software engineer.</p>
<p>Indeed, attention is a currency in the world of an activist. It is not enough for a FOSS advocate to expect others to listen to you on an appeal of technology. Part of the work in sharing is understanding who you are sharing with; if FOSS wants to take deeper roots in the activist community, it needs to understand the backgrounds of activist communities and be creative in how to appeal the mission of FOSS to the mission of their work. Where you can build in-roads together with others through common initiatives is the beginning of grassroots community organizing. So, while Byfield is right that there is an almost competitive nature of ideas in activism, it is not enough to write insularity off as a fixed aspect of nature. To not acknowledge this is to deny the influence of capitalist power structures in the humanitarian sector as they pertain to sustainable funding.</p>

<h2 id="what-are-todays-challenges">What are today&rsquo;s challenges?&nbsp;<a class="hanchor" href="#what-are-todays-challenges" aria-label="Anchor link for: What are today&rsquo;s challenges?">🔗</a></h2>
<p>Some of today&rsquo;s challenges are about inclusion and power.</p>

<h3 id="inclusion-builds-power">Inclusion builds power&nbsp;<a class="hanchor" href="#inclusion-builds-power" aria-label="Anchor link for: Inclusion builds power">🔗</a></h3>
<p>Diversity and inclusion (D&amp;I) are important but poorly understood; not only are D&amp;I about including people of different identities in technology, but also people with backgrounds outside of technology. FOSS stands to benefit by including more people who do not necessarily have a strong technology or engineering background. The goal is to inspire different perspectives to contribute in meaningful ways to build sustainable technology.</p>
<p>Instead of seeing diversity and inclusion initiatives as problematic or unneeded, D&amp;I groups in FOSS communities stand to be the most effective people at building community and influence.</p>

<h3 id="power-and-governance">Power and governance&nbsp;<a class="hanchor" href="#power-and-governance" aria-label="Anchor link for: Power and governance">🔗</a></h3>
<p>In the activist / humanitarian / non-profit world, there is a power struggle for sustainability as it pertains to funding. Funding models in non-profit work (usually sustained by grants, sponsors, and donors) encourage solutions that get funded, not necessarily solve problems the most effective way. Many organizations struggle with how to achieve sustainable funding without being so dependent on the expiration date of a grant&rsquo;s funding.</p>
<p>We need more representative governance models in open source communities that reflect the interests of the communities around them, not necessarily an individual, a company, or group of companies. Building governance models that empower people within a community to make decisions and reduce the corrosive influence of money from humanitarian work.</p>

<h2 id="where-do-we-go-from-here">Where do we go from here?&nbsp;<a class="hanchor" href="#where-do-we-go-from-here" aria-label="Anchor link for: Where do we go from here?">🔗</a></h2>
<p>This blog post is an active reflection of my own thoughts and perspectives of Free Software, activism, and humanitarian work. If you are interested in pushing this conversation further, find me in Brussels, Belgium for any of the following three conferences and let&rsquo;s chat further:</p>
<ul>
<li>30 January 2020: <a href="https://sustainoss.org/"><strong>Sustain Summit</strong></a></li>
<li>31 January 2020: <a href="https://chaoss.community/chaosscon-2020-eu/"><strong>CHAOSScon</strong></a></li>
<li>1-2 February 2020: <a href="https://fosdem.org/2020/"><strong>FOSDEM</strong></a></li>
</ul>
<p>If you want to discuss this further, you can also drop a line in our online discussion community, <em><a href="https://fossrit.community/">fossrit.community</a></em>.</p>
<hr>
<p><em>Photo by <a href="https://unsplash.com/@bazingraphy?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Walid Berrazeg</a> on <a href="https://unsplash.com/s/photos/black-lives-matter?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a></em></p>]]></description></item><item><title>HPC workloads in containers: Comparison of container run-times</title><link>https://jwheel.org/blog/2019/08/hpc-workloads-containers/</link><pubDate>Tue, 20 Aug 2019 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2019/08/hpc-workloads-containers/</guid><description><![CDATA[<p>Recently, I worked on an interesting project to evaluate different container run-times for high-performance computing (HPC) clusters. HPC clusters are what we once knew as <a href="https://en.wikipedia.org/wiki/Supercomputer">supercomputers</a>. Today, instead of giant mainframes, they are hundreds, thousands, or tens of thousands of <a href="https://en.wikipedia.org/wiki/Massively_parallel">massively parallel</a> systems. Since performance is critical, virtualization with tools like virtual machines or Docker containers was not realistic. The overhead was too much compared to bare metal.</p>
<p>However, the times are a-changing! <a href="https://jwfblog.wpenginepowered.com/tag/containers/">Containers</a> are entering as real players in the HPC space. Previously, containers were brushed off as incompatible with most HPC workflows. Now, several open source projects are emerging with unique approaches to enabling containers for HPC workloads. This blog post evaluates four container run-times in an HPC context, as they stand in July 2019:</p>
<ul>
<li>Charliecloud</li>
<li>Shifter</li>
<li>Singularity</li>
<li>Podman</li>
</ul>

<h2 id="research-requirements">Research requirements&nbsp;<a class="hanchor" href="#research-requirements" aria-label="Anchor link for: Research requirements">🔗</a></h2>
<p>My research focused around a specific set of requirements. To receive a favorable review, a container run-time needed to meet three basic requirements:</p>
<ul>
<li>Support CentOS/RHEL 7.5+</li>
<li>Compatibility with <a href="https://en.wikipedia.org/wiki/Univa_Grid_Engine">Univa GridEngine</a></li>
<li>Support for very large numbers of users</li>
</ul>
<p>Obviously there are security concerns with the third requirement. This is one reason containers have not made a strong showing in the HPC world yet. With the Docker security model, root access is a requirement to build and run containers. In a production HPC environment where users do not trust other users, this is a hard blocker.</p>
<p>Other HPC environments may differ. If you are an HPC administrator and also considering containers in your environment, consider my requirements. My research was exclusively framed through these three requirements.</p>

<h2 id="charliecloud">Charliecloud&nbsp;<a class="hanchor" href="#charliecloud" aria-label="Anchor link for: Charliecloud">🔗</a></h2>
<p><a href="https://github.com/hpc/charliecloud">Charliecloud</a> is an open source project based on a user-defined software stack (UDSS). Like most container implementations, it uses Linux user namespaces to run unprivileged containers. It is designed to be as minimal and lightweight as possible, to the point of not adding features that could conflict with any specific use cases. This can be a positive or a negative, depending on how complex your environment is.</p>
<p>However, I abandoned my research on Charliecloud early on after reading this <a href="https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0177459">PLOS research paper</a>:</p>
<blockquote>
<p>The software makes use of kernel namespaces that are not deemed stable by multiple prominent distributions of Linux (e.g. <strong>no versions of Red Hat Enterprise Linux or compatibles support it</strong>), and may not be included in these distributions for the foreseeable future.</p>
<p>The software is emphasized for its simplicity and being less than 500 lines of code, and this is an indication of having a lack of user-driven features. The containers are not truly portable because they must be extracted from Docker and configured by an external C executable before running, and even after this step, all file ownership and permissions are dependent on the user running the workflow.</p>
<p><a href="https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0177459">Singularity: Scientific containers for mobility of compute</a>, May 2017 (Gregory M. Kurtzer, Vanessa Sochat, Michael W. Bauer)</p>
</blockquote>
<p>However, it is worth noting this paper was written in support of Singularity. It was also written by the Singularity project lead and others from the Singularity open source community. If you are conducting your own independent research, consider looking closer at Charliecloud, since at the time of writing it is still actively developed. The research paper was written in May 2017.</p>
<p><em>Edit</em>: This situation already changed and Charliecloud is probably worth a deeper look:</p>
<blockquote class="twitter-tweet" data-dnt="true"><p lang="en" dir="ltr">This is a fantastic write up, one thing to mention is that abandoning the CharlieCloud research based solely on lack of support of the user kernel namespace is no longer a blocker. For example, PodMan now uses the same technology and it was released in RHEL8.</p>&mdash; Apptainer (formerly Singularity) (@SingularityApp) <a href="https://twitter.com/SingularityApp/status/1163846727700344834?ref_src=twsrc%5Etfw">August 20, 2019</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>



<h2 id="shifter">Shifter&nbsp;<a class="hanchor" href="#shifter" aria-label="Anchor link for: Shifter">🔗</a></h2>
<p><a href="https://github.com/NERSC/shifter">Shifter</a> is another container run-time implementation focused on HPC users. At time of writing, it is almost exclusively backed by the <a href="https://www.nersc.gov/">National Energy Research Scientific Computing Center</a> and <a href="https://www.cray.com/">Cray</a>. Most documented use cases use <a href="https://slurm.schedmd.com/">Slurm</a> for cluster management / job scheduling. Instead of a Docker/OCI format, it uses its own Shifter-specific format, but this is reverse-compatible with Docker container images. It requires hosting a registry service and a <strong>Shifter Image Gateway</strong>.</p>
<p>The Shifter Image Gateway is a REST interface implemented with <a href="https://palletsprojects.com/p/flask/">Python Flask</a>. It pulls images from the registry service and converts them to the Shifter image format. MPI integration is supported but its implementation is MPICH-centric.</p>
<p>The downside to Shifter is lack of community. There are not many other organizations other than NERSC and Cray that appear to support Shifter. <a href="https://github.com/NERSC/shifter/tree/master/doc">Documentation exists</a>, but at writing time (July 2019), the last significant contribution was April 2018. Some bugs and feature requests are triaged, but there is not much of a maintainer presence in these issues. Most follow-up discussion to new issues are from a handful of outside contributors without commit access.</p>
<p>Additionally, there are several signs of stagnant development, such as <a href="https://github.com/NERSC/shifter/pull/172">NERSC/shifter#172</a> to add better MPI integration. However, the PR stalled out since it was first opened in April 2017. Furthermore, there is a high bus factor: most contributions and pull requests come from the same two developers, indicating low engagement from the wider HPC community. Code is <a href="https://travis-ci.org/NERSC/shifter">regularly tested</a>, but integration tests <a href="https://travis-ci.org/NERSC/shifter/jobs/541868408#L880-L969">only exist for Slurm</a>. For more details, check out the <a href="https://github.com/NERSC/shifter/pulse">GitHub project pulse</a>.</p>
<p>A detail worth noting is Shifter was one of the first real container run-times for HPC. A former Shifter collaborator branched off from Shifter to start Singularity (and eventually, a for-profit company to support it, Sylabs). It invites room for personal biases when evaluating Shifter and Singularity, specifically if you are not a newcomer in the HPC community.</p>

<h2 id="singularity">Singularity&nbsp;<a class="hanchor" href="#singularity" aria-label="Anchor link for: Singularity">🔗</a></h2>
<p><a href="https://sylabs.io/singularity/">Singularity</a> is the third and last HPC-specific player in the container run-time world. The vendor is <a href="https://sylabs.io/about-us/mission">Sylabs Inc</a>. There are a few different factors that make Singularity interesting, and in my opinion, the most promising HPC container implementation.</p>

<h3 id="general-overview">General overview&nbsp;<a class="hanchor" href="#general-overview" aria-label="Anchor link for: General overview">🔗</a></h3>
<p>Singularity v3.x.x is written almost entirely in Golang. It supports two image formats: Docker/OCI and Singularity&rsquo;s native Single Image Format (SIF). As of September 2018, there are an estimated 25,000+ systems running Singularity, including users like <a href="https://www.tacc.utexas.edu/">TACC</a>, <a href="https://www.sdsc.edu/">San Diego Supercomputer Center</a>, and <a href="https://www.ornl.gov/">Oak Ridge National Laboratory</a>. Additionally, Univa <a href="http://www.univa.com/about/news/press_2018/07312018.php">announced a partnership</a> with Sylabs in July 2018 to bring Singularity workflows to Univa GridEngine.</p>
<p>Sylabs offers Singularity (free and open source) and SingularityPRO (paid and proprietary). The commercial version comes with a support contract and long-term support for some releases (among other things).</p>
<p>Admin/root access is not required to run Singularity containers and it requires no additional configuration to do this out of the box. Containers are run under the Linux user ID that launches them (see <em><a href="https://sylabs.io/guides/2.6/user-guide/introduction.html#security-and-privilege-escalation">Security and privilege escalation</a></em>).</p>
<p>At a quick glance, Sylabs developers appear to be <a href="https://github.com/sylabs">actively engaged</a> in the Kubernetes development community, particularly around Red Hat technology. They also seem to keep their promises: in early 2018, blog posts show ambitious feature promises for the then-upcoming v3.0.0 release at the end of the year. Near the end of 2018, the release was delivered on-time with most/all of the promised functionality.</p>

<h3 id="image-formats">Image formats&nbsp;<a class="hanchor" href="#image-formats" aria-label="Anchor link for: Image formats">🔗</a></h3>
<p>The Singularity Image Format (SIF) is a single-image format (i.e. no layers involved). This was a design decision specifically for HPC workloads. SIFs are treated like a binary executable by a Linux user. Additionally, it is possible to create SIFs using the <a href="https://sylabs.io/guides/3.3/user-guide/definition_files.html#sections">Definition File</a> spec.</p>
<p>However, Singularity is also compatible with Docker/OCI images and OCI is given <a href="https://github.com/sylabs/singularity/labels/OCI">active development focus</a> by upstream Singularity. Docker/OCI images are converted on-the-fly to a SIF. Docker/OCI images can be used locally or pulled from a remote registry like Docker Hub or <a href="https://www.openshift.com/products/quay">Quay</a>. To the user, if using a Docker/OCI image, the conversion is seamless and does not require additional configuration to use.</p>
<p>See <a href="https://web.archive.org/web/20190726223349/https://archive.sylabs.io/2018/03/sif-containing-your-containers/">this Sylabs blog post</a> for a deeper dive on how SIFs were designed.</p>

<h3 id="flexible-configuration">Flexible configuration&nbsp;<a class="hanchor" href="#flexible-configuration" aria-label="Anchor link for: Flexible configuration">🔗</a></h3>
<p>Singularity (uniquely?) offers advanced configuration options for HPC administrators. Some highlights are detailed here:</p>
<ul>
<li><strong>Controlling bind mounts</strong>:
<ul>
<li><code>mount dev = minimal</code>: Only binds <code>null</code>, <code>zero</code>, <code>random</code>, <code>urandom</code>, and <code>shm</code> into container</li>
<li><code>mount home = {yes,no}</code>, <code>mount tmp = {yes,no}</code>: Choose to enable or disable these bind mounts globally</li>
<li><code>bind path = &quot;&quot;</code>: Bind specific paths into containers by default</li>
<li><code>user bind control = {yes,no}</code>: Allow users to include their own bind mount paths or limit it to an admin-approved set of paths (above)</li>
</ul>
</li>
<li><strong>Controlling containers</strong>:
<ul>
<li><code>limit container paths =</code>: Possible to limit SIFs provided at a specific path and nowhere else</li>
</ul>
</li>
</ul>

<h3 id="hpc-community-engagement">HPC community engagement&nbsp;<a class="hanchor" href="#hpc-community-engagement" aria-label="Anchor link for: HPC community engagement">🔗</a></h3>
<p>These notes only apply to Singularity free, not the proprietary SingularityPRO product.</p>
<p>The signals from their open source community engagement are positive and strong. They appear authentic and genuine to an <a href="https://sylabs.io/resources/community">open source commitment</a> (i.e. not <a href="https://blogs.gnome.org/bolsh/2010/07/19/rotten-to-the-open-core/">open-core business model</a>). This is demonstrated in a few ways:</p>
<p>First, they have <a href="https://sylabs.io/guides/3.3/user-guide/">thorough user documentation</a>, intended for end-users in HPC environments using Singularity. They have a less thorough but still useful <a href="https://sylabs.io/guides/3.2/admin-guide/">admin documentation</a>.</p>
<p>Second, all issues are triaged quickly and get feedback from core developers or outside contributors at a consistent pace. Pull requests don&rsquo;t stagnate either: the oldest PR is less than six months old.</p>
<p>Third, code is regularly tested (<a href="https://travis-ci.org/sylabs/singularity">1</a>, <a href="https://circleci.com/gh/sylabs/singularity/tree/master">2</a>). The code generally follows <a href="https://goreportcard.com/report/github.com/sylabs/singularity">best practices</a> (i.e. it is not atrocious to work with).</p>
<p>Fourth, there are also a handful of active contributors (both developers and in the community support channels) who come from outside of Sylabs, which indicates more engagement by a wider audience of people.</p>
<p>For more statistics, check out the <a href="https://github.com/sylabs/singularity/pulse">GitHub project pulse</a>.</p>

<h2 id="podman">Podman&nbsp;<a class="hanchor" href="#podman" aria-label="Anchor link for: Podman">🔗</a></h2>
<p><em>tl;dr</em>: Podman is an underdog that shows promise, but likely needs another one or two years of time for most HPC use cases.</p>
<p><a href="https://podman.io/">Podman</a> is a container run-time developed by Red Hat. Its primary goal is to be a drop-in replacement for Docker. While it is not explicitly designed with HPC use cases in mind, it intends to be a lightweight &ldquo;wrapper&rdquo; to run containers without the overhead of the full Docker daemon. Furthermore, the Podman development team is recently looking into better support for HPC use cases.</p>
<p>Podman is currently lacking for a HPC use case for some of these reasons:</p>
<ol>
<li><a href="https://github.com/containers/libpod/issues/3478">Missing support for parallel filesystems</a> (e.g. <a href="https://en.wikipedia.org/wiki/IBM_Spectrum_Scale">IBM Spectrum Scale</a>)</li>
<li>Rootless Podman was designed to <a href="https://github.com/containers/libpod/blob/master/rootless.md">use kernel user namespaces</a> which is <a href="https://github.com/containers/libpod/issues/3561">not compatible with most parallel filesystems</a> (might change in a year or two)</li>
<li><a href="https://github.com/containers/libpod/issues/3587">Not yet possible to set system site policy defaults</a></li>
<li><a href="https://github.com/containers/libpod/issues/3589">Pulling Docker/OCI images requires multiple subuids/subgids</a> (might change in a year or two)</li>
</ol>
<p>Where Podman does shine is providing a way to run <strong><em>and</em></strong> build containers without root access or <code>setuid</code>.</p>
<p>The same challenges and problems required for Podman to run OCI containers in an HPC environment are the same problems faced by Singularity to build SIF images without root in the HPC environment: <strong>mapping UIDs to subuids/subgids on the compute nodes</strong>. More interestingly, <strong><a href="https://buildah.io/">Buildah</a></strong> offers a promising way to enable users to build container images as Docker/OCI images all without root. It is plausible to use Buildah as the container image delivery mechanism and swap out the container run-time implementation (Podman vs. Singularity) depending on specific needs and requirements.</p>

<h2 id="what-do-you-think">What do you think?&nbsp;<a class="hanchor" href="#what-do-you-think" aria-label="Anchor link for: What do you think?">🔗</a></h2>
<p>I hope other folks out there in the HPC world find this preliminary research useful. Do you agree or disagree with any parts of this write-up? Is something out-of-date? Drop a comment down below.</p>]]></description></item><item><title>Write more accessible Markdown images with this one simple trick</title><link>https://jwheel.org/blog/2019/06/markdown-accessible-images/</link><pubDate>Tue, 18 Jun 2019 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2019/06/markdown-accessible-images/</guid><description><![CDATA[<p>Sometimes the people we exclude are the ones we did not realize were there. <a href="https://en.wikipedia.org/wiki/Screen_reader">Screen readers</a> are an essential tool for blind and visually-impaired people to use software and browse the Internet. In open source projects and communities, Markdown is a <a href="https://en.wikipedia.org/wiki/Markdown">lightweight markup language</a> used to format text. It is also used in many other places. Often you need to embed an image into whatever you are writing (a picture, a diagram, or some useful visual aid to get your point across). One of the lesser-known and used features of Markdown are <strong>alt tags for images</strong>.</p>

<h2 id="use-alt-tags-for-markdown-images">Use alt tags for Markdown images&nbsp;<a class="hanchor" href="#use-alt-tags-for-markdown-images" aria-label="Anchor link for: Use alt tags for Markdown images">🔗</a></h2>
<p>Often an embedded picture in Markdown looks something like this:</p>
<pre tabindex="0"><code>![Screenshot_2019-06-14.jpg](https://example.com/Screenshot_2019-06-14.jpg)
</code></pre><p>When you render the Markdown, you see your picture. However, you don&rsquo;t see the <code>Screenshot_2019-06-14.jpg</code> string. You might wonder what its purpose is or why bother changing it at all. But imagine for a moment if instead of seeing your picture when you rendered your Markdown, you only saw <code>Screenshot_2019-06-14.jpg</code> where your picture should be. Screen reader users often encounter this problem.</p>
<p>So instead, describe your Markdown image so a person that uses a screen reader can also follow the conversation:</p>
<pre tabindex="0"><code>![A flowchart describing how user data flows from a publisher, to a proxy, and to a group of subscribers](https://example.com/Screenshot_2019-06-14.jpg &#34;A flowchart describing how user data flows from a publisher, to a proxy, and to a group of subscribers&#34;)
</code></pre><p>It takes an extra few seconds of your time, but it is one small way you can help make a better Internet for everyone.</p>
<p>P.S. – The text wrapped in quotation marks between the parentheses adds the <a href="https://www.w3schools.com/tags/att_global_title.asp"><code>title</code> HTML attribute</a> to your image, so the text appears as a tooltip when you mouse over the image. The more you know!</p>
<hr>
<p><em>Photo by <a href="https://unsplash.com/@romankraft">Roman Kraft</a> on <a href="https://unsplash.com/search/photos/newspaper">Unsplash</a></em></p>]]></description></item><item><title>What is Ehlers-Danlos Syndrome?</title><link>https://jwheel.org/blog/2019/05/ehlers-danlos-syndrome/</link><pubDate>Wed, 01 May 2019 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2019/05/ehlers-danlos-syndrome/</guid><description><![CDATA[<p>May is <a href="https://ehlers-danlos.com/dazzle/">Ehlers-Danlos Syndrome Awareness Month</a>. Ehlers-Danlos Syndrome, abbreviated as EDS, is a genetic disorder that affects <a href="https://ghr.nlm.nih.gov/condition/ehlers-danlos-syndrome#statistics">1 out of 5,000 people</a> across the world. It is considered an &ldquo;invisible illness&rdquo; since its symptoms are not always visible to the eye.</p>
<p>This article introduces Ehlers-Danlos Syndrome, its symptoms, how to support someone living with EDS, and simple actions anyone can take to help.</p>

<h2 id="ehlers-danlos-syndrome-what-is-it">Ehlers-Danlos Syndrome: What is it?&nbsp;<a class="hanchor" href="#ehlers-danlos-syndrome-what-is-it" aria-label="Anchor link for: Ehlers-Danlos Syndrome: What is it?">🔗</a></h2>
<p><a href="https://en.wikipedia.org/wiki/Ehlers%E2%80%93Danlos_syndrome">Ehlers-Danlos Syndrome</a> is an inherited, genetic disorder caused by a defect in how the body produces collagen. Collagen is a protein that the body uses and depends on for producing connective tissue. It&rsquo;s like the &ldquo;glue&rdquo; of the human body, keeping skin together and in proper form.</p>
<p>Hyper-mobility is one of the most common symptoms. &ldquo;Double-jointed&rdquo; is one way to describe hyper-mobility, but it&rsquo;s not really the same thing. <a href="https://ghr.nlm.nih.gov/condition/ehlers-danlos-syndrome#definition">Moderate to severe chronic joint pain</a> is common. Depending on the classification of EDS, there are a variety of chronic symptoms, ranging from frequent tearing of muscles to heart disease.</p>
<p>Ehlers-Danlos Syndrome is not easily visible from the outside. You can look at someone who has EDS and never realize they live with a disability. For these reasons, it&rsquo;s known as an <a href="http://www.mollysfund.org/2013/04/invisible-illness-but-you-look-so-good/"><em>invisible illness</em></a>. Invisible illnesses come with an extra challenge as the person with the disorder or disability physically looks fine, but may suffer from extraordinary amounts of pain that an observer can&rsquo;t see.</p>
<p>For a moment, imagine you&rsquo;re fighting the flu and obviously not feeling well. When you give an excuse for work or school, someone tells you, &ldquo;Oh, just shake it off, how bad can it be?&rdquo; Obviously, you&rsquo;d think they&rsquo;re crazy—you have the flu! You can hardly get out of bed! But what if this was the way things were, if you were told this whenever you were sick? This is a glimpse of what it&rsquo;s like living with an invisible illness.</p>
<p>Today, not much is known about Ehlers-Danlos Syndrome. There isn&rsquo;t much research on it and there is no known cure (although <a href="http://www.chron.com/neighborhood/woodlands/news/article/Woodlands-teen-overcomes-rare-disease-to-walk-6715196.php">stem cell research</a> seems the most promising solution). Those living with EDS usually use external support (e.g. wheelchairs, bracing, etc.) or different forms of therapy to help manage the illness.</p>

<h2 id="living-with-ehlers-danlos-syndrome">Living with Ehlers-Danlos Syndrome&nbsp;<a class="hanchor" href="#living-with-ehlers-danlos-syndrome" aria-label="Anchor link for: Living with Ehlers-Danlos Syndrome">🔗</a></h2>
<p>Those living with EDS face daily struggles that affect how they are able to live their life. There are countless testimonies online about what it&rsquo;s like to live with Ehlers-Danlos Syndrome. Some days, the pain is crippling to the point where it is almost impossible to leave bed. You can read stories from those living with EDS at the following pages:</p>
<ul>
<li><a href="http://www.rarediseaseday.org/stories/5112">rarediseaseday.org</a></li>
<li><a href="http://librarianinblack.net/librarianinblack/annual-reminder-of-ehlers-danlos-syndrome-awareness-month/">librarianinblack.net</a></li>
</ul>

<h2 id="supporting-someone-with-eds">Supporting someone with EDS&nbsp;<a class="hanchor" href="#supporting-someone-with-eds" aria-label="Anchor link for: Supporting someone with EDS">🔗</a></h2>
<p>If you know someone living with Ehlers-Danlos Syndrome, it&rsquo;s difficult to know how to support them. Since not much is known, one of the most important steps you can take as a caretaker is to learn what you can about EDS and how your loved one is specifically affected by it.</p>
<p>Reaching out to <a href="https://www.inspire.com/groups/ehlers-danlos-national-foundation/">online communities</a> or searching for resources are some ways to help you develop your own personal &ldquo;toolbox&rdquo; for helping your loved one. The <a href="http://ehlers-danlos.com/">Ehlers-Danlos Society</a> has information you can read about being a caretaker and <a href="http://ehlers-danlos.com/caring-for-someone-with-eds/">how to help someone with EDS and yourself</a>.</p>
<p>Work on developing your own listening skills and mutual, two-way communication. You need to develop patience as both you and your EDSer learn and experience life with EDS. Counseling on how to best communicate can be a valuable resource. Be willing to accept your own feelings and emotions too. Your feelings are not invalidated as a caretaker either, and accepting this will help both you and your EDSer.</p>
<p>Above all, remember that your loved one is more than their illness. There&rsquo;s more to life than Ehlers-Danlos.</p>

<h2 id="what-you-can-do-now-about-eds">What you can do now about EDS&nbsp;<a class="hanchor" href="#what-you-can-do-now-about-eds" aria-label="Anchor link for: What you can do now about EDS">🔗</a></h2>
<p>Information is valuable. Information is never easier to find than in the twenty-first century. But imagine not being able to know: to search Google and not find an answer about something you face everyday. For something like &ldquo;how to feel better&rdquo; or even how long you&rsquo;ll live. Information and research is one of the key needs of the Ehlers-Danlos community around the world. The <a href="https://ehlers-danlos.com/about-us/">Ehlers-Danlos Society</a> is a 501c3 non-profit organization that drives research and education initiatives, awareness campaigns, advocacy, community-building, and care for EDS patients.</p>
<p>You can consider making a <a href="https://ehlers-danlos.com/giving/">direct donation</a>. A recent deliverable was the <a href="https://ehlers-danlos.com/2016-ehlers-danlos-society-international-symposium/">2016 Ehlers-Danlos Society International Symposium</a>, with the goals of updating the diagnostic criteria of EDS and developing standards of care that are missing in professional medical practices.</p>
<p>Shop on Amazon? If not a direct donation, consider using <a href="https://smile.amazon.com/">AmazonSmile</a> to have part of your Amazon costs donated to the Ehlers-Danlos Society. Amazon will donate 0.5% of the price of your eligible AmazonSmile purchases (side note, they&rsquo;re listed by their previous name, &ldquo;<em>Ehlers-Danlos National Foundation</em>&rdquo; in AmazonSmile).</p>
<hr>
<p><em><a href="https://thenounproject.com/search/?q=zebra&amp;i=67862">Zebra</a> by m. turan ercan from the Noun Project</em></p>
<p><em>Dedicated to someone who taught me to see life from another perspective</em></p>]]></description></item><item><title>TeleIRC v1.3.1 released with quality-of-life improvements</title><link>https://jwheel.org/blog/2019/04/teleirc-v1-3-1-released/</link><pubDate>Mon, 22 Apr 2019 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2019/04/teleirc-v1-3-1-released/</guid><description><![CDATA[<p>On April 20th, 2019, the TeleIRC development team <a href="https://github.com/RITlug/teleirc/releases/tag/v1.3.1">released TeleIRC v1.3.1</a>, the latest version after the final development sprint for the university semester. This release introduces minor improvements in order to accommodate heavier work-balance loads on our volunteer contributors. However, it gave us an opportunity to reduce technical debt. This blog post explains what&rsquo;s new in TeleIRC v1.3.1 and also offers a retrospective into how this last sprint went.</p>
<p>Special thanks and appreciation goes to <a href="https://www.linkedin.com/in/tim-zabel/">Tim Zabel</a> and <a href="https://github.com/nic-hartley">Nic Hartley</a> for their contributions this release cycle.</p>

<h2 id="whats-new">What&rsquo;s new&nbsp;<a class="hanchor" href="#whats-new" aria-label="Anchor link for: What&rsquo;s new">🔗</a></h2>
<ul>
<li>Bold usernames in message prefixes (<a href="https://github.com/RITlug/teleirc/pull/134">#134</a>, <a href="https://github.com/nic-hartley">Nic Hartley</a>)</li>
<li>Include filetype in IRC string when a document is uploaded on Telegram (<a href="https://github.com/RITlug/teleirc/pull/139">#139</a>, <a href="https://github.com/Tjzabel">Tim Zabel</a>)</li>
<li>Include zero-width space in username for join/part messages to group (<a href="https://github.com/RITlug/teleirc/pull/139">#139</a>, <a href="https://github.com/Tjzabel">Tim Zabel</a>)</li>
</ul>
<p>Additionally, contributor documentation improved. I added <a href="https://github.com/RITlug/teleirc/blob/master/.github/CONTRIBUTING.md">contributor guidelines</a> and instructions to set up a development environment. Also, our friends at <a href="https://ura.design/">Ura Design</a> designed our new project logo. Thanks to Ura, we have an awesome project logo and stickers in time for <a href="https://www.rit.edu/imagine/">Imagine RIT 2019</a> later this month!</p>
<blockquote class="twitter-tweet" data-dnt="true"><p lang="en" dir="ltr">They&#39;re here! Check out our new @uracreative logo and stickers for the <a href="https://twitter.com/hashtag/TeleIRC?src=hash&amp;ref_src=twsrc%5Etfw">#TeleIRC</a> project. Grab some stickers at the <a href="https://twitter.com/RITlug?ref_src=twsrc%5Etfw">@RITlug</a> <a href="https://twitter.com/Imagine_RIT?ref_src=twsrc%5Etfw">@Imagine_RIT</a> festival on April 27! <a href="https://t.co/KGjT4F0qdY">pic.twitter.com/KGjT4F0qdY</a></p>&mdash; RIT Linux Users Group (@RITlug) <a href="https://twitter.com/RITlug/status/1118641571291901952?ref_src=twsrc%5Etfw">April 17, 2019</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>



<h2 id="teleirc-v131-sprint-retrospective">TeleIRC v1.3.1: sprint retrospective&nbsp;<a class="hanchor" href="#teleirc-v131-sprint-retrospective" aria-label="Anchor link for: TeleIRC v1.3.1: sprint retrospective">🔗</a></h2>
<p>Originally, we <a href="https://jwfblog.wpenginepowered.com/2019/03/teleirc-roadmap-v1-4/">planned to release v1.4</a> at the end of this sprint. For a number of reasons, this did not happen. We decided to reduce our scope and finish strong with a bugfix release instead of the originally-planned feature release. This retrospective summarizes &ldquo;lessons learned&rdquo; for future project sprints with a team of university students.</p>

<h3 id="extended-holidays-are-sprint-bookends">Extended holidays are sprint bookends&nbsp;<a class="hanchor" href="#extended-holidays-are-sprint-bookends" aria-label="Anchor link for: Extended holidays are sprint bookends">🔗</a></h3>
<p>In the last sprint, our university had a week-long break from classes. Most students use this time to visit family or travel outside of Rochester. Originally, we agreed to pause the sprint and resume when we returned. In retrospect, it didn&rsquo;t work out like that.</p>
<p>It was harder to start again when we returned from the break. Instead of an extended holiday acting as a pause in an ongoing sprint, extended holiday breaks should divide two separate sprints. The breaks from classes are personal time; working on projects is not possible for everyone. The interruption caused by a break impacts productivity of the team. Therefore, future sprint planning will take the <a href="https://www.rit.edu/calendar">university calendar</a> into consideration.</p>

<h3 id="adjustable-sprint-length-to-semester">Adjustable sprint length to semester&nbsp;<a class="hanchor" href="#adjustable-sprint-length-to-semester" aria-label="Anchor link for: Adjustable sprint length to semester">🔗</a></h3>
<p>Sprint lengths should have an adjustable length depending on what part of the academic semester the sprint is. For example, earlier this semester, we released v1.3 in a two-week sprint. For this v1.3.1 release, it was over a month. What happened? Should sprints have a variable length?</p>
<p>When working with an academic crowd, variable sprint lengths are worth considering. The first half of a semester typically has less assigned coursework. Final projects are not at play. Therefore, usually team members have more time to invest in the project at the start of a semester. Towards the end of the semester, coursework and class projects pile on and make it difficult to find bandwidth to work on side projects like TeleIRC.</p>
<p>The compromise is keeping our sprints short at the start of a semester and stretching them out as a semester goes on. This gives students more flexibility to work at a pace that encourages quality work but isn&rsquo;t overwhelming with other responsibilities of being a student. Going forward, we will try variable-length sprints in the Fall 2019 semester.</p>

<h2 id="get-involved-with-teleirc">Get involved with TeleIRC!&nbsp;<a class="hanchor" href="#get-involved-with-teleirc" aria-label="Anchor link for: Get involved with TeleIRC!">🔗</a></h2>
<p>More opportunities are coming to participate with TeleIRC! The team is happy for new people to join us. Opportunities are available for short-term and long-term contributions.</p>
<p>Come say hello in our developer chat rooms, either on <a href="https://webchat.freenode.net/?channels=ritlug-teleirc">IRC</a> or in <a href="https://t.me/teleirc">Telegram</a>! Watch for <a href="https://jwfblog.wpenginepowered.com/tag/teleirc/">TeleIRC development reports</a> on my blog for more announcements.</p>
<hr>
<p><em><a href="https://unsplash.com/photos/guiQYiRxkZY">Background photo</a> by <a href="https://unsplash.com/@epicantus">Daria Nepriakhina</a> on <a href="https://unsplash.com/">Unsplash</a>.</em></p>]]></description></item><item><title>Roadmap for TeleIRC v1.4</title><link>https://jwheel.org/blog/2019/03/teleirc-roadmap-v1-4/</link><pubDate>Sat, 23 Mar 2019 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2019/03/teleirc-roadmap-v1-4/</guid><description><![CDATA[<p>The <a href="https://ritlug.com/">RITlug</a> TeleIRC developer team celebrated the <a href="https://github.com/RITlug/teleirc/releases/tag/v1.3">v1.3 release</a> on March 3rd, 2019. Looking ahead, the team is mapping out next steps for quality-of-life improvements in v1.4.</p>

<h2 id="whats-coming-in-teleirc-v14">What&rsquo;s coming in TeleIRC v1.4&nbsp;<a class="hanchor" href="#whats-coming-in-teleirc-v14" aria-label="Anchor link for: What&rsquo;s coming in TeleIRC v1.4">🔗</a></h2>
<p><a href="https://github.com/RITlug/teleirc/milestone/6">TeleIRC v1.4</a> is the next feature release of TeleIRC. The targeted release date for v1.4 is by the end of April 2019 (i.e. the end of the academic semester for students involved with the project). Following v1.4, the project will likely enter brief hibernation until Fall 2019 when the <a href="https://www.rit.edu/">RIT</a> academic semester begins again.</p>
<p>At the developer meeting on March 23rd, we discussed the scope of this sprint and what we felt is realistic for project maintainers to work on:</p>

<h3 id="primary-goals">Primary goals&nbsp;<a class="hanchor" href="#primary-goals" aria-label="Anchor link for: Primary goals">🔗</a></h3>
<ul>
<li>Include limited characters from Telegram replies in relayed IRC message (<a href="https://github.com/RITlug/teleirc/issues/51">RITlug/teleirc#51</a>)</li>
<li>Create doc page on development environment (<a href="https://github.com/RITlug/teleirc/issues/77">RITlug/teleirc#77</a>)</li>
<li>QoL Improvements: show file-type of documents in IRC, insert ZWP character in join/leave messages (<a href="https://github.com/RITlug/teleirc/issues/130">RITlug/teleirc#130</a>)</li>
<li>Allow user to configure more variables for IRC server connection (e.g. port, SSL certs, etc.) (<a href="https://github.com/RITlug/teleirc/issues/113">RITlug/teleirc#113</a>)</li>
</ul>

<h3 id="secondary-goals">Secondary goals&nbsp;<a class="hanchor" href="#secondary-goals" aria-label="Anchor link for: Secondary goals">🔗</a></h3>
<ul>
<li>Add Telegram-side highlighting for IRC messages prefixed with username (<a href="https://github.com/RITlug/teleirc/issues/44">RITlug/teleirc#44</a>)</li>
<li>Bold usernames on Telegram and IRC (<a href="https://github.com/RITlug/teleirc/issues/19">RITlug/teleirc#19</a>)</li>
</ul>

<h2 id="recap-of-teleirc-v13-sprint">Recap of TeleIRC v1.3 sprint&nbsp;<a class="hanchor" href="#recap-of-teleirc-v13-sprint" aria-label="Anchor link for: Recap of TeleIRC v1.3 sprint">🔗</a></h2>
<p>The <a href="https://jwfblog.wpenginepowered.com/2019/02/teleirc-v1-3-next-release/">TeleIRC v1.3 release</a> follows the v1.2.2 release on December 8th, 2018. This release is a significant change in how project development is done. For the first time, a special interest group inside of <a href="https://ritlug.com/">RITlug</a> exists around the project. The team shifted to an agile-like development practice to fit inside of the <a href="https://www.rit.edu/">RIT</a> student academic schedule.</p>
<p>A special shout-out is earned by <a href="https://twitter.com/Tjzabel21">Tim Zabel</a> for his support and participation as a core contributor during the v1.3 sprint.</p>

<h2 id="get-involved-with-teleirc">Get involved with TeleIRC!&nbsp;<a class="hanchor" href="#get-involved-with-teleirc" aria-label="Anchor link for: Get involved with TeleIRC!">🔗</a></h2>
<p>More opportunities are coming to participate with TeleIRC! We would love to have more people get involved and participate in the project. There is no formal commitment to contributing, although we ask for participation through a single sprint cycle.</p>
<p>Soon, we will have better new contributor on-boarding docs. Our weekly developer meetings are now happening over public audio/video call each Saturday at 15:00 US EDT, so anyone can join and participate.</p>
<p>Come say hello in our developer chat rooms, either on <a href="https://webchat.freenode.net/?channels=ritlug-teleirc">IRC</a> or in <a href="https://t.me/teleirc">Telegram</a>!</p>
<hr>
<p><em><a href="https://unsplash.com/photos/guiQYiRxkZY">Background photo</a> by <a href="https://unsplash.com/@epicantus">Daria Nepriakhina</a> on <a href="https://unsplash.com/">Unsplash</a>.</em></p>]]></description></item><item><title>Throwback draft: Reflections on Sarajevo and Croatia</title><link>https://jwheel.org/blog/2019/03/throwback-draft-reflections-sarajevo-croatia/</link><pubDate>Tue, 19 Mar 2019 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2019/03/throwback-draft-reflections-sarajevo-croatia/</guid><description><![CDATA[<p>This is an unfinished draft of a blog post I wrote at the end of my study abroad semester in Dubrovnik, Croatia. It was originally written in May or June 2017. It captures some of the perspective and feeling as my semester abroad finished. As I explain in my <a href="https://jwfblog.wpenginepowered.com/2018/02/2017-year-review/">2017 year in review</a>, this was a profound experience and exposed me to a part of the world unlike my own, yet it felt like a home by the end.</p>
<p>Unfortunately, as I write later in this blog post, the &ldquo;window of inspiration&rdquo; to finish this draft has closed. So I figured it better to publish it as-is than to let it waste.</p>

<h2 id="unmodified-text-nothing-will-be-the-same">Unmodified text: &ldquo;Nothing will be the same&rdquo;&nbsp;<a class="hanchor" href="#unmodified-text-nothing-will-be-the-same" aria-label="Anchor link for: Unmodified text: &ldquo;Nothing will be the same&rdquo;">🔗</a></h2>
<p>The sun slowly slips into the horizon, darkening the sky as the street lamps and buildings illuminate. On the main road through the city, the taxi works its way through the evening weekday traffic in <a href="https://en.wikipedia.org/wiki/Sarajevo">Sarajevo</a>, Bosnia and Herzegovina. My luggage is stowed in the backseat and I&rsquo;m seated next to the driver, an older gentleman in his late 40s or early 50s. Unlike other countless taxi rides, the car wasn&rsquo;t silent inside. The driver was curious. Through gestures, signing, and broken English, we shared stories with each other, about the past, the present, and the future. He asked me about America and the election, and if Americans are really like what is shown in the news. I asked him about life in Sarajevo, and he told me about the problems with employment and people searching for work.</p>
<p>Behind his weathered face, there were eyes that had seen some of the worst tragedy in the region. He lived in the city during the <a href="https://en.wikipedia.org/wiki/Siege_of_Sarajevo">Siege of Sarajevo</a> in the 1990s and <a href="https://en.wikipedia.org/wiki/Srebrenica_massacre">remembered Srebrenica</a> in 1995. He lived through years where hate and spite penetrated the hearts of neighbors. Yet, through it all, the man was cheerful and still hopeful. Even from our conversation, he had a resounding hope about the people of Sarajevo. In thirty minutes, I understood a different kind of history in the region than I had during the four years earning my high school diploma.</p>
<p>This is one memory that persists from my experiences over the past five months. On January 17th, 2017, I moved across the oceans to <a href="https://en.wikipedia.org/wiki/Dubrovnik">Dubrovnik, Croatia</a>. I studied in Dubrovnik from January until the middle of May.</p>
<p>During the semester and after, there were incomparable experiences that opened my eyes to a world that previously I only imagined. With my experiences with writing, there is a window that is open for a short time. The window is your inspiration. If you look out the window and see something incredible, you are filled with inspiration and you want to capture it. But when you step away, the window only remains open for a short time after. If you miss the opportunity, the window will close and the writing will never reflect it in the same way. This is my cumulative attempt at trying to capture the last five months of my life.</p>]]></description></item><item><title>Throwback draft: Integral of a community</title><link>https://jwheel.org/blog/2019/03/the-integral-of-a-community/</link><pubDate>Tue, 05 Mar 2019 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2019/03/the-integral-of-a-community/</guid><description><![CDATA[<p>Recently, I reviewed my unfinished blog posts to see what was left. This post is my oldest draft, last modified on April 19th, 2016. I drafted this near the end of my second semester of freshman year in college. This was a pivotal time for me for various reasons: family background, living in a new place after so long, finding a community of people, and a few months before one of <a href="https://jwfblog.wpenginepowered.com/2016/07/czesc-poland-back-europe/">my earliest trips abroad</a> to Kraków, Poland. My <a href="https://jwfblog.wpenginepowered.com/2017/02/2016-my-year-in-review/">2016 year in review</a> captures this sentiment.</p>
<p>The blog post I wrote comes from this place in my life. It writes in a voice I would not write in today. It also does not accurately reflect my current perspectives. However, instead of tossing it, I figured to publish it unfinished with this disclaimer would be no different.</p>

<h2 id="unmodified-text-the-integral-of-a-community">Unmodified text: The Integral of a Community&nbsp;<a class="hanchor" href="#unmodified-text-the-integral-of-a-community" aria-label="Anchor link for: Unmodified text: The Integral of a Community">🔗</a></h2>
<p>Many times I&rsquo;ve sat down to write about the same topic in this same seat. Many times I&rsquo;ve been filled with the same unique feeling. It&rsquo;s difficult to put into words. It&rsquo;s easier to understand it and describe it in my head. But it&rsquo;s easier to describe it to others when I&rsquo;m still feeling this feeling. It&rsquo;s harder to come back to it later and write about it.</p>
<p>This &ldquo;feeling&rdquo; is something powerful and organic. I believe it is derived from a core part of what makes us human. In part, it&rsquo;s a form of social stimulation, but it&rsquo;s also a little more. The &ldquo;feeling&rdquo; is what I&rsquo;m beginning to term the integral of a community.</p>
<blockquote>
<p><strong>integral</strong>: (adjective) ˈin(t)əɡrəl,inˈteɡrəl/ - necessary to make a whole complete; essential or fundamental.</p>
<p>From <a href="https://en.oxforddictionaries.com/definition/integral">Oxford Dictionaries</a></p>
</blockquote>

<h3 id="what-is-a-community">What is a community?&nbsp;<a class="hanchor" href="#what-is-a-community" aria-label="Anchor link for: What is a community?">🔗</a></h3>
<p>Communities are a fundamental part of our daily lives. We all belong to a community in one form or another. In my view, community is a loosely-defined word that gives rise to many forms. Our immediate family is a community. Our workplaces are a community. Our friends are a community. Our schools are a community. Our homes are a community.</p>
<p>Maybe we feel different about some of the above examples of a community. Your feelings on your familial community may be different from mine. Maybe we feel different about our school communities. But regardless of where you fall, there is a community that you are attached to. Maybe you don&rsquo;t realize it, maybe you do. But this community holds a special part in your heart. It is, by definition, integral to what makes you, you.</p>
<p>Going forward, it is important to establish your own personal definition of this integral community. Whatever group of people you feel most comfortable with. It doesn&rsquo;t matter what size. It could be one person or it could be twenty. It could be a hundred. But this community is fundamentally important to you.</p>

<h3 id="what-is-integral-of-a-community">What is integral of a community?&nbsp;<a class="hanchor" href="#what-is-integral-of-a-community" aria-label="Anchor link for: What is integral of a community?">🔗</a></h3>
<p>Several different components comprise a different community. They are formed around a range of different topics. Communities can be based around blood ties. Your family. They can be based around a shared interest, like art or technology. You may belong to a community based on your profession, such as a group of educators. Or perhaps you belong to a community full of differences. All of its members come from different backgrounds, professions, races, or anything. Maybe it&rsquo;s because of close geographical location. Maybe it&rsquo;s because of a former close geographic location. It depends on the community you identify with.</p>
<p>With such wide difference, it can be curious what makes a community so incredible for you. What components are integral to you? If you break down the outer shell, the answer becomes more clearly visible.</p>
<p>You identify with a community when you share a mutual interest, passion, or engagement with the others in your community.</p>
<p>When you feel most interconnected to your community is when you can feel or understand this most.</p>
<p>&lt; more here &gt;</p>

<h3 id="my-community">My community&nbsp;<a class="hanchor" href="#my-community" aria-label="Anchor link for: My community">🔗</a></h3>
<p>My community is the <a href="https://fossrit.github.io/">free and open source software community</a> at the Rochester Institute of Technology. There are several individuals who have built this community from the ground up to make it what it is. It has endured its fair share of hardships and challenges. It has celebrated victories and achievements among its members. In the stereotypical application of the phrase, it feels like family.</p>

<h3 id="our-communal-responsibility">Our communal responsibility&nbsp;<a class="hanchor" href="#our-communal-responsibility" aria-label="Anchor link for: Our communal responsibility">🔗</a></h3>]]></description></item><item><title>TeleIRC v1.3: Developers map out next release</title><link>https://jwheel.org/blog/2019/02/teleirc-v1-3-next-release/</link><pubDate>Sun, 03 Feb 2019 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2019/02/teleirc-v1-3-next-release/</guid><description><![CDATA[<p>On Saturday, February 2nd, 2019, the <a href="https://github.com/RITlug/teleirc">TeleIRC</a> community in Rochester, NY held the first developers&rsquo; meeting. Starting this month, weekly meetings are held to discuss blocking issues and plan ahead for the future of the project. Current project lead <a href="https://jwheel.org/">Justin Wheeler</a> met with <a href="https://github.com/Tjzabel">Tim Zabel</a> and <a href="https://github.com/nic-hartley/">Nic Hartley</a> to finish planning the v1.3 milestone for TeleIRC. Notably, this marks the next feature-release of TeleIRC since v1.2 in October 2018.</p>
<p>Read on to learn more about what&rsquo;s coming in TeleIRC v1.3.</p>

<h2 id="whats-coming-in-teleirc-v13">What&rsquo;s coming in TeleIRC v1.3?&nbsp;<a class="hanchor" href="#whats-coming-in-teleirc-v13" aria-label="Anchor link for: What&rsquo;s coming in TeleIRC v1.3?">🔗</a></h2>
<p>The developers&rsquo; meeting focused on identifying critical tasks to work on for the next sprint. The following open issues were identified as essential for v1.3:</p>
<ul>
<li><strong><a href="https://github.com/RITlug/teleirc/issues/41">#41</a></strong>: Sending an image with a caption in telegram then editing the caption causes the image to get sent again</li>
<li><strong><a href="https://github.com/RITlug/teleirc/issues/44">#44</a></strong>: Add Telegram-side highlighting for IRC messages prefixed with username</li>
<li><strong><a href="https://github.com/RITlug/teleirc/issues/53">#53</a></strong>: multi-line messages should have each lined prefixed with the userid</li>
<li><strong><a href="https://github.com/RITlug/teleirc/pull/102">#102</a></strong>: Splitting of messages sent to IRC, prepending TG username to each one</li>
<li><strong><a href="https://github.com/RITlug/teleirc/issues/112">#112</a></strong>: Insert zero-width space in Telegram usernames sent to IRC</li>
<li><strong><a href="https://github.com/RITlug/teleirc/issues/115">#115</a></strong>: Image url reveals bot&rsquo;s token</li>
<li><strong><a href="https://github.com/RITlug/teleirc/issues/118">#118</a></strong>: Refactor documentation into smaller pages (to make it more readable)</li>
</ul>
<p>Of these, #53 and #102 will be closed by <a href="https://github.com/RITlug/teleirc/pull/102">pull request #102</a>. <a href="https://github.com/michalrud">Michał Rudowicz</a> contributed #102 and it should be merged during this sprint window. (<em>Thanks Michał!</em>)</p>
<p>Keep up with more development news by watching the <a href="https://github.com/RITlug/teleirc/milestone/5">v1.3 milestone</a> on GitHub.</p>

<h2 id="when-is-teleirc-v13-coming">When is TeleIRC v1.3 coming?&nbsp;<a class="hanchor" href="#when-is-teleirc-v13-coming" aria-label="Anchor link for: When is TeleIRC v1.3 coming?">🔗</a></h2>
<p>TeleIRC v1.3 is projected for <strong>Saturday, March 2nd</strong>. For the selected issues, we felt four weeks was sufficient to accomplish and meet all existing goals. If we move faster than expected, we may move items from the <a href="https://github.com/RITlug/teleirc/milestone/6">v1.4 milestone</a> up to this release.</p>

<h2 id="how-can-i-participate">How can I participate?&nbsp;<a class="hanchor" href="#how-can-i-participate" aria-label="Anchor link for: How can I participate?">🔗</a></h2>
<p>Want to help out or get involved with TeleIRC? We are happy to welcome you! Past contributors have come from all around the world.</p>
<p>Say hello in our Freenode IRC channel, <a href="https://webchat.freenode.net/?channels=ritlug-teleirc">#ritlug-teleirc</a>, or <a href="https://t.me/teleirc">join the Telegram group</a>. You can also look through our &ldquo;<a href="https://github.com/RITlug/teleirc/issues?q=is%3Aopen&#43;is%3Aissue&#43;label%3A%22good&#43;first&#43;issue%22&#43;no%3Aassignee">good first issue</a>&rdquo; tickets in GitHub. If something looks interesting, leave a comment of interest in the GitHub issue and a committer can offer more guidance.</p>
<p>If you are a user and want to share feedback or thoughts with the team, leave a comment on this blog post and they will be shared with the team.</p>
<hr>
<p><em><a href="https://unsplash.com/photos/guiQYiRxkZY">Background photo</a> by <a href="https://unsplash.com/@epicantus">Daria Nepriakhina</a> on <a href="https://unsplash.com/">Unsplash</a>.</em></p>]]></description></item><item><title>Why did Fedora Modularity fail in 2017? A brief reflection</title><link>https://jwheel.org/blog/2019/01/why-did-fedora-modularity-fail/</link><pubDate>Mon, 21 Jan 2019 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2019/01/why-did-fedora-modularity-fail/</guid><description><![CDATA[<p>For the ISTE-430 Information Requirements Modelling course at the <a href="https://www.rit.edu/">Rochester Institute of Technology</a>, students are asked to analyze an example of a failed software project and write a short summary on why it failed. For the assignment, I evaluated the <a href="https://communityblog.fedoraproject.org/modularity-dead-long-live-modularity/">December 2017 announcement</a> on <a href="https://docs.pagure.org/modularity/">Fedora Modularity</a>. I thought it was an interesting example of a project that experienced initial difficulty but re-calibrated and succeeded in the end. And it is a project I am biased towards, as a Fedora user and sysadmin.</p>
<p>I thought sharing it on my blog might be interesting for others. Don&rsquo;t read into this too much – it was a quick analysis from a single primary source and a few secondary references.</p>

<h2 id="what-is-fedora-modularity">What is Fedora Modularity?&nbsp;<a class="hanchor" href="#what-is-fedora-modularity" aria-label="Anchor link for: What is Fedora Modularity?">🔗</a></h2>
<p>The <a href="https://getfedora.org/">Fedora Project</a> is a common Linux operating system which ships software in &ldquo;packages&rdquo;. <a href="https://fedoraproject.org/wiki/Objectives/Fedora_Modularization,_Requirements_Phase">Since June 2015</a>, project members built a pipeline to ship modular versions of existing packages, known as Modularity. <a href="https://docs.pagure.org/modularity/">Modularity</a> allows someone to use different versions of the same software (e.g. a programming library) on the same system without dependency conflicts.</p>
<p>In a way, Fedora Modularity shifts some responsibility from the Linux distribution (as a provider of known, good combinations of co-dependent packages) to the sysadmin (as a decision-maker to use different combinations of software versions in their environment). It&rsquo;s more flexible for a variety of deployment requirements. I see it as a net-positive win for the sysadmin experience since its final release.</p>

<h2 id="why-did-modularity-fail-in-2017">Why did Modularity fail in 2017?&nbsp;<a class="hanchor" href="#why-did-modularity-fail-in-2017" aria-label="Anchor link for: Why did Modularity fail in 2017?">🔗</a></h2>
<p>However, in <a href="https://communityblog.fedoraproject.org/modularity-dead-long-live-modularity/">this post-mortem</a> from December 2017, a project lead (Stephen Gallagher) announced Fedora Modularity efforts are scrapped for a total redesign. Even though it was not a final release, it was regarded as a failure because of the late status of the project, since its proposal in mid-2015. The post-mortem explained the amount of effort required by all software packagers was significant and also noted the wide amount of engagement necessary from different stakeholders. New requirements and steps to packaging guidelines were not understood by the community of software packagers, and project milestones were not met because of low participation in the packager community.</p>
<p>Their report reveals the amount of moving parts Fedora Modularity must account for. It demonstrated a flawed understanding of user and developer needs during initial feedback from the beta&rsquo;s implementation. In other words, the level of complexity for the project exceeded the amount of employee resources available to accomplish the project. The redesigned model (proposed in the reflection) pivoted by utilizing existing tools and infrastructure to support the new features, which required less changes for new software package updates. Thus, the packager community was better able to participate in providing new functionality in existing packages.</p>
<p>Additionally, sufficient documentation of new guidelines was unavailable to users, stemming from lack of engagement and feedback by existing users. This was later remedied with user experience testing through events like Test Days, which allowed any community member to try out new features and functionality with their own packaging workflows.</p>
<p>Since the project was finally implemented in late 2018, it was better received in the community than the failed launch in December 2017. Most success since the first failure came by simplifying project requirements (e.g. by leveraging how existing infrastructure was designed instead of reinventing the pipeline) and getting more user feedback on a regular basis (e.g. with community outreach events like Test Days and classroom sessions hosted live on YouTube).</p>
<hr>
<p>Gallagher, S. (2017). Modularity is Dead, Long Live Modularity! <em>Fedora Community Blog</em>. Retrieved from <a href="https://communityblog.fedoraproject.org/modularity-dead-long-live-modularity/">https://communityblog.fedoraproject.org/modularity-dead-long-live-modularity/</a></p>]]></description></item><item><title>Sphinx docs authors: Meet an opinionated quickstart</title><link>https://jwheel.org/blog/2018/12/meet-an-opinionated-quickstart-for-sphinx-docs-authors/</link><pubDate>Mon, 03 Dec 2018 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2018/12/meet-an-opinionated-quickstart-for-sphinx-docs-authors/</guid><description><![CDATA[<p>Do you write documentation with the Sphinx <a href="http://www.sphinx-doc.org/en/master/">tool chain</a>? Do you want to encourage more people to write Sphinx documentation in a distributed organization, but worry about maintaining compatible workflows? Introducing <a href="https://github.com/justwheel/sphinx-docs-opinionated-quickstart">sphinx-docs-opinionated-quickstart</a>, a template repository with an opinionated configuration of ReStructuredText documentation with Travis CI testing and <a href="https://readthedocs.org/">readthedocs.org</a> publishing.</p>
<p>I created this for the <a href="https://ritlug.com/">RIT Linux User&rsquo;s Group</a> (a.k.a. RITlug). RITlug welcomes student-led projects for members to work on together. RITlug executive board members want to better encourage students to share and join projects for collaboration with the community (in the spirit of FOSS). To do this, the executive board members will create and offer both a template website and template documentation tools to introduce students to project development process. Then, students are better able to sustain a more diverse community around their projects.</p>

<h2 id="start-writing-restructuredtext-already">&ldquo;Start writing ReStructuredText already!&rdquo;&nbsp;<a class="hanchor" href="#start-writing-restructuredtext-already" aria-label="Anchor link for: &ldquo;Start writing ReStructuredText already!&rdquo;">🔗</a></h2>
<p>The philosophy with this small project is: &ldquo;<em>Start writing ReStructuredText already!</em>&rdquo; I use Sphinx with ReadTheDocs as a deployment option across <a href="https://jwfblog.wpenginepowered.com/2018/02/unicef-internship/">different organizations</a>. I want a common base to later customize for a specific project&rsquo;s needs.</p>
<p>The whole point of this project is to save time kicking off a new project&rsquo;s recently-established documentation effort.</p>

<h2 id="sphinx-travis-ci-testing-configuration-included">Sphinx Travis CI testing configuration included&nbsp;<a class="hanchor" href="#sphinx-travis-ci-testing-configuration-included" aria-label="Anchor link for: Sphinx Travis CI testing configuration included">🔗</a></h2>
<p>Complex documentation tool chains need simple validation of successful builds. This avoids long periods where documentation may not build and the public docs are out of date. It also better engages core contributors to monitor and take care of their documentation.</p>
<p>A Travis CI <a href="https://github.com/justwheel/sphinx-docs-opinionated-quickstart/blob/master/.travis.yml">configuration</a> is included. Fork this repository and enable the repo on <a href="https://travis-ci.org/">travis-ci.org</a> to start running builds.</p>

<h2 id="add-a-star-on-github">Add a star on GitHub&nbsp;<a class="hanchor" href="#add-a-star-on-github" aria-label="Anchor link for: Add a star on GitHub">🔗</a></h2>
<p>Does this sound helpful? Check it out and <a href="https://github.com/justwheel/sphinx-docs-opinionated-quickstart/stargazers">add a star</a> at <a href="https://github.com/justwheel/sphinx-docs-opinionated-quickstart">justwheel/sphinx-docs-opinionated-quickstart</a>. The project is licensed under the <a href="https://github.com/justwheel/sphinx-docs-opinionated-quickstart/blob/master/LICENSE.txt">BSD 3-Clause License</a>; feel free to fork it and form your own opinions too.</p>
<hr>
<p><em><a href="https://unsplash.com/photos/q7TGPrFIlIg">Photo</a> by</em> <a href="https://unsplash.com/photos/q7TGPrFIlIg?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText"><em>Jānis Skribāns</em></a> <em>on</em> <a href="https://unsplash.com/?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText"><em>Unsplash</em></a><em>.</em></p>]]></description></item><item><title>Sustain OSS 2018: quick rewind</title><link>https://jwheel.org/blog/2018/11/sustain-oss-2018-quick-rewind/</link><pubDate>Tue, 13 Nov 2018 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2018/11/sustain-oss-2018-quick-rewind/</guid><description><![CDATA[<p>This year, I attended the second edition of the <a href="https://sustainoss.org/">Sustain Open Source Summit</a> (a.k.a. Sustain OSS) on October 25th, 2018 in London. Sustain OSS is a one-day discussion on various topics about sustainability in open source ecosystems. It&rsquo;s also a collection of diverse roles across the world of open source. From small project maintainers to open source program managers at the largest tech companies in the world, designers to government employees, there is a mix of backgrounds in the room. Yet there is a shared context around the most systemic problems faced by open source projects, communities, and people around the world.</p>
<p>The shared context is the most valuable piece of the conference. As a first-time attendee, I was blown away by the depth and range of topics covered by attendees. This blog post covers a narrow perspective of Sustain OSS through the sessions I participated and co-facilitated in.</p>

<h2 id="speed-breakout-groups">Speed breakout groups&nbsp;<a class="hanchor" href="#speed-breakout-groups" aria-label="Anchor link for: Speed breakout groups">🔗</a></h2>
<p>The morning started with speed breakout groups of between six to twelve people. Several attendees acted as facilitators for discussion on special topics. Every attendee could about half of all groups. I took extensive notes in the following groups:</p>
<ul>
<li>Charitable participation in open source</li>
<li>Diversity and inclusion</li>
<li>Turning open source projects into sustainable projects / companies</li>
<li>Design in open source</li>
<li>Open source financial sustainability models</li>
</ul>

<h3 id="sustain-oss-high-level-takeaways">Sustain OSS: High-level takeaways&nbsp;<a class="hanchor" href="#sustain-oss-high-level-takeaways" aria-label="Anchor link for: Sustain OSS: High-level takeaways">🔗</a></h3>
<p>To save you time, these are my high-level takeaways across all breakout groups I participated in:</p>
<ul>
<li>
<p>Open source isn&rsquo;t something just done in people&rsquo;s free time</p>
</li>
<li>
<p>Complex systems can enable systemic bias in terms of what &ldquo;open source&rdquo; means</p>
</li>
<li>
<p>Sustainability as topic of first priority / consideration, not an afterthought</p>
</li>
<li>
<p>There is no &ldquo;silver bullet&rdquo; solution to any of these challenges; they all require adaption to work across communities, projects, and organizations</p>
</li>
</ul>

<h3 id="charitable-participation-in-open-source">Charitable participation in open source&nbsp;<a class="hanchor" href="#charitable-participation-in-open-source" aria-label="Anchor link for: Charitable participation in open source">🔗</a></h3>
<p>This breakout group focused on the connection between charitable organizations and free software projects. It was facilitated by the esteemed <a href="https://twitter.com/o0karen0o">Karen Sandler</a> of the <a href="https://sfconservancy.org/">Software Freedom Conservancy</a>.</p>
<p>Overall, the conversation was split among creating ethical software, finding sustainable funding models, and balancing how much control to relinquish as a managing organization of an open source project. Some felt pride and ideology were strong drivers for contributors to ideological projects (which also mirrors my experience at <a href="http://unicefstories.org/magicbox/">UNICEF</a>). These could be key motivations to understand for contributors. Additionally, the challenge around sustainable funding models was common across charitable foundations focused on free software. Grant funding is a common strategy employed by charitable organizations, but the short-term nature of grants puts additional strain on resources to continue searching for new funding. Lastly, for charitable organizations overseeing or supporting free software projects, there was uncertainty over how much control should be left to projects. Attendees generally expressed a desire to let projects do what they want, but it sometimes came at the risk of additional overhead for the organization when everyone does something of everything. The concern over toxic communities came up, and how some issues remain buried until farther along in a relationship with a project. One successful solution employed was to hold monthly meetings among all member projects of an organization to address difficulties.</p>
<p>One interesting detail that captured my attention: one attendee noted how extensive effort into fundraising campaigns targeted to members of a foundation actually increased member engagement with the foundation.</p>

<h3 id="diversity-and-inclusion">Diversity and inclusion&nbsp;<a class="hanchor" href="#diversity-and-inclusion" aria-label="Anchor link for: Diversity and inclusion">🔗</a></h3>
<p>My biggest takeaway from this session was the danger in thinking of open source as something we do in our free time. This can be exclusive to different genders, races, and socioeconomic statuses. Some &ldquo;free time&rdquo; is more equal than others. The actionable piece for me is to be more conscious in building and growing communities to support different levels of contribution in a community.</p>
<p>The question I wanted to explore after reflecting is to ask of those who feel disadvantaged:</p>
<ul>
<li>What factors makes a project more or less inviting for you?</li>
<li>What can we do better when designing for participation in our communities?</li>
</ul>

<h3 id="turning-open-source-projects-into-sustainable-ones">Turning open source projects into sustainable ones&nbsp;<a class="hanchor" href="#turning-open-source-projects-into-sustainable-ones" aria-label="Anchor link for: Turning open source projects into sustainable ones">🔗</a></h3>
<p>My notes weren&rsquo;t thorough on this session, but there was an interesting point on trademark that came up during discussion of the <a href="https://commonsclause.com/">Commons Clause</a>. One participant was pursuing trademark law to enforce commercial protections and sustainability. They gave an example of a large corporation advertising support with a major open source project (e.g. a major software/hardware vendor supporting a specific NodeJS version). They wanted to use this as a way to create a more financially sustainable model for some projects.</p>

<h3 id="design-in-open-source">Design in open source&nbsp;<a class="hanchor" href="#design-in-open-source" aria-label="Anchor link for: Design in open source">🔗</a></h3>
<p>This breakout group focused on sustainable design and design practices in open source communities. The role of designers in technical projects was also discussed and how we can build technical communities to be more inclusive for designers. It was facilitated by <a href="https://elioqoshi.me/about-me/">Elio Qoshi</a>.</p>
<p>My takeaways from this breakout were that established ways of working can be unfriendly to designers and there is a need to emphasize diversity across different roles in a project or organization. Certain tools, platforms, or other mechanisms for contributing have poor user interfaces. They can push people away because of barriers to contributing with a frustrating user experience. Next, the need for diversity in roles was noted, with an example of engineers leading project management. Sometimes bias or oversights afforded as an engineer accidentally excludes others like designers or writers from contributing to our project. We should endeavor for people to spend more time on their preferred and most effective methods of contribution.</p>

<h3 id="financial-sustainability-models">Financial sustainability models&nbsp;<a class="hanchor" href="#financial-sustainability-models" aria-label="Anchor link for: Financial sustainability models">🔗</a></h3>
<p>This breakout session focused on the traditional sense of sustainability: in finances and resources. Attendees discussed different models used to fund open source projects and foundations. The session was facilitated by the founder of the <a href="https://musicbrainz.org/doc/About">MusicBrainz</a> project, <a href="https://twitter.com/MayhemBCN">Robert Kaye</a>.</p>
<p>The model used by <a href="https://metabrainz.org/about">MetaBrainz</a> essentially as a data broker was interesting and unique. MetaBrainz offers commercial data usage at a cost, and companies using their data have a strong need for the data and see value in it. Through other parts of their model since changing three years ago, they had significant gains in their revenue and were able to increase paid staff working on the projects.</p>
<p>The Amazon invoice cake is also an amusing story, but you should ask Robert directly about it.</p>


<h2 id="hour-breakout-sessions">Hour breakout sessions&nbsp;<a class="hanchor" href="#hour-breakout-sessions" aria-label="Anchor link for: Hour breakout sessions">🔗</a></h2>
<p>After lunch, attendees participated in two hour-long breakout sessions to explore specific topics in greater detail.</p>

<h3 id="human-aspect-of-governance">Human aspect of governance&nbsp;<a class="hanchor" href="#human-aspect-of-governance" aria-label="Anchor link for: Human aspect of governance">🔗</a></h3>
<p>Longer form notes are available below. I won&rsquo;t go into detail since it has its own document with notes and highlights.</p>
<p><a href="/docs/Open-source-human-governance-Sustain-OSS-London-2018.pdf">Human aspects of open source governance - Sustain OSS London 2018</a><a href="/docs/Open-source-human-governance-Sustain-OSS-London-2018.pdf">Download</a></p>

<h3 id="university-engagement">University engagement&nbsp;<a class="hanchor" href="#university-engagement" aria-label="Anchor link for: University engagement">🔗</a></h3>
<p>Together with <a href="https://twitter.com/epistemographer">Josh Greenberg</a> of the <a href="https://sloan.org/">Alfred P. Sloan Foundation</a>, we co-facilitated a spontaneous session on how universities can engage with open source communities and vice versa.</p>
<p>In our session, two major topics were discussed:</p>
<ul>
<li>
<p>Education (e.g. curriculum, institutions, programs, etc.)</p>
</li>
<li>
<p>Research</p>
</li>
</ul>
<p>We asked all participants why they decided to participate and what questions they had, even though we weren&rsquo;t able to answer all of them:</p>
<ol>
<li>How do we get the word out?</li>
<li>What research is most valuable for open source?</li>
<li>How to long-term sustain projects?</li>
<li>How to actually do and support research?</li>
<li>How to engage both students and faculty?</li>
<li>How to harness / enable institutions to make positive contributions to ecosystem?</li>
</ol>
<p>For education, we agreed that introducing and teaching open source in curriculum better serves students and the institution (both financially and in career satisfaction). Many technology companies today are participating in open source and it is an important skill to have for students entering the workforce. For research, students are already doing research and proposing topics, so better student engagement in open source is better for research.</p>
<p>Our takeaways were to better engage with existing organizations working on these problems for years already (e.g. <a href="http://teachingopensource.org/POSSE/">POSSE</a>), shifting the perspective of universities to be stewards of FOSS, and using collegiate hackathons as a way to better engage with undergraduate students.</p>
<p>One additional point that stood out to me was the emphasis across all breakout participants for a need of good communication skills to be successful. In many cases, the companies hiring top tech talent (from our breakout attendees) listed this as most desirable skill. Technology and new skills can be learned, but teaching good communication skills and how to work collaboratively are not easily learned.</p>

<h2 id="other-takeaways">Other takeaways&nbsp;<a class="hanchor" href="#other-takeaways" aria-label="Anchor link for: Other takeaways">🔗</a></h2>
<p>One takeaway I couldn&rsquo;t fit elsewhere was my changed perspective on &ldquo;technical&rdquo; vs. &ldquo;non-technical&rdquo; work. The phrase &ldquo;non-technical work&rdquo; implies an &ldquo;other space where development does not occur&rdquo;. Does the phrase place unequal priority on technical work? One action item is to avoid using &ldquo;non-technical work&rdquo; as an umbrella term, and instead call these areas by what they are: design, documentation, writing, marketing, community building, etc.</p>
<p>For me, I still want an umbrella term for these things, but I&rsquo;m open-minded for better alternatives to non-technical.</p>

<h3 id="skill-share-conflict-resolution">Skill share: conflict resolution&nbsp;<a class="hanchor" href="#skill-share-conflict-resolution" aria-label="Anchor link for: Skill share: conflict resolution">🔗</a></h3>
<p>The last event of Sustain OSS was a 1x1 skill share. Roughly half of the attendees identified a &ldquo;skill&rdquo; they could teach someone else in the room. The other half of attendees paired with someone teaching a skill they wanted to learn more about. I paired with <a href="https://www.jonobacon.com/about/bio/">Jono Bacon</a> on a short breakout on conflict resolution.</p>
<p>Jono detailed steps of working through and resolving conflict, including how to identify root problems, how to make steps to resolve them, and some personal philosophy of how we build and maintain relationships with others.</p>
<p>An important first step is to identify the critical point: this could be an ongoing crisis, dealing with interpersonal conflict, or dealing with burnout. When someone is explaining a problem, listen fully to them and understand what they are saying. Let them get it off their chest. Is there something else causing this behavior? Tap into the cloud of ranting and determine what the root cause is.</p>
<p>Once common ground is established, make a plan to resolve it. Jono&rsquo;s advice was to create written next steps and be explicit about expectations. This way, everyone is on the same page of what the next steps are and everyone involved has signed off on these next steps (this creates a sense of commitment and the next steps become written as &ldquo;law&rdquo;). Encourage others to restate the goals of conflict resolution in their own words. Once you have written goals and expectations, the crucial next step is follow-up. Check in on a regular basis with the person or people involved. Try to be neutral and unbiased when listening to others in these conversations. Go in with an open mind.</p>
<p>Lastly, we contextualized conflict resolution in personal philosophy of how we build and maintain relationships with others – both in and out of our open source projects. Sometimes the best way to address difficult interpersonal problems is to stop avoiding them and simply address them. Much easier said than done, but otherwise there is no escaping the perpetuated cycle of conflict if someone doesn&rsquo;t make a first step.</p>
<p>It&rsquo;s not just about code.</p>

<h2 id="thank-you">Thank you&nbsp;<a class="hanchor" href="#thank-you" aria-label="Anchor link for: Thank you">🔗</a></h2>
<p>To wrap up this Sustain OSS report, a few obligatory thank-yous are needed:</p>
<ul>
<li>
<p><strong><a href="https://sloan.org/">Sloan Foundation</a> / <a href="https://www.fordfoundation.org/">Ford Foundation</a></strong>: For the financial support I needed to attend and participate in the event – this is never something I take for granted and I am happy to have received a scholarship to attend and participate</p>
</li>
<li>
<p><strong><a href="https://twitter.com/epistemographer">Josh Greenberg</a> @ <a href="https://sloan.org/">Sloan Foundation</a></strong>: For helping me get over some imposter syndrome and co-facilitate the university engagement breakout session with me – thanks for the gentle push</p>
</li>
<li>
<p><strong><a href="https://twitter.com/MayhemBCN">Robert Kaye</a> @ <a href="https://metabrainz.org/">MetaBrainz</a></strong>: For being generally awesome and finally giving me someone to nerd out about all these crazy ideas of how free culture and music can actually be related!</p>
</li>
<li>
<p><strong><a href="https://www.rit.edu/gccis/stephen-jacobs">Stephen Jacobs</a></strong>: For always being supportive for yet another trip abroad and helping me map a strategy to get the most out of Sustain OSS</p>
</li>
</ul>
<p>Sustain OSS gave me a lot to think about and consider. I&rsquo;m glad and fortunate to have attended. I hope this event report gives additional visibility to some of the conversations held in London this year.</p>]]></description></item><item><title>Fedora Appreciation Week: Tribute to a legacy</title><link>https://jwheel.org/blog/2018/11/fedora-appreciation-week-tribute-to-a-legacy/</link><pubDate>Tue, 06 Nov 2018 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2018/11/fedora-appreciation-week-tribute-to-a-legacy/</guid><description><![CDATA[<p>I was reviewing one of my old journals this morning and re-read an early entry from when I was <a href="https://jwfblog.wpenginepowered.com/2018/02/2017-year-review/">studying abroad</a> in Dubrovnik, Croatia. The entry was a time when I learned more about a man named <a href="https://twitter.com/skvidal">Seth Vidal</a> by chance. Reading this entry again the week before <a href="https://communityblog.fedoraproject.org/fedora-appreciation-week-2018/">Fedora Appreciation Week</a> motivated me to share it and add to the stream of stories surrounding his life and <a href="https://www.businessinsider.com/36-year-old-seth-vidal-tragically-killed-2013-7">passing</a>.</p>
<p>The entry is lifted out of my journal with minimum edits. I thought about fully revising it or updating it before publishing. Many parts I would write in a different way now, but I decided to let it be. It reflects my perspective at that particular moment and time at 19 years old. It is more personal than other posts I&rsquo;ve published and maybe it&rsquo;s a little uncomfortable for me to share, but I felt like it was worth doing anyways.</p>

<h2 id="entry002-2017-02-12">entry002: 2017-02-12&nbsp;<a class="hanchor" href="#entry002-2017-02-12" aria-label="Anchor link for: entry002: 2017-02-12">🔗</a></h2>
<p>Picking up the pen to write in this is always difficult because it feels like there&rsquo;s too much to say. Part of the problem is that I don&rsquo;t write frequently enough, which I&rsquo;ll try to improve. Not everything worth saying needs to be publicly lambasted.</p>
<p>I left the apartment for coffee after again reading the story of Seth Vidal, a founding developer of <a href="https://en.wikipedia.org/wiki/Yum_%5C%28software%5C%29">YUM</a> and a one-time Fedora superstar. Seth was killed in a hit-and-run accident while cycling in 2013.</p>
<p>What strikes me so much about Seth isn&rsquo;t just the work or code he left behind, but his legacy. There is no shortage of blog posts dedicated in his memory, with many written by folks I see regularly in Fedora. He is held in a high respect and regard not only because of his work, but how he worked with people. He was clearly a sincere friend of many in the community and always knew how to use and share his brilliance to bring out the same brilliance of those he worked with. He wasn&rsquo;t afraid to speak his mind, but he always did so courteously and in a way where there was a next step or improvement. As <a href="https://paul.frields.org/2013/07/13/have-you-been-half-asleep-and-have-you-heard-voices/">one memoir quoted him</a> as saying with a cocked head and a smile, &ldquo;Are you <em>sure</em> that&rsquo;s what you want to do? Because I&rsquo;m pretty sure it&rsquo;s not.&rdquo;</p>
<p>It&rsquo;s odd for me to read about Seth and how connected to him I feel, despite his death occurring well before I was anywhere near where I am now. Maybe it&rsquo;s because I, like [thousands] of others, use his software. But more likely is because I see the type of impact and legacy is something I wish to share. <em>Not</em> having so many people write memoirs of my passing, but more about how many lives, communities, and people he touched. I see a man you could approach with anything, whether he knew you or not, and he would give you his honest opinion to help drive or motivate you to success. It may not be what you want to hear, but it will be what you need to hear. Again, delivery of that message is critical, and Seth seemed to be pretty good at it.</p>
<p>I may not know Seth, nor will I ever, but his legacy gives me a strong reminder about what I hold important and how I want to carry out my presence in the projects I&rsquo;m involved with. If more people want more Seth Vidal&rsquo;s in the world, then we need to [understand] his values, compare them to our own, and build those values into our own being. This is part of the idea of actively shaping and adapting our values, and never settling with the way we are because we think we know these things. If the mind is open and willing, we are always learning, and thus, always changing.</p>
<p>In summary? Seth&rsquo;s light fades out and burns into embers, but it never dies. His legacy will always be there, for friends to remember and strangers to learn from. Amidst all of this panicked writing I have to do after DevConf and FOSDEM, Seth&rsquo;s legacy levels me and reminds me of what&rsquo;s important. Sometimes what&rsquo;s really important is logging off and going for a bike ride, or a coffee with notebook and pen, or sharing precious time with loved ones. Seth, you may be gone and have no memory of me, but I have your memory, and I hope you are with me too.</p>
<p><em>Justin Wheeler</em></p>]]></description></item><item><title>How five Queen songs went mainstream in totally different ways</title><link>https://jwheel.org/blog/2018/10/five-queen-songs-mainstream/</link><pubDate>Tue, 16 Oct 2018 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2018/10/five-queen-songs-mainstream/</guid><description><![CDATA[<p><a href="http://blog.musicbrainz.org/2018/10/16/five-queen-songs-mainstream/"><em>Originally published on the MusicBrainz blog.</em></a></p>
<p><a href="http://blog.musicbrainz.org/2018/10/16/five-queen-songs-mainstream/"></a></p>
<hr>
<p>Making graphs is easy. Making intuitive, easy-to-understand graphs? It&rsquo;s harder than most people think. At the <a href="https://www.rit.edu/">Rochester Institute of Technology</a>, the ISTE-260 (Designing the User Experience) course teaches the language of design to IT students. For an introductory exercise in the class, students are tasked to visualize any set of data they desire. Students <a href="https://www.linkedin.com/in/davidkim18/">David Kim</a>, <a href="https://www.linkedin.com/in/jathan-a/">Jathan Anandham</a>, <a href="https://www.linkedin.com/in/jwwheel/">Justin Wheeler</a>, and <a href="https://www.linkedin.com/in/scott-tinker-216962129/">Scott Tinker</a> used the MusicBrainz database to look at how five different Queen songs went mainstream in different ways.</p>

<h2 id="five-factors-of-queen">Five factors of Queen&nbsp;<a class="hanchor" href="#five-factors-of-queen" aria-label="Anchor link for: Five factors of Queen">🔗</a></h2>
<p>Our mini data science experiment decided to look at five unique data points available to us via <a href="https://musicbrainz.org/doc/Work">MusicBrainz Works</a>:</p>
<ul>
<li>Number of recorded covers</li>
<li>Number of artists who covered a song</li>
<li>Release year</li>
<li>Year of last recorded cover</li>
<li>Time elapsed between release year and year of last recorded cover</li>
</ul>
<p>Originally, we looked at songs from different artists, but decided to look at five recordings from the same artist. With Queen being a notoriously famous band, there were several data points to work with in terms of how often a song was covered.</p>
<p>
<figure>
  <img src="/blog/2018/10/Queen-data-visualization.png" alt="How five Queen songs went mainstream in totally different ways" loading="lazy">
  <figcaption><strong><em>Studying five Queen songs</em></strong>: Another One Bites the Dust, Bohemian Rhapsody, Don’t Stop Me Now, Fat Bottomed Girls, We Will Rock You</figcaption>
</figure>
</p>

<h2 id="making-sense-of-the-data">Making sense of the data&nbsp;<a class="hanchor" href="#making-sense-of-the-data" aria-label="Anchor link for: Making sense of the data">🔗</a></h2>
<p>A few explanations are necessary for some of the data, especially the difference in number of covers and number of artists. <em>Don&rsquo;t Stop Me Now</em>, <em>Fat Bottomed Girls</em>, and <em>We Will Rock You</em> had the same number of recorded covers as number of artists who have covered the song. Why were <em>Another One Bites the Dust</em> and <em>Bohemian Rhapsody</em> different?</p>
<p>As it turns out, <em>Another One Bites the Dust</em> had more covers than the number of artists who have covered the song. This happens because some artists have covered the song twice (e.g. once on a studio release and another on a live recording release). On the other hand, Bohemian Rhapsody had more artists covering it than number of covers because some recordings featured multiple artists on the same cover (e.g. the 1992 live performance with Elton John and Axl Rose).</p>
<p>The data opens many interesting questions. Why have some songs persisted longer than others (in terms of recent covers)? Have these songs impacted culture and society in different ways? How have they permeated culture? Is there geographical bias in the data?</p>
<p>This exercise was an exploratory assignment, but we had fun visualizing it and ended up learning an interesting pattern in music data.</p>

<h2 id="check-out-the-presentation-and-paper">Check out the presentation and paper&nbsp;<a class="hanchor" href="#check-out-the-presentation-and-paper" aria-label="Anchor link for: Check out the presentation and paper">🔗</a></h2>
<p>If you&rsquo;re interested for the full details, the <a href="https://docs.google.com/presentation/d/1sMgwgo5dxi2n0j1elnlfZgk3OU5QnwsZfcrNwQYmmCQ/edit?usp=sharing">slides</a> and a <a href="https://docs.google.com/document/d/1sLXBK2uUCpBazBUe_EiRdHOGlKUcBMwP7CG1XX9-Aiw/edit?usp=sharing">short paper</a> about the presentation are available online. They provide deeper context for the research and the visualization details based on different design concepts.</p>
<p>You can see what else <a href="https://www.linkedin.com/in/davidkim18/">David Kim</a>, <a href="https://www.linkedin.com/in/jathan-a/">Jathan Anandham</a>, <a href="https://www.linkedin.com/in/jwwheel/">Justin Wheeler</a>, and <a href="https://www.linkedin.com/in/scott-tinker-216962129/">Scott Tinker</a> are up to on LinkedIn. Thanks for tuning in to this adventure into music data analysis, powered by MusicBrainz!</p>
<hr>
<p><em>Photo by <a href="https://unsplash.com/photos/QrqeusbpFMM?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Matthias Wagner</a> on <a href="https://unsplash.com/search/photos/microphone?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a>.</em></p>]]></description></item><item><title>Wikipedia is a privilege</title><link>https://jwheel.org/blog/2018/10/wikipedia-privilege/</link><pubDate>Tue, 09 Oct 2018 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2018/10/wikipedia-privilege/</guid><description><![CDATA[<p><em>Originally written as an essay response for <a href="https://www.rit.edu/cla/english/450-free-and-open-source-culture">ENGL-450 Free and Open Source Culture</a> at the <a href="https://www.rit.edu/">Rochester Institute of Technology</a>.</em></p>
<hr>
<p>Growing up with easy access to the Internet grants the privilege of experiencing effortless knowledge and high availability of information. Wikipedia is an example of 21st century cooperation and collaboration. For many, it represents a beacon of free information and self-education. Some might credit it for charting wider participation in the movement towards free content and open resources.</p>
<p>Yet Wikipedia remains a tool of power and privilege, absent for many as societal myths perpetuate in the lives of children. As children are exposed to the Internet at earlier ages, their comprehension and correlation to the real world is in the context of living in a digitized society. In simpler words, everything they ever know always has technology, tablets, smart-phones, and smart devices present. There is no split experience of going from have-nots to haves.</p>
<p>For me, the split experience was my experience. As I became older, information became within click’s reach and a moment of patience. In prior generations, factual information existed in factual places, such as a library or a home study (for those privileged to own encyclopedias in their homes as children). Caught without any reference to support or dissent against a societal myth, the truth remained far enough out of reach for only the most motivated (and privileged) to continue searching for truth.</p>
<p>Today, this process takes seconds. From devices in pockets to sitting at desks. Desks now conveniently feature a computer workstation over “old school” writing utensils, books, and paper. Externally-verified information is available for those who seek truth or supporting evidence to define their own understanding of truth (additionally, misinformation is equally spreadable depending on prior motivations, but will not be covered in this short opinion).</p>
<p>If the answers are so near and available, it enables increased self-awareness among youth. The Internet&rsquo;s ludicrous goals of a more interconnected species came not boldly, but subtly. It crept into our culture and perception of the world. As more gratis and factual information (academic work, scientific research, investigative reporting, and others, often under free licenses) creeps into the search-able Internet, answers remain convenient with a few taps on an LCD screen. Perhaps today’s youth, privileged to early Internet exposure, have subconsciously understood their perception of information as naturally free and available (with different understandings of what is true or false). For those searching for secularism, the true science remains easy to find and discover.</p>
<p>And thus, the root of the issue. What is the role of privilege? What early childhood development possibilities are created within information-rich societies? Are children better able to cast away their own doubts and suspicions? Do they avoid buying into a system designed to feed from them?</p>
<p>But what of the contrary? What is the experience to go without this privilege? It can be lack of access to information. The perception of information is opposite of naturally free and available, but costly and hidden. The odds are stacked higher against you because of poor accessibility to tools and resources.</p>
<p>But is access to free knowledge like Wikipedia truly inaccessible for even the most impoverished? Since even some of the poorest countries have <a href="https://www.cnn.com/2016/01/19/africa/africa-afrobarometer-infrastructure-report/index.html">better access to smart-phones than piped water</a>, exposure to the wider Internet (including Wikipedia) is inevitable. But the timing is late. The critical period of early childhood development is missed. Early childhood development has three phases: conception, the first 1000 days (birth to three years old), and pre-school / pre-primary years. The brain of a child is most sensitive, almost like a sponge, in those first 1000 days. Researchers defend this period’s impact on child-society and community cohesion as critical, even influencing the neurobiology of peace.¹ So then what of those who have the privilege of exposure to technology in those first 1000 days? What of the <a href="https://www.statista.com/statistics/273288/advertising-spending-worldwide/">billions, nearly trillion, dollars of advertising</a> that slip through the cracks of what these children are exposed to? Are we subtly being written before language is even learned?</p>
<p>
<figure>
  <img src="/blog/2018/10/statistic_id273288_media-spending-worldwide-2014-2021.png" alt="Global advertising spending from 2014 to 2021 (in billion U.S. dollars). Shows increase of spending by 268.96 billion dollars in advertising from 2014 projected to 2021. Sourced from Statista." loading="lazy">
  <figcaption>Increase in spending on advertising by <strong>268.96 billion dollars</strong> from 2014 projected into 2021</figcaption>
</figure>
</p>
<p>In this way, the open and closed systems compete in the Internet state. There are positive and negative qualities from both free information and black-box systems in information-rich societies. Wikipedia is a privilege, but it is only one small part of something bigger. A privilege of truth. A privilege of access. A privilege of self-liberation.</p>
<hr>
<p>¹ Britto, Pia. “<em>Building Brains, Building Futures</em>.” Online webinar, UNICEF, 24 January 2018. Keynote address.</p>
<p>Photo by <a href="https://unsplash.com/photos/6tedMQIJpNI?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Clem Onojeghuo</a> on <a href="https://unsplash.com/search/photos/access?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a>.</p>]]></description></item><item><title>How to fix missing Python for Ansible in Fedora Vagrant</title><link>https://jwheel.org/blog/2018/09/how-to-fix-missing-python-for-ansible-in-fedora-vagrant/</link><pubDate>Tue, 18 Sep 2018 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2018/09/how-to-fix-missing-python-for-ansible-in-fedora-vagrant/</guid><description><![CDATA[<p>Recently, I started to use Vagrant to test Ansible playbooks on Fedora machines. I&rsquo;m using the Fedora 28 cloud base image. However, when I tried to provision my Vagrant box, I was warned the Python binary is missing.</p>
<pre tabindex="0"><code>$ vagrant provision
==&gt; default: Running provisioner: ansible...
    default: Running ansible-playbook...

PLAY [all] *********************************************************************

TASK [Gathering Facts] *********************************************************
fatal: [default]: FAILED! =&gt; {&#34;changed&#34;: false, &#34;module_stderr&#34;: &#34;Shared connection to 192.168.121.3 closed.\r\n&#34;, &#34;module_stdout&#34;: &#34;\r\n/bin/sh: /usr/bin/python: No such file or directory\r\n&#34;, &#34;msg&#34;: &#34;MODULE FAILURE&#34;, &#34;rc&#34;: 127}
	to retry, use: --limit @playbook.retry
</code></pre>
<h2 id="problem-python-3-by-default">Problem: Python 3 by default&nbsp;<a class="hanchor" href="#problem-python-3-by-default" aria-label="Anchor link for: Problem: Python 3 by default">🔗</a></h2>
<p>This error appears because Fedora 28 does not provide a Python 2 binary by default. Only Python 3 is provided on the base cloud image. I verified this by SSHing into the Vagrant box.</p>
<pre tabindex="0"><code>[jflory@vagrant-host vagrant]$ vagrant ssh
[vagrant@localhost ~]$ dnf list installed | grep -i python
</code></pre><p>Annoyingly, I must install Python 2 manually in the box each time it fails to provision. Surely, there is an easier way? Fortunately, StackOverflow came <a href="https://stackoverflow.com/questions/47423488/vagrant-ansible-python3">to the rescue</a>.</p>

<h2 id="solution-ansibleextra_vars">Solution: <code>ansible.extra_vars</code>&nbsp;<a class="hanchor" href="#solution-ansibleextra_vars" aria-label="Anchor link for: Solution: ansible.extra_vars">🔗</a></h2>
<p>It&rsquo;s possible to tell Vagrant where the Python binary is located. You can pass the path to the <code>python3</code> binary manually in your Vagrantfile.</p>
<pre tabindex="0"><code># Provisioning configuration for Ansible.
config.vm.provision :ansible do |ansible|
  ansible.playbook = &#34;playbook.yml&#34;
  ansible.extra_vars = { ansible_python_interpreter:&#34;/usr/bin/python3&#34; }
end
</code></pre><p>Adding these changes to your Vagrantfile allows Ansible to successfully run on the Fedora Vagrant guest. Python is successfully located.</p>
<p>This is an annoying workaround, but it solves the issue and lets you successfully test and iterate changes on Fedora systems. Here&rsquo;s hoping the Fedora cloud image maintainers add a default binary for <code>/usr/bin/python</code> to point to <code>/usr/bin/python3</code> in the future.</p>]]></description></item><item><title>What does it mean to be an American?</title><link>https://jwheel.org/blog/2018/07/to-be-american/</link><pubDate>Sat, 28 Jul 2018 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2018/07/to-be-american/</guid><description><![CDATA[<p>I can&rsquo;t help but feel this period in history is significant, if only for what is yet to come of this global political climate. Each day I read the news, a mix of positive and negative connotations blurs through my subconscious: paragraphs of words about people far away, words about events that happened when I was asleep. Heavy paragraphs and words that seem void of emotion, but carry all the weight of a freight train. These articles, paragraphs, and collection of words are the paint of perspective, and as much as they are overwhelming, they are also equally so liberating.</p>
<p>Across this spectrum of bold headlines and addicting scrolling, I began to wonder about identity. What determines how we choose to identify where we originate from? What makes us decide to disassociate from our birthplace? What parts of our culture make us proud and content and what parts are like fresh wounds withheld from time and space needed to heal? I started to wonder about my own identity and what it means to me to be defined as an American.</p>
<p>I fight a growing sense of dissatisfaction and disbelief of what I read happening each day. As I read about the United States and how its citizens are represented on a global stage, a feeling of repulsion sinks into my stomach. Society greatly shaped my perspective of what it meant to be an American as I grew up. What is around me now is contradicting: the qualities of inclusiveness and diversity espoused to the identity of being an American are the same qualities I feel are under attack.</p>
<p>One afternoon as I walked back to my Chicago apartment, I passed a Mexican restaurant. As I walked by, I searched for a menu to measure how authentic it would be compared to offerings in Atlanta (I&rsquo;ve notoriously had a difficult time finding authentic Mexican food north of Virginia). However, I was disappointed, as the choices fell into the category of American-Mexican food and not the authentic dishes I craved.</p>
<p>But even though I continued on and left the food behind me, the restaurant didn&rsquo;t leave my mind. As I continued to ponder on what it means to be American, I couldn&rsquo;t get this restaurant, and countless others like it, out of my mind. One of the most unique observations of my travels is how culturally homogeneous so many countries are. From my experience living in Europe and visiting India, the difference of cultural diversity from my American experience was impossible to miss. Each country was mostly shaped by its dominant ethnic group. To see a Nicaraguan in Croatia or a Swede in India would be a memorable encounter because it was outside of preconceived expectations. But in America, I board a New York City, Chicago, or Washington DC subway, and I always remain pleasantly surprised at how unique and different all the passengers are.</p>
<p>But what of the Mexican restaurant? If my train rides reflect this unique cultural identity, what is the significance of the Mexican restaurant and why can&rsquo;t I forget it?</p>
<p>Suddenly, I realize perhaps American culture is several shards of all other cultures that assimilate here. Instead of the restaurant being an imitation of the real thing, what if it is as real and independent of an experience as the original? Instead of being a clone or a derivative, what if they are their own original craft and subculture? In a way, they are mostly unique – many of the fusions of culture, from food to celebrations, and architecture to film are only found in this sort of combination here.</p>
<p>These pieces of foreign culture are transplanted seeds, taken from their native soil and planted into a new environment. It requires adaption and perhaps creativity too. But these pieces of culture, whether they are motivated to be imitations or not, are created from a place of love and genuine human connection. They stem from a desire to celebrate who we are and where we come from. Furthermore, they offer an opportunity to share these things with others and to pass along the memories and experiences to others in the hopes that they too will see the world from a different perspective, if only for a passing moment.</p>
<p>As I continue to read past another day of headlines, I feel hopeful knowing this spirit of America, although challenged today, remains and exists. In a city like Chicago, it would almost be impossible to miss this range of diversity. While some choose to wrap words of hate and fear around the red, white, and blue stripes of the American flag, I try to remain mindful to keep this flag closer to me too, and wrap it around my values of love and compassion for others, and what it means to me to be an American in this political era.</p>]]></description></item><item><title>Keep your open source project organized with GitHub project boards</title><link>https://jwheel.org/blog/2018/06/github-project-boards/</link><pubDate>Tue, 05 Jun 2018 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2018/06/github-project-boards/</guid><description><![CDATA[<p><a href="https://opensource.com/article/18/4/keep-your-project-organized-git-repo"><em>This article was originally published on Opensource.com.</em></a></p>
<hr>
<p>Managing an open source project is challenging work. The challenge grows as a project grows. Eventually, a project may need to meet different requirements and span across multiple repositories. These problems aren&rsquo;t technical, but are important to solve to scale a technical project. <a href="https://en.wikipedia.org/wiki/Business_process_management">Business process management</a> methodologies such as agile and <a href="https://en.wikipedia.org/wiki/Kanban_%5C%28development%5C%29">kanban</a> bring a method to the madness. Developers and managers can make realistic decisions for estimating deadlines and team bandwidth with organized development focus.</p>
<p>At the <a href="http://unicefstories.org/about/">UNICEF Office of Innovation</a>, we use GitHub projects boards to organize development on the MagicBox project. <a href="http://unicefstories.org/magicbox/">MagicBox</a> is a full-stack application to serve and visualize data for decision-making in humanitarian crises and emergencies. The project spans multiple GitHub repositories and works with multiple developers. With GitHub project boards, we organized our work across multiple repositories to better understand development focus and team bandwidth.</p>
<p>Here&rsquo;s three tips from the UNICEF Office of Innovation on how to organize your open source GitHub projects with the built-in project boards on GitHub.</p>

<h2 id="bring-development-discussion-to-issues-and-pull-requests">Bring development discussion to issues and pull requests&nbsp;<a class="hanchor" href="#bring-development-discussion-to-issues-and-pull-requests" aria-label="Anchor link for: Bring development discussion to issues and pull requests">🔗</a></h2>
<p>Transparency is a critical part of an open source community. When mapping out new features or milestones for a project, the community needs to see and understand a decision or why a specific direction was chosen. Filing new GitHub issues for features and milestones is an easy way for someone to follow the project direction. GitHub issues and pull requests are the cards (or building blocks) of project boards. To be successful with GitHub project boards, you need to use issues and pull requests.</p>
<p>
<figure>
  <img src="/blog/2018/03/Screenshot-2018-3-13-Fix-similar-code-issue-in-react-app-src-components-WebglLayer-jsx-%c2%b7-Issue-62-%c2%b7-unicef-magicbox-maps.png" alt="GitHub issues for the front-end application of MagicBox, magicbox-maps" loading="lazy">
  <figcaption>GitHub issues for the front-end application of MagicBox, magicbox-maps</figcaption>
</figure>
</p>
<p>The UNICEF MagicBox team uses GitHub issues to track on-going development milestones and other tasks to revisit in the future. The team files new GitHub issues for development goals, feature requests, or bugs. These goals or features may come from external stakeholders or from the community. We use the issues as a place for discussion on those tasks too. This makes it easy to cross-reference in the future and visualize upcoming work on one of our projects.</p>
<p>Once you begin using GitHub issues and pull requests as a way of discussing and using your project, organizing with project boards becomes easier.</p>

<h2 id="set-up-kanban-style-project-boards">Set up kanban-style project boards&nbsp;<a class="hanchor" href="#set-up-kanban-style-project-boards" aria-label="Anchor link for: Set up kanban-style project boards">🔗</a></h2>
<p>GitHub issues and pull requests are the first step. After you begin using them, it may become harder to visualize what work is in progress and what work is yet to begin. <a href="https://help.github.com/articles/about-project-boards/">GitHub&rsquo;s project boards</a> give you a platform to visualize and organize cards into different columns.</p>
<p>There are two types of project boards available:</p>
<ul>
<li><strong>Repository</strong>: Boards for use in a single repository</li>
<li><strong>Organization</strong>: Boards for use in a GitHub organization across multiple repositories (but private to organization members)</li>
</ul>
<p>The choice you make depends on the structure and size of your projects. For the UNICEF MagicBox team, we use boards for development and documentation at the organization level, and then repository-specific boards for focused work (like our <a href="https://github.com/unicef/magicbox/projects/3?fullscreen=true">community management board</a>).</p>

<h4 id="creating-your-first-board">Creating your first board&nbsp;<a class="hanchor" href="#creating-your-first-board" aria-label="Anchor link for: Creating your first board">🔗</a></h4>
<p>Project boards are found on your GitHub organization page or on a specific repository. You will see the <em>Projects</em> tab in the same row as <em>Issues</em> and <em>Pull requests</em>. From the page, you&rsquo;ll see a green button to create a new project.</p>
<p>There, you can set a name and description for the project. You can also choose from templates to set up basic columns and sorting for your board. As of writing, the only options are for <a href="https://en.wikipedia.org/wiki/Kanban_%5C%28development%5C%29">kanban-style boards</a>.</p>
<p>
<figure>
  <img src="/blog/2018/03/Screenshot-2018-3-13-unicef-magicbox-maps.png" alt="Create a new GitHub project board for your open source project" loading="lazy">
  <figcaption>Create a new project board</figcaption>
</figure>
</p>
<p>After creating the project board, you can make adjustments to the project board as needed. You can create new columns, <a href="https://help.github.com/articles/about-automation-for-project-boards/">set up automation</a>, and add pre-existing GitHub issues and pull requests to the project board.</p>
<p>Now, you may notice new options for the metadata in each GitHub issue and pull request. Inside of an issue or PR, you can add it to a project board. If you use automation, it will automatically enter a column you configured.</p>

<h2 id="build-them-into-your-workflow">Build them into your workflow&nbsp;<a class="hanchor" href="#build-them-into-your-workflow" aria-label="Anchor link for: Build them into your workflow">🔗</a></h2>
<p>After you set up a project board and populate them with issues and pull requests, you need to integrate them into your workflow. Project boards are effective only when actively used. With the UNICEF MagicBox team, we use the project boards as a way to track our progress as a team, update external stakeholders on development, and estimate team bandwidth for reaching our milestones.</p>
<p>If you are an open source project and community, consider using the project boards for development-focused meetings. Additionally, it helps to remind yourself and other core contributors to spend five minutes each day updating progress as needed. If you&rsquo;re at a company using GitHub to do open source work, consider using project boards as a way to update other team members and encourage participation inside of GitHub issues and pull requests.</p>
<p>Once you begin using the project board, yours may look like this!</p>
<p>
<figure>
  <img src="/blog/2018/03/Screenshot-2018-3-13-Build-software-better-together.png" alt="Development progress board for all UNICEF MagicBox repositories in organization-wide GitHub project boards" loading="lazy">
  <figcaption>Development progress board for all UNICEF MagicBox repositories in an organization-wide GitHub project board</figcaption>
</figure>
</p>

<h2 id="open-alternatives">Open alternatives&nbsp;<a class="hanchor" href="#open-alternatives" aria-label="Anchor link for: Open alternatives">🔗</a></h2>
<p>GitHub project boards require your project to be on GitHub to take advantage of this functionality. However, there are other open source alternatives available. You can use tools to replicate the same workflow explained above. <a href="https://about.gitlab.com/features/issueboard/">GitLab Issue Boards</a> and <a href="https://taiga.io/">Taiga</a> are good alternatives that offer similar functionality.</p>

<h2 id="go-forth-and-organize">Go forth and organize!&nbsp;<a class="hanchor" href="#go-forth-and-organize" aria-label="Anchor link for: Go forth and organize!">🔗</a></h2>
<p>Now, you can bring a method to the madness for organizing your open source project. These three tips for using GitHub project boards encourage transparency in your open source project and make it easier to track progress and milestones in the open.</p>
<p>Do you use GitHub project boards for your open source project? Have any tips for success that aren&rsquo;t mentioned in the article? Leave a comment below to share how you make sense of your open source projects.</p>]]></description></item><item><title>Stepping out of Fedora: May to August 2018</title><link>https://jwheel.org/blog/2018/04/fedora-may-to-august-2018/</link><pubDate>Mon, 09 Apr 2018 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2018/04/fedora-may-to-august-2018/</guid><description><![CDATA[<p>Similar to last year, I am putting forward a note of planned absence from the Fedora Project community from May to August 2018.</p>
<p>Transparency is important to me. I wanted to make this announcement ahead of time to set clear expectations for the upcoming months. I am returning to Chicago, IL to work another internship at <a href="http://jumptrading.com/">Jump Trading, LLC</a>. From June to August, I am working at their Chicago office. I am excited to return and learn more from an amazing team of people.</p>
<p>I am not blocked by company policy from contributing to open source, so I won&rsquo;t disappear completely. However, while I am still able to contribute to Fedora, I do not expect to keep up the level of activity that I contribute at now during my internship.</p>

<h2 id="away-from-may-to-august-2018">Away from May to August 2018&nbsp;<a class="hanchor" href="#away-from-may-to-august-2018" aria-label="Anchor link for: Away from May to August 2018">🔗</a></h2>
<p>May is filled with other personal commitments, followed by a near immediate departure to Chicago in early June. Thus, I am stepping out of Fedora in early May. I hope to spend time with friends and family before departing for Chicago, so my estimate is a little generous to the benefit of being realistic. My internship ends around mid-August, so I hope to begin my normal levels of contribution around this time.</p>
<p>The only area I hope to stay partially active with is the <a href="https://communityblog.fedoraproject.org/">Fedora Community Blog</a> to continue my post as the editor-in-chief. While I still don&rsquo;t expect being fully involved, I hope to help with editing and keeping things moving.</p>
<p>I&rsquo;m looking forward to seeing familiar faces again in August at <a href="https://flocktofedora.org/">Flock 2018</a>!</p>
<p>
<figure>
  <img src="/img/Flock-2015-Strong-Museum-of-Play.jpg" alt="Fedora Flock 2015 at the Strong Museum of Play in Rochester, NY" loading="lazy">
  <figcaption>Fedora Flock 2015 at the Strong Museum of Play in Rochester, NY</figcaption>
</figure>
</p>
<p>
<figure>
  <img src="/img/flock-group-photo-2_28739637620_o.jpg" alt="Fedora Flock 2016 in Kraków, Poland" loading="lazy">
  <figcaption>Fedora Flock 2016 in Kraków, Poland</figcaption>
</figure>
</p>]]></description></item><item><title>Six months later: 3 things I learned from deleting Facebook</title><link>https://jwheel.org/blog/2018/04/3-things-learned-deleting-facebook/</link><pubDate>Mon, 02 Apr 2018 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2018/04/3-things-learned-deleting-facebook/</guid><description><![CDATA[<p>Six months ago, I deleted my Facebook and Instagram accounts. Beyond data privacy concerns, social media became a virtual band-aid applied to moments of weakness and sadness for me. I became more aware of the effects of social media on my mood and general outlook on the world, as I explained in my decision to <a href="https://medium.com/@jflory7/cut-the-plug-deleting-facebook-and-instagram-6cbe7c86d9c9">delete my accounts</a>. Six months now passed since I deleted my accounts. Along the way, I learned a few lessons on creating a healthy diet of media and pop culture consumption in a world of constant connectivity and endless memes.</p>
<p>This article explains changes I made to how I use social media and my smart phone since deleting my accounts. Hopefully you find these tips useful too.</p>
<p>
<figure>
  <img src="/blog/2018/04/Phone-Zombie.jpg" alt="The picture is dramatic, but when you spend more time thinking about how you use your phone, you realize how the world uses our phones and the Internet. Photo from SparkXL." loading="lazy">
  <figcaption>The picture is dramatic, but when you spend more time thinking about how you use your phone, you realize how the world uses our phones and the Internet. Image credit: SparkXL (<a href="https://www.sparkxl.com/2017/11/22/slaves-to-our-screens-3/" class="bare">https://www.sparkxl.com/2017/11/22/slaves-to-our-screens-3/</a>).</figcaption>
</figure>
</p>

<h2 id="1-social-media-on-the-go-is-a-no">1. Social media on-the-go is a no&nbsp;<a class="hanchor" href="#1-social-media-on-the-go-is-a-no" aria-label="Anchor link for: 1. Social media on-the-go is a no">🔗</a></h2>
<p>Today&rsquo;s world is full of <em>content</em>. Videos, friend requests, likes, comments, memes, notifications. We are always connected and online. An endless amount of media, pop culture, and content is at our fingertips. Sometimes this is helpful and convenient, like a quick message to a friend.</p>
<p>But a constant connection can be a drug too. When a convenient escape from a moment always exists in your pocket, this encourages a default reaction of opening the phone and scrolling through Facebook, Twitter, Instagram, Tumblr, or anything that offers a momentary distraction or something &ldquo;more interesting&rdquo; than whatever we are currently doing. Ultimately, we turn to social media on our smartphones for a short blast of dopamine.</p>

<h3 id="remove-the-convenience-factor">Remove the &ldquo;convenience&rdquo; factor&nbsp;<a class="hanchor" href="#remove-the-convenience-factor" aria-label="Anchor link for: Remove the &ldquo;convenience&rdquo; factor">🔗</a></h3>
<p>I took two steps to break this habit. First, acknowledge there are negative effects to social media usage. I also had to acknowledge that self-discipline and self-moderation is hard. I knew the negative effects of social media usage, but despite knowing this, it was still hard to avoid. So, the second step is to make the self-discipline easier: <strong>drop the apps from your phone</strong>.</p>
<p>When I deleted Facebook and eventually Instagram apps from my phone, they were no longer convenient. To check either one, I had to use a mobile web app or a computer. The mobile web apps were tedious and slow, and a computer was not always accessible. When the &ldquo;convenience&rdquo; factor was gone, it became easier to disconnect from the online world because it simply wasn&rsquo;t there.</p>
<p>Anything that required me to use social media could wait until it was convenient – usually when I am sitting down at a computer.</p>

<h3 id="soup-is-on-phone-is-off">Soup is on, phone is off&nbsp;<a class="hanchor" href="#soup-is-on-phone-is-off" aria-label="Anchor link for: Soup is on, phone is off">🔗</a></h3>
<p>I also took steps to increase my awareness of my usage. If having a dinner with friends or colleagues, I turned my phone off <em>before</em> entering the restaurant or meeting the group. My phone is off at the moments I turn to it at the dinner table. Powering it back on is inconvenient. Whatever distraction I was looking for would have to wait five minutes for the phone to boot.</p>
<p>&ldquo;<em>Right, it&rsquo;s off for a reason,</em>&rdquo; I would think as I slipped the phone back into my pocket.</p>

<h2 id="2-data-driven-observations-scientific-method-for-phones">2. Data-driven observations: Scientific method for phones&nbsp;<a class="hanchor" href="#2-data-driven-observations-scientific-method-for-phones" aria-label="Anchor link for: 2. Data-driven observations: Scientific method for phones">🔗</a></h2>
<p>After deleting my social media accounts, I wanted to understand: how often do I use my phone? What applications steal most of my attention? How much is too much? I decided to take a scientific approach and run an experiment.</p>
<p>I took a quantitative approach. I measured my usage by application to understand how much time I spent on different apps. I discovered QualityTime, an application that met my requirements. <a href="https://thenextweb.com/apps/2015/01/21/qualitytime-android-tracks-much-use-smartphone/">QualityTime</a> measures your total daily screen usage, how much time you use on all applications, and how many times you unlock your phone screen in a day. [<em>Note</em>: Since this article was written, both iOS and Android introduced phone usage metrics. No app is required for this anymore, but QualityTime still offers some useful features.]</p>
<p>After installing QualityTime, I used the default quota of two and a half hours a day as the suggested maximum daily use. I was surprised I came close to or past 2.5 hours every day. Now, I see what applications take most of my time. Then, I make adjustments based on the feedback I see. I started to think things like…</p>
<blockquote>
<p>Is this application worth the two hours a day? What am I getting out of this?</p>
</blockquote>
<blockquote>
<p>I need to cut back here, over four hours is way too much.</p>
</blockquote>
<p>Now, I had data to inform my lifestyle changes or alert me when I need to make changes. When I saw my daily usage by the numbers, I better understood my own habits. It increased my awareness into how I use my phone and manage my digital life.</p>
<p>And often, awareness is the best foundation for making incremental changes to our life and how we manage our time.</p>

<h2 id="3-what-you-see-is-what-you-find">3. What you see is what you find&nbsp;<a class="hanchor" href="#3-what-you-see-is-what-you-find" aria-label="Anchor link for: 3. What you see is what you find">🔗</a></h2>
<p>What and who do you allow in your social media life? Your &ldquo;feed&rdquo;, for any application or app, is powerful. Your feed is a daily dose of perspective and thoughts delivered directly to your phone. What you see in social media is what you will find reflected back in the world around you.</p>
<p>In my case, I still use Twitter as my primary social media presence. Since deleting my Facebook and Instagram, I also become more aware of my Twitter timeline. I never followed many people by some standards – 200 people or so. First, I realized I missed content from half of those people because of how Twitter tailors what I see. Second, I become more aware of the <em>actual content</em> from the people I followed.</p>

<h3 id="change-configuration-settings-of-your-mood">Change configuration settings of your mood&nbsp;<a class="hanchor" href="#change-configuration-settings-of-your-mood" aria-label="Anchor link for: Change configuration settings of your mood">🔗</a></h3>
<p>Since the November 2016 elections, social media is a &ldquo;black box&rdquo;. You will find many different things. You find empowering optimism, cynical pessimism, and some things between the two. As I found out, content on my timeline has a tangible, noticeable effect on my daily perspective. If someone I follow launches a cynical Twitter thread about a current event, that <strong>cynicism translates into my own view</strong>.</p>
<p>We cannot pretend that what we read on the screen has no effect on our real lives.</p>

<h3 id="less-is-more">Less is more&nbsp;<a class="hanchor" href="#less-is-more" aria-label="Anchor link for: Less is more">🔗</a></h3>
<p>So, I became a &ldquo;jerk&rdquo;. I reduced who I followed on Twitter to about 50 people. Then I sought out people from various aspects of my life—technology, spirituality, friends and family—that have a positive impact to my daily outlook. I put a filter on what I filter in my feed: I looked for inspirational wisdom, people who would motivate me to enlightened action. I turned away from anger, angst, hate, and cynicism.</p>
<p>However, there is a balance between naïvety and cynicism. We can choose optimism without being naïve. Additionally, we can choose skepticism without being cynical. The point is not to drown out reality or hide away in a bubble. We must be realistic about what is happening in the world and stay hopeful. To stay motivated. To <em>not</em> wake up, read through your feed, and curl back depressed into bed.</p>
<p>My best advice is be conscious of what you filter in your social media feed. Your feed is close and personal. It is powerful. And what you see digitally is often what you find reflected back at you in non-digital life.</p>

<h2 id="considering-facebook-deletion">Considering Facebook deletion?&nbsp;<a class="hanchor" href="#considering-facebook-deletion" aria-label="Anchor link for: Considering Facebook deletion?">🔗</a></h2>
<p>Considering to cut the plug? Check out this excellent <a href="https://www.recode.net/2017/10/22/16510702/how-to-quit-facebook-mark-zuckerberg-friends-photos-backup-data-delete-account">article from Recode</a> about how to responsibly cut down on Facebook. Even if full deletion is not what you are after, it suggests helpful tips on spending less time there.</p>

<h3 id="good-luck">Good luck!&nbsp;<a class="hanchor" href="#good-luck" aria-label="Anchor link for: Good luck!">🔗</a></h3>
<p>These lessons are fundamental to me and changed how I manage my digital life. Beyond the digital world, I notice the beginnings of change. I am more present in the things I do and spend my time with. Now, when I go out with friends and family, I appreciate the time spent with them without a hole burning in my pocket.</p>
<p>I hope these lessons are also helpful to you too. Additionally, if you have any other tips or comments for others, please drop a comment below!</p>
<hr>
<p><em>Featured image arranged by Justin Wheeler.</em></p>
<p><em><a href="https://thenounproject.com/term/friends/1314299/">friends</a> by <a href="https://thenounproject.com/ilariabernareggi">Ilaria</a></em>. <em><a href="https://thenounproject.com/ilariabernareggi">Bernareggi</a>, <a href="https://thenounproject.com/term/thumbs-up/538635/">thumbs up</a> by <a href="https://thenounproject.com/mikicon">mikicon</a>, <a href="https://thenounproject.com/term/facebook/63243/">Facebook</a> by <a href="https://thenounproject.com/morbidillusion">Saloni Sinha</a>, and <a href="https://thenounproject.com/term/more/663974/">more</a> by <a href="https://thenounproject.com/ilariabernareggi">Ilaria Bernareggi</a> from <a href="https://thenounproject.com/">the Noun Project</a>.</em></p>]]></description></item><item><title>Tergiversate: Abysma by Geotic</title><link>https://jwheel.org/blog/2018/03/abysma-geotic/</link><pubDate>Mon, 19 Mar 2018 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2018/03/abysma-geotic/</guid><description><![CDATA[<p><em>This article is part of my <a href="https://jwfblog.wpenginepowered.com/tag/tergiversate-music-column/">Tervigersate column</a> on my blog, where I review albums by musicians spanning multiple genres. Articles introduce an album and give my interpretation of their meaning.</em></p>
<hr>
<p>The next album to spotlight in <a href="https://geotic.bandcamp.com/">Tergiversate</a> is <strong>Abysma</strong> by Los Angeles-based <a href="https://geotic.bandcamp.com/">Geotic</a>, a.k.a. <a href="https://en.wikipedia.org/wiki/Baths_%5C%28musician%5C%29">Will Wiesenfeld</a>. Abysma is the ninth studio album released by Geotic. It debuted on March 31, 2017. The album could be described as a cross between an electronica and indie pop. For Wiesenfeld&rsquo;s first début on a record label with his side project Geotic, he makes a bold and eccentric presence with <em>Abysma</em>.</p>

<h2 id="why-abysma">Why <em>Abysma</em>?&nbsp;<a class="hanchor" href="#why-abysma" aria-label="Anchor link for: Why Abysma?">🔗</a></h2>
<p><em>Abysma</em> was an accidental discovery during a significant experience of my life. At the time, I subscribed to Google Play Music and I would sometimes receive recommendations for new music to listen to. On March 31, 2017, Google Play suggested <em>Abysma</em> as a new release I might like.</p>
<p>At the time, I was living in Dubrovnik, Croatia on a <a href="https://jwfblog.wpenginepowered.com/2018/02/2017-year-review/">study abroad exchange</a>. The album quickly became one of my favorites for the remaining two months I spent abroad. After returning to the US, I chose not to renew my subscription. Since I never purchased the album, it was conveniently forgotten after I returned.</p>
<p>Months later, in October, I reviewed some of my <a href="https://www.last.fm/user/jflory7/library/artists">top albums from 2017</a> on Last.fm. I came across Geotic on the list and remembered <em>Abysma</em>. I decided to buy the album and add it to my library. Since then, the album returned to a regular spot on my listening queue.</p>
<p>Thus, perhaps it makes sense that I strongly associate this album to my time living abroad. Frequently, this album was the backdrop to afternoon walks near the <a href="https://whc.unesco.org/en/list/95">Old City of Dubrovnik</a>, long bus rides to Bosnia or Albania, or for studying the week before final exams. Regardless, this album rekindles my imagination for some of my own unique experiences. Therefore, it made sense to include this album in a Tergiversate column.</p>

<h2 id="themes">Themes&nbsp;<a class="hanchor" href="#themes" aria-label="Anchor link for: Themes">🔗</a></h2>
<p>Deciphering <em>Abysma</em> is a challenge. Most of the record is ambient, with some songs featuring brief, synthesized, and heavily modified vocals. The album artwork is the next biggest hint to themes and meanings of the album.</p>
<p>The following are two themes I identified in <em>Abysma</em>:</p>
<ul>
<li>Own worst enemy</li>
<li>Overcoming hardship</li>
</ul>
<p>Both themes play a supporting role in each other,.</p>

<h4 id="own-worst-enemy">Own worst enemy&nbsp;<a class="hanchor" href="#own-worst-enemy" aria-label="Anchor link for: Own worst enemy">🔗</a></h4>
<p>One of the primary themes of the album is recognizing our least desirable qualities of ourselves and letting them overpower our other positive qualities.</p>

<h6 id="artwork">Artwork&nbsp;<a class="hanchor" href="#artwork" aria-label="Anchor link for: Artwork">🔗</a></h6>
<p>The album artwork sets the foundation for this theme, combined with various hints from song titles and mood from each track. The artwork features a sun-bathed, empty room with a rainbow-colored body lain across the floor.</p>
<p>The body appears lifeless as it peers outside the bright window. The body is a metaphor for the bright and wonderful qualities we own, but the room represents a trap. Despite the wonderful qualities inside, we lock ourselves into boxes or rooms where we are unable to see past the walls. We only have a window into the great wonders of life – yet somehow we are not in that picture.</p>

<h6 id="songs">Songs&nbsp;<a class="hanchor" href="#songs" aria-label="Anchor link for: Songs">🔗</a></h6>
<p>The mood of the album contributes to that idea. Sunspell, the opening track, creates the initial view of the album. The album is reminiscent of a bright, cheery atmosphere, but it seems remote and disconnected at the same time. The sunlight captivates us and puts us under a spell – in the spell, the bright lights of others and the world we see strike us and blind us.</p>
<p>The following tracks continue to build this atmosphere, leaning towards an introspective and oblique feel. Echoing words of &ldquo;it all makes sense&rdquo; on <em>Nav</em> feed this idea of deep, intrinsic wonder to ourselves. As the album grows in its mysterious nature, so does the feeling of mental isolation. As <em>Abysma</em> progresses, Geotic puts on a lens of closer and closer self-introspection.</p>
<p>Admittedly, not all the qualities in this lens are the best ones. The theme reaches its climax in <em>Perish Song</em>. The song title leaves little room for second guessing. In the long, drawn-out waves of the synthesizer and delicate piano keystrokes, a listener is left with understanding of a type of depression. It&rsquo;s reminiscent of the days when our thoughts are self-destructive and harmful.</p>

<h6 id="what-it-all-means">What it all means&nbsp;<a class="hanchor" href="#what-it-all-means" aria-label="Anchor link for: What it all means">🔗</a></h6>
<p>Whether by design or by accident, Geotic forces the listener to find a level of acceptance of their own mind. Throughout life, we sometimes make ourselves our own biggest enemy and showstoppers. Even though we are all filled with a natural bright and illuminating nature (like a child), we can lose sight of that version of our self. This theme is present because we become aware of ourselves when listening. Everyone has been their own hardest critic, and Abysma is a gentle reminder that sometimes we are hardest on ourselves.</p>
<p>Lingering thoughts remain whether the harsh self-criticism is worthy or not, but this is quickly answered at the close of the record.</p>

<h4 id="overcoming-hardship">Overcoming hardship&nbsp;<a class="hanchor" href="#overcoming-hardship" aria-label="Anchor link for: Overcoming hardship">🔗</a></h4>
<p>In a quick turnaround, the last song of the album, <em>Valiance</em>, introduces the second theme and integrates into the different pieces of the previous theme.</p>
<p>The second theme builds on the idea that even in our worst qualities and lowest moments (e.g. <em>Perish Song</em>), we are able to overcome the battle with our mind and find our own peace. After all, the body on the album cover reflects light and echoes the colors of the rainbow – we always possessed the qualities, but perhaps did not recognize them within us.</p>

<h6 id="valiance"><em>Valiance</em>&nbsp;<a class="hanchor" href="#valiance" aria-label="Anchor link for: Valiance">🔗</a></h6>
<p>The high notes and intense energy of <em>Valiance</em> are a contrast to some of the introspective atmospheres earlier in the album. While <em>Valiance</em> is also introspective, it changes the lens. Instead of looking in at our worst qualities, it&rsquo;s a change in perspective to look at our better qualities. The song almost seems to externalize the hidden energy inside the body on the album cover.</p>
<p><em>Valiance</em> is a reminder of our ability to find peace with our mind and create our own happiness. It tells and affirms that we can overcome our hardships, whether imposed on us by ourselves or by others.</p>

<h6 id="what-it-all-means-1">What it all means&nbsp;<a class="hanchor" href="#what-it-all-means-1" aria-label="Anchor link for: What it all means">🔗</a></h6>
<p>One line from the lyrics of <em>Perish Song</em> are significant. It plays back into the second theme:</p>
<blockquote>
<p>The heat of the sun,</p>
<p>Is there if you want.</p>
</blockquote>
<p>We decide whether we want to feel the warmth and heat of the sun in our life. We are the ones that make a choice to how we receive the world and our experiences in life.</p>
<p>As a whole, this theme plays into the previous theme because it takes a stark change in direction. But it plays together beautifully. The negative and difficult recognition of our own self as an enemy is challenging. It reminds of our shortcomings, our regrets, our missed opportunities. It becomes easy to pin the blame on ourselves. Not only that, but the awareness can introduce a concern of not being able to overcome our failures.</p>
<p>Yet, the album ends elegantly, brightly, and brilliantly. The closing reminds us that we should always choose the heat of the sun in our life. When we shape our perspective of the world and the people around us, we make a choice for how we receive and interact with it. To make a positive impression of the world and those around us, we must become comfortable with ourselves first. We have to find peace with our own mind before we can find peace with any others.</p>
<p>The closing of <em>Abysma</em> reminds us of that, in a layered progression from recognizing our worst qualities to acknowledging they can always be overcome. Recognizing our worst qualities is challenging, but it&rsquo;s a challenge we can overcome when we live in the light and warmth. When we choose happiness, love, and compassion, these qualities reflect and echo back to us in life.</p>

<h2 id="where-to-find-abysma">Where to find <em>Abysma</em>&nbsp;<a class="hanchor" href="#where-to-find-abysma" aria-label="Anchor link for: Where to find Abysma">🔗</a></h2>
<p>Most albums reviewed in Tergiversate focus on the complete album, not each song. Consider making your first listen from top to bottom instead of picking single songs. My experience in music is that great albums offer the most when enjoyed in a single, immersive experience.</p>
<ul>
<li><a href="https://geotic.bandcamp.com/album/abysma">Bandcamp</a> (<em>preferred, directly supports artist</em>)</li>
<li><a href="https://open.spotify.com/album/4EJX0zVSDXQaeQHL21ekHv">Spotify</a></li>
<li><a href="https://itunes.apple.com/us/album/abysma/1196432031">iTunes</a></li>
<li><a href="https://play.google.com/store/music/album/Geotic_Abysma?id=Bda3vkuwuaf2h43lwe5cqubrcrq">Google Play</a></li>
<li><a href="https://www.amazon.com/gp/product/B01N9T6VVK">Amazon</a></li>
<li><a href="https://soundcloud.com/ghostly/sets/geotic-abysma-hype-machine-exclusive">SoundCloud</a></li>
</ul>
<hr>
<p><em>Curious where the name &ldquo;Tergiversate&rdquo; came from? Check out the <a href="http://www.dictionary.com/browse/tergiversate">dictionary definition</a>.</em></p>]]></description></item><item><title>How I accidentally wrote a Wikipedia page on a layover in Dublin</title><link>https://jwheel.org/blog/2018/03/wikipedia-page-dublin/</link><pubDate>Thu, 15 Mar 2018 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2018/03/wikipedia-page-dublin/</guid><description><![CDATA[<p>One of the most unusual but wonderful experiences happened to me on a return trip from Europe to the United States.</p>
<p>A series of <a href="https://www.theguardian.com/us-news/2018/mar/03/noreaster-storm-us-atlantic-massachusetts">heavy noreasters</a> hit the US east coast over the last couple weeks. This coincided with my travel dates back to Rochester, NY. While we didn&rsquo;t have flooding, we had a lot of snow. A lot of snow means canceled flights.</p>
<p>As I made my way through border control in Dublin, Ireland on March 7, I discovered my connection to New York City would likely be canceled. A meander from baggage claim to the check-in desk confirmed this. Fortunately, <a href="https://www.aerlingus.com/">Aer Lingus</a> had no issue putting me up in a hotel overnight with dinner and breakfast to catch the next flight to New York the next day.</p>
<p>While waiting in airport queues, a friend happened to retweet a local event happening in Dublin the next day.</p>
<blockquote class="twitter-tweet" data-dnt="true"><p lang="en" dir="ltr">For International Women&#39;s Day on Thursday, we&#39;ll be celebrating Female  Firsts in medicine with <a href="https://twitter.com/RCSILibrary?ref_src=twsrc%5Etfw">@RCSILibrary</a> <a href="https://t.co/RvIHtwAhys">https://t.co/RvIHtwAhys</a> <br>Saturday, we have our <a href="https://twitter.com/artandfeminism?ref_src=twsrc%5Etfw">@artandfeminism</a> event in <a href="https://twitter.com/UCC?ref_src=twsrc%5Etfw">@UCC</a>,  celebrating our Irish and local female artists from 12-3pm <a href="https://t.co/ZMpKQOSR3q">https://t.co/ZMpKQOSR3q</a> <a href="https://t.co/0G7Kn3zpS6">pic.twitter.com/0G7Kn3zpS6</a></p>&mdash; Wikimedia Community Ireland (@WikimediaIE) <a href="https://twitter.com/WikimediaIE/status/970674510608437249?ref_src=twsrc%5Etfw">March 5, 2018</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>


<p>The event was a <a href="https://www.eventbrite.ie/e/wikipedia-editathon-rcsi-female-firsts-tickets-43324480688">local Wikimedia meet-up</a> to celebrate <a href="https://www.internationalwomensday.com/">International Women&rsquo;s Day</a>. Participants would create and edit Wikipedia pages for influential women in the history of the <a href="https://www.rcsi.com/dublin/">Royal College of Surgeons in Ireland</a>. After digging deeper, I found out the event was 30 minutes away from my hotel from 09:30 to 12:30. My flight was at 16:10.</p>
<p>I put in my RSVP.</p>

<h2 id="meet-the-wikimedia-ireland-community">Meet the Wikimedia Ireland community&nbsp;<a class="hanchor" href="#meet-the-wikimedia-ireland-community" aria-label="Anchor link for: Meet the Wikimedia Ireland community">🔗</a></h2>
<p>In an opportunistic stroke of fate, I would spend my extended layover for my first time in Dublin learning and listening about role model women in the Irish medicine community. I didn&rsquo;t know it yet, but I would also take part in writing some of the history too!</p>
<p>
<figure>
  <img src="/blog/2018/03/wikimedia-ireland-iwd-2018-group-photo.jpg" alt="Group photo of the participants and editors for the 2018 International Women&rsquo;s Day edit-a-thon" loading="lazy">
  <figcaption>Group photo of the participants and editors for the 2018 International Women’s Day edit-a-thon. <em>Source</em>: Twitter, @RCSILibrary (<a href="https://twitter.com/RCSILibrary/status/971690890900262912" class="bare">https://twitter.com/RCSILibrary/status/971690890900262912</a>)</figcaption>
</figure>
</p>

<h2 id="womenonwalls">#WomenOnWalls&nbsp;<a class="hanchor" href="#womenonwalls" aria-label="Anchor link for: #WomenOnWalls">🔗</a></h2>
<p>The first part of the morning was an introduction to editing on Wikipedia and establishing the focus for edits.</p>
<p>
<figure>
  <img src="/blog/2018/03/wikimedia-ireland-iwd-2018-support-for-women.jpg" alt="Manuscript letters of support by men from the RCSI archive for women being admitted to medical schools and accepted into the British Medical Association. #HeForShe! " loading="lazy">
  <figcaption>Manuscript letters of support by men from the RCSI archive for women being admitted to medical schools and accepted into the British Medical Association. #HeForShe! <em>Source</em>: Twitter, @RCSILibrary (<a href="https://twitter.com/RCSILibrary/status/971718664025268224" class="bare">https://twitter.com/RCSILibrary/status/971718664025268224</a>)</figcaption>
</figure>
</p>
<p>The <a href="https://www.rcsi.com/dublin/">Royal College of Surgeons in Ireland</a> (RCSI) started a new campaign to promote influential women in the history of the university. There is a historical board room in a prominent place on its campus. Inside the board room, there are portraits of influential people in the history of RCSI. But all of them are men. This makes it difficult for women to have role models or inspiration of women like them who &ldquo;made it&rdquo; in science and medicine.</p>
<p>On the contrary, there was also no shortage of influential women in the history of RCSI. Part of the morning was an introduction to primary sources that explained the pivotal work of female Irish doctors and pediatricians throughout the 20th century. After hearing about these inspirational women, it was a wonder – why were none of them represented in the board room?</p>
<p>This was actually the focus for the edit-a-thon. Recently, RCSI <a href="http://www.rcsi.ie/index.jsp?p=100&amp;n=110&amp;a=11330">commissioned new portraits</a> for some of the influential women alumnae. Half of the portraits in the board room would be relocated and replaced by the new portraits. This was part of their <a href="https://twitter.com/hashtag/womenonwalls?src=hash">#WomenOnWalls</a> campaign.</p>

<h2 id="discovering-victoria-coffey">Discovering Victoria Coffey&nbsp;<a class="hanchor" href="#discovering-victoria-coffey" aria-label="Anchor link for: Discovering Victoria Coffey">🔗</a></h2>
<p>After an introduction to the sources available and how to edit on Wikipedia, we began the editing. Organizers encouraged participants to improve an existing page first, since most of the participants were first-time editors.</p>
<p>Since I had some experience with Mediawiki mark-up and do a lot of writing, I decided to write a new page. There were a list of suggested women alumnae to write about. After <a href="https://www.irishtimes.com/life-and-style/health-family/the-female-trailblazers-of-irish-medicine-1.3405003">hearing about Victoria Coffey</a>, I decided to focus my two hours of writing on her legacy.</p>
<p>
<figure>
  <img src="/blog/2018/03/wikimedia-ireland-iwd-2018-intro-to-editing.jpg" alt="Project coordinator for Wikimedia Ireland, Rebecca O&rsquo;Neill, introduces Wikipedia to students, librarians, and faculty (and me!)" loading="lazy">
  <figcaption>Project coordinator for Wikimedia Ireland, Rebecca O’Neill (<a href="https://twitter.com/restlesscurator" class="bare">https://twitter.com/restlesscurator</a>), introduces Wikipedia to students, librarians, and faculty (and me!). <em>Source</em>: Twitter, @DrConorMalone (<a href="https://twitter.com/DrConorMalone/status/971699419841253377" class="bare">https://twitter.com/DrConorMalone/status/971699419841253377</a>)</figcaption>
</figure>
</p>

<h4 id="who-is-victoria-coffey">Who is Victoria Coffey?&nbsp;<a class="hanchor" href="#who-is-victoria-coffey" aria-label="Anchor link for: Who is Victoria Coffey?">🔗</a></h4>
<p>Victoria Coffey was an Irish pediatrician. She was an alumna of RCSI, and one of the first to research <a href="https://en.wikipedia.org/wiki/Sudden_infant_death_syndrome">sudden infant death syndrome</a> (SIDS). Coffey spent most of her time in medicine researching and studying congenital abnormalities in infants and pediatrics. Later in her life, she founded the Faculty of Paediatrics at the <a href="https://en.wikipedia.org/wiki/Royal_College_of_Physicians_of_Ireland">Royal College of Physicians of Ireland</a> in 1981 and was the first female president of the Irish Paediatric Society.</p>

<h4 id="writing-her-wikipedia-page">Writing her Wikipedia page&nbsp;<a class="hanchor" href="#writing-her-wikipedia-page" aria-label="Anchor link for: Writing her Wikipedia page">🔗</a></h4>
<p>With the help and guidance of the Wikimedia Ireland and RCSI staff, I found resources to research and learn more about Victoria Coffey. While some public sources were available, I was also provided with a primary source from a paid online Irish encyclopedia.</p>
<p>From there, I had the basis to begin writing a stub for her biography. I created an infobox to summarize some of her contributions, wrote a paragraph on her life, and left external links for someone to expand and write more in the future.</p>
<p>You can find <a href="https://en.wikipedia.org/wiki/Victoria_Coffey">her Wikipedia page</a> online now. Since its creation, it was viewed <a href="https://tools.wmflabs.org/pageviews/?project=en.wikipedia.org&amp;platform=all-access&amp;agent=user&amp;range=latest-20&amp;pages=Victoria_Coffey">nearly 100 times</a>, edited five times, and edited by three people.</p>

<h2 id="thank-you-rcsi-and-wikimedia-ireland">Thank you RCSI and Wikimedia Ireland!&nbsp;<a class="hanchor" href="#thank-you-rcsi-and-wikimedia-ireland" aria-label="Anchor link for: Thank you RCSI and Wikimedia Ireland!">🔗</a></h2>
<p>In a strange and opportunistic stroke of fate, I was lucky to meet this local community and work with a room of inspiring women in medicine (students, alumnae, and faculty) on lowering the wiki gap of women on Wikipedia. It was a privilege to take part and learn a unique kind of history for Ireland in my short stay in Dublin.</p>
<p>Thank you for this great experience, <a href="https://www.rcsi.com/dublin/">RCSI</a> and <a href="https://twitter.com/WikimediaIE">Wikimedia Ireland</a>!</p>
<p>I&rsquo;m not sure if this will make me anticipate flight cancellations more or less from now on.</p>]]></description></item><item><title>How to automatically scale Kubernetes with Horizontal Pod Autoscaling</title><link>https://jwheel.org/blog/2018/03/kubernetes-horizontal-pod-autoscaling/</link><pubDate>Tue, 06 Mar 2018 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2018/03/kubernetes-horizontal-pod-autoscaling/</guid><description><![CDATA[<p>Scale is a critical part of how we develop applications in today&rsquo;s world of infrastructure. Now, containers and container orchestration like Docker and <a href="https://jwfblog.wpenginepowered.com/2017/07/introduction-kubernetes-fedora/">Kubernetes</a> make it easier to think about scale. One of the &ldquo;magical&rdquo; things about The potential of Kubernetes is fully realized when you have a sudden increase in load, your infrastructure scales up and grows to accommodate. How does this work? With <strong>Horizontal Pod Autoscaling</strong>, Kubernetes adds more pods when you have more load and drops them once things return to normal.</p>
<p>This article covers Horizontal Pod Autoscaling, what it is, and how to try it out with the <a href="https://kubernetes.io/docs/tutorials/stateless-application/guestbook/">Kubernetes guestbook</a> example. By the end of this article, you will…</p>
<ul>
<li>Understand what Horizontal Pod Autoscaling (HPA) is</li>
<li>Be able to create an HPA in Kubernetes</li>
<li>Create an HPA for the Guestbook and watch it work with <a href="https://github.com/JoeDog/siege">Siege</a></li>
</ul>

<h2 id="what-is-horizontal-pod-autoscaling">What is Horizontal Pod Autoscaling?&nbsp;<a class="hanchor" href="#what-is-horizontal-pod-autoscaling" aria-label="Anchor link for: What is Horizontal Pod Autoscaling?">🔗</a></h2>
<p><a href="https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/">Horizontal Pod Autoscaling</a> (HPA) is a Kubernetes API resource to dynamically grow an environment. To help simplify things, consider it in three pieces:</p>
<ul>
<li><strong>Horizontal</strong>: Think of <em>horizontal</em> growth, i.e. adding more nodes to your available pool (unlike <em>vertical</em>, which would be adding more memory / CPU to your existing nodes)</li>
<li><strong>Pod</strong>: Your deployable units in Kubernetes</li>
<li><strong>Autoscaling</strong>: Automatically scaling out when needed</li>
</ul>
<p>
<figure>
  <img src="/blog/2017/08/k8s-hpa.png" alt="Diagram to explain how Horizontal Pod Autoscaler (HPA) works" loading="lazy">
  <figcaption>Diagram to explain how a Horizontal Pod Autoscaler (HPA) works. From Kubernetes documentation (<a href="https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/" class="bare">https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/</a>).</figcaption>
</figure>
</p>
<p>To help visualize it, imagine you have a <a href="http://flask.pocoo.org/">Python Flask</a> web server that reads and writes data to a <a href="https://redis.io/">Redis</a> back-end. Your web server is the front-end for all of your incoming traffic. You run it with three pods in Kubernetes, with 512MB of RAM and 50m of CPU. Now, suddenly, BuzzFeed writes an article about your app, Kanye West name drops the app in a TV interview, and the president of the United States retweets a link to your site.</p>
<p>Oops.</p>
<p>Now you have a serious problem on your hands, where your tiny application is overloaded. Three pods aren&rsquo;t cutting it anymore. You get woken up at 3:00am to hastily adjust the number of replicas and rapidly scale your infrastructure. While you&rsquo;re wondering <em>how this happened</em>, you also wonder… isn&rsquo;t there an easier way? Could I have avoided this panicked, pre-dawn scaling crisis? Yes, there is! At least, somewhat.</p>

<h4 id="building-to-scale">Building to scale&nbsp;<a class="hanchor" href="#building-to-scale" aria-label="Anchor link for: Building to scale">🔗</a></h4>
<p>By creating and managing your deployments with HPAs, your application grows horizontally to handle the load. As the CPU utilization rises, HPAs trigger the addition of more pods to scale automatically. Previously, you could create a Horizontal Pod Autoscaler that would begin scaling when cumulative CPU utilization was at 60%. You could also tell it to scale to a maximum of 500 pods, but no less than three. So then, when the Apocalypse of Viral Sharing happened to your web application, it could have grown dynamically.</p>
<p>If you want to dive deeper in the technical implementation of HPAs, you can read more in the <a href="https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/">Kubernetes documentation</a>.</p>

<h2 id="create-a-horizontal-pod-autoscaler">Create a Horizontal Pod Autoscaler&nbsp;<a class="hanchor" href="#create-a-horizontal-pod-autoscaler" aria-label="Anchor link for: Create a Horizontal Pod Autoscaler">🔗</a></h2>
<p>Now that you understand how a Horizontal Pod Autoscaler (HPA) is helpful, how do you create one? Like any other resource in Kubernetes, define HPAs in a YAML definition file. Here&rsquo;s a template for getting started.</p>
<pre tabindex="0"><code>---
apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:
  name: my-app-hpa
  namespace: my-app-space
  labels:
    app: my-app
    tier: frontend
spec:
  scaleTargetRef:
    apiVersion: apps/v1beta1
    kind: Deployment
    name: my-app-deployment
  minReplicas: 2
  maxReplicas: 20
  targetCPUUtilizationPercentage: 60
</code></pre><p>This is the minimal spec you need to deploy an HPA. It&rsquo;s not that different from other Kubernetes resources you may have seen.</p>

<h4 id="explaining-the-configuration">Explaining the configuration&nbsp;<a class="hanchor" href="#explaining-the-configuration" aria-label="Anchor link for: Explaining the configuration">🔗</a></h4>
<p>Let&rsquo;s look at what some of the specific lines are.</p>
<ul>
<li><code>spec.scaleTargetRef.name</code>: Name of resource to scale (e.g. name of a deployment)</li>
<li><code>spec.minReplicas</code>: Minimum number of replicas running when CPU use is minimal</li>
<li><code>spec.maxReplicas</code>: Maximum number of replicas running when CPU use peaks</li>
<li><code>spec.targetCPUUtilizationPercentage</code>: Percentage threshold when HPA begins scaling out pods</li>
</ul>
<p>When starting out for the first time, tweak these values based on the amount of traffic you expect to receive or what your budget is. Load testing your application is one way to see the HPAs do their job.</p>

<h2 id="obliterating-the-guestbook">Obliterating the Guestbook&nbsp;<a class="hanchor" href="#obliterating-the-guestbook" aria-label="Anchor link for: Obliterating the Guestbook">🔗</a></h2>
<p>But this guide wouldn&rsquo;t be complete without a live demo to try. You can create one with an existing application and put it to the test. This section assumes you have a running <a href="https://kubernetes.io/docs/tutorials/stateless-application/guestbook/">Guestbook application</a> in your Kubernetes environment. As a quick refresh, the Guestbook is a three-part application:</p>
<ul>
<li>PHP web application for writing messages into a virtual guestbook</li>
<li>Primary Redis node for writing new messages from web page</li>
<li>Replica Redis nodes for reading the data into web page</li>
</ul>
<p>We&rsquo;ll add an HPA as a fourth part to scale the PHP web application for new traffic.</p>

<h4 id="create-the-hpa-for-guestbook">Create the HPA for Guestbook&nbsp;<a class="hanchor" href="#create-the-hpa-for-guestbook" aria-label="Anchor link for: Create the HPA for Guestbook">🔗</a></h4>
<p>Now, create a new HPA spec file for the guestbook.</p>
<pre tabindex="0"><code>---
apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:
  name: guestbook-frontend
  namespace: guestbook
  labels:
    app: guestbook
    env: production
    tier: frontend
spec:
  scaleTargetRef:
    apiVersion: apps/v1beta1
    kind: Deployment
    name: guestbook-frontend
  minReplicas: 2
  maxReplicas: 10
  targetCPUUtilizationPercentage: 75
</code></pre><p>Put this into a file and create the HPA with <code>kubectl</code>.</p>
<pre tabindex="0"><code>$ kubectl apply --record -f guestbook-frontend-hpa.yaml
</code></pre><p>Now, the Horizontal Pod Autoscaler is operational and monitoring the CPU utilization of your deployment.</p>

<h4 id="load-test-with-siege">Load test with Siege&nbsp;<a class="hanchor" href="#load-test-with-siege" aria-label="Anchor link for: Load test with Siege">🔗</a></h4>
<p>To force the HPA into action, we&rsquo;ll use <a href="https://github.com/JoeDog/siege">Siege</a>, an HTTP load testing and benchmark utility. Siege is a multi-threaded load testing tool and has a few other capabilities included to make it a good option for putting some force onto a simple web app.</p>
<p>First, put various permutations of the URL in a plaintext file. By doing this, Siege can randomly scan the URLs in he text file and ping them in &ldquo;Internet mode&rdquo; by randomly selecting a URL from the list for each request. This could look like the following…</p>
<pre tabindex="0"><code>http://my-guestbook.example.com/
http://my-guestbook.example.com/index.html
http://my-guestbook.example.com/guestbook.php
http://my-guestbook.example.com/guestbook.php?cmd=get&amp;key=messages
</code></pre><p>Once this is done, you can fire up Siege to begin load testing. In this case, to get fast results, we&rsquo;ll use 255 concurrent users for five minutes, using Internet and benchmark modes.</p>
<pre tabindex="0"><code>$ siege --verbose --benchmark --internet --concurrent 255 --time 10M --file siege-urls.txt
</code></pre><p>You should see Siege begin to rapidly send requests to your Guestbook application. Now that the action is in progress, you can slowly observe your CPU utilization begin to climb. Watch it slowly change by using <code>watch</code>.</p>
<pre tabindex="0"><code>$ watch -d -n 2 -b -c kubectl get hpa -l app=guestbook
</code></pre><p>During the five minute load test, you should notice CPU usage rise and then new replicas will appear. Depending on what your original requests and limits are for the deployment, you will see different results. Next, try setting the deployment&rsquo;s requests / limits to lower values if nothing seems to happen while testing.</p>

<h2 id="learn-more-about-horizontal-pod-autoscaler">Learn more about Horizontal Pod Autoscaler&nbsp;<a class="hanchor" href="#learn-more-about-horizontal-pod-autoscaler" aria-label="Anchor link for: Learn more about Horizontal Pod Autoscaler">🔗</a></h2>
<p>Horizontal Pod Autoscalers are a stable resource in Kubernetes and are available for you to begin playing around with now. To learn more, read the <a href="https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/">documentation</a> or see another example in the <a href="https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale-walkthrough/">official walkthrough</a>.</p>]]></description></item><item><title>Inside Facebook's open source program at RIT</title><link>https://jwheel.org/blog/2018/02/facebook-open-source-program/</link><pubDate>Mon, 26 Feb 2018 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2018/02/facebook-open-source-program/</guid><description><![CDATA[<p><a href="https://opensource.com/article/18/1/inside-facebooks-open-source-program"><em>Originally published on Opensource.com.</em></a></p>
<hr>
<p>Open source becomes more common every year, where it appears at <a href="https://opensource.com/article/17/8/tirana-government-chooses-open-source">government municipalities</a> to <a href="https://opensource.com/article/16/12/2016-election-night-hackathon">universities</a>. More companies turn to open source software too. However, some companies try to take it a step further, and instead of only using the software, they also support projects financially or with developers. Facebook&rsquo;s open source program encourages others in Facebook to release their code as open source. They also work and engage with the community to support the projects too.</p>
<p><a href="https://twitter.com/abernathyca">Christine Abernathy</a>, a Facebook developer advocate and member of the open source team, visited the Rochester Institute of Technology on November 15, 2017. She gave the <a href="https://www.eventbrite.com/e/fossmagic-talks-open-source-facebook-with-christine-abernathy-tickets-38955037566">November edition</a> of the FOSS Talks speaker series. Her talk explained how Facebook approaches open source and why it&rsquo;s an important part of the work they do.</p>

<h2 id="facebook-and-open-source">Facebook and open source&nbsp;<a class="hanchor" href="#facebook-and-open-source" aria-label="Anchor link for: Facebook and open source">🔗</a></h2>
<p>
<figure>
  <img src="/blog/2017/12/blog-article-facebook-open-source-projects.png" alt="Some of the projects released as open source by Facebook, including React, GraphQL, Caffe2, and more" loading="lazy">
  <figcaption>Some of the projects released as open source by Facebook, including React (<a href="https://reactjs.org/" class="bare">https://reactjs.org/</a>), GraphQL (<a href="http://graphql.org/" class="bare">http://graphql.org/</a>), Caffe2 (<a href="https://caffe2.ai/" class="bare">https://caffe2.ai/</a>), and more</figcaption>
</figure>
</p>
<p>Abernathy explained that open source plays a fundamental role in Facebook&rsquo;s mission to create community and bring the world closer together. The ideological match was a motivational reason for Facebook&rsquo;s participation in open source.</p>
<p>Additionally, Facebook has unique problems and challenges to solve for their infrastructure and development. Open source provides a platform to share those challenges and help others avoid similar mistakes.</p>
<p>Open source also provided a way to accelerate innovation and create better software. It helped engineering teams produce better software and work more transparently. Today, Facebook&rsquo;s 443 projects on GitHub have 122,000 forks, 292,000 commits, and 732,000 followers.</p>

<h2 id="lessons-learned">Lessons learned&nbsp;<a class="hanchor" href="#lessons-learned" aria-label="Anchor link for: Lessons learned">🔗</a></h2>
<p>Abernathy emphasized that Facebook has learned many lessons from the open source community and hopes to learn many more. She identified the three most important lessons that Facebook took from open source:</p>
<ol>
<li>Share what&rsquo;s useful</li>
<li>Highlight your heroes</li>
<li>Fix common pain points</li>
</ol>
<p><a href="https://twitter.com/abernathyca">Christine Abernathy</a> visited RIT as part of the FOSS Talks speaker series. Every month, a guest speaker from the open source world shares wisdom, insight, and advice about the open source world with students interested in free and open source software. The <a href="http://foss.rit.edu/">FOSS @ MAGIC</a> community is thankful to have Abernathy attend as a speaker!</p>]]></description></item><item><title>Humanitarian open source work: My internship at UNICEF</title><link>https://jwheel.org/blog/2018/02/unicef-internship/</link><pubDate>Thu, 22 Feb 2018 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2018/02/unicef-internship/</guid><description><![CDATA[<p>In December, I received the happy news of an offer for a internship position at <a href="https://www.unicef.org/what-we-do">UNICEF</a> in the Office of Innovation. The <a href="http://unicefstories.org/about/">Office of Innovation</a> drives rapid technological innovation by rapid prototyping of new ideas and building full-stack products to make a positive impact in the lives of children. This is a simple answer, but a more detailed description is <a href="http://unicefstories.org/about/">on our website</a>.</p>
<p>My internship at UNICEF is unique: I support open source community engagement and research as my primary task for the <a href="http://unicefstories.org/magicbox/">MagicBox project</a>. For years, I&rsquo;ve done this in open source communities in my free time (namely <a href="https://www.spigotmc.org/wiki/about-spigot/">SpigotMC</a> and <a href="https://docs.fedoraproject.org/fedora-project/project/fedora-overview.html">Fedora</a>), but never in a professional role. As I navigate my way through this exciting opportunity, I plan to document some of the experience as I go through blogging. My intent is that my observations and notes will be useful to someone else in the humanitarian open source space (or maybe to a future me).</p>
<p>But first, what does &ldquo;open source community engagement and research&rdquo; <em>really</em> mean?</p>

<h2 id="what-am-i-actually-doing">What am I actually doing?&nbsp;<a class="hanchor" href="#what-am-i-actually-doing" aria-label="Anchor link for: What am I actually doing?">🔗</a></h2>
<p>&ldquo;Community engagement&rdquo; is a buzzword phrase for the open source movement in the 2010s. Often, we hear about &ldquo;community engagement&rdquo; or the work of those &ldquo;leading communities&rdquo;, but it&rsquo;s an abstract concept. In other words, building communities of humans and people is hard. There is no one-size-fits-all solution for any community. Every community has its own unique needs and goals. This means different methods of management and communication work better for some communities than others. My job is to help light the way for what this pathway means for the MagicBox team.</p>
<p>Since I started in January, a lot of my time so far was spent learning. What is MagicBox? What are we trying to deliver to our stakeholders? To the open source community? How does our data pipeline piece together? All these questions and more, I&rsquo;ve tried to answer to different levels of success.</p>

<h2 id="whats-next">What&rsquo;s next?&nbsp;<a class="hanchor" href="#whats-next" aria-label="Anchor link for: What&rsquo;s next?">🔗</a></h2>
<p>Now, I&rsquo;m beginning to take a more hands-on role with the work, with a clear vision of what I want to do. The next few posts to come will dive deeper into what I&rsquo;m up to.</p>
<p>If you have questions or are interested in keeping up with what&rsquo;s going on, feel free to leave a comment here or subscribe to my blog to automatically receive future updates.</p>
<hr>
<p><em>Opinions and views in my blog are my own and do not reflect the views of my employer.</em></p>]]></description></item><item><title>2017 - My Year in Review</title><link>https://jwheel.org/blog/2018/02/2017-year-review/</link><pubDate>Mon, 12 Feb 2018 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2018/02/2017-year-review/</guid><description><![CDATA[<p>I can&rsquo;t remember how <a href="https://jwfblog.wpenginepowered.com/tag/year-in-review/">writing an annual reflection</a> became a tradition, but after writing them for the last two years, it is now a habit. Every time I look back on all that the last year brought into my life, it is surreal. Many things that happened, I could never have expected one or two years ago. And perhaps now, I see that life is defined by the unexpected moments: the things that surprise us, warm our hearts, sadden us, and remind us of our humanity. Thus, I present my year in review of 2017.</p>

<h2 id="home-is-a-suitcase">Home is a suitcase&nbsp;<a class="hanchor" href="#home-is-a-suitcase" aria-label="Anchor link for: Home is a suitcase">🔗</a></h2>
<p>I began the third year of my degree and moved for the fifth time in two years when I made it back to Rochester in August. This time, I found somewhere to ideally live longer than only a few months of the year. I moved into a house with a few other roommates with more space than I&rsquo;ve had before. For the first time in a while, it&rsquo;s somewhere I&rsquo;ve made to feel like home.</p>
<p>This move came months after I ended a semester of a study abroad program and lived in a city for an internship. Most of 2017 made my suitcase feel like a home, but it afforded many unique experiences.</p>

<h2 id="croatia-study-abroad">Croatia: Study abroad&nbsp;<a class="hanchor" href="#croatia-study-abroad" aria-label="Anchor link for: Croatia: Study abroad">🔗</a></h2>
<p>
<figure>
  <img src="/blog/2018/02/photo_2017-01-17_19-09-11.jpg" alt="Saying goodbye to my mom and sister at the airport before flying to Dubrovnik" loading="lazy">
  <figcaption>Saying goodbye to my mom and sister at the airport before flying to Dubrovnik</figcaption>
</figure>
</p>
<p>From January to May 2017, I participated in a study abroad program with my university to <a href="https://en.wikipedia.org/wiki/Dubrovnik">Dubrovnik, Croatia</a>. RIT has full campuses in both Zagreb and Dubrovnik. This made planning the semester abroad easy, but also encouraged me to go somewhere I might not have gone otherwise.</p>
<p>My choice to study in Croatia was well-rewarded. On paper, I earned 12 credit hours, but I took away more than what I learned in class. My most important lessons came in the form of midnight bus rides to Albania, photograph exhibits capturing genocide in Sarajevo, and hugs from normally faraway friends in Czechia. My time abroad began a process in finding myself that has continued since my time in Europe.</p>

<h4 id="devconf-2017--fedora-diversity-fad">DevConf 2017 / Fedora Diversity FAD&nbsp;<a class="hanchor" href="#devconf-2017--fedora-diversity-fad" aria-label="Anchor link for: DevConf 2017 / Fedora Diversity FAD">🔗</a></h4>
<p>At the beginning of the year, the Fedora <a href="https://fedoraproject.org/wiki/Diversity">Diversity Team</a> held a &ldquo;Fedora Activity Day&rdquo; (FAD) event in Brno, Czechia. If you&rsquo;re outside of the Fedora community, think of a FAD as a focused, in-person team sprint. Together with our team in-person and remote, we mapped out our goals and plans for 2017 and set out to continue the work we began nearly three years ago.</p>
<p>
<figure>
  <img src="/blog/2018/02/DSC_0031.jpg" alt="" loading="lazy">
  <figcaption>Diversity Team group photo at our team sprint in Brno, Czechia</figcaption>
</figure>
</p>
<p>In addition to the work we accomplished together, it was fulfilling for me to see my teammates that span three continents. I spent a week with not only my teammates but also my friends. The days we get to spend together are a privileged few in the year, and it was fulfilling and motivating for me to spend some of our time together in a way that wasn&rsquo;t Pagure tickets or IRC meetings.</p>
<p>Read more about our team sprint in this event report:</p>
<p><a href="https://communityblog.fedoraproject.org/fedora-diversity-fad-2017/">https://communityblog.fedoraproject.org/fedora-diversity-fad-2017/</a></p>

<h4 id="fosdem-2017">FOSDEM 2017&nbsp;<a class="hanchor" href="#fosdem-2017" aria-label="Anchor link for: FOSDEM 2017">🔗</a></h4>
<p>
<figure>
  <img src="/blog/2018/02/MwwPknD.jpg" alt="I didn&rsquo;t get many photos during FOSDEM, but this one seemed fitting enough." loading="lazy">
  <figcaption>I didn’t get many photos during FOSDEM, but this one seemed fitting enough. Photo: Bhagyashree Padalkar</figcaption>
</figure>
</p>
<p>In February, I attended the Free and Open Source Software Developers European Meeting (FOSDEM) for the first time. <a href="https://fosdem.org">FOSDEM</a> is the largest open source conference in Europe, bringing together over 8,000 open source enthusiasts, contributors, and leaders from around the globe.</p>
<p>I had the privilege to attend as a member of the Fedora community, so my time was between the Fedora booth to meet the community and catching interesting talks. I also gave a talk of my own on the main track, <a href="https://archive.fosdem.org/2017/schedule/event/storytelling/"><em>What open source and J.K. Rowling have in common</em></a>! I gave this talk to a smaller audience at DevConf, but the FOSDEM audience was considerably larger.</p>
<p>In retrospect, my original talk topic is relevant but I have ideas on how I could have delivered my message more effectively. Regardless, it was a learning experience for me to present in front of a new audience. Public speaking opportunities filled my youth, both in theater and in presentations, but I had never presented to a technical audience before (let alone on a non-technical topic). The experience at FOSDEM helped build my understanding and I hope to return with a new topic someday in the future.</p>

<h4 id="exploring-the-balkans">Exploring the Balkans&nbsp;<a class="hanchor" href="#exploring-the-balkans" aria-label="Anchor link for: Exploring the Balkans">🔗</a></h4>
<p>Outside of open source and Fedora, my time in Croatia included a lot of time outside of Croatia. When many of my roommates went to explore the wonders of Western Europe, I lost my heart in the shadows of the Balkan mountains. My spring break was a solo trip split between Sarajevo, Bosnia and Hercegovina and Tirana, Albania.</p>

<h6 id="sarajevo">Sarajevo&nbsp;<a class="hanchor" href="#sarajevo" aria-label="Anchor link for: Sarajevo">🔗</a></h6>
<p>
<figure>
  <img src="/blog/2018/02/DSC_0033.jpg" alt="Taken from the Yellow Bastion in Sarajevo. I could get lost in this view forever." loading="lazy">
  <figcaption>Taken from the Yellow Bastion (<a href="https://goo.gl/maps/s4SHYxVLkEC2" class="bare">https://goo.gl/maps/s4SHYxVLkEC2</a>) in Sarajevo. I could get lost in this view forever.</figcaption>
</figure>
</p>
<p>The three days I spent in Sarajevo were short but significant. I was truly alone on this visit and it was up to me to make the most of it. Originally, I was skeptical to go alone, but I knew that I would never have a better opportunity to go. My fascination with Sarajevo stemmed from a year of studying European history in high school, and knowing the cultural significance of Sarajevo as a meeting point of western and eastern cultures. In the end, I decided to go, and I was rewarded for it.</p>
<p>
<figure>
  <img src="/blog/2018/02/eLj9O40.jpg" alt="Inside of the Tunnel of Sarajevo. It was so quiet I could hear myself breathe. This was a grounding experience." loading="lazy">
  <figcaption>Inside of the Tunnel of Sarajevo. It was so quiet I could hear myself breathe. This was a grounding experience.</figcaption>
</figure>
</p>
<p>Most of my trip in Sarajevo consisted of museums. I visited various museums, ranging from eighteenth to twentieth century history. The most rewarding for me were the <a href="http://galerija110795.ba/">Galerija 11/07/95</a> and the <a href="https://en.wikipedia.org/wiki/Sarajevo_Tunnel">Tunnel of Sarajevo</a>. The gallery documented the <a href="https://en.wikipedia.org/wiki/Srebrenica_massacre">Srebrenica genocide</a> in July 1995 by the Serbian armed forces. The exhibit was eye-opening and perspective-shifting. The Tunnel of Sarajevo, sometimes called the Tunnel of Hope, is another perspective-shattering experience. The museum introduces the tunnel used during the siege of Sarajevo during the 1990s, when Serbian forces surrounded the city for an almost <a href="https://en.wikipedia.org/wiki/Siege_of_Sarajevo">four-year siege</a>. The tunnel was the only way for citizens and resistance forces to contact the outside world and keep the resistance alive. A small part of the tunnel is preserved, and the other artifacts make it a gripping experience (not to mention it&rsquo;s a short drive out of the city, so you also have a chance to mentally prepare and later unpack the experience).</p>

<h6 id="tirana">Tirana&nbsp;<a class="hanchor" href="#tirana" aria-label="Anchor link for: Tirana">🔗</a></h6>
<p>I visited Tirana, Albania four times on my trip abroad. In Tirana, my heart was captured by the people there. For years, I read about the <a href="https://openlabs.cc/en/">Open Labs Hackerspace</a> community based in Tirana and I always imagined an opportunity to see it in person. I actually remember my first encounter with their community was an <a href="https://blog.azizaj.com/ada-lovelace-day/">Ada Lovelace Day event report</a>. And somehow, the circumstances shifted where I was able to meet their community and immerse myself in the culture, if only for a short time.</p>
<p>
<figure>
  <img src="/blog/2018/02/DSC_0187.jpg" alt="My visits to Tirana are best defined by the people who impacted my time there." loading="lazy">
  <figcaption>My visits to Tirana are best defined by the people who impacted my time there.</figcaption>
</figure>
</p>
<p>During my times in Tirana, I participated in the <a href="https://opensource.com/article/17/3/open-labs-48-hour-hackathon-albania">first-ever 48 hour hackathon</a> to support the UN&rsquo;s <a href="http://www.undp.org/content/undp/en/home/sustainable-development-goals.html">Sustainable Development Goals</a> (SDGs), the first edition of <a href="https://fedoramagazine.org/students-fedora-linux-weekend-2017/">Linux Weekend</a>, and the annual <a href="https://oscal.openlabs.cc/">Open Source Conference Albania</a> (OSCAL).</p>
<p> </p>
<p><a href="https://fedoramagazine.org/students-fedora-linux-weekend-2017/">https://fedoramagazine.org/students-fedora-linux-weekend-2017/</a></p>

<h2 id="india">India&nbsp;<a class="hanchor" href="#india" aria-label="Anchor link for: India">🔗</a></h2>
<p>At the end of my study abroad experience in Croatia, a unique opportunity presented itself to me. I did not buy my return airfare back to the US before I left for Croatia. When price-checking for my trip back, I noticed it was a few hundred dollars extra if I decided to spend a week in India before flying back to the US.</p>
<p>I booked the tickets.</p>
<p>
<figure>
  <img src="/blog/2018/02/yBioeCg.jpg" alt="Witnessing a tradition on my final day in Mumbai." loading="lazy">
  <figcaption>Witnessing a tradition on my final day in Mumbai.</figcaption>
</figure>
</p>
<p>The last day of my classes finally came, and the next day, I was traveling further east, to <a href="https://en.wikipedia.org/wiki/Mumbai">Mumbai</a> (or Bombay, if you prefer). I had the great fortune of having two great friends who invited me to the homes of their families during my trip. I visited Bee in Mumbai and Amita in Pune, all split across a single week!</p>
<p>My trip to India was eye-opening. For years, I&rsquo;ve had a fascination with Eastern culture and philosophy, but it was something completely different to experience. Bee and her family took me to the <a href="https://en.wikipedia.org/wiki/Global_Vipassana_Pagoda">Global Vipassana Pagoda</a>, a personally fulfilling experience for me. We visited the <a href="https://en.wikipedia.org/wiki/Bandra%E2%80%93Worli_Sea_Link">Bandra–Worli Sea Link</a>, <a href="https://goo.gl/maps/5kthSFfZmBJ2">Shree Mahalakshmi Temple</a>, and several other places in Mumbai. I remember walking through the streets more than anything.</p>
<p>
<figure>
  <img src="/blog/2018/02/DSC_0037.jpg" alt="The Bandra–Worli Sea Link. This may have been one of my best photos." loading="lazy">
  <figcaption>The Bandra–Worli Sea Link. This may have been one of my best photos.</figcaption>
</figure>
</p>
<p>
<figure>
  <img src="/blog/2018/02/DSC_0018.jpg" alt="Together at the gurdwara in Pune. Left to right: Prakash Mishra, me, Amita Sharma, Sumantro Mukherjee" loading="lazy">
  <figcaption>Together at the gurdwara in Pune. Left to right: Prakash Mishra, me, Amita Sharma, Sumantro Mukherjee</figcaption>
</figure>
</p>
<p>In Pune, Amita and her family showed me their favorite places. I had a chance to meet many other Fedora friends in Pune too. One of my favorite memories of Pune was a historic <a href="https://en.wikipedia.org/wiki/Gurdwara">gurdwara</a>. Amita took me and the others in our group to visit. For a moment, I finally got to see something I&rsquo;ve only read about right in front of my eyes. The history and reverence in these places was absorbed into my mind.</p>
<p>
<figure>
  <img src="/blog/2018/02/DSC_0048.jpg" alt="Definitely not proper zazen posture. But a cool shot anyways." loading="lazy">
  <figcaption>Definitely not proper zazen posture. But a cool shot anyways. Photo: Amita Sharma</figcaption>
</figure>
</p>
<p>I never expected an Indian visa stamp in my passport in 2017, yet it happened. I&rsquo;m equally filled with wonder at how the circumstances unfolded as I am grateful this experience sneaked into my year.</p>

<h2 id="chicago-urban-experience">Chicago: Urban experience&nbsp;<a class="hanchor" href="#chicago-urban-experience" aria-label="Anchor link for: Chicago: Urban experience">🔗</a></h2>
<p>After my semester abroad and visiting India, I was whisked back to the United States, only to pack up once again for another new experience. From June to August, I lived in <a href="https://en.wikipedia.org/wiki/Chicago">Chicago, Illinois</a> to work an internship at <a href="http://jumptrading.com/">Jump Trading</a>. Chicago had a feeling of nostalgia for me because much of my father&rsquo;s family has origins tracing back to Chicago. But I would find myself losing more of my heart in Chicago than I realized.</p>
<p>
<figure>
  <img src="/blog/2018/02/DSC_0001.jpg" alt="The view from my apartment in Chicago. Could this even be real??" loading="lazy">
  <figcaption>The view from my apartment window in Chicago. Could this even be real??</figcaption>
</figure>
</p>

<h4 id="the-internship">The internship&nbsp;<a class="hanchor" href="#the-internship" aria-label="Anchor link for: The internship">🔗</a></h4>
<p>I worked with a fantastic team of people on exciting projects. Professionally, my time in Chicago was motivating and empowering. I was provided the opportunity to learn and also contribute. I walked in with a dreadful feeling of imposter syndrome and left feeling more confident in my own learning abilities. <a href="https://www.docker.com/">Docker</a>, <a href="https://kubernetes.io/">Kubernetes</a>, and <a href="https://opensource.com/article/17/8/influxdb-time-series-database-stack">time-series data</a> became a part of my daily work life, when I had little to no knowledge before then.</p>
<p>By the time my internship finished, I helped contribute to our team&rsquo;s goal of standing up Kubernetes and <a href="https://github.com/kubernetes/minikube/commits?author=jflory7">contributing a few patches</a> in Kubernetes projects like Minikube. I have great mentors to thank for not only direct, technical assistance but also motivational mentorship and empowerment too.</p>

<h4 id="everything-else">Everything else&nbsp;<a class="hanchor" href="#everything-else" aria-label="Anchor link for: Everything else">🔗</a></h4>
<p>
<figure>
  <img src="/blog/2018/02/chicago-matt-justin.jpg" alt="When old friends come to visit. Hi Matt!" loading="lazy">
  <figcaption>When old friends come to visit. Hi Matt!</figcaption>
</figure>
</p>
<p>There was more to Chicago than only the work too. Before long, I felt like a true Chicagoan, traveling the subways into the Loop, catching free concerts in <a href="https://www.cityofchicago.org/city/en/depts/dca/supp_info/millennium_park.html">Millennium Park</a>, and indulging in the Chicago tradition of <a href="https://en.wikipedia.org/wiki/Chicago-style_pizza">deep-dish pizza</a>.</p>
<p>Unlike other cities I&rsquo;ve visited, like New York City, Chicago felt easier to integrate into. The culture was notably &ldquo;slower&rdquo; than the fast-pace life of NYC, London, or Washington DC. I discovered <a href="http://www.middleeastbakeryandgrocery.com/">Middle Eastern markets</a> that became a regular part of my weekends, made friends with the baristas at a <a href="https://www.intelligentsiacoffee.com/old-town-coffeebar">local coffeehouse</a>, and had the privilege of hosting friends from three continents for short stays.</p>
<p>
<figure>
  <img src="/blog/2018/02/chicago-bee-fireworks.jpg" alt="4th of July fireworks on the Navy Pier with Bee" loading="lazy">
  <figcaption>4th of July fireworks on the Navy Pier with Bee</figcaption>
</figure>
</p>
<p>I left Chicago and was offered a new contract for the following summer in 2018. I&rsquo;m looking forward to be back in June again.</p>

<h2 id="year-of-fedora">Year of Fedora&nbsp;<a class="hanchor" href="#year-of-fedora" aria-label="Anchor link for: Year of Fedora">🔗</a></h2>
<p>2017 was full of time and effort spent in the Fedora community. In addition to the Diversity FAD, I was elected to the <a href="https://docs.fedoraproject.org/fedora-project/council/charter.html">Fedora Council</a> (on my third attempt), attended the annual Fedora contributor conference, Flock, and also narrowed my scope for contributions.</p>
<p>When I began contributing to Fedora, I was contributing to many things. Marketing, community operations, Fedora Badges, Fedora Magazine, Ambassadors, Games SIG, Join SIG, the Diversity Team, and maybe a few more things. After a while, I realized my contributions carried great width but poor depth. In 2017, I &ldquo;reconfigured&rdquo; my time in Fedora to focus in on the areas where I felt my time yielded the highest impact. This is Fedora <a href="https://fedoraproject.org/wiki/CommOps">CommOps</a> and the <a href="https://fedoraproject.org/wiki/Diversity">Diversity Team</a>.</p>
<p>I resigned as Fedora Magazine editor-in-chief and also formally stepped down from other teams. It made me sad, but I knew it was the right decision for me. I&rsquo;m happy to spend more time working in fewer projects at a greater depth and focus than I had before.</p>

<h4 id="flock-2017">Flock 2017&nbsp;<a class="hanchor" href="#flock-2017" aria-label="Anchor link for: Flock 2017">🔗</a></h4>
<p><a href="https://flocktofedora.org/">Flock</a>, Fedora&rsquo;s annual contributor conference, was held from Aug. 29 to Sep. 1 in Cape Cod, Massachusetts. Every year, Flock is an empowering experience for me because of the face-time I get with the people I spend much of my year working with remotely. This year was no different, and many new faces were mixed in with the old ones.</p>
<p>The highlights for me were in three forms: the <a href="https://flock2017.sched.com/event/Bm9a/commops-and-metrics-workshop">CommOps session</a>, the <a href="https://flock2017.sched.com/event/Bm8o/diversity-team-hackfest">Diversity Team session</a>, and the <a href="https://flock2017.sched.com/event/Bm8p/fedora-magazine-workshop">Fedora Magazine session</a>. Together with <a href="https://twitter.com/iamskamath">Sachin Kamath</a>, we led the CommOps session. You can read more about our session here:</p>
<p><a href="https://communityblog.fedoraproject.org/metrics-docs-flock-2017/">https://communityblog.fedoraproject.org/metrics-docs-flock-2017/</a></p>
<p>The Diversity Team and Magazine sessions were also valuable for both teams to get feedback from the rest of the community. In the Diversity Team session, we had many active participants outside of our team that reminded us the importance of narrowing our focus for higher impact. I also attended other interesting sessions held by the community, like the <a href="https://flock2017.sched.com/event/Bm9C/the-future-of-fedmsg">future of fedmsg</a> by Jeremy Cline.</p>

<h4 id="commops-fad">CommOps FAD&nbsp;<a class="hanchor" href="#commops-fad" aria-label="Anchor link for: CommOps FAD">🔗</a></h4>
<p>Towards the end of 2017, I worked together with our team in CommOps to organize our own team sprint, or FAD, in 2018. We <a href="https://fedoraproject.org/wiki/FAD_CommOps_2018">successfully planned the event</a> and organized it in Brno, Czechia, similar to last year&rsquo;s Diversity FAD.</p>
<p>More details on this will be found in its own event report!</p>

<h2 id="listenbrainz-indie-study">ListenBrainz indie study&nbsp;<a class="hanchor" href="#listenbrainz-indie-study" aria-label="Anchor link for: ListenBrainz indie study">🔗</a></h2>
<p>In my fall semester of 2017, I took on an <a href="https://jwfblog.wpenginepowered.com/tag/rit-2171/">independent study</a> to further explore the ListenBrainz project. <a href="https://listenbrainz.org/">ListenBrainz</a> is an open source social platform to document the music you listen to over time. If you&rsquo;re familiar with Last.fm or Libre.fm, it&rsquo;s a similar concept, but the focus is more on the data than the social features. ListenBrainz is supported by the <a href="https://metabrainz.org/">MetaBrainz Foundation</a>, also the guiding body for the more well-known <a href="https://musicbrainz.org/doc/About">MusicBrainz</a> project.</p>
<p>In my independent study, I had a chance to contribute documentation and community tools (like issue / PR templates), as well as explore how the project gathers and builds metrics. I didn&rsquo;t make my original milestone of major code contributions to the project, but I better understood the community and tried to help in the areas of low coverage, like documentation.</p>
<p>The experience was insightful for me and provided me an excuse to work on something that I am genuinely passionate about. Music is a powerful part of human culture, and the MetaBrainz Foundation takes a serious approach to documenting music, especially in a technical sense. ListenBrainz represents an opportunity for us to better explore and understand ourselves through our music listening habits. I hope someday that ListenBrainz will be a platform for data journalism and research about music. That&rsquo;s my dream.</p>

<h2 id="opensourcecom-community-moderator">Opensource.com community moderator&nbsp;<a class="hanchor" href="#opensourcecom-community-moderator" aria-label="Anchor link for: Opensource.com community moderator">🔗</a></h2>
<p>At the beginning of 2017, I was brought on board as an <a href="https://opensource.com/">Opensource.com</a> community moderator. Together with other community moderators and site staff, I help contribute new content and source new writers to the site. My invitation to the community moderator team came shortly after the announcement that I received the <a href="https://opensource.com/article/17/2/community-awards-2017">2017 People&rsquo;s Choice Award</a>. When <a href="https://twitter.com/rikkiends">Rikki Endsley</a> invited me to the team, it felt like a natural alignment to my passion for storytelling.</p>

<h4 id="all-things-open-2017">All Things Open 2017&nbsp;<a class="hanchor" href="#all-things-open-2017" aria-label="Anchor link for: All Things Open 2017">🔗</a></h4>
<p>
<figure>
  <img src="/blog/2018/02/DSC_0146.jpg" alt="Working together with the Opensource.com team to plan out the next year ahead." loading="lazy">
  <figcaption>Working together with the Opensource.com team to plan out the next year ahead.</figcaption>
</figure>
</p>
<p>I was invited to <a href="https://allthingsopen.org/">All Things Open</a>, an annual open source conference in Raleigh, by the Opensource.com team. The day before the conference, I met the rest of the team and other community moderators at the Red Hat HQ in Raleigh. We spent the day locked into a room together to hash out plans and goals for the next year. It was a productive opportunity for the team to work together and also a great opportunity to meet the other members of the community.</p>
<p>Some of my best takeaways from this experience were catching coffee with other community moderators, meeting Jim Whitehurst to talk about Opensource.com, and giving my talk, <em>What open source and J.K. Rowling have in common</em>, for the final time.</p>
<p>I hope I have the opportunity to go again next year to meet the awesome team behind Opensource.com. (If you haven&rsquo;t considered before, <a href="https://opensource.com/how-submit-article">come and write for us</a> too!)</p>

<h2 id="happiness-packet-challenge">Happiness Packet Challenge&nbsp;<a class="hanchor" href="#happiness-packet-challenge" aria-label="Anchor link for: Happiness Packet Challenge">🔗</a></h2>
<p>Another unusual milestone for my 2017 was the first rendition of the Happiness Packet Challenge. I was introduced to the Happiness Packets website in 2016. <a href="https://www.happinesspackets.io/">Happiness Packets</a> are an easy way to say thank you to someone who has had a positive impact on you. I came up with a challenge to my friends and network to write one Happiness Packet a day, every day, for a week.</p>
<p>I followed up with the team behind the project to evaluate the impact of this idea, and I was pleasantly surprised. Here&rsquo;s the number of messages sent for the two weeks prior to the Happiness Packet Challenge, followed by the week of the challenge:</p>
<ul>
<li><strong>Week starting 2017-03-27</strong>: 2 sent</li>
<li><strong>Week starting 2017-04-03</strong>: 35 sent</li>
<li><strong>Week starting 2017-04-10 (challenge week)</strong>: 72 sent</li>
</ul>
<p>You can read more about the challenge in my original blog post. Keep an eye out for it again in 2018.</p>
<p><a href="https://jwfblog.wpenginepowered.com/2017/04/happiness-packets-challenge/">https://jwfblog.wpenginepowered.com/2017/04/happiness-packets-challenge/</a></p>

<h2 id="living-openly">Living openly&nbsp;<a class="hanchor" href="#living-openly" aria-label="Anchor link for: Living openly">🔗</a></h2>
<p>Earlier in this post, I alluded to how I felt like I began to find myself when I was abroad. My study abroad experience was the beginning of a longer process that leads into present day.</p>
<p>In April, <a href="https://medium.com/@jflory7/turn-on-the-lights-267603e553b5">I went public</a> with my depression, both to help take a weight off my shoulder and to be a voice for others who are afraid to speak up. I was always concerned of the reaction from publishing something like that, but I was met with nothing but loving-kindness from friends and strangers. It gave me new confidence to live more openly and wear my values in the open.</p>
<p>The story continued in October, when I decided to delete my Facebook and Instagram accounts.</p>
<p><a href="https://medium.com/@jflory7/cut-the-plug-deleting-facebook-and-instagram-6cbe7c86d9c9">https://medium.com/@jflory7/cut-the-plug-deleting-facebook-and-instagram-6cbe7c86d9c9</a></p>
<p>I considered this for a couple of years before, but I pulled the trigger in October. Like many others, it felt almost too much of a task to disconnect myself from this huge network of people and friends. But the negative impacts of it were draining me and trapping me. Since I deleted my accounts, I&rsquo;ve noticed a positive impact in overall levels of happiness and awareness. However, I don&rsquo;t think the social media accounts alone are the reason for this.</p>
<p>In the near future, I hope to do a follow-up post to my decision to cut away from the Facebook and Instagram machines. Keep an eye out for more.</p>

<h2 id="2018">2018&nbsp;<a class="hanchor" href="#2018" aria-label="Anchor link for: 2018">🔗</a></h2>
<p>It&rsquo;s already February in 2018 when I finished this post. This year, I thought it would be the year when I get the post out closer to the new year, but somehow I always slip. In either case, it gives me a chance to take in some of the new opportunities and excitement of the new year before reflecting and looking back.</p>
<p>This year, I&rsquo;m working an internship with <a href="https://www.unicef.org/">UNICEF</a> to help lead on open source community engagement and supporting the non-technical areas of their <a href="http://unicefstories.org/magicbox/">MagicBox platform</a>. In the one month I&rsquo;ve been doing this, I feel like I have tens of articles I could write about, but the experience is still maturing for me.</p>
<p>I also have another round in Chicago to look forward to over the summer. I&rsquo;ll get to work with the same team as last year on similar projects, and I&rsquo;m looking forward to going back.</p>
<p>As for the rest, who knows what&rsquo;s to come? So many things that made 2017 what it was were the things I didn&rsquo;t expect. The surprises in life are the salt to the regiment of daily life, and add flavor and spice in unexpected ways. I have no idea what my 2018 Year in Review will look like, and that&rsquo;s okay. I&rsquo;m looking forward to seeing what will make it in.</p>

<h2 id="thank-you">Thank you&nbsp;<a class="hanchor" href="#thank-you" aria-label="Anchor link for: Thank you">🔗</a></h2>
<p>Above all, every year, I think back on the people who positively impacted my life and contributed to the &ldquo;flavor&rdquo; of my year. A close friend reminded me recently that we all stand on the shoulders of giants. And isn&rsquo;t it true? We all have our great mentors, great friends, and unexpected sages that help us find our own footing on this great path of life. We become ourselves from the various pieces impacted on us by others.</p>
<p>I&rsquo;m thankful for all of the people who have made my year into the experience it was. The list is too long to write and I fear I would leave someone out – even significant impacts were made by people who had a short-term role in this last year.</p>
<p>A long time ago, my open source experience was jump-started by someone who did something kind and exceptional for me. It was a continuing trend since that moment. My only aspiration is to pay forward the good will that so many have bestowed unto me.</p>
<p>Thanks for making it this far down, and I hope to see you in 2018. Or who knows – maybe it will just be me reading this far down for next year, when I go to write my next year in review. Hi future me!</p>]]></description></item><item><title>Tergiversate: Demon Days by Gorillaz</title><link>https://jwheel.org/blog/2018/01/demon-days-gorillaz/</link><pubDate>Tue, 16 Jan 2018 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2018/01/demon-days-gorillaz/</guid><description><![CDATA[<p>The first album to début in my <a href="https://jwfblog.wpenginepowered.com/tag/tergiversate-music-column/">Tergiversate music column</a> isn&rsquo;t a new album, but it&rsquo;s an album with a meaning that evolves and changes over time into something new. <a href="https://en.wikipedia.org/wiki/Demon_Days"><em>Demon Days</em></a> is the second studio album released by <a href="https://en.wikipedia.org/wiki/Gorillaz">Gorillaz</a> in 2005. <em>Demon Days</em> is officially classified as alternative hip hop, but it&rsquo;s better described as a fusion of styles and genres, rolled together. Some tracks hang true to the underground hip hop sounds from the first album, others to a pop-ish sound found in their third album, and others are completely unique to <em>Demon Days</em>.</p>

<h2 id="why-demon-days">Why <em>Demon Days</em>?&nbsp;<a class="hanchor" href="#why-demon-days" aria-label="Anchor link for: Why Demon Days?">🔗</a></h2>
<p><em>Demon Days</em> has a sentimental value to me. When I was younger, a close friend gifted me a copy of the album on CD, marking the first physical piece of music merchandise in my collection. Ever since the first CD, my collection has expanded across many artists, genres, and mediums, from CDs, to 7&quot; and 12&quot; vinyl records, and even a signed brick (a story to save for another time).</p>
<p>More importantly, Gorillaz represents a distinct departure in my music listening habits from my youth. Gorillaz opened my perspective to new sounds and genres, and the diverse range of sounds that Damon Albarn uses in the Gorillaz albums helped me discover new music. Gorillaz is the root of my independent music discovery, when I began to explore the rich palettes of sound, passion, and insight that music offers.</p>
<p>Even though <em>Demon Days</em> was the first album that felt like my own finding, its meaning and purpose have grown with me over time. Every year, there&rsquo;s a period of my life where I find the album on repeat, or I&rsquo;ll suddenly realize that I need to listen to a <em>very specific song from the album immediately</em>. I departed from other artists and albums from my youth, but <em>Demon Days</em> is one that clings on with a contemporary relevance, captures my imagination, and fills my heart with hope.</p>
<p>Thus, no other album felt worthy of receiving the title of &ldquo;first&rdquo; in this series.</p>

<h2 id="themes">Themes&nbsp;<a class="hanchor" href="#themes" aria-label="Anchor link for: Themes">🔗</a></h2>
<p>The album sits at a pivotal moment in human history: the dawn of the 21st century is still breaking. A world of technology begins to immerse our culture, the world is at a war with questionable purpose, and an air of suspense hangs above for the thoughtful philosopher.</p>
<p>Damon Albarn attacks this moment in a poetic and creative genius that addresses four themes, but doesn&rsquo;t paint a picture of despair. The four themes, as aptly detailed by the <a href="http://gorillaz.wikia.com/wiki/Demon_Days">Demon Days Wikia page</a>, are…</p>
<ol>
<li>Desensitizing children / the innocent</li>
<li>The Iraq war</li>
<li>Environmental damage</li>
<li>Defacement of mass culture</li>
</ol>

<h4 id="new-direction">New direction&nbsp;<a class="hanchor" href="#new-direction" aria-label="Anchor link for: New direction">🔗</a></h4>
<p>Unlike the earlier album, this album marks the beginning of a new era for Damon Albarn and Gorillaz. Albarn&rsquo;s music reaches a new level of maturity that was not as present in previous works.</p>
<p>Another <a href="https://www.reddit.com/r/gorillaz/comments/35bchy/its_about_drugs_obviously_demon_days_album/cr2t5b5/">analysis of the album</a> from Reddit pins a deep insight into the meaning of the album. One exceptional excerpt from that thread:</p>
<blockquote>
<p>Within this album, which is a popular music album, Damon spins a soundscape which explores the world in true existential crisis and tries, genuinely tries, to instruct the listener towards a positive outlook. It is unflinchingly hateful and rejecting of the forces at work which prevent personal growth and one by one exposes the Orwellian nightmare of living under a violent government and an apathetic society.</p>
</blockquote>

<h4 id="one-piece">One piece&nbsp;<a class="hanchor" href="#one-piece" aria-label="Anchor link for: One piece">🔗</a></h4>
<p>Perhaps the most powerful part of <em>Demon Days</em> is its composition as a singular unit. While many of the songs stand up on their own as mainstream singles, the album is best received as the sum of its parts. Albarn described the album in an interview as a story that takes the listener through the night. <em>Intro</em> sets the tone at the beginning of the darkness, and the self-titled track at the end paints a bright, luminescent color for the album.</p>

<h2 id="powerful-ending">Powerful ending&nbsp;<a class="hanchor" href="#powerful-ending" aria-label="Anchor link for: Powerful ending">🔗</a></h2>
<p>The ending of the album remains the most powerful part of the album for me, particularly <em>Don&rsquo;t Get Lost in Heaven</em> and <em>Demon Days</em>. The album deals with themes of a world in decline. It is not discreet in its implied meaning and Albarn offers his perspective on the pitfalls that humanity sets for itself.</p>
<p>Yet, the ending of the album isn&rsquo;t a reflection on the hateful, spiteful, and damaging parts of society and culture.</p>
<p>The ending reminds the listener of the breaking rays of sunlight, cutting through the darkness of the night. In line with its storyline of journeying through the night and facing different demons, the album closes itself with a positive picture of hope, love, and inspiration. I believe Albarn was aware that the message of urgency and themes of darkness in other songs from the album were difficult to swallow. But he was acutely aware that the embers of hope and love should never be extinguished if these demons of the world are to be overcome.</p>
<p>The ending of the album is what took me through 2017. One of the highlights of my year was seeing Gorillaz live in Chicago in July, as they started their international tour for the <em>Humanz</em> album. I was speechless and filled with a boundless joy when the concert ended with <em>Don&rsquo;t Get Lost in Heaven</em> and <em>Demon Days</em>. These two songs aged and were reborn with new meaning and passion for the world we explore in 2017 and beyond. I&rsquo;ve felt that for some time, but seeing Gorillaz perform at their first show in years and also ending with these songs? It only confirmed this resolve in meaning to me.</p>

<h2 id="where-to-find-demon-days">Where to find <em>Demon Days</em>&nbsp;<a class="hanchor" href="#where-to-find-demon-days" aria-label="Anchor link for: Where to find Demon Days">🔗</a></h2>
<p>If you only know some of the singles from the album, or if you have never listened at all, please consider a full listen from top to bottom. Some albums can be enjoyed in pieces, but <em>Demon Days</em> is a package deal, and it offers the most when it&rsquo;s listened to in a single, immersive experience.</p>
<ul>
<li><a href="https://open.spotify.com/album/0bUTHlWbkSQysoM3VsWldT">Spotify</a></li>
<li><a href="https://itunes.apple.com/us/album/demon-days/850571319">iTunes</a></li>
<li><a href="https://play.google.com/store/music/album/Gorillaz_Demon_Days?id=By4ucvl4dgvq6uphk7y54iiwecy&amp;hl=en">Google Play</a></li>
<li><a href="https://www.amazon.com/Demon-Days-Gorillaz/dp/B000TENKEK/">Amazon</a></li>
<li><a href="https://www.youtube.com/playlist?list=PLFBaDo-wGWHqLRzGiaPFUMEF-iP4UEvg1">YouTube</a></li>
</ul>
<hr>
<p><em>Curious where the name &ldquo;Tergiversate&rdquo; came from? Check out the <a href="http://www.dictionary.com/browse/tergiversate">dictionary definition</a>.</em></p>]]></description></item><item><title>Tell us your Fedora 2017 Year in Review</title><link>https://jwheel.org/blog/2018/01/fedora-2017-year-review/</link><pubDate>Thu, 11 Jan 2018 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2018/01/fedora-2017-year-review/</guid><description><![CDATA[<p>The past year was a busy for Fedora. The community released Fedora 26 and 27. Different sub-projects of Fedora give their share of time for the overall success of Fedora. But in a project as big as Fedora, it&rsquo;s hard to keep track of what everyone is doing! If you&rsquo;re a developer, you likely know more about what&rsquo;s happening inside the code of Fedora, but you may not know what&rsquo;s happening with the Fedora Ambassadors. Or maybe you&rsquo;re involved with Globalization (G11n) and translating and know what&rsquo;s happening there, but you&rsquo;re not as familiar with what the Fedora Design team is working on.</p>

<h2 id="share-your-2017-year-in-review">Share your 2017 &ldquo;Year in Review&rdquo;&nbsp;<a class="hanchor" href="#share-your-2017-year-in-review" aria-label="Anchor link for: Share your 2017 &ldquo;Year in Review&rdquo;">🔗</a></h2>
<p>To communicate with the rest of the Fedora community what we worked on in 2017, the Fedora Community Operations team (<a href="https://fedoraproject.org/wiki/CommOps">CommOps</a>) encourages every sub-project of Fedora put together their own &ldquo;Year in Review&rdquo; article on the <a href="https://communityblog.fedoraproject.org/">Fedora Community Blog</a>. The CommOps team has created an <a href="https://communityblog.fedoraproject.org/fedora-2017-year-in-review/">easy to use template</a> to document your <strong>top three highlights</strong> of 2017 and <strong>one goal</strong> for 2018.</p>
<p>Read the <a href="https://communityblog.fedoraproject.org/fedora-2017-year-in-review/">original announcement</a> of the 2017 &ldquo;Year in Review&rdquo; on the Fedora Community Blog. Contributors are encouraged to work with their sub-projects to come up with the three 2017 highlights and one 2018 goal. These are only set as a minimum. If your sub-project has a lot to say or has many big tasks for 2018, include more highlights or more goals! The only requirement is to meet the minimum, but there is no limit for what you wish to include.</p>
<p><a href="https://communityblog.fedoraproject.org/fedora-2017-year-in-review/">https://communityblog.fedoraproject.org/fedora-2017-year-in-review/</a></p>

<h2 id="where-to-find-year-in-review-posts">Where to find &ldquo;Year in Review&rdquo; posts&nbsp;<a class="hanchor" href="#where-to-find-year-in-review-posts" aria-label="Anchor link for: Where to find &ldquo;Year in Review&rdquo; posts">🔗</a></h2>
<p>All &ldquo;Year in Review&rdquo; articles end up on the <a href="https://communityblog.fedoraproject.org/">Fedora Community Blog</a>. See <a href="https://communityblog.fedoraproject.org/tag/year-in-review-2015/">examples from 2015</a> for some inspiration. To find new posts, find them in the &ldquo;<a href="https://communityblog.fedoraproject.org/tag/year-in-review-2017/">Year in Review 2017</a>&rdquo; tag.</p>
<p>Start discussing this now and craft your own &ldquo;Year in Review&rdquo; post for 2017! Sub-projects are encouraged to have a draft in the Community Blog before the end of February.</p>]]></description></item><item><title>Raspberry Pis and open source at Rochester Mini Maker Faire</title><link>https://jwheel.org/blog/2018/01/rochester-mini-maker-faire/</link><pubDate>Tue, 09 Jan 2018 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2018/01/rochester-mini-maker-faire/</guid><description><![CDATA[<p><a href="https://opensource.com/article/17/12/rochester-mini-maker-faire"><em>This article was originally published on Opensource.com.</em></a></p>
<hr>
<p>The <a href="https://rochester.makerfaire.com/">Rochester Mini Maker Faire</a> is an annual event at the Joseph A. Floreano Riverside Convention Center in Rochester, NY. Each year, makers, creators, artists, and more from all over upstate New York and beyond show their crafts and creations to the community. Open source software and hardware are popular items at the Rochester Mini Maker Faire, with countless Raspberry Pis, Arduino boards, and open source projects powering many electronic projects.</p>
<p>On November 18th, the <a href="http://foss.rit.edu">Free and Open Source Software initiative</a> at the <a href="https://magic.rit.edu">RIT MAGIC Center</a> and the <a href="http://ritlug.com">RIT Linux Users Group</a> presented projects and their communities at the Faire. Students from both communities demonstrated projects made with Raspberry Pis or larger undertakings on other open source projects.</p>

<h2 id="looking-good-magic-mirror-and-raspberry-pi">Looking good: Magic mirror and Raspberry Pi&nbsp;<a class="hanchor" href="#looking-good-magic-mirror-and-raspberry-pi" aria-label="Anchor link for: Looking good: Magic mirror and Raspberry Pi">🔗</a></h2>
<p>
<figure>
  <img src="/blog/2017/11/ritlug-makerfaire-gameboy-magic-mirror.jpg" alt="Taylor Bowling with the Magic Mirror and Retro Pi at the Rochester Mini Maker Faire 2017" loading="lazy">
  <figcaption>Taylor Bowling (<a href="https://twitter.com/TaylorScott319" class="bare">https://twitter.com/TaylorScott319</a>) with the Magic Mirror and Retro Pi at the Rochester Mini Maker Faire</figcaption>
</figure>
</p>
<p>Students from the FOSS@MAGIC initiative presented the <a href="https://github.com/MichMich/MagicMirror">Magic Mirror</a>, a mirror that combines your digital world into your reflection. A Raspberry Pi and salvaged monitor screen sit behind a piece of one-way glass. Through the glass, the mirror shows the time, daily weather report, calendar updates, and more along with your reflection.</p>
<p><a href="https://twitter.com/TaylorScott319">Taylor Bowling</a> and <a href="https://serubin.net/">Solomon Rubin</a>, two students at RIT, worked together on the project in spring 2017. The frame for the mirror was hand-built for the project. Using <a href="https://magicmirror.builders/">this guide</a>, the two created a pair of them for the upcoming <a href="https://www.rit.edu/news/story.php?id=58179">RIT MAGIC Center</a>.</p>

<h2 id="community-course-ware-with-learnit">Community course-ware with LearnIt&nbsp;<a class="hanchor" href="#community-course-ware-with-learnit" aria-label="Anchor link for: Community course-ware with LearnIt">🔗</a></h2>
<p>Another student, <a href="https://wilfriede.me/">Wilfried Hounyo</a>, demonstrated his open source course-ware platform, LearnIt. <a href="https://github.com/wilfriedE/LearnIt">LearnIt</a> is a platform for topic-based, community-contributed courses and tutorials. Similar to other platforms like <a href="https://www.udacity.com/">Udacity</a> or <a href="https://www.coursera.org/">Coursera</a>, LearnIt enables anyone to host their own learning platform and build a community around it.</p>
<p>Wilfried&rsquo;s inspiration for LearnIt came from working with the <a href="https://www.firstinspires.org/">FIRST Robotics</a> community in high school. LearnIt&rsquo;s original goal was to build an open platform for learning and teaching within the FIRST Robotics community. This way, anyone around the country could create their own lessons for anyone to view and follow. After working on the project, Wilfried decided to make the platform ambiguous for any project, so anyone could use LearnIt for building a learning community around any topic or subject area.</p>
<p>A demo is available <a href="https://learnit-demo.herokuapp.com/">here</a> and the source is <a href="https://github.com/wilfriedE/LearnIt">on GitHub</a>.</p>

<h2 id="linux-operating-system-for-rit">Linux operating system for RIT&nbsp;<a class="hanchor" href="#linux-operating-system-for-rit" aria-label="Anchor link for: Linux operating system for RIT">🔗</a></h2>
<p>Members of the RIT Linux Users Group also presented TigerOS, a custom Linux operating system for students, faculty, and staff of Rochester Institute of Technology. One of the project goals is to offer an installer based on major across all RIT majors. After picking your major, TigerOS installs and configures all the software used by the department or major.</p>
<blockquote class="twitter-tweet" data-dnt="true"><p lang="en" dir="ltr">Did you know <a href="https://twitter.com/hashtag/RITlug?src=hash&amp;ref_src=twsrc%5Etfw">#RITlug</a> is working on a custom operating system for <a href="https://twitter.com/RITtigers?ref_src=twsrc%5Etfw">@RITtigers</a>? Check out <a href="https://twitter.com/hashtag/TigerOS?src=hash&amp;ref_src=twsrc%5Etfw">#TigerOS</a> at the @ROCHMakerFaire, table #91! <a href="https://twitter.com/hashtag/Rochester?src=hash&amp;ref_src=twsrc%5Etfw">#Rochester</a> <a href="https://twitter.com/hashtag/MakerFaire?src=hash&amp;ref_src=twsrc%5Etfw">#MakerFaire</a> <a href="https://t.co/aipHh8APz6">pic.twitter.com/aipHh8APz6</a></p>&mdash; RIT Linux Users Group (@RITlug) <a href="https://twitter.com/RITlug/status/931952653998940160?ref_src=twsrc%5Etfw">November 18, 2017</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>


<p>Development on TigerOS began when student <a href="https://axk4545.github.io/">Aidan Kahrs</a> picked up an abandoned project from past RIT students. After building a team, they set out to revive the project over the last year. To date, an early beta is available and efforts are going towards building an automatic CI build system and updating to Fedora 27.</p>
<p>To learn more about TigerOS, visit <a href="http://tigeros.ritlug.com/">their website</a>.</p>

<h2 id="spy-pi">Spy Pi&nbsp;<a class="hanchor" href="#spy-pi" aria-label="Anchor link for: Spy Pi">🔗</a></h2>
<p>RITlug also presented the Spy Pi at the Rochester Mini Maker Faire. The Spy Pi is a discreet camera embedded inside a picture frame powered by a Raspberry Pi. <a href="https://twitter.com/TaylorScott319">Taylor Bowling</a> also helped lead this project.</p>
<p>In the picture, R2D2 is <a href="http://www.starwars.com/video/r2-d2-captured-by-jawas">carried away</a> by the Jawas in <em>Star Wars: A New Hope</em>. Taylor added two orange LED lights into one of the hooded characters and attached an infrared motion sensor, webcam, and Raspberry Pi into the picture frame. Whenever someone walks in front of the picture frame, the LED &ldquo;eyes&rdquo; light up and the webcam takes a picture that&rsquo;s stored to the Raspberry Pi.</p>
<p>
<figure>
  <img src="/blog/2017/11/ritlug-makerfaire-gameboy-spypi.jpg" alt="Taylor Bowling stands next to the Spy Pi, a discreet picture frame that takes a picture when it detects movement at the Rochester Mini Maker Faire 2017" loading="lazy">
  <figcaption>Taylor Bowling (<a href="https://twitter.com/TaylorScott319" class="bare">https://twitter.com/TaylorScott319</a>) stands next to the Spy Pi, a discreet picture frame that takes a picture when it detects movement</figcaption>
</figure>
</p>
<p>Taylor designed the project himself and wrote simple Python scripts to automate using the sensors. His <a href="https://github.com/TaylorBowling/SpyPi">code is available</a> on GitHub.</p>

<h2 id="see-you-next-year">See you next year!&nbsp;<a class="hanchor" href="#see-you-next-year" aria-label="Anchor link for: See you next year!">🔗</a></h2>
<p>This year was the third year for FOSS@MAGIC and first year for the RIT Linux Users Group to exhibit at the Rochester Mini Maker Faire. Both communities look forward to showing off our projects and what we&rsquo;re working on again at Imagine RIT in May and again next year at the Faire.</p>
<p>To learn more, visit the websites for <a href="http://foss.rit.edu/">FOSS@MAGIC</a> and the <a href="http://ritlug.com">RIT Linux Users Group</a>.</p>
<p>
<figure>
  <img src="/blog/2017/11/IMG_20171118_082253-e1511219651105.jpg" alt="See you at next year&rsquo;s Rochester Mini Maker Faire!" loading="lazy">
  <figcaption>See you at next year’s Rochester Mini Maker Faire (<a href="https://rochester.makerfaire.com/" class="bare">https://rochester.makerfaire.com/</a>)!</figcaption>
</figure>
</p>]]></description></item><item><title>Tergiversate: Introducing music review column</title><link>https://jwheel.org/blog/2017/12/tergiversate-music-review/</link><pubDate>Wed, 27 Dec 2017 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2017/12/tergiversate-music-review/</guid><description><![CDATA[<p>Music is a key part of my life. I spend a lot of time listening and analyzing music. However, music is as much a personal experience as it is a social one too. In music, an artist shares their perspective and experience with the listener. The listener, in turn, shares music with others. In my experience, some of the best music recommendations have come from friends or from other music fans. Thus, I&rsquo;m happy to announce <strong>Tergiversate</strong>, a new column on my blog that celebrates great music and the role it plays in documenting culture and society.</p>

<h2 id="tergiversate-new-articles-in-2018">Tergiversate: New articles in 2018&nbsp;<a class="hanchor" href="#tergiversate-new-articles-in-2018" aria-label="Anchor link for: Tergiversate: New articles in 2018">🔗</a></h2>
<p>Tergiversate takes the form of a column on my blog. New posts will appear in the <a href="https://jwfblog.wpenginepowered.com/category/music/"><em>Music</em> category</a>. Since this is a personal undertaking, I did not want to commit to a publishing schedule, but I hope to cover one to two albums a month.</p>
<p>The album columns will not always be a review or an analysis, but rather a spotlight or highlight on albums that have a special or intrinsic value to me. I hope to cover both new releases from current-day artists as well as introduce older albums from some of my favorite artists.</p>
<p>The first articles in the series will appear in January 2018.</p>

<h2 id="recommendation-swapping-welcome">Recommendation swapping welcome&nbsp;<a class="hanchor" href="#recommendation-swapping-welcome" aria-label="Anchor link for: Recommendation swapping welcome">🔗</a></h2>
<p>I plan to start with music that I&rsquo;m familiar with. However, if you want me to consider an album, I&rsquo;m happy to swap recommendations. I&rsquo;m always looking for new music, so if you want to point something out to me, you&rsquo;re welcome to leave a comment or reach out to me somewhere else.</p>
<p>I&rsquo;m excited to launch Tergiversate. Music is an important part of my life and I&rsquo;m excited to extract the best highlights from a world polluted by noise.</p>
<hr>
<p><em>Curious where the name &ldquo;Tergiversate&rdquo; came from? Check out the <a href="http://www.dictionary.com/browse/tergiversate">dictionary definition</a>.</em></p>
<p><em><a href="https://thenounproject.com/term/music/1187007/">Music</a> by <a href="https://thenounproject.com/sandyduankz">Sandy Priyasa</a> from <a href="https://thenounproject.com/">the Noun Project</a>.</em></p>]]></description></item><item><title>Statistics proposal and self-hosting ListenBrainz</title><link>https://jwheel.org/blog/2017/12/statistics-hosting-listenbrainz/</link><pubDate>Mon, 18 Dec 2017 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2017/12/statistics-hosting-listenbrainz/</guid><description><![CDATA[<p><em>This post is part of a series of posts where I contribute to the ListenBrainz project for my independent study at the Rochester Institute of Technology in the fall 2017 semester. For more posts, find them in <a href="https://jwfblog.wpenginepowered.com/tag/rit-2171/">this tag</a>.</em></p>
<hr>
<p>This week is the last week of the fall 2017 semester at RIT. This semester, I spent time with the MetaBrainz community working on ListenBrainz for an independent study. This post explains what I was working on in the last month and reflects back on my <a href="https://jwfblog.wpenginepowered.com/2017/10/contributing-listenbrainz/">original objectives</a> for the independent study.</p>

<h2 id="running-my-own-listenbrainz">Running my own ListenBrainz&nbsp;<a class="hanchor" href="#running-my-own-listenbrainz" aria-label="Anchor link for: Running my own ListenBrainz">🔗</a></h2>
<p>The <a href="http://ritlug.com/">RIT Linux Users Group</a> hosts various virtual machines for our projects. I requested one to set up and host a &ldquo;production&rdquo; ListenBrainz site. The purpose of doing this was to…</p>
<ol>
<li>Test my changes in a &ldquo;production&rdquo; environment</li>
<li>Offer a service for the RIT Linux Users Group to poke around with</li>
</ol>
<p>I spent most of this time working with our system administrator to set up the machine and adjust hardware specs for ListenBrainz. Once we fixed storage space and memory issues, it was easy to set it up and get ListenBrainz running. My experience writing the <a href="https://listenbrainz.readthedocs.io/en/latest/dev/devel-env.html">development guide</a> made it easy to get set up and get working. On the first run, it worked!</p>
<p>Now, <a href="http://listen.ritlug.com/">listen.ritlug.com</a> is live.</p>

<h4 id="figuring-out-https">Figuring out HTTPS&nbsp;<a class="hanchor" href="#figuring-out-https" aria-label="Anchor link for: Figuring out HTTPS">🔗</a></h4>
<p>My next challenge for the site is to set up HTTPS. I tried using a <a href="https://www.nginx.com/resources/admin-guide/nginx-https-upstreams/">reverse proxy in nginx</a> to set up HTTPS, but I received <em>502 Bad Gateway</em> errors. I realized I spent too much time figuring this out on my own and decided to <a href="https://community.metabrainz.org/t/how-does-metabrainz-use-https-on-listenbrainz/347319">ask for help</a> in the MetaBrainz community forums.</p>

<h2 id="proposing-new-statistics">Proposing new statistics&nbsp;<a class="hanchor" href="#proposing-new-statistics" aria-label="Anchor link for: Proposing new statistics">🔗</a></h2>
<p>Halfway through the independent study, I realized I would fall short of my original objective of implementing basic statistics in ListenBrainz. To compromise, I wrote a <a href="https://docs.google.com/document/d/1kByAgC9kbuDHNbsEJDkYkTMJ-wAoouWj0qNyi2UPb2Y/edit?usp=sharing">proposal for new statistics</a> to start in the project. My proposal looked at other proprietary platforms that compete with ListenBrainz to see some of their statistics. I also came up with some of my own.</p>
<p>I <a href="https://community.metabrainz.org/t/feedback-needed-listenbrainz-statistics-proposal/347327">proposed this to the MetaBrainz community</a> on the community forums. I&rsquo;m awaiting feedback on my ideas. Once I get feedback, I plan to file new tickets for each statistic to track their implementation over time.</p>
<p>I don&rsquo;t expect statistics being at the forefront of ListenBrainz for some time. A lot of work is going towards other areas of the project. But later in 2018, I expect more focus on the user-facing side of the project.</p>

<h2 id="my-statistic-and-google-bigquery">My statistic and Google BigQuery&nbsp;<a class="hanchor" href="#my-statistic-and-google-bigquery" aria-label="Anchor link for: My statistic and Google BigQuery">🔗</a></h2>
<p>My biggest blocker over the last month was <a href="https://cloud.google.com/bigquery/">Google BigQuery</a>. I wrote a statistic to <a href="https://github.com/metabrainz/listenbrainz-server/pull/318/commits/c1c08ce7f8d207591daeb288087872616d5063a4">calculate play counts</a> over a time period, but was asked to test my statistic. To test my statistic, I needed real data to work with.</p>
<p>Originally, I tried using the <a href="https://github.com/tgwizard/sls">Simple Last.fm Scrobbler</a> to submit listens to the local IP address for my development environment, but I wasn&rsquo;t able to get the app to reach my ListenBrainz server. To get the data, I had to set up Google BigQuery credentials so I could make queries against data on the production site, <a href="https://listenbrainz.org/">listenbrainz.org</a>.</p>
<p>I tried working through the <a href="https://cloud.google.com/bigquery/docs/">Google BigQuery documentation</a>. There&rsquo;s a lot of documentation for using BigQuery as a developer, but it was confusing where to find the information I needed to set it up in my development environment. I tried creating a new project in the Google Cloud Platform, but I was confused because it prompted me to upload my own data instead of accessing data already in BigQuery.</p>
<p>Too late, I realized I spent too much time on my own and not asking for help. I <a href="https://github.com/metabrainz/listenbrainz-server/pull/318">submitted a pull request</a> with the statistic I made and <a href="https://community.metabrainz.org/t/how-to-set-up-google-bigquery-in-a-listenbrainz-development-environment/347307">asked for help</a> in the MetaBrainz community. I also offered to write documentation for setting this up once I learn how to do it.</p>

<h2 id="reflecting-back">Reflecting back&nbsp;<a class="hanchor" href="#reflecting-back" aria-label="Anchor link for: Reflecting back">🔗</a></h2>
<p>I looked back on my <a href="https://jwfblog.wpenginepowered.com/2017/10/contributing-listenbrainz/">original objectives</a> for the independent study, and I was satisfied and dissatisfied.</p>

<h4 id="not-enough-programming">Not enough programming&nbsp;<a class="hanchor" href="#not-enough-programming" aria-label="Anchor link for: Not enough programming">🔗</a></h4>
<p>I wanted this independent study to enhance my programming knowledge. I especially wanted to focus on Python because I wanted to become more familiar with the language. However, I actually didn&rsquo;t do much programming during the independent study, to my own fault.</p>
<p>My biggest challenge was I bit off more than I could chew. I wanted to write code, and made a big goal before I knew the code base of the project. Even now, I still am not completely comfortable with the code yet. It&rsquo;s a big project with a lot of things going on. I was able to understand the things I did work on, but there&rsquo;s still a lot.</p>
<p>I realized that next time, I need to spend more time evaluating the code base of a project before writing out my milestones. I wish I set more realistic, smaller milestones for myself. My milestone of implementing basic reports was lofty given my existing programming knowledge.</p>

<h4 id="successes">Successes&nbsp;<a class="hanchor" href="#successes" aria-label="Anchor link for: Successes">🔗</a></h4>
<p>One of my other objectives was to write documentation for the project. I felt I succeeded in this milestone, and actually found it enjoyable and interesting to do! I helped separate out documentation from the README into the dedicated <a href="https://listenbrainz.readthedocs.io/en/latest/">ReadTheDocs site</a>. I wrote the <a href="https://listenbrainz.readthedocs.io/en/latest/dev/devel-env.html">development environment guide</a> and helped fix some build issues with the docs site. I also plan to write more for some of the other pain points I found, like Google BigQuery.</p>
<p>My last milestone was to create a use case for a data visualization course at RIT. While I didn&rsquo;t implement my basic reports, I did create the proposal and make an effort to write new statistics. There&rsquo;s a lot of potential now to work with the data in Google BigQuery and do front-end work with tools like <a href="https://d3js.org/">D3.js</a> and <a href="https://plot.ly/javascript/">Plotly.js</a>. I believe there&rsquo;s significant potential to use ListenBrainz as a hands-on project for students to explore data visualization with real data. I hope to support my independent study professor, Prof. Roberts, with questions and logistics of using it as a tool for learning in the future.</p>

<h4 id="unexpected-success">Unexpected success&nbsp;<a class="hanchor" href="#unexpected-success" aria-label="Anchor link for: Unexpected success">🔗</a></h4>
<p>I also think I had an unplanned success too. I immersed myself in the community for ListenBrainz too. Over the last few months, I realized that many of my strengths are in community management and tooling. During my time in the community, I did the following:</p>
<ul>
<li><a href="https://github.com/metabrainz/listenbrainz-server/pull/290">Fixed SELinux labels in Docker</a></li>
<li><a href="https://github.com/metabrainz/listenbrainz-server/pull/288">Contributed a pull request template</a></li>
<li><a href="https://github.com/metabrainz/listenbrainz-server/pull/287">Drafted contributing guidelines</a></li>
<li><a href="https://github.com/metabrainz/listenbrainz-server/pull/294">Fixed a PostgreSQL bug</a></li>
<li><a href="https://github.com/metabrainz/listenbrainz-server/pulls?utf8=%E2%9C%93&amp;q=is%3Apr&#43;author%3Ajflory7&#43;">And more…</a></li>
</ul>

<h2 id="to-the-future">To the future!&nbsp;<a class="hanchor" href="#to-the-future" aria-label="Anchor link for: To the future!">🔗</a></h2>
<p>This ends my independent study with ListenBrainz, but it doesn&rsquo;t end my time contributing! I chose ListenBrainz because it&rsquo;s a project I&rsquo;m passionate about. An independent study allowed me to justify more time on it than a side project in my free time. I&rsquo;m happy to have that opportunity, but I don&rsquo;t want to end here!</p>
<p>I want to follow through on the statistics because I&rsquo;m passionate about understanding music listening trends. I think there&rsquo;s a lot of power for psychological research through music data. To this point, I filed a ticket to request <a href="https://tickets.metabrainz.org/browse/LB-243">tagging listens with &ldquo;emotion&rdquo; words</a> that are synced back to <a href="https://musicbrainz.org/doc/MusicBrainz_Database">MusicBrainz entities</a>.</p>
<p>I won&rsquo;t have as much time to work on the project without the course credit, but I hope to stay involved for the future. I love the project and I love the community. I&rsquo;m thankful for the opportunity to work on this project as an independent study, and learn some things along the way.</p>]]></description></item><item><title>Election night hackathon supports civic engagement</title><link>https://jwheel.org/blog/2017/12/election-night-hackathon/</link><pubDate>Wed, 13 Dec 2017 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2017/12/election-night-hackathon/</guid><description><![CDATA[<p><a href="https://opensource.com/article/17/12/rit-election-night-hackathon"><em>This article was originally published on Opensource.com.</em></a></p>
<hr>
<p>On November 7, 2017, members of the RIT community came together for the annual Election Night Hackathon held in the Simone Center for Student Innovation. This year marked the seventh anniversary of a civic tradition with the FOSS@MAGIC community. As local and state election results come in across nine projectors, students and professors work together on civic-focused projects during the night. Dan Schneiderman, the FOSS@MAGIC Community Liaison, compiled lists of open APIs that let participants use public sets of data made available by governments at the federal, state, and local level.</p>
<p>The hackathon officially began at 5:00pm and went until 10:00pm. Plenty of pizza and drinks were provided to fuel participants during the evening.</p>

<h2 id="open-source-with-open-government">Open source with open government&nbsp;<a class="hanchor" href="#open-source-with-open-government" aria-label="Anchor link for: Open source with open government">🔗</a></h2>
<p>Each year, the hackathon welcomes students and faculty to analyze civic problems happening in the local community, state, or country, and then propose a project to address them. MAGIC Center faculty help students choose open source licenses to share their projects. Organizers encourage students to use a site like GitHub to publish and share their code.</p>
<p>Second Avenue Learning, an educational game company in Rochester, demonstrated their <a href="http://www.secondavenuelearning.com/products/voters-ed">Voter’s Ed app</a> that replays historic elections, keeps voters up-to-date on current ones, and lets them simulate their own using open data and HTML. It also allows users to examine key issues and hot topics related to national level events. The company, represented by the founder Victoria Van Voorhis and two employees (one an RIT alum) held a design discussion for new features to prototype with students and the community. Sean Sutton and Paul Ferber (RIT faculty) provided subject matter expertise to the application.</p>
<p>While people began their projects, coverage of the local and state elections were displayed across nine different projectors. As the night progressed, votes from local and state elections rolled in. Rochester coverage was enhanced, since Monroe County is one of three counties in New York that releases public data for election coverage. Some participants even used the local Henrietta data for their own projects.</p>

<h2 id="librecorps-internship">LibreCorps internship&nbsp;<a class="hanchor" href="#librecorps-internship" aria-label="Anchor link for: LibreCorps internship">🔗</a></h2>
<p>Pratik Shirish Kulkarni, a second-year computer science major from Mumbai, India, presented the current status of his FOSS@MAGIC LibreCorps internship. LibreCorps placed Pratik with UNICEF Innovation in Manhattan, where he worked on MagicBox, a set of big data APIs and technologies used to chart Zika outbreaks and connectivity across schools in Africa.</p>
<p>Pratik demoed some of the work, which he is continuing part-time on campus this semester, funded by UNICEF. Another internship to work on the project is currently posted in <a href="https://rit.joinhandshake.com/">Handshake</a>.</p>

<h2 id="where-can-i-vote">Where can I vote?&nbsp;<a class="hanchor" href="#where-can-i-vote" aria-label="Anchor link for: Where can I vote?">🔗</a></h2>
<p>
<figure>
  <img src="/blog/2017/11/election-night-hackathon-2017-demo-time.jpg" alt="Chris Bitler demonstrated his Where can I vote app at the end of the Election Night Hackathon" loading="lazy">
  <figcaption>Chris Bitler (<a href="https://github.com/Chris-Bitler" class="bare">https://github.com/Chris-Bitler</a>) demonstrated his <em>Where can I vote?</em> (<a href="https://github.com/Chris-Bitler/Where-Can-I-Vote" class="bare">https://github.com/Chris-Bitler/Where-Can-I-Vote</a>) app at the end of the night</figcaption>
</figure>
</p>
<p>Third-year student <a href="https://github.com/Chris-Bitler">Chris Bitler</a> created a tool to make it easier to get to the polling booth. His web application, &ldquo;<em>Where can I vote?</em>&rdquo;, takes a specific election and your address, and gives you directions from your address to the closest polling location. It uses the <a href="https://developers.google.com/civic-information/">Google Civic Information API</a> to find election data and calculate a specific address&rsquo;s voting district and candidates.</p>
<p>Chris was exploring for project ideas in the beginning of the hackathon, but quickly found the civic data API returned interesting data about polling locations. &ldquo;After seeing that, I gave some thought to how some people don&rsquo;t know their polling location and how a simple website could be useful for that,&rdquo; Chris said. His web application was motivated by simplicity, so anyone could navigate without being lost in information.</p>
<p>In the spirit of open source, Chris <a href="https://github.com/Chris-Bitler/Where-Can-I-Vote">open sourced his project</a> on GitHub under the <a href="https://github.com/Chris-Bitler/Where-Can-I-Vote/blob/master/LICENSE">MIT License</a>.</p>

<h2 id="linkybook-local-election-data-in-real-time">Linkybook: Local election data in real-time&nbsp;<a class="hanchor" href="#linkybook-local-election-data-in-real-time" aria-label="Anchor link for: Linkybook: Local election data in real-time">🔗</a></h2>
<p>Another project during the night focused on tracking local election data in Chautauqua, Monroe, and Suffolk Counties. RIT and FOSS@MAGIC alumni Nathaniel Case continued work on his <a href="https://github.com/Chris-Bitler/Where-Can-I-Vote">monroe-elections</a> application during the night. The site shows data for all races in the three counties.</p>
<p>During the night, his web application updated in real-time as the results from the local elections began to appear. Election results for the races is quick to understand and read. Additionally, referendum results and other non-partisan elections are available.</p>
<p>Nathaniel <a href="https://github.com/Qalthos/monroe-elections">open sourced his project</a> on GitHub under both the <a href="https://github.com/Qalthos/monroe-elections/blob/master/DBAD%20LICENSE">DBAD</a> and <a href="https://github.com/Qalthos/monroe-elections/blob/master/GPL%20LICENSE">GPLv3</a> licenses.</p>

<h2 id="join-us-next-time">Join us next time!&nbsp;<a class="hanchor" href="#join-us-next-time" aria-label="Anchor link for: Join us next time!">🔗</a></h2>
<p>The night ended after a quick round of project demos and finishing up project work. FOSS@MAGIC has more events planned in the near future. On <a href="https://www.eventbrite.com/e/fossmagic-talks-open-source-facebook-with-christine-abernathy-tickets-38955037566">November 15th</a>, Christine Abernathy from Facebook&rsquo;s Open Source Program talks about how Facebook approaches open source and how they&rsquo;ve solved engineering problems with it.</p>
<p>You can learn more about the FOSS@MAGIC initiative <a href="http://foss.rit.edu">on their website</a>. Participation on the <a href="https://lists.fedoraproject.org/admin/lists/fossrit.lists.fedorahosted.org/">mailing list</a> is welcome.</p>]]></description></item><item><title>ListenBrainz community gardening and user statistics</title><link>https://jwheel.org/blog/2017/11/listenbrainz-community-user-statistics/</link><pubDate>Mon, 13 Nov 2017 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2017/11/listenbrainz-community-user-statistics/</guid><description><![CDATA[<p><em>This post is part of a series of posts where I contribute to the ListenBrainz project for my independent study at the Rochester Institute of Technology in the fall 2017 semester. For more posts, find them in <a href="https://jwfblog.wpenginepowered.com/tag/rit-2171/">this tag</a>.</em></p>
<hr>
<p>My progress with ListenBrainz slowed, but I am resuming the pace of contributing and advancing on my independent study timeline. This past week, I finished out assigned tasks to discuss contributor-related documentation, like a Code of Conduct, contributor guidelines, and a pull request template. I began research on user statistics and found some already created. I wrote one of my own, but need to learn more about Google BigQuery to advance further.</p>

<h2 id="paving-the-contributor-pathway">Paving the contributor pathway&nbsp;<a class="hanchor" href="#paving-the-contributor-pathway" aria-label="Anchor link for: Paving the contributor pathway">🔗</a></h2>
<p>
<figure>
  <img src="/blog/2017/11/Screenshot-from-2017-11-13-02-05-12.png" alt="Making it easier for people to contribute user statistics to ListenBrainz" loading="lazy">
  <figcaption>Making it easier for people to contribute to ListenBrainz with helpful contibuting guidelines</figcaption>
</figure>
</p>
<p>Earlier, I identified weaknesses for the ListenBrainz contributor pathway and found ways we could improve the pathway. This started with the development environment documentation. Now, I helped draft first revisions of our <a href="https://github.com/metabrainz/listenbrainz-server/pull/287">contributor guidelines</a>, <a href="https://github.com/metabrainz/listenbrainz-server/pull/286">Code of Conduct reference</a>, and <a href="https://github.com/metabrainz/listenbrainz-server/pull/288">pull request templates</a>. Together, these three documents have two goals.</p>
<ol>
<li><strong>Make it easier</strong> to contribute to ListenBrainz</li>
<li>Have a better experience and <strong>have fun</strong> contributing!</li>
</ol>
<p>Adding these documents addresses these goals. Additionally, the <a href="https://github.com/metabrainz/listenbrainz-server/community">GitHub community profile</a> also highlights these deliverables as ways to meet these goals. After getting feedback and seeing what others think, we make more revisions later (with some trial runs).</p>

<h2 id="back-to-selinux-context-flags">Back to SELinux context flags&nbsp;<a class="hanchor" href="#back-to-selinux-context-flags" aria-label="Anchor link for: Back to SELinux context flags">🔗</a></h2>
<p>Recently, I set my desktop back up and installed Docker for the first time on this machine; however, the development environment still failed to start. When I ran the script, it would eventually error out because of a permission denial. The web server image for ListenBrainz was failing.</p>
<p>After debugging, I noticed that I missed the SELinux volume tags for the ListenBrainz web server images in my original pull request, <a href="https://github.com/metabrainz/listenbrainz-server/pull/257">#257</a>. When I created the pull request, I might have had cached data that let my laptop run the development environment without a problem. In either case, it was an easy fix and I knew what the issue was when it happened. Therefore, I submitted a new fix in <a href="https://github.com/metabrainz/listenbrainz-server/pull/290">#290</a>.</p>

<h2 id="writing-new-user-statistics">Writing new user statistics&nbsp;<a class="hanchor" href="#writing-new-user-statistics" aria-label="Anchor link for: Writing new user statistics">🔗</a></h2>
<p>The most interesting part of my independent study is working with the music data to build and generate interesting statistics. I finally began exploring the <a href="https://github.com/metabrainz/listenbrainz-server/tree/master/listenbrainz/stats">existing statistics</a> in ListenBrainz. The statistic queries use BigQuery standard SQL. BigQuery helps rapidly scan and scale data queries to help with performance (I have a lot to learn about BigQuery).</p>

<h4 id="two-types-of-statistics">Two types of statistics&nbsp;<a class="hanchor" href="#two-types-of-statistics" aria-label="Anchor link for: Two types of statistics">🔗</a></h4>
<p>Additionally, ListenBrainz generates <strong>two types</strong> of statistics:</p>
<ol>
<li>Site-wide statistics</li>
<li>User statistics</li>
</ol>
<p>Site-wide statistics are metrics non-specific to a single user. There is only <a href="https://github.com/metabrainz/listenbrainz-server/blob/master/listenbrainz/stats/sitewide.py">one site-wide query</a> now. It counts how many artists were ever submitted to this ListenBrainz instance and returns an integer. There&rsquo;s room for expansion in site-wide statistics.</p>
<p>On the other hand, user statistics are metrics specific to a single user. There&rsquo;s a <a href="https://github.com/metabrainz/listenbrainz-server/blob/master/listenbrainz/stats/user.py">fair number already</a>, like the top artists and songs in a time period and the number of artists you&rsquo;ve listened to. These are a little more complete and offer more expansion for doing cool front-end work with something like <a href="https://d3js.org/">D3.js</a>.</p>

<h4 id="writing-user-statistics">Writing user statistics&nbsp;<a class="hanchor" href="#writing-user-statistics" aria-label="Anchor link for: Writing user statistics">🔗</a></h4>
<p>Of course, I had to try writing my own. One helpful query I thought of was getting a count of the songs you listened to over a time period (e.g. &ldquo;you listened to 500 songs this week!&rdquo;). I haven&rsquo;t tested it yet, but I have this in a local branch and hope to test it with real data soon.</p>
<pre tabindex="0"><code>def get_play_count(musicbrainz_id, time_interval=None): 
 
 filter_clause = &#34;&#34; 
 if time_interval: 
     filter_clause = &#34;AND listened_at &gt;=
     TIMESTAMP_SUB(CURRENT_TIME(), 
     INTERVAL {})&#34;.format(time_interval) 
 
 query = &#34;&#34;&#34;SELECT COUNT(release_msid) as listen_count 
            FROM {dataset_id}.{table_id} 
            WHERE user_name = @musicbrainz_id 
            {time_filter_clause} 
            LIMIT {limit} 
         &#34;&#34;&#34;.format( 
                 dataset_id=config.BIGQUERY_DATASET_ID, 
                 table_id=config.BIGQUERY_TABLE_ID, 
                 time_filter_clause=filter_clause, 
                 limit=config.STATS_ENTITY_LIMIT, 
            ) 
 
 parameters = [ 
     { 
         &#39;type&#39;: &#39;STRING&#39;, 
         &#39;name&#39;: &#39;musicbrainz_id&#39;, 
         &#39;value&#39;: musicbrainz_id 
     } 
 ] 
 
 return stats.run_query(query, parameters)
</code></pre>
<h2 id="researching-google-bigquery">Researching Google BigQuery&nbsp;<a class="hanchor" href="#researching-google-bigquery" aria-label="Anchor link for: Researching Google BigQuery">🔗</a></h2>
<p>My next steps for the independent study are researching <a href="https://cloud.google.com/bigquery/docs/">Google BigQuery</a>. After going through the existing statistics and understanding how ListenBrainz generates them, an understanding of Google BigQuery is essential to writing effective queries. When I become more comfortable with the tooling and how it works, I want to map out a plan of statistics to generate and measure.</p>
<p>Until then, the hacking continues! As always, keep the FOSS flag high…</p>]]></description></item><item><title>How a smart phone makes time irrelevant</title><link>https://jwheel.org/blog/2017/11/how-smart-phone-time-irrelevant/</link><pubDate>Sat, 11 Nov 2017 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2017/11/how-smart-phone-time-irrelevant/</guid><description><![CDATA[<p>It’s 2pm in the afternoon and the weather is becoming cold after so long. On this brisk November day, an old professor steps out in the corner lobby of the college. The golden rays of the sun cast a warm, radiant glow, leaving a bright, inviting air. This small moment of time is meaningless in an infinite universe of possible moments.</p>
<p>Yet, he stands and watches for perhaps five or ten minutes, before taking his leave. During his observation, he was never interrupted by a digital device. Only the ever-present world filled that moment for him. The moment, like many others, is preserved into the mind as a scientist meticulously stores his laboratory materials.</p>

<h2 id="smart-phone-world">Smart phone world&nbsp;<a class="hanchor" href="#smart-phone-world" aria-label="Anchor link for: Smart phone world">🔗</a></h2>
<p>The world of digital devices alters modern experience of reality. Time no longer asserts priority or influence over a moment. In a moment, a smart phone takes a picture of something nice, and preserves it in electrons. At any moment in the future, you spend that moment reflecting back on the captured moment. It will never leave you, as you preserved a digital replica.</p>
<p>But the missed point is the relationship between analog and digital. Analog is the pure format – there is no conversion. All digitized items suffer from quality loss when converted from analog to digital, and back to analog. Sound, colors, brightness, warmth… all factors that lack in a digital form.</p>
<p>Humans may invent experiences for ourselves to simulate and re-live a moment or some time, but it will only ever be a simulation. Without the ability to access time as a dimension, there is no way anything will ever be but a simulation created or influenced by modern-day humans.</p>

<h2 id="lossy-compression-of-memory">Lossy compression of memory&nbsp;<a class="hanchor" href="#lossy-compression-of-memory" aria-label="Anchor link for: Lossy compression of memory">🔗</a></h2>
<p>So the smart phone age of the information era deteriorates time&rsquo;s hold on capturing your attention. Just like a digital song starts analog, goes digital, and comes out analog again, we down-scale our memories on the conversion scale. It&rsquo;s a lossy compression. We hold a moment in our hands, measured by pixels, over a connection and passion that comes from remembering the full power of a moment.</p>
<p>But the solution isn&rsquo;t to abandon the digital world and cast the device aside. The solution is to promote and encourage better balance between the digital and analog worlds. Compact lenses capture a moment, but the act of capturing doesn&rsquo;t have to end the moment. If your digital world is ever gnawing at your back, find time to pull out into the analog world a bit.</p>
<hr>
<p><em>Featured image by Justin Wheeler. Uses <a href="https://thenounproject.com/term/content/13699/">content</a> by <a href="https://thenounproject.com/icons.design">Iris Li</a> from <a href="https://thenounproject.com/">the Noun Project</a>.</em></p>]]></description></item><item><title>How I created my first RPM package in Fedora</title><link>https://jwheel.org/blog/2017/11/first-rpm-package-fedora/</link><pubDate>Tue, 07 Nov 2017 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2017/11/first-rpm-package-fedora/</guid><description><![CDATA[<p>Over the summer, I migrated my desktop environment to <a href="https://i3wm.org/">i3</a>, a tiling window manager. Switching to i3 was a challenge at first, since I had to replace many things that GNOME handled for me. One of these things was changing screen brightness. <code>xbacklight</code>, the standard way of changing backlight brightness on laptops, doesn&rsquo;t work on my hardware.</p>
<p>Recently, I discovered <a href="https://github.com/multiplexd/brightlight">brightlight</a>, a tool that changes backlight brightness. I decided to try it, and it worked with root privileges. However, I found there was no RPM package in Fedora for brightlight. I decided this was the right time to try creating a package in Fedora and learn how to create an RPM.</p>
<p>In this article, I&rsquo;ll cover and share how I…</p>
<ul>
<li>Created the RPM SPEC file</li>
<li>Built the package in Koji and Copr</li>
<li>Worked through an issue with debug package</li>
<li>Submitted the package to Fedora package collection</li>
</ul>

<h2 id="pre-requisites">Pre-requisites&nbsp;<a class="hanchor" href="#pre-requisites" aria-label="Anchor link for: Pre-requisites">🔗</a></h2>
<p>On Fedora, I installed these packages for all steps of the package building process.</p>
<pre tabindex="0"><code>sudo dnf install fedora-packager fedpkg fedrepo_req copr-cli
</code></pre>
<h2 id="creating-the-rpm-spec-file">Creating the RPM SPEC file&nbsp;<a class="hanchor" href="#creating-the-rpm-spec-file" aria-label="Anchor link for: Creating the RPM SPEC file">🔗</a></h2>
<p>The first step to create a RPM is to create the SPEC file. These are the specifications, or instructions, that tell RPM how to build the package. This is how you tell RPM to create a binary file from the package&rsquo;s source code. Creating the SPEC file is likely the hardest part of the packaging process and its difficulty depends on the project.</p>
<p>Fortunately for me, <a href="https://github.com/multiplexd/brightlight">brightlight</a> is a simple application written in C. The maintainer made it easy to create a binary application with a Makefile. Building it was a matter of simply running <code>make</code> in the repo. So now I had a simple project to learn RPM packaging.</p>

<h4 id="finding-documentation">Finding documentation&nbsp;<a class="hanchor" href="#finding-documentation" aria-label="Anchor link for: Finding documentation">🔗</a></h4>
<p>Googling &ldquo;how to create an RPM package&rdquo; yields many results. I started with <a href="https://www.ibm.com/developerworks/library/l-rpm1/index.html">IBM&rsquo;s documentation</a>. However, I found it confusing and difficult to understand (although quite detailed; it might be more useful for a complicated app). I also found the <a href="https://fedoraproject.org/wiki/How_to_create_an_RPM_package">package creation instructions</a> on the Fedora wiki. The documentation here was good at explaining the composition and process, but I was still confused on how to begin.</p>
<p>Finally, I found the <a href="https://rpm-packaging-guide.github.io/#packaging-software">RPM Packaging Guidelines</a>, written by the amazing <a href="https://github.com/maxamillion">Adam Miller</a>. These instructions were helpful and included three excellent examples for Bash, C, and Python applications. This guide helped me better understand how to compose a RPM SPEC, and more importantly, how all the pieces fit together.</p>
<p>After this, I was able to write my <a href="https://src.fedoraproject.org/rpms/brightlight/blob/master/f/brightlight.spec">first SPEC file</a> for <code>brightlight</code>. Since it is so simple, the SPEC file is short and easy to understand. Once I had my SPEC file, I linted the file for errors. After cleaning a few mistakes, I created the source RPM (SRPM) and the binary RPM, then linted each for errors.</p>
<pre tabindex="0"><code>rpmlint SPECS/brightlight.spec
rpmbuild -bs SPECS/brightlight.spec
rpmlint SRPMS/brightlight-5-1.fc26.src.rpm
rpmbuild -bb SRPMS/brightlight-5-1.fc26.src.rpm
rpmlint RPMS/x86_64/brightlight-5-1.fc26.x86_64.rpm
</code></pre><p>Now, I had a valid RPM to send to the Fedora repositories.</p>

<h2 id="building-in-copr-and-koji">Building in Copr and Koji&nbsp;<a class="hanchor" href="#building-in-copr-and-koji" aria-label="Anchor link for: Building in Copr and Koji">🔗</a></h2>
<p>Next, I read the <a href="https://fedoraproject.org/wiki/Join_the_package_collection_maintainers">guidelines</a> to becoming a Fedora packager. Before submitting anything, they encouraged packagers to test their packages by hosting the project in a <a href="https://copr.fedoraproject.org/">Copr</a> repo and building in <a href="https://koji.fedoraproject.org/koji/">Koji</a>.</p>

<h4 id="using-copr">Using Copr&nbsp;<a class="hanchor" href="#using-copr" aria-label="Anchor link for: Using Copr">🔗</a></h4>
<p>First, I created a <a href="https://copr.fedorainfracloud.org/coprs/jflory7/brightlight/">Copr repository</a> for <code>brightlight</code>. <a href="https://developer.fedoraproject.org/deployment/copr/about.html">Copr</a> is a service in Fedora&rsquo;s infrastructure that builds your package and sets up a custom repo for whatever version of Fedora or EPEL that you choose. It&rsquo;s handy to get your RPM hosted quickly and to share it with others for testing. You don&rsquo;t need special approval to host a Copr.</p>
<p>I created my Copr project from the web interface, but you can also use the <code>copr-cli</code> tool. There is an <a href="https://developer.fedoraproject.org/deployment/copr/copr-cli.html">excellent guide</a> in the Fedora Developer portal. After I created my repo on the website, I built my package with this command.</p>
<pre tabindex="0"><code>copr-cli build brightlight SRPMS/brightlight.5-1.fc26.src.rpm
</code></pre><p>My packages successfully built for Copr and I was able to install it on my Fedora system easily.</p>

<h4 id="using-koji">Using Koji&nbsp;<a class="hanchor" href="#using-koji" aria-label="Anchor link for: Using Koji">🔗</a></h4>
<p>Anyone can use <a href="https://koji.fedoraproject.org/koji/">Koji</a> to test their package on multiple architectures and versions of Fedora or CentOS / RHEL. To test on Koji, you must have a source RPM. I wanted to package <code>brightlight</code> on all supported versions of Fedora, so I ran these commands.</p>
<pre tabindex="0"><code>koji build --scratch f25 SRPMS/brightlight-5-1.fc26.src.rpm
koji build --scratch f26 SRPMS/brightlight-5-1.fc26.src.rpm
koji build --scratch f27 SRPMS/brightlight-5-1.fc26.src.rpm
</code></pre><p>It took some time, but Koji built all the packages. Everything was fine for Fedora 25 and 26, but Fedora 27 failed. Koji scratch builds keep me on the right track and make sure my packages build successfully.</p>

<h2 id="problem-fedora-27-builds-failing">Problem: Fedora 27 builds failing!&nbsp;<a class="hanchor" href="#problem-fedora-27-builds-failing" aria-label="Anchor link for: Problem: Fedora 27 builds failing!">🔗</a></h2>
<p>Now I know that my Fedora 27 package was failing to build on Koji. But why? I discovered two relevant changes for Fedora 27.</p>
<ul>
<li><a href="https://fedoraproject.org/wiki/Changes/SubpackageAndSourceDebuginfo">Subpackage and Source Debuginfo</a></li>
<li><a href="https://fedoraproject.org/wiki/Changes/RPM-4.14">RPM 4.14</a> (specifically, the debuginfo package rewrite)</li>
</ul>
<p>These changes mean that RPM packages must build with a <code>debuginfo</code> package. This is helpful for troubleshooting or debugging an application. In my case, this wasn&rsquo;t critical or too necessary, but I needed to build one.</p>
<p>Thanks to Igor Gnatenko, he helped me understand what I needed to add to my package SPEC for it to build on Fedora 27. Before the <code>%make_build</code> macro, I added these lines.</p>
<pre tabindex="0"><code>export CFLAGS=&#34;%{optflags}&#34;
export LDFLAGS=&#34;%{__global_ldflags}&#34;
</code></pre><p>I built a new SRPM and submitted it to Koji to build on Fedora 27. And success! It built successfully.</p>

<h2 id="submitting-the-package">Submitting the package&nbsp;<a class="hanchor" href="#submitting-the-package" aria-label="Anchor link for: Submitting the package">🔗</a></h2>
<p>Now that I verified my package successfully built on Fedora 25 to 27, it&rsquo;s time to begin the packaging process for Fedora. The first step to submitting a package is to create a new bug in the Red Hat Bugzilla to ask for a package review. I <a href="https://bugzilla.redhat.com/show_bug.cgi?id=1505026">created a ticket</a> for <code>brightlight</code>. Since this was my first package, I made an explicit note that this was my first package and I was seeking a sponsor. In the ticket, I linked to the SPEC and SRPM files in my git repository.</p>

<h4 id="getting-into-dist-git">Getting into dist-git&nbsp;<a class="hanchor" href="#getting-into-dist-git" aria-label="Anchor link for: Getting into dist-git">🔗</a></h4>
<p><em>Edit, 2022 Feb. 14th</em>: It was pointed out <a href="https://twitter.com/Det_Conan_Kudo/status/1491931714179973127">on Twitter</a> that the <code>fedrepo-req</code> tool is no longer used. See the documentation linked throughout this blog post for more guidance on best practices for today.</p>
<p><a href="https://fedoraproject.org/wiki/User:Ignatenkobrain">Igor Gnatenko</a> sponsored me into the Fedora Packagers group and left feedback on my package. I learned of some other things specific for packaging C applications. After he sponsored me, I was able to ask for a repo in <a href="https://src.fedoraproject.org/">dist-git</a>, Fedora&rsquo;s collection of RPM package repositories that host SPEC files for all of Fedora.</p>
<p>A handy Python tool helps make this part easy. <a href="https://pagure.io/fedrepo_req"><code>fedrepo-req</code></a> is a tool that creates a request for a new dist-git repository. I submitted my request with this command.</p>
<pre tabindex="0"><code>fedrepo-req brightlight \
    --ticket 1505026 \
    --description &#34;CLI tool to change screen back light brightness&#34; \
    --upstreamurl https://github.com/multiplexd/brightlight
</code></pre><p>This created a <a href="https://pagure.io/releng/fedora-scm-requests/issue/2489">new ticket</a> for me in the <a href="https://pagure.io/releng/fedora-scm-requests">fedora-scm-requests</a> repo. The next day, an admin <a href="https://src.fedoraproject.org/rpms/brightlight">created the repository</a> for me. Now, I was in business!</p>
<p>
<figure>
  <img src="/blog/2017/11/Screenshot-from-2017-11-05-19-58-47.png" alt="My first RPM in Fedora dist-git – woohoo!" loading="lazy">
  <figcaption>My first RPM (<a href="https://src.fedoraproject.org/rpms/brightlight" class="bare">https://src.fedoraproject.org/rpms/brightlight</a>) in Fedora dist-git – woohoo!</figcaption>
</figure>
</p>

<h4 id="working-with-dist-git">Working with dist-git&nbsp;<a class="hanchor" href="#working-with-dist-git" aria-label="Anchor link for: Working with dist-git">🔗</a></h4>
<p>Next, <code>fedpkg</code> is the tool used for interacting with dist-git repositories. I changed directories into my git working directory and ran this command.</p>
<p><code>fedpkg clone brightlight</code></p>
<p><code>fedpkg</code> then clones my package&rsquo;s repo from dist-git. For the <strong>first branch only</strong>, you need to import the SRPM.</p>
<pre tabindex="0"><code>fedpkg import SRPMS/brightlight-5-1.fc26.src.rpm
</code></pre><p><code>fedpkg</code> imports your package&rsquo;s SRPM into the repo and sets up the sources for you. It&rsquo;s important to use <code>fedpkg</code> for this because it helps provision the repo in a Fedora-friendly way (as compared to adding the files manually yourself). Once you import the SRPM, push the changes to the dist-git repo.</p>
<pre tabindex="0"><code>git commit -m &#34;Initial import (#1505026).&#34;
git push
</code></pre>
<h4 id="building-the-package">Building the package&nbsp;<a class="hanchor" href="#building-the-package" aria-label="Anchor link for: Building the package">🔗</a></h4>
<p>Once you push the first import to your dist-git repo, you&rsquo;re ready to do a <em>real</em> Koji build of your project. To build your project, run this command.</p>
<pre tabindex="0"><code>fedpkg build
</code></pre><p>This builds your package in Koji for Rawhide, the unversioned branch of Fedora. You must build successfully for Rawhide before you can build for other branches. IF everything builds successfully, you can now ask for other branches for your project.</p>
<pre tabindex="0"><code>fedrepo-req brightlight f27 -t 1505026
fedrepo-req brightlight f26 -t 1505026
fedrepo-req brightlight f25 -t 1505026
</code></pre>
<h4 id="note-about-building-other-branches">Note about building other branches&nbsp;<a class="hanchor" href="#note-about-building-other-branches" aria-label="Anchor link for: Note about building other branches">🔗</a></h4>
<p>Once you import the SRPM initially, remember to merge your master branch to other branches, if you choose to create them. For example, if you later request a branch for Fedora 27, you would want to use these commands.</p>
<pre tabindex="0"><code>fedpkg switch-branch f27
git merge master
git push
fedpkg build
</code></pre>
<h4 id="submitting-update-to-bodhi">Submitting update to Bodhi&nbsp;<a class="hanchor" href="#submitting-update-to-bodhi" aria-label="Anchor link for: Submitting update to Bodhi">🔗</a></h4>
<p>The last step of the process is to submit your new package as an update to Bodhi. When you first submit your package as an update, it goes to the testing repositories. Anyone can test your package and add karma to the update. If your update receives +3 votes (or as Bodhi calls it, karma), your package automatically pushes to the stable repositories. Otherwise, it pushes after a week in the testing repositories.</p>
<p>To submit your update to Bodhi, you only need one command.</p>
<pre tabindex="0"><code>fedpkg update
</code></pre><p>This opens a Vim window with different configuration options for your package. Usually, you only need to specify the type (e.g. <code>newpackage</code>) and the ticket ID number for your package review. For a more in-depth explanation, there is an <a href="https://fedoraproject.org/wiki/Package_update_HOWTO">update guide</a> on the Fedora wiki.</p>
<p>After saving and exiting the file, <code>fedpkg</code> submits your package as an update to Bodhi and eventually synchronizes to the Fedora testing repositories. I was able to install my package with this command.</p>
<pre tabindex="0"><code>sudo dnf install brightlight -y --enablerepo=updates-testing --refresh
</code></pre>
<h2 id="were-stable">We&rsquo;re stable!&nbsp;<a class="hanchor" href="#were-stable" aria-label="Anchor link for: We&rsquo;re stable!">🔗</a></h2>
<p>My package was recently submitted to <a href="https://bodhi.fedoraproject.org/updates/brightlight-5-1.fc26">Fedora 26 stable repositories</a> and will soon enter <a href="https://bodhi.fedoraproject.org/updates/FEDORA-2017-8071ee299f">Fedora 25</a> and <a href="https://bodhi.fedoraproject.org/updates/FEDORA-2017-f3f085b86e">Fedora 27</a> stable repositories. Thanks for everyone who helped me with my first package. I look forward to more opportunities to add more packages to the distribution.</p>]]></description></item><item><title>Exploring Google Code-In, ListenBrainz easyfix bugs, D3.js</title><link>https://jwheel.org/blog/2017/10/google-code-in-listenbrainz-d3-js/</link><pubDate>Sat, 21 Oct 2017 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2017/10/google-code-in-listenbrainz-d3-js/</guid><description><![CDATA[<p><em>This post is part of a series of posts where I contribute to the ListenBrainz project for my independent study at the Rochester Institute of Technology in the fall 2017 semester. For more posts, find them in <a href="https://jwfblog.wpenginepowered.com/tag/rit-2171/">this tag</a>.</em></p>
<hr>
<p>Last week moved quickly for me in ListenBrainz. I submitted multiple pull requests and participated in the weekly developer&rsquo;s meeting on Monday. I was also invited to take part as a mentor for ListenBrainz for the upcoming round of Google Code-In! In addition to my changes and new role as a mentor, I&rsquo;m researching libraries like D3.js to help build visualizations for music data.  Suddenly, everything started moving fast!</p>

<h2 id="last-week-recap">Last week: Recap&nbsp;<a class="hanchor" href="#last-week-recap" aria-label="Anchor link for: Last week: Recap">🔗</a></h2>
<p>The ListenBrainz team accepted my <a href="https://github.com/metabrainz/listenbrainz-server/pull/257">development environment improvements</a> and <a href="https://github.com/metabrainz/listenbrainz-server/pull/259">documentation</a>. This gave me an opportunity to better explore project documentation tools. I experimented with <a href="http://www.sphinx-doc.org/en/stable/">Sphinx</a> and <a href="https://readthedocs.org/">Read the Docs</a>. Sphinx introduced me to <a href="http://docutils.sourceforge.net/rst.html">reStructuredText</a> for documentation formats. I&rsquo;ve avoided it in favor of Markdown for a long time, but I see where reStructuredText is stronger for advanced documentation.</p>
<p>Since ListenBrainz is a new project, I plan to contribute documentation for any of my work and improve documentation for pre-existing work. One of the goals for this independent study is to make ListenBrainz a viable candidate for a future data analysis course. To make it easy to use and understand, ListenBrainz needs excellent documentation. Since one of my strengths is technical writing, I plan to contribute more documentation this semester.</p>
<p>You can see some of the <a href="https://listenbrainz.readthedocs.io/en/master/">new documentation</a> already!</p>

<h2 id="google-code-in-mentor">Google Code-In mentor&nbsp;<a class="hanchor" href="#google-code-in-mentor" aria-label="Anchor link for: Google Code-In mentor">🔗</a></h2>
<p>The MetaBrainz community manager, <a href="https://musicbrainz.org/user/Freso">Freso Olesen</a>, approached me to mentor for Google Code-In. <a href="https://codein.withgoogle.com/">Google Code-In</a> is an opportunity for teenagers to meaningfully contribute to open source projects. Google describes Google Code-In as…</p>
<blockquote>
<p>Pre-university students ages 13 to 17 are invited to take part in Google Code-in: Our global, online contest introducing teenagers to the world of open source development. With a wide variety of bite-sized tasks, it’s easy for beginners to jump in and get started no matter what skills they have.</p>
<p>Mentors from our participating organizations lend a helping hand as participants learn what it’s like to work on an open source project. Participants get to work on real software and win prizes from t-shirts to a trip to Google HQ!</p>
</blockquote>
<p>MetaBrainz is a participating organization of Google Code-In this cycle. Because of my work with ListenBrainz, I will contribute a few hours a week to help mentor participating students with ListenBrainz. Beginner problems should be easy to help with since I&rsquo;m still beginning too, and as I spend more time with ListenBrainz, I can help with harder problems.</p>
<p>I&rsquo;m excited to give back to one of my favorite open source projects in this way! I&rsquo;m grateful to have this chance to help out during Google Code-In.</p>

<h2 id="choosing-easyfix-bugs">Choosing easyfix bugs&nbsp;<a class="hanchor" href="#choosing-easyfix-bugs" aria-label="Anchor link for: Choosing easyfix bugs">🔗</a></h2>
<p>After I figured out the development environment issues, I went through <a href="https://tickets.metabrainz.org/projects/LB/issues/">open tickets</a> filed against ListenBrainz to find some to work on. I made a preliminary pass through all open tickets and left some comments for more information, when needed. The tickets I highlighted to look into next were</p>
<ul>
<li><a href="https://tickets.metabrainz.org/browse/LB-85"><strong>LB-85</strong></a>: Username in the profile URL should be case insensitive</li>
<li><a href="https://tickets.metabrainz.org/browse/LB-124"><strong>LB-124</strong></a>: Install messybrainz as a a python library from requirements</li>
<li><a href="https://tickets.metabrainz.org/browse/LB-176"><strong>LB-176</strong></a>: Add stats module and begin calculating some user stats from BigQuery</li>
<li><strong><a href="https://tickets.metabrainz.org/browse/LB-206">LB-206</a></strong>: &ldquo;playing_now&rdquo; submissions not showing on profile</li>
<li><a href="https://tickets.metabrainz.org/browse/LB-212"><strong>LB-212</strong></a>: Show the MetaBrainz logo on the listenbrainz footer.</li>
</ul>
<p>Of these five, LB-124 and LB-212 are already closed. While drafting this article, I completed LB-124 in <a href="https://github.com/metabrainz/listenbrainz-server/pull/266">PR #266</a>. This was part of a test to get the documentation building again because of odd import errors. Later, a new student also learning the project for the first time asked to work on LB-212. Since it was a good first task to explore the project code, I passed the ticket to him.</p>
<p>I want to do one more &ldquo;easyfix&rdquo; bug before going into the main part of my independent study timeline. I don&rsquo;t yet feel comfortable with the code and one more bug solved will help. After this, I plan to pursue the heavier lifting of the independent study to explore data operations and queries to make.</p>

<h2 id="researching-d3js">Researching D3.js&nbsp;<a class="hanchor" href="#researching-d3js" aria-label="Anchor link for: Researching D3.js">🔗</a></h2>
<p>Prof. Roberts introduced <a href="https://d3js.org/">D3.js</a> as a library to build interactive, dynamic charts and visual representations of data. I haven&rsquo;t yet looked into much front-end work, but this was a cool project that I wanted to highlight in my weekly report. This feels like it could be a powerful match for ListenBrainz, especially since the data has high detail.</p>

<h2 id="upcoming-activity">Upcoming activity&nbsp;<a class="hanchor" href="#upcoming-activity" aria-label="Anchor link for: Upcoming activity">🔗</a></h2>
<p>This next week, I won&rsquo;t have as much time to contribute to ListenBrainz. On October 21, I&rsquo;m traveling to Raleigh, NC for <a href="https://allthingsopen.org/">All Things Open</a>. On October 24, I <a href="https://allthingsopen.org/speakers/justin-w-flory/">present my talk</a>, &ldquo;<em>What open source and J.K. Rowling have in common</em>&rdquo;. Since I&rsquo;ll be out of Rochester and missing other classwork, I expect less time on my ListenBrainz work.</p>
<p>This next week will be slower than the last two weeks. Hopefully I&rsquo;ll learn something at the conference too to bring back for ListenBrainz.</p>
<p>Until then… keep the FOSS flag high.</p>]]></description></item><item><title>Resigning from Fedora Council for Fedora 27</title><link>https://jwheel.org/blog/2017/10/resigning-fedora-council/</link><pubDate>Thu, 19 Oct 2017 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2017/10/resigning-fedora-council/</guid><description><![CDATA[<p>Since I became a Fedora contributor in August 2015, I&rsquo;ve spent a lot of time in the community. One of the great things about a big community like Fedora is that there are several different things to try out. I&rsquo;ve always tried to do the most help in Fedora with my contributions. I prefer to make long-term, in-depth contributions than short-term, &ldquo;quick fix&rdquo;-style work. However, like many others, Fedora is a project I contribute to in my free time. Over the last month, I&rsquo;ve come to a difficult realization.</p>
<p>After deep consideration, I am resigning from the Fedora Council effective at the end of the Fedora 26 release cycle.</p>

<h2 id="why-im-stepping-back">Why I&rsquo;m stepping back&nbsp;<a class="hanchor" href="#why-im-stepping-back" aria-label="Anchor link for: Why I&rsquo;m stepping back">🔗</a></h2>
<p>When I decided to run for Fedora Council in July, I had not yet moved back to Rochester, New York. From my past experiences, I didn&rsquo;t predict an issue to fulfill my commitments to the Fedora community. However, since moving back to Rochester, it is difficult to fulfill my expectations, Council and otherwise, to Fedora.</p>
<p>I&rsquo;m entering the last years of my degree and the rigor of my coursework demands more time and focus. Additionally, I&rsquo;m working more hours this year than I have in the past, which takes away more time Fedora. Because student loans are too real.</p>
<p>If I expected these changes, I would not have run for the Council. However, from my short time on the Council, I understand the energy and dedication needed to represent the community effectively. During my campaign and term, this was my driving motivation – to do my best to represent an international community of thousands in the highest body of leadership in Fedora. Now, I do not feel I am meeting my standard of participation and engagement. Already, I&rsquo;ve stepped back from the Fedora Magazine and Marketing teams to focus more time in other areas of Fedora. Now, it is right to do the same for the Council.</p>
<p>I will spend the most time in the CommOps and Diversity teams, since I believe that is where I can make the largest impact as a contributor.</p>

<h2 id="fedora-27-council-elections">Fedora 27 Council elections&nbsp;<a class="hanchor" href="#fedora-27-council-elections" aria-label="Anchor link for: Fedora 27 Council elections">🔗</a></h2>
<p>I privately shared my resignation with the Fedora Council before writing this post. After discussing with other Council members, the plan is</p>
<ol>
<li>Elect a new, full-term Council member for Fedora 27 and 28</li>
<li>Elect a new, half-term Council member for only Fedora 27</li>
</ol>
<p>In past elections with half-term seats, the candidate with the most votes receives the full-term seat and the runner-up receives the half-term seat. I expect this to happen again, although final details will come once the election phase begins.</p>

<h2 id="thank-you-for-your-trust">Thank you for your trust&nbsp;<a class="hanchor" href="#thank-you-for-your-trust" aria-label="Anchor link for: Thank you for your trust">🔗</a></h2>
<p>This is one of the most difficult decisions I&rsquo;ve made in Fedora. Serving on the Fedora Council is the greatest privilege. My election to the Council by hundreds of people was humbling and inspired me to not only lead by example, but represent the perspective of the greater Fedora community to the Council. This was the greatest honor for me and it disappoints me to finish my term early.</p>
<p>However, based on current circumstances, I believe this is the best path forward to make sure the community is well-represented in Fedora leadership. Thank you for your trust and I hope I can return to serve the community in this capacity someday in the future.</p>]]></description></item><item><title>How to set up a ListenBrainz development environment</title><link>https://jwheel.org/blog/2017/10/listenbrainz-development-environment/</link><pubDate>Wed, 04 Oct 2017 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2017/10/listenbrainz-development-environment/</guid><description><![CDATA[<p><em>This post is part of a series of posts where I contribute to the ListenBrainz project for my independent study at the Rochester Institute of Technology in the fall 2017 semester. For more posts, find them in <a href="https://jwfblog.wpenginepowered.com/tag/rit-2171/">this tag</a>.</em></p>
<hr>
<p>One of the first rites of passage when working on a new project is creating your development environment. It always seems simple, but sometimes there are bumps along the way. The first activity I did to begin contributing to ListenBrainz was create my development environment. I wasn&rsquo;t successful with the documentation in the README, so I had to play around and work with the project before I was even running it.</p>
<p>The first part of this post details how to set up your own development environment. Then, the second half talks about the solution I came up with and my first contribution back to the project.</p>

<h2 id="install-dependencies-docker">Install dependencies: Docker&nbsp;<a class="hanchor" href="#install-dependencies-docker" aria-label="Anchor link for: Install dependencies: Docker">🔗</a></h2>
<p>This tutorial assumes you are using a Linux distribution. If you&rsquo;re using a different operating system, install the necessary dependencies or packages with your preferred method.</p>
<p>ListenBrainz ships in Docker containers, which helps create your development environment and later deploy the application. Therefore, to work on the project, you need to install Docker and use containers for building the project. Containers save you from installing all of this on your own workstation! Since I&rsquo;m using Fedora, I run this command.</p>
<pre tabindex="0"><code>sudo dnf install docker docker-compose
</code></pre>
<h2 id="register-a-musicbrainz-application">Register a MusicBrainz application&nbsp;<a class="hanchor" href="#register-a-musicbrainz-application" aria-label="Anchor link for: Register a MusicBrainz application">🔗</a></h2>
<p>Next, you need to register your application and get a OAuth token from MusicBrainz. Using the OAuth token lets you sign into your development environment with your MusicBrainz account. Then, you can import your plays from somewhere else.</p>
<p>To register, visit the <a href="https://musicbrainz.org/account/applications">MusicBrainz applications page</a>. There, look for the option to <a href="https://musicbrainz.org/account/applications/register">register your application</a>. Fill out the form with these three options.</p>
<ul>
<li><strong>Name</strong>: (any name you want and will recognize, I used <code>listenbrainz-server-devel</code>)</li>
<li><strong>Type</strong>: <code>Web Application</code></li>
<li><strong>Callback URL</strong>: <code>http://localhost/login/musicbrainz/post</code></li>
</ul>
<p>After entering this information, you&rsquo;ll have a OAuth client ID and OAuth client secret. You&rsquo;ll use these for configuring ListenBrainz.</p>

<h4 id="update-configpy">Update config.py&nbsp;<a class="hanchor" href="#update-configpy" aria-label="Anchor link for: Update config.py">🔗</a></h4>
<p>With your new client ID and secret, update the ListenBrainz configuration file. If this is your first time configuring ListenBrainz, copy the sample to a live configuration.</p>
<pre tabindex="0"><code>cp listenbrainz/config.py.sample listenbrainz/config.py
</code></pre><p>Next, open the file with your favorite text editor and look for this section.</p>
<pre tabindex="0"><code># MusicBrainz OAuth
MUSICBRAINZ_CLIENT_ID = &#34;CLIENT_ID&#34;
MUSICBRAINZ_CLIENT_SECRET = &#34;CLIENT_SECRET&#34;
</code></pre><p>Update the strings with your client ID and secret. After doing this, your ListenBrainz development environment is able to authenticate and log in from your MusicBrainz login.</p>

<h2 id="initialize-listenbrainz-databases">Initialize ListenBrainz databases&nbsp;<a class="hanchor" href="#initialize-listenbrainz-databases" aria-label="Anchor link for: Initialize ListenBrainz databases">🔗</a></h2>
<p>Your development environment needs some databases present to work. Before proceeding, run these three commands to initialize the databases.</p>
<pre tabindex="0"><code>docker-compose -f docker/docker-compose.yml -p listenbrainz run --rm web python3 manage.py init_db --create-db
docker-compose -f docker/docker-compose.yml -p listenbrainz run --rm web python3 manage.py init_msb_db --create-db
docker-compose -f docker/docker-compose.yml -p listenbrainz run --rm web python3 manage.py init_influx
</code></pre><p>Your development environment is now ready. Now, let&rsquo;s actually see ListenBrainz load locally!</p>

<h2 id="run-the-magic-script">Run the magic script&nbsp;<a class="hanchor" href="#run-the-magic-script" aria-label="Anchor link for: Run the magic script">🔗</a></h2>
<p>Once you have done this, run the <code>develop.sh</code> script in the root of the repository. Using <code>docker-compose</code>, the script creates multiple Docker containers for the different services and parts of the ListenBrainz server. Running this script will start Redis, PostgreSQL, InfluxDB, and web server containers, to name a few. But this also makes it easy to stop them all later.</p>
<pre tabindex="0"><code>./develop.sh
</code></pre><p>You will see the containers build and eventually run. Leave the script running to see your development environment. Later, you can shut it down by pressing <code>CTRL^C</code>. Once everything is running, visit your new site from your browser!</p>
<p><a href="http://localhost/">http://localhost/</a></p>
<p>Now, you are all set to begin making changes and testing them in your development environment!</p>

<h2 id="making-my-first-pull-request">Making my first pull request&nbsp;<a class="hanchor" href="#making-my-first-pull-request" aria-label="Anchor link for: Making my first pull request">🔗</a></h2>
<p>As mentioned earlier, my first attempt at a development environment was unsuccessful. My system kept denying permission to the processes in the containers. After looking at system audit logs and running a temporary <code>setenforce 0</code>, I tried the script one more time. Everything suddenly worked! So the issue was mostly with SELinux.</p>
<p>With my goal to get my environment set up, I figured out a few issues with the configuration offered by the project developers. I eventually made <a href="https://github.com/metabrainz/listenbrainz-server/pull/257">PR #257</a> against <code>listenbrainz-server</code> with my improvements.</p>

<h4 id="labeling-selinux-volume-mounts">Labeling SELinux volume mounts&nbsp;<a class="hanchor" href="#labeling-selinux-volume-mounts" aria-label="Anchor link for: Labeling SELinux volume mounts">🔗</a></h4>
<p>To diagnose the issue, I started with a quick search and found a <a href="https://stackoverflow.com/questions/24288616/permission-denied-on-accessing-host-directory-in-docker">StackOverflow question</a> with my same problem. There, the question was about Docker containers and denied permissions in the container. The answers explained it was an SELinux error and the context for the containers was not set. However, temporarily changing context for a directory didn&rsquo;t seem too effective and doesn&rsquo;t persist across reboots.</p>
<p>Continuing the search, I found an issue filed against <code>docker-compose</code> about the <code>:z</code> and <code>:Z</code> flags for volume mounts. These flags set SELinux context for containers, with the best explanation I found coming from <a href="https://stackoverflow.com/a/35222815/2497452">this StackOverflow answer</a>.</p>
<blockquote>
<p>Two suffixes :z or :Z can be added to the volume mount. These suffixes tell Docker to relabel file objects on the shared volumes. The &lsquo;z&rsquo; option tells Docker that the volume content will be shared between containers. Docker will label the content with a shared content label. Shared volumes labels allow all containers to read/write content. The &lsquo;Z&rsquo; option tells Docker to label the content with a private unshared label.</p>
</blockquote>
<p>Therefore, I added the <code>:z</code> flag to all the volume mounts in the <code>docker-compose.yml</code> file. I submitted a fix upstream for this in <a href="https://github.com/metabrainz/listenbrainz-server/pull/257">listenbrainz-server#257</a>!</p>

<h4 id="correct-the-startup-port">Correct the startup port&nbsp;<a class="hanchor" href="#correct-the-startup-port" aria-label="Anchor link for: Correct the startup port">🔗</a></h4>
<p>In the README, it says the server will start on port 8000, but the <code>docker-compose.yml</code> file actually started the server on port 80. I included a fix for this in <a href="https://github.com/metabrainz/listenbrainz-server/pull/257">my pull request</a> as well.</p>

<h2 id="git-push">git push!&nbsp;<a class="hanchor" href="#git-push" aria-label="Anchor link for: git push!">🔗</a></h2>
<p>This post makes a debugging experience that actually took hours look like it happened in minutes. But after getting over this hurdle, it was awesome to finally see ListenBrainz running locally on my workstation. It was an even better feeling when I could take my improvements and send them back in a pull request to ListenBrainz. Hopefully this will make it easier for others to create their own development environments and start hacking!</p>]]></description></item><item><title>On the data refrain: Contributing to ListenBrainz</title><link>https://jwheel.org/blog/2017/10/contributing-listenbrainz/</link><pubDate>Mon, 02 Oct 2017 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2017/10/contributing-listenbrainz/</guid><description><![CDATA[<p>A unique opportunity of attending an open source-friendly university is when course credits and working on open source projects collide. This semester, I&rsquo;m participating in an independent study at the <a href="https://www.rit.edu/">Rochester Institute of Technology</a> where I will contribute to the <a href="https://listenbrainz.org/">ListenBrainz</a> project.</p>
<p>Many students take part in independent studies where they work on their own projects. However, in the spirit of open source collaboration, I wanted to contribute to a project that already existed. That way, my work would be helpful to a real-world project where it would have a value even after the end of the semester. Additionally, I wanted  a project to help me sharpen my Python skill. And ListenBrainz was a fun, exciting candidate for this.</p>

<h2 id="objectives">Objectives&nbsp;<a class="hanchor" href="#objectives" aria-label="Anchor link for: Objectives">🔗</a></h2>
<p>The independent study proposal included three primary goals I hoped to meet during this independent study:</p>
<ol>
<li><strong>Add basic reports</strong> to ListenBrainz from listening history data for top songs / artists / albums of week, month, year, etc.</li>
<li><strong>Create documentation</strong> to improve ease to use and develop for the ListenBrainz project</li>
<li>Offer as a <strong>use case for the data visualization course</strong> in fall 2018 with instructions on how to use the data</li>
</ol>

<h4 id="add-basic-reports">Add basic reports&nbsp;<a class="hanchor" href="#add-basic-reports" aria-label="Anchor link for: Add basic reports">🔗</a></h4>
<p>Methods for generating basic reports, charts, and statistics about listening history are important. They help make ListenBrainz a more interesting platform for a casual music listener, not just a developer. Therefore, my goal was to add a way to add basic reports or specific metrics for presenting to the user in the front-end.</p>
<p>As a stretch goal, if I have extra time, I would work on generating content (e.g. charts / graphs / statistics) to show the user in the front-end.</p>

<h4 id="documentation">Documentation&nbsp;<a class="hanchor" href="#documentation" aria-label="Anchor link for: Documentation">🔗</a></h4>
<p>Documentation is something near and dear to me. I enjoy making it easier for other people to use a project or get started with contributing. Therefore, I will contribute some time as a technical writer and help improve documentation on the project. This includes improving existing documentation, like how to set up a development environment, or creating new content.</p>
<p>As an end deliverable, it would be nice to have someone who has never worked with the project run get a development environment set up, import some data, and see something presented to them. Good documentation is key to making something like this possible.</p>

<h4 id="use-case-for-data-course">Use case for data course&nbsp;<a class="hanchor" href="#use-case-for-data-course" aria-label="Anchor link for: Use case for data course">🔗</a></h4>
<p>RIT will offer a data visualization course in future semesters and it would be helpful if ListenBrainz could be a use case or even tool for the course. Then, students could work with ListenBrainz for creating different visualizations for the music data. And maybe contribute some of their visualizations back upstream! For this to happen, we need comprehensive documentation and complete features.</p>
<p>A focus includes making ListenBrainz a good fit for this course.</p>

<h2 id="learn-more-about-listenbrainz">Learn more about ListenBrainz&nbsp;<a class="hanchor" href="#learn-more-about-listenbrainz" aria-label="Anchor link for: Learn more about ListenBrainz">🔗</a></h2>
<p>For the next few months, until December, I will blog regularly about contributing to the ListenBrainz project and my progress. Additionally, more posts about MusicBrainz, other MetaBrainz projects, or music data may follow. I&rsquo;m hoping to either create new or improve old documentation as well, so I plan to write often anyways!</p>
<p>For now, you can learn a bit more about ListenBrainz and other projects in the MetaBrainz family, like MusicBrainz.</p>
<ul>
<li><a href="https://listenbrainz.org/">ListenBrainz</a></li>
<li><strong>GitHub</strong>: <a href="https://github.com/metabrainz/listenbrainz-server">metabrainz/listenbrainz-server</a></li>
<li><a href="https://musicbrainz.org/doc/About">About MusicBrainz</a></li>
<li><a href="https://metabrainz.org/about">About MetaBrainz</a></li>
</ul>]]></description></item><item><title>Embracing open source cloud: Local government in Tirana switches to open source cloud solution</title><link>https://jwheel.org/blog/2017/08/tirana-switches-nextcloud/</link><pubDate>Tue, 22 Aug 2017 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2017/08/tirana-switches-nextcloud/</guid><description><![CDATA[<p><a href="https://opensource.com/article/17/8/tirana-government-chooses-open-source"><em>This article was originally published on Opensource.com.</em></a></p>
<hr>
<p>Open source software has come a long way since the turn of the century. Each year, more and more people are embracing open source technology and development models. Not just people, though ­– corporations and governments are exploring open source solutions too. From the <a href="https://obamawhitehouse.archives.gov/blog/2016/03/09/leveraging-american-ingenuity-through-reusable-and-open-source-software">White House</a> to the <a href="http://www.zdnet.com/article/from-microsoft-to-libreoffice-how-italys-military-is-starting-its-march-to-open-source/">Italian army</a>, open source is appearing more frequently in the public sector. But perhaps the newest addition to the list is the municipality of <a href="https://en.wikipedia.org/wiki/Tirana">Tirana, Albania</a>.</p>
<p>On June 11th, the local government in the municipality of Tirana <a href="https://joinup.ec.europa.eu/community/osor/news/municipality-tirana-goes-free-open-source-using-nextcloud">migrated their private cloud</a> to <a href="https://nextcloud.com/">Nextcloud</a>, an open source cloud and office productivity suite. The decision to move to an integrated cloud / office suite came after internal discussion about security and performance. Because Nextcloud is entirely open source, it stood out as a powerful option for the municipality to consider.</p>

<h2 id="why-switch-to-nextcloud">Why switch to Nextcloud?&nbsp;<a class="hanchor" href="#why-switch-to-nextcloud" aria-label="Anchor link for: Why switch to Nextcloud?">🔗</a></h2>
<p>The municipality was looking for ways to optimize on costs without sacrificing security. Many people deeply familiar with open source are already aware of the <a href="https://opensource.com/business/15/5/why-open-source-means-stronger-security">security benefits</a> of using open source software. Instead of relying on a private firm to assure the code is secure, open source software benefits from letting anyone (or paying someone else) to audit the code, find flaws, and submit bugs or patches to get them fixed. This was something <a href="https://twitter.com/ermir_puka">Ermir Puka</a> and other members of the IT team in Tirana considered when choosing a cloud solution for the 600 employees of the municipality.</p>
<p>&ldquo;The IT directory at the municipality of Tirana thought the movement to Nextcloud, which is an open source platform, gives us flexibility since we won&rsquo;t be dependent from providers who offer proprietary solutions. We can also develop it ourself, according to our needs, if we have the staff with the necessary qualifications to do such a thing,&rdquo; Puka said.</p>
<p>Nextcloud also stood out not only for its use as a file sharing tool, but also the other features that make it helpful as an office productivity suite. With Nextcloud, you can edit documents simultaneously with <a href="https://apps.nextcloud.com/apps/richdocuments">Collabora Online</a>, share calendars with co-workers, use an intranet messaging system, and use it <a href="https://nextcloud.com/install/">on your phone</a> too. A large selection of <a href="https://apps.nextcloud.com/">open source apps</a> are available to add to an Nextcloud installation.</p>
<p>
<figure>
  <img src="/blog/2017/07/bashkia-tirane-open-data-launch.jpg" alt="The municipality of Tirana celebrates the launch of their open data portal, opendata.tirana.al" loading="lazy">
  <figcaption>The municipality of Tirana celebrates the launch of their open data portal, opendata.tirana.al (<a href="http://opendata.tirana.al/" class="bare">http://opendata.tirana.al/</a>). Photo from Twitter (<a href="https://twitter.com/erionveliaj/status/854941775412285440" class="bare">https://twitter.com/erionveliaj/status/854941775412285440</a>), @erionveliaj (<a href="https://twitter.com/erionveliaj" class="bare">https://twitter.com/erionveliaj</a>).</figcaption>
</figure>
</p>
<p>According to <a href="https://joinup.ec.europa.eu/community/osor/news/municipality-tirana-goes-free-open-source-using-nextcloud">European Commission Joinup</a>, Tirana is one of the first municipalities in southeastern Europe implementing open source technology in the public sector. This continues the municipality&rsquo;s growing interest in open source, following the recent announcement of their <a href="https://forum.openlabs.cc/t/open-data-portal-of-the-municipality-of-tirana/273">open data portal</a> (see it at <a href="http://opendata.tirana.al/">opendata.tirana.al</a>) and decision to collaborate with the local open source community by <a href="https://twitter.com/erionveliaj/status/855004144339496960">contributing GIS data to OpenStreetMaps</a>. &ldquo;We also hope to give a good example in the region and maybe other municipalities can follow our example,&rdquo; Puka added. This further shows the municipality&rsquo;s dedication to saving money on software licenses, protecting user privacy, and innovating by using open source technology.</p>

<h2 id="about-tirana">About Tirana&nbsp;<a class="hanchor" href="#about-tirana" aria-label="Anchor link for: About Tirana">🔗</a></h2>
<p>
<figure>
  <img src="/blog/2017/07/open-labs-signing-gis-data-tirana.jpg" alt="Members of Open Labs Albania collaborating with the municipality of Tirana on providing GIS data for OpenStreetMaps" loading="lazy">
  <figcaption>Members of Open Labs Albania collaborating with the municipality of Tirana on providing GIS data for OpenStreetMaps. Photo from Twitter (<a href="https://twitter.com/erionveliaj/status/854941775412285440" class="bare">https://twitter.com/erionveliaj/status/854941775412285440</a>), @erionveliaj (<a href="https://twitter.com/erionveliaj" class="bare">https://twitter.com/erionveliaj</a>).</figcaption>
</figure>
</p>
<p>Tirana is located in Albania, in southeastern Europe, on the Mediterranean Sea just above Greece. The open source community in Tirana is growing each year. This is in part to the <a href="https://www.openlabs.cc/en/">Open Labs Albania</a> community in the city. Open Labs Albania is a not-for-profit hackerspace that promotes free and open source technologies, open data, open technological standards, and online privacy. You can read more about them in their <a href="https://wiki.openlabs.cc/faqja/Manifesto/en">manifesto</a>.</p>
<p>This continues a trend of exciting news for open source in the region. Earlier this year, the <a href="https://opensource.com/article/17/3/open-labs-48-hour-hackathon-albania">first-ever overnight hackathon</a> for the UN Sustainable Development Goals happened in March, with an emphasis on sustainable projects with open source licenses. They also host <a href="https://fedoramagazine.org/students-fedora-linux-weekend-2017/">Linux Weekend</a>, an annual mini-conference to help on-board students and interested technologists to Linux and open source. However, their most well-known event is <a href="https://oscal.openlabs.cc/">Open Source Conference Albania</a> (OSCAL), an annual conference gathering open source developers and community members from across the world. Together with the municipality, Open Labs has helped provide advice and support for some of the municipality&rsquo;s research into using open source software.</p>

<h2 id="get-in-touch">Get in touch&nbsp;<a class="hanchor" href="#get-in-touch" aria-label="Anchor link for: Get in touch">🔗</a></h2>
<p>If you&rsquo;re interested in learning more or sharing your thoughts, you can view the <a href="https://joinup.ec.europa.eu/community/osor/news/municipality-tirana-goes-free-open-source-using-nextcloud">public announcement</a> on the European Commission website or visit the <a href="https://forum.openlabs.cc/t/the-municipality-of-tirana-goes-free-open-source-by-using-nextcloud/503">thread</a> on the Open Labs forums.</p>]]></description></item><item><title>Introducing InfluxDB: Time-series database stack</title><link>https://jwheel.org/blog/2017/08/influxdb-time-series-database/</link><pubDate>Tue, 15 Aug 2017 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2017/08/influxdb-time-series-database/</guid><description><![CDATA[<p><a href="https://opensource.com/article/17/8/influxdb-time-series-database-stack"><em>Article originally published on Opensource.com.</em></a></p>
<hr>
<p>The needs and demands of infrastructure environments changes every year. With time, systems become more complex and involved. But when infrastructure grows and becomes more complex, it&rsquo;s meaningless if we don&rsquo;t understand it and what&rsquo;s happening in our environment. This is why monitoring tools and software are often used in these environments, so operators and administrators see problems and fix them in real-time. But what if we want to predict problems before they happen? Collecting metrics and data about our environment give us a window into how our infrastructure is performing and lets us make predictions based on data. When we know and understand what&rsquo;s happening, we can prevent problems before they happen.</p>
<p>But how do we collect and store this data? For example, if we want to collect data on the CPU usage of 100 machines every ten seconds, we&rsquo;re generating a lot of data. On top of that, what if each machine is running fifteen containers? What if you want to generate data about each of those individual containers too? What about by the process? This is where time-series data becomes helpful. Time-series databases store time-series data. But what does that mean? We&rsquo;ll explain all of this and more and introduce you to InfluxDB, an open source time-series database. By the end of this article, you will understand…</p>
<ul>
<li>What time-series data / databases are</li>
<li>Quick introduction to InfluxDB and the TICK stack</li>
<li>How to install InfluxDB and other tools</li>
</ul>

<h2 id="introducing-time-series-concepts">Introducing time-series concepts&nbsp;<a class="hanchor" href="#introducing-time-series-concepts" aria-label="Anchor link for: Introducing time-series concepts">🔗</a></h2>
<p>
<figure>
  <img src="/blog/2017/07/rbdms-table-example.gif" alt="Example of table, or how a RDBMS like MySQL stores data" loading="lazy">
  <figcaption>Example of table, or how a RDBMS like MySQL stores data. Image from DevShed (<a href="http://www.devshed.com/c/a/php/using-the-active-record-pattern-with-php-and-mysql/" class="bare">http://www.devshed.com/c/a/php/using-the-active-record-pattern-with-php-and-mysql/</a>).</figcaption>
</figure>
</p>
<p>If you&rsquo;re familiar with relational database management software (RDBMS), like MySQL, <a href="http://www.informit.com/articles/article.aspx?p=377067&amp;seqNum=3">tables, columns, and primary keys</a> are familiar terms. Everything is like a spreadsheet, with columns and rows. Some data might be unique, other parts might be the same as other rows. RBDMS&rsquo;s like MySQL are widely used and are great for <strong>reliable transactions</strong> that follow <a href="https://en.wikipedia.org/wiki/ACID">ACID</a> (Atomicity, Consistency, Isolation, Durability) compliance.</p>
<p>With relational database software, you&rsquo;re usually working with data that is something you could model in a table. You might update certain data by overwriting and replacing it. But what if you&rsquo;re collecting on data on something that generates a lot of data and you want to watch change over time? Take a self-driving car. The car is constantly collecting information about its environment. It takes this data and it analyzes changes over time to behave correctly. The amount of data might be tens of gigabytes an hour. While you could use a relational database to collect this data, they&rsquo;re not built for this. When it comes to scaling and usability of the data you&rsquo;re collecting, an RBDMS isn&rsquo;t the best tool for the job.</p>

<h4 id="why-time-series-is-a-good-fit">Why time-series is a good fit&nbsp;<a class="hanchor" href="#why-time-series-is-a-good-fit" aria-label="Anchor link for: Why time-series is a good fit">🔗</a></h4>
<p>And this is where time-series data makes sense. Let&rsquo;s say you&rsquo;re collecting data about a city traffic, temperature from farming equipment, or the production rate of an assembly line. Instead of going into a table with rows and columns, imagine pushing multiple rows of data that are uniquely sorted by a timestamp. This visual might help make more sense of this.</p>
<p>
<figure>
  <img src="/blog/2017/07/picture-the-cloud.gif" alt="Imagine rows and rows of data, uniquely sorted by timestamps" loading="lazy">
  <figcaption>Imagine rows and rows of data, uniquely sorted by timestamps. Image from Timescale (<a href="https://blog.timescale.com/what-the-heck-is-time-series-data-and-why-do-i-need-a-time-series-database-dcf3b1b18563" class="bare">https://blog.timescale.com/what-the-heck-is-time-series-data-and-why-do-i-need-a-time-series-database-dcf3b1b18563</a>).</figcaption>
</figure>
</p>
<p>Having the data in this format makes it easier to track and watch change over time. When data accumulates, you can see how something behaved in the past, how it&rsquo;s behaving now, and how it might behave in the future. Your options to make smarter data decisions expands!</p>
<p>Curious how the data is stored and formatted? It depends on the time-series database (TSDB) you use. InfluxDB stores the data in the <a href="https://docs.influxdata.com/influxdb/v1.3/write_protocols/line_protocol_tutorial/">Line Protocol</a> format. <a href="https://docs.influxdata.com/influxdb/v1.3/tools/api/#query">Queries</a> return the data in JSON.</p>
<p>
<figure>
  <img src="/blog/2017/07/influxdb-data-format.jpg" alt="How InfluxDB stores time-series data in JSON" loading="lazy">
  <figcaption>How InfluxDB stores time-series data in Line Protocol (<a href="https://docs.influxdata.com/influxdb/v1.3/write_protocols/line_protocol_tutorial/" class="bare">https://docs.influxdata.com/influxdb/v1.3/write_protocols/line_protocol_tutorial/</a>). Image from Roberto Gaudenzi (<a href="https://www.slideshare.net/RobertoGaudenzi1/introduction-to-influx-db" class="bare">https://www.slideshare.net/RobertoGaudenzi1/introduction-to-influx-db</a>).</figcaption>
</figure>
</p>
<p>If you&rsquo;re still confused or trying to understand time-series data or why you would want to use it over another solution, you can read an excellent, in-depth explanation from <a href="https://blog.timescale.com/what-the-heck-is-time-series-data-and-why-do-i-need-a-time-series-database-dcf3b1b18563">Timescale&rsquo;s blog</a> or <a href="https://www.influxdata.com/modern-time-series-platform/">InfluxData&rsquo;s blog</a>.</p>

<h2 id="influxdb-a-time-series-database">InfluxDB: A time-series database&nbsp;<a class="hanchor" href="#influxdb-a-time-series-database" aria-label="Anchor link for: InfluxDB: A time-series database">🔗</a></h2>
<p><a href="https://www.influxdata.com/time-series-platform/influxdb/">InfluxDB</a> is an open source time-series database software developed by <a href="https://www.influxdata.com/">InfluxData</a>. It&rsquo;s written in Go (a compiled language), which means you can start using it without installing any dependencies. It supports multiple data ingestion protocols, such as <a href="https://www.influxdata.com/time-series-platform/telegraf/">Telegraf</a> (also from InfluxData), <a href="https://graphiteapp.org/">Graphite</a>, <a href="https://collectd.org/">collectd</a>, and <a href="http://opentsdb.net/">OpenTSDB</a>. This leaves you with flexible options for how you want to collect data and where you&rsquo;re pulling it from. It&rsquo;s also one of the <a href="https://db-engines.com/en/ranking/time&#43;series&#43;dbms">fastest-growing</a> time-series database software available. You can find the source code for InfluxDB on <a href="https://github.com/influxdata/influxdb">GitHub</a>.</p>
<p>This article will focus on three tools in InfluxData&rsquo;s TICK stack for how you can build a time-series database and begin collecting and processing data.</p>

<h4 id="tick-stack">TICK stack&nbsp;<a class="hanchor" href="#tick-stack" aria-label="Anchor link for: TICK stack">🔗</a></h4>
<p>InfluxData creates a platform based on four open source projects that work and play well with each other for time-series data. When used together, you can collect, store, process, and view the data easily. The four pieces of the platform are known as the <a href="https://www.influxdata.com/time-series-platform/">TICK stack</a>. This stands for…</p>
<ul>
<li><strong>_T_elegraf</strong>: Plugin-driven server agent for collecting / reporting metrics</li>
<li><strong>_I_nfluxDB</strong>: Scalable data store for metrics, events, and real-time analytics</li>
<li><strong>_C_hronograf</strong>: Monitoring / visualization UI for TICK stack (not covered in this article)</li>
<li><strong>_K_apacitor</strong>: Framework for processing, monitoring, and alerting on time-series data</li>
</ul>
<p>These tools work and integrate well with the other pieces by design. However, it&rsquo;s also easy to substitute one piece out for another tool of your choice. For this article, we&rsquo;ll explore three parts of the TICK stack: InfluxDB, Telegraf, and Kapacitor.</p>
<p>
<figure>
  <img src="/blog/2017/07/tick-stack-diagram.png" alt="Diagram of how the different components of the InfluxDB TICK stack connect with each other" loading="lazy">
  <figcaption>Diagram of how the different components of the TICK stack connect with each other. From influxdata.com (<a href="https://www.influxdata.com/time-series-platform/" class="bare">https://www.influxdata.com/time-series-platform/</a>).</figcaption>
</figure>
</p>

<h4 id="influxdb"><a href="https://docs.influxdata.com/influxdb/">InfluxDB</a>&nbsp;<a class="hanchor" href="#influxdb" aria-label="Anchor link for: InfluxDB">🔗</a></h4>
<p>As mentioned before, InfluxDB is the time-series database (TSDB) of the TICK stack. Data collected from your environment is stored into InfluxDB. There are a few things that stand out about InfluxDB from other time-series databases.</p>

<h6 id="emphasis-on-performance">Emphasis on performance&nbsp;<a class="hanchor" href="#emphasis-on-performance" aria-label="Anchor link for: Emphasis on performance">🔗</a></h6>
<p>InfluxDB is designed with performance as one of the top priorities. This allows you to use data quickly and easily, even under heavy loads. To do this, InfluxDB focuses on quickly ingesting the data and using compression to keep it manageable. To query and write data, it uses an HTTP(S) API.</p>
<p>The performance notes are noteworthy standing up the amount of data InfluxDB is capable of handling. It can handle up to a million points of data per second, at a precise level even to the nanosecond.</p>

<h6 id="sql-like-queries">SQL-like queries&nbsp;<a class="hanchor" href="#sql-like-queries" aria-label="Anchor link for: SQL-like queries">🔗</a></h6>
<p>If you&rsquo;re familiar with SQL-like syntax, querying data from InfluxDB will feel familiar. It uses its own SQL-like syntax, <a href="https://docs.influxdata.com/influxdb/v1.3/query_language">InfluxQL</a>, for queries. As an example, imagine you&rsquo;re collecting data on used disk space on a machine. If you wanted to see that data, you could write a query that might look like this.</p>
<pre tabindex="0"><code>SELECT mean(diskspace_used) as mean_disk_used
FROM disk_stats
WHERE time() &gt;= 3m
GROUP BY time(10d)
</code></pre><p>If you&rsquo;re familiar with SQL syntax, this won&rsquo;t feel too different. The above statement will pull the mean values of used disk space from a three-month period and group them by every ten days.</p>

<h6 id="downsampling--data-retention">Downsampling / data retention&nbsp;<a class="hanchor" href="#downsampling--data-retention" aria-label="Anchor link for: Downsampling / data retention">🔗</a></h6>
<p>When working with large amounts of data, storing it becomes a concern. Over time, it can accumulate to huge sizes. With InfluxDB, you can <strong>downsample</strong> into less precise, but smaller metrics that you can store for longer periods of time. <strong>Data retention policies</strong> for your data enable you to do this.</p>
<p>For example, pretend you have sensors collecting data on the amount of RAM in a number of machines. You might collect metrics on the amount of memory in use by multiple users, the system, cached memory, and more. While it might make sense to hang on to that data for thirty days to watch what&rsquo;s happening, after thirty days, you might not need it that precise. Instead, you might only want the ratio of total memory to memory in use. Using data retention policies, you can tell InfluxDB to hang on to the precise data for all the different usages for thirty days. After thirty days, you can average data to be less precise, and you can hold on to that data for six months, forever, or however long you like. This compromise meets in the middle between keeping historical data and reducing disk usage.</p>

<h4 id="telegraf"><a href="https://docs.influxdata.com/telegraf/">Telegraf</a>&nbsp;<a class="hanchor" href="#telegraf" aria-label="Anchor link for: Telegraf">🔗</a></h4>
<p>If InfluxDB is where all of your data is going, you need a way to collect and gather the data first. Telegraf is a metric collection daemon that gathers various metrics from system components, IoT sensors, and more. It&rsquo;s <a href="https://github.com/influxdata/telegraf">open source</a> and written completely in Go. Like InfluxDB, Telegraf is also written by the InfluxData team and is built to work with InfluxDB. It also includes support for different databases, such as MySQL / MariaDB, MongoDB, Redis, and more. You can read more about it on <a href="https://www.influxdata.com/time-series-platform/telegraf/">InfluxData&rsquo;s website</a>.</p>
<p>Telegraf is modular and heavily based on plugins. This means that Telegraf is either lean and minimal or as full and complex as you need it. Out of the box, it supports over a hundred plugins for various input sources. This includes Apache, Ceph, Docker, IPTables, Kubernetes, NGINX, and Varnish, just to name a few. You can see all the plugins, including processing and output plugins in their <a href="https://github.com/influxdata/telegraf#input-plugins">README</a>.</p>
<p>Even if you&rsquo;re not using InfluxDB as a data store, you may find Telegraf useful as a way to collect this data and information about your systems or sensors.</p>

<h4 id="kapacitor"><a href="https://docs.influxdata.com/kapacitor/">Kapacitor</a>&nbsp;<a class="hanchor" href="#kapacitor" aria-label="Anchor link for: Kapacitor">🔗</a></h4>
<p>Now we have a way to collect and store our data. But what about doing things with it? Kapacitor is the piece of the stack that lets you process and work with the data in a few different ways. It supports both stream and batch data. Stream data means you can actively work and shape the data in real-time, even before it makes it to your data store. Batch data means you retroactively perform actions on samples, or batches, of the data.</p>
<p>One of the biggest pluses for Kapacitor is that it enables you to have real-time alerts for events happening in your environment. CPU usage overloading or temperatures too high? You can set up several different alert systems, including but not limited to email, triggering a command, Slack, HipChat, OpsGenie, and many more. You can see the full list in the <a href="https://docs.influxdata.com/kapacitor/v1.3/nodes/alert_node/">documentation</a>.</p>
<p>Like the previous tools, Kapacitor is also <a href="https://github.com/influxdata/kapacitor">open source</a> and you can read more about the project in their <a href="https://github.com/influxdata/kapacitor/blob/master/README.md">README</a>.</p>

<h2 id="installing-the-tick-stack">Installing the TICK stack&nbsp;<a class="hanchor" href="#installing-the-tick-stack" aria-label="Anchor link for: Installing the TICK stack">🔗</a></h2>
<p>Packages are available for nearly every distribution. You can install these packages from the command line. Use the instructions for your distribution.</p>

<h4 id="fedora">Fedora&nbsp;<a class="hanchor" href="#fedora" aria-label="Anchor link for: Fedora">🔗</a></h4>
<pre tabindex="0"><code>sudo dnf install https://dl.influxdata.com/influxdb/releases/influxdb-1.3.1.x86_64.rpm \
https://dl.influxdata.com/telegraf/releases/telegraf-1.3.4-1.x86_64.rpm \
https://dl.influxdata.com/kapacitor/releases/kapacitor-1.3.1.x86_64.rpm
</code></pre>
<h4 id="centos-7--rhel-7">CentOS 7 / RHEL 7&nbsp;<a class="hanchor" href="#centos-7--rhel-7" aria-label="Anchor link for: CentOS 7 / RHEL 7">🔗</a></h4>
<pre tabindex="0"><code>sudo yum install https://dl.influxdata.com/influxdb/releases/influxdb-1.3.1.x86_64.rpm \
https://dl.influxdata.com/telegraf/releases/telegraf-1.3.4-1.x86_64.rpm \
https://dl.influxdata.com/kapacitor/releases/kapacitor-1.3.1.x86_64.rpm
</code></pre>
<h4 id="ubuntu--debian">Ubuntu / Debian&nbsp;<a class="hanchor" href="#ubuntu--debian" aria-label="Anchor link for: Ubuntu / Debian">🔗</a></h4>
<pre tabindex="0"><code>wget https://dl.influxdata.com/influxdb/releases/influxdb_1.3.1_amd64.deb \
https://dl.influxdata.com/telegraf/releases/telegraf_1.3.4-1_amd64.deb \
https://dl.influxdata.com/kapacitor/releases/kapacitor_1.3.1_amd64.deb
sudo dpkg -i influxdb_1.3.1_amd64.deb telegraf_1.3.4-1_amd64.deb kapacitor_1.3.1_amd64.deb
</code></pre>
<h4 id="other-distributions">Other distributions&nbsp;<a class="hanchor" href="#other-distributions" aria-label="Anchor link for: Other distributions">🔗</a></h4>
<p>For help with other distributions, see the <a href="https://portal.influxdata.com/downloads">Downloads</a> page.</p>

<h2 id="see-the-data-be-the-data">See the data, be the data&nbsp;<a class="hanchor" href="#see-the-data-be-the-data" aria-label="Anchor link for: See the data, be the data">🔗</a></h2>
<p>Now that you have the tools installed, you can experiment with some of these tools. There&rsquo;s plenty of upstream documentation on all three projects. You can the docs here:</p>
<ul>
<li><a href="https://docs.influxdata.com/influxdb/">InfluxDB documentation</a></li>
<li><a href="https://docs.influxdata.com/telegraf/">Telegraf documentation</a></li>
<li><a href="https://docs.influxdata.com/kapacitor/">Kapacitor documentation</a></li>
</ul>
<p>Additionally, for more help, you can visit the <a href="https://community.influxdata.com/">InfluxData community forums</a>. Happy hacking!</p>]]></description></item><item><title>IRC for the 21st century: introducing Riot</title><link>https://jwheel.org/blog/2017/08/riot-matrix-irc/</link><pubDate>Tue, 08 Aug 2017 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2017/08/riot-matrix-irc/</guid><description><![CDATA[<p><a href="https://opensource.com/article/17/5/introducing-riot-IRC"><em>This article was originally published on Opensource.com.</em></a></p>
<hr>
<p><a href="https://en.wikipedia.org/wiki/Internet_Relay_Chat">Internet Relay Chat</a>, or IRC, is one of the oldest chat protocols around and still popular in many open source communities. IRC&rsquo;s best strengths are as a decentralized and open communication method, making it easy for anyone to participate by running a network of their own. There&rsquo;s also a variety of clients and bots available for IRC. But on the reverse side, usability is a concern. Most common user interfaces for IRC clients or platforms aren&rsquo;t always intuitive. People from parts of the world with unstable Internet connections are challenged with remaining connected to participate in conversation. Many people have tried addressing this problem before, but none have come as far as Riot.</p>

<h2 id="what-is-riot">What is Riot?&nbsp;<a class="hanchor" href="#what-is-riot" aria-label="Anchor link for: What is Riot?">🔗</a></h2>
<p><a href="https://riot.im/">Riot</a> is a free, open source, and multi-platform client based on the <a href="https://matrix.org/">Matrix</a> protocol. To understand better, think of Matrix as the protocol and Riot as the client. Matrix is a decentralized, secure, messaging protocol. It has the benefit of using HTTP / JSON APIs, is capable of sending and receiving messages with full end-to-end encryption, WebRTC VoIP / video calling, and maybe most importantly, integration capabilities. Matrix was built to integrate with IRC servers and other communication protocols, meaning you can use the Riot client as an <a href="https://opensource.com/article/17/4/never-leave-irc-again">IRC bouncer</a>. You can read more of the details on what separates Matrix from Riot <a href="https://matrix.org/docs/guides/faq.html#what-is-the-difference-between-matrix-and-irc">on their FAQ</a>.</p>
<p>As a result, Riot becomes most useful in its implementation as the default Matrix client. It&rsquo;s convenient and decentralized, as anyone is able to launch their own Matrix &ldquo;homeserver&rdquo; and connect it with Riot. However, Matrix by default has servers bridged with <a href="https://freenode.net/">Freenode</a>, <a href="https://wiki.mozilla.org/IRC#Connect_to_the_Mozilla_IRC_server">Mozilla IRC</a>, and more. This lets you use Riot as a persistent client that keeps you connected to IRC even when you&rsquo;re not there.</p>
<p>
<figure>
  <img src="/blog/2017/03/intro-riot-01-logged-in.png" alt="Riot desktop application on Fedora Linux using Matrix" loading="lazy">
  <figcaption>Riot desktop application</figcaption>
</figure>
</p>
<p>Outside of the web application, you can also find it as a <a href="https://riot.im/desktop.html">desktop application</a> for Mac, Windows, and Linux, or a mobile application for iOS and Android. In this guide, you&rsquo;ll learn how to get started using Riot as a full-time messaging client with the default Matrix / IRC integration servers.</p>

<h2 id="register-and-get-a-client">Register and get a client&nbsp;<a class="hanchor" href="#register-and-get-a-client" aria-label="Anchor link for: Register and get a client">🔗</a></h2>
<p>First, you&rsquo;ll need to grab an account from Riot&rsquo;s website. Registration is straightforward and shouldn&rsquo;t take you much time. You can find the registration form <a href="https://riot.im/app/">here</a>. Once you&rsquo;re registered and have confirmed your email, you&rsquo;ll need to get the Riot applications on your devices of choice.</p>

<h4 id="desktop-clients">Desktop clients&nbsp;<a class="hanchor" href="#desktop-clients" aria-label="Anchor link for: Desktop clients">🔗</a></h4>
<p>There are desktop clients available for Windows, macOS, and Linux. If you&rsquo;re running Windows or macOS, you can download the right version for your desktop on the <a href="https://riot.im/desktop.html">Riot downloads</a> page. If you&rsquo;re using Debian, Ubuntu, or a related operating system, you can add a repository to your system to install the Riot desktop client. You can read <a href="http://data.agaric.com/how-install-riot-desktop-matrix-client-debian-based-systems">this guide</a> on how to add the repository and install Riot to your system.</p>

<h5 id="fedora">Fedora&nbsp;<a class="hanchor" href="#fedora" aria-label="Anchor link for: Fedora">🔗</a></h5>
<p>Riot is not yet officially packaged in Fedora&rsquo;s repositories. However, there is a <a href="https://copr.fedorainfracloud.org/coprs/taw/Riot/">third-party Copr repository</a> where the desktop application is packaged. Until it makes it into Fedora&rsquo;s repositories, you can use this version to get started with Riot. You can find the Copr project and install instructions <a href="https://copr.fedorainfracloud.org/coprs/taw/Riot/">here</a>.</p>

<h4 id="mobile-clients">Mobile clients&nbsp;<a class="hanchor" href="#mobile-clients" aria-label="Anchor link for: Mobile clients">🔗</a></h4>
<p>Want to have Riot integrated on your phone or prefer a mobile client? You can also find official versions of Riot on <a href="https://itunes.apple.com/us/app/vector.im/id1083446067">iOS</a>, <a href="https://play.google.com/store/apps/details?id=im.vector.alpha">Google Play Store</a>, and <a href="https://f-droid.org/repository/browse/?fdid=im.vector.alpha">F-Droid</a>. Using any of the mobile clients will integrate fully with a desktop client, if you choose to use both. This guide will focus more on the desktop clients.</p>

<h2 id="setting-up-freenode-in-riot">Setting up Freenode in Riot&nbsp;<a class="hanchor" href="#setting-up-freenode-in-riot" aria-label="Anchor link for: Setting up Freenode in Riot">🔗</a></h2>
<p>Riot currently supports eight IRC networks: Freenode, Moznet, Snoonet, OFTC, GIMPNet, Foonetic, Rizon, and EsperNet. Although you can use any network you like and the instructions will mostly be the same, this guide focuses on using <a href="https://freenode.net">Freenode</a>.</p>

<h4 id="joining-your-first-channel">Joining your first channel&nbsp;<a class="hanchor" href="#joining-your-first-channel" aria-label="Anchor link for: Joining your first channel">🔗</a></h4>
<p>One of the first things you&rsquo;ll see after signing into Riot is the directory. In the directory, you can search through chat rooms on Matrix itself or any of the other IRC servers that are integrated. To join your first channel, you can select the IRC channel of choice in the dropdown menu and search for a channel.</p>
<p>For example, if we want to find <code>#opensource.com</code> on Freenode, you can select the Freenode option and search for <code>#opensource.com</code>. Once it&rsquo;s there, you can join and say hello to the rest of the Opensource.com community hanging out in IRC.</p>
<p>
<figure>
  <img src="/blog/2017/03/intro-riot-05-join-opensource.com_.png" alt="Searching for #opensource.com on Freenode from Matrix / Riot client" loading="lazy">
  <figcaption>Searching for #opensource.com on Freenode from Riot client</figcaption>
</figure>
</p>
<p>Alternatively, if you would prefer directly joining a room, you can type the following as a command from any chat window in Riot.</p>
<pre tabindex="0"><code>/join #freenode_#channelname:matrix.org
</code></pre>
<h4 id="setting-your-irc-nick">Setting your IRC nick&nbsp;<a class="hanchor" href="#setting-your-irc-nick" aria-label="Anchor link for: Setting your IRC nick">🔗</a></h4>
<p>
<figure>
  <img src="/blog/2017/03/intro-riot-07-message-appservice.png" alt="Send a message to @appservice-irc:matrix.org to change your IRC nick in Matrix / Riot" loading="lazy">
  <figcaption>Send a message to <code>@appservice-irc:matrix.org</code> to change your IRC nick</figcaption>
</figure>
</p>
<p>By default, your IRC nick, or username, will be similar to your display name in Riot. Sometimes it will have a <code>[m]</code> appended to the end. However, after you connect to a channel, you can <a href="https://github.com/matrix-org/matrix-appservice-irc/blob/master/HOWTO.md#changing-nicks">change your nick</a> on the IRC side as well. You&rsquo;ll need to start a new conversation with the IRC integration bot between Riot and Freenode.</p>
<p>In the bottom left corner of your Riot client, you can start a new personal chat with any user. To message the IRC integration bot, start a new chat with <code>@appservice-irc:matrix.org</code>. This will put you and the bot together in a private chat. To change your nick, send the following command to the bot:</p>
<pre tabindex="0"><code>!nick irc.freenode.net &lt;IRC nick&gt;
</code></pre><p>You should receive a confirmation message, similar to: &ldquo;<em>Nick changed from &lsquo;OldNick&rsquo; to &lsquo;NewNick.&rsquo;</em>&rdquo; For more help, you can read the <a href="https://github.com/matrix-org/matrix-appservice-irc/blob/master/HOWTO.md#changing-nicks">official documentation</a> on changing your nick.</p>

<h4 id="authenticating-with-nickserv">Authenticating with NickServ&nbsp;<a class="hanchor" href="#authenticating-with-nickserv" aria-label="Anchor link for: Authenticating with NickServ">🔗</a></h4>
<p>One of the other vital functions you might need to do is authenticate with NickServ. This is especially important if you want to use your registered IRC nick or are a member of invite-only channels. However, it&rsquo;s possible to do this too.</p>
<p>You&rsquo;ll need to start another direct chat again. This time, you can search for the user <code>@freenode_NickServ:matrix.org</code>. This will put you into a private message with NickServ on Freenode&rsquo;s servers. To authenticate, you can send a message just like you normally would.</p>
<pre tabindex="0"><code>IDENTIFY &lt;username&gt; &lt;password&gt;
</code></pre><p>After doing this, you should receive the normal confirmation that you are now logged in as your account. Remember to use caution when opening this chat in a public place, as your password will be displayed in plaintext whenever you open that direct message with NickServ.</p>

<h2 id="say-hello">Say hello!&nbsp;<a class="hanchor" href="#say-hello" aria-label="Anchor link for: Say hello!">🔗</a></h2>
<p>Once you&rsquo;ve joined a channel, claimed your nick, and authenticated with NickServ, you will be all set to begin using Riot. In any channel bridged in IRC with Matrix, all of your messages from Riot will show up in the IRC channel. Riot can also act like an IRC bouncer that keeps you persistently connected. Whenever you open Riot, you will be able to see a log of past discussions even if you weren&rsquo;t connected to the Internet.</p>
<p>Both Matrix and Riot are open source projects. You can find <a href="https://github.com/matrix-org">Matrix&rsquo;s code</a> and <a href="https://github.com/vector-im">Riot&rsquo;s code</a> on GitHub. If you want to better understand how the integration bridge works, you can read <a href="https://matrix.org/blog/2017/03/14/an-adventure-in-irc-land/">this blog post</a> by one of the developers.</p>
<p>Have any comments or stories to share about using Riot? Are you already using it for IRC? Share your comments with us down below!</p>]]></description></item><item><title>Sign at the line: Deploying an app to CoreOS Tectonic</title><link>https://jwheel.org/blog/2017/08/deploying-app-tectonic/</link><pubDate>Fri, 04 Aug 2017 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2017/08/deploying-app-tectonic/</guid><description><![CDATA[<p><em>This is a short series to introduce Kubernetes, what it does, and how to experiment with it on Fedora. This is a beginner-oriented series to help introduce some higher level concepts and give examples of using it on Fedora. In the first post, we covered <a href="https://fedoramagazine.org/introduction-kubernetes-fedora/">key concepts in Kubernetes</a>. The second post showed how to build a <a href="https://fedoramagazine.org/minikube-kubernetes/">single-node Kubernetes deployment</a> on your own computer. The last post and this post build on top of the Fedora Magazine series. The third post introduced how to <a href="https://jwfblog.wpenginepowered.com/2017/07/tectonic-amazon-web-services-aws/">deploy CoreOS Tectonic</a> to Amazon Web Services (AWS). This fourth post teaches how to deploy a simple web application to your Tectonic installation.</em></p>
<hr>
<p>Welcome back to the <strong>Kubernetes and Fedora</strong> series. Each week, we build on the previous articles in the series to help introduce you to using Kubernetes. This article picks up from where we left off last when you installed Tectonic to Amazon Web Services (AWS). By the end of this article, you will…</p>
<ul>
<li>Start up <a href="https://redis.io/">Redis</a> master and slave pods</li>
<li>Start a front-end pod that interacts with the Redis pods</li>
<li>Deploy a simple web app for all of your friends to leave you messages</li>
</ul>
<p>Compared to previous articles, this article will be a little more hands-on. Also like before, this is based off an excellent tutorial in the <a href="https://github.com/kubernetes/kubernetes/tree/master/examples/guestbook">upstream Kubernetes documentation</a>. Let&rsquo;s get started!</p>

<h2 id="pre-requisites">Pre-requisites&nbsp;<a class="hanchor" href="#pre-requisites" aria-label="Anchor link for: Pre-requisites">🔗</a></h2>
<p>This tutorial assumes you followed the <a href="https://fedoramagazine.org/minikube-kubernetes/">Minikube how-to</a> earlier in this series and that you already <a href="https://fedoramagazine.org/tectonic-amazon-web-services-aws/">have a Tectonic installation</a> running (doesn&rsquo;t have to be on AWS). In case you&rsquo;re jumping in now, make sure you have the Kubernetes client tools installed on your Fedora system, like <code>kubectl</code>. If not, you can install them now.</p>
<pre tabindex="0"><code>$ sudo dnf install kubernetes-client
</code></pre>
<h2 id="configure-kubectl-for-tectonic">Configure <code>kubectl</code> for Tectonic&nbsp;<a class="hanchor" href="#configure-kubectl-for-tectonic" aria-label="Anchor link for: Configure kubectl for Tectonic">🔗</a></h2>
<p>To use <code>kubectl</code> with your Tectonic installation, you need to have a valid configuration in <code>~/.kube/config</code> for your cluster. This is how <code>kubectl</code> knows where and how to talk to Tectonic. To get these values, first log into the Tectonic Console you installed.</p>
<ol>
<li>Click <em>username</em> (usually <em>admin</em>) &gt; <em>My Account</em> on the bottom left.</li>
<li>Click <em>Download Configuration</em>.</li>
<li>When the <em>Set Up kubectl</em> window opens, click <em>Verify Identity</em>.</li>
<li>Enter your username and password, and click <em>Login</em>.</li>
<li>From the <em>Login Successful</em> screen, copy the provided code.</li>
<li>Switch back to Tectonic and enter the code in the field.</li>
</ol>
<p>Now you will be able to download <code>kubectl-config</code> from Tectonic. There&rsquo;s two ways to proceed from here.</p>

<h4 id="add-a-new-configuration">Add a new configuration&nbsp;<a class="hanchor" href="#add-a-new-configuration" aria-label="Anchor link for: Add a new configuration">🔗</a></h4>
<p>If this is your first time using <code>kubectl</code>, your configuration is likely empty. If it&rsquo;s empty or you don&rsquo;t care about overwriting an old configuration, you can run the following commands to add the configuration.</p>
<pre tabindex="0"><code>$ mkdir ~/.kube/
$ mv ~/Downloads/minikube-config ~/.kube/config
$ chmod 600 ~/.kube/config
</code></pre>
<h4 id="append-to-an-existing-configuration">Append to an existing configuration&nbsp;<a class="hanchor" href="#append-to-an-existing-configuration" aria-label="Anchor link for: Append to an existing configuration">🔗</a></h4>
<p>If you already have a configuration, like from Minikube, you might not want to wipe it all out. In this case, you can merge the files manually together. You&rsquo;ll need to copy the <code>clusters</code>, <code>users</code>, and <code>contexts</code> from the Tectonic configuration into your existing one. The benefit of doing this is that you&rsquo;ll be able to change contexts to switch from one cluster to another.</p>

<h4 id="test-your-configuration">Test your configuration&nbsp;<a class="hanchor" href="#test-your-configuration" aria-label="Anchor link for: Test your configuration">🔗</a></h4>
<p>Once you finished your configuration, test to see if it works.</p>
<pre tabindex="0"><code>$ kubectl config use-context tectonic       # if you have multiple contexts in config
$ kubectl get nodes
NAME                                        STATUS    AGE
ip-10-0-0-59.us-east-2.compute.internal     Ready     1d
ip-10-0-23-239.us-east-2.compute.internal   Ready     1d
ip-10-0-44-211.us-east-2.compute.internal   Ready     1d
ip-10-0-61-218.us-east-2.compute.internal   Ready     1d
ip-10-0-67-239.us-east-2.compute.internal   Ready     1d
ip-10-0-95-51.us-east-2.compute.internal    Ready     1d
</code></pre><p>Huzzah! Now we&rsquo;re ready to get to work.</p>

<h2 id="getting-the-deployment-and-service-files">Getting the deployment and service files&nbsp;<a class="hanchor" href="#getting-the-deployment-and-service-files" aria-label="Anchor link for: Getting the deployment and service files">🔗</a></h2>
<p>All of the example files come from the official Kubernetes GitHub repo. You can find them in the <a href="https://github.com/kubernetes/kubernetes/tree/master/examples/guestbook">Guestbook example</a>. To get started, create a new directory and download all of the files.</p>
<pre tabindex="0"><code>$ wget https://raw.githubusercontent.com/kubernetes/kubernetes/master/examples/guestbook/redis-{master,slave}-{deployment,service}.yaml \
       https://raw.githubusercontent.com/kubernetes/kubernetes/master/examples/guestbook/frontend-{deployment,service}.yaml
</code></pre><p>We&rsquo;ll explain what all of these do in next steps. All of these next steps will start with the command to run, followed by a short explanation of what&rsquo;s actually happening.</p>

<h2 id="start-the-redis-master">Start the Redis master&nbsp;<a class="hanchor" href="#start-the-redis-master" aria-label="Anchor link for: Start the Redis master">🔗</a></h2>
<pre tabindex="0"><code>$ kubectl create -f redis-master-service.yaml
service &#34;redis-master&#34; created
$ kubectl create -f redis-master-deployment.yaml
deployment &#34;redis-master&#34; created
</code></pre>
<h4 id="define-the-deployment">Define the deployment&nbsp;<a class="hanchor" href="#define-the-deployment" aria-label="Anchor link for: Define the deployment">🔗</a></h4>
<p>The <code>redis-master-deployment.yaml</code> file downloaded earlier defines the deployment and its characteristics. In this case, we have one pod that runs the Redis master in a container. Since we&rsquo;re using a deployment, that means if our pod goes down, Kubernetes will <strong>spin up a new pod</strong> to replace it. Worth noting in this example, if the pod <em>did</em> go down, there would be a potential for data loss until the new one replaces the old one (since the Redis master is not highly available, i.e. there are multiple).</p>

<h4 id="define-the-service">Define the service&nbsp;<a class="hanchor" href="#define-the-service" aria-label="Anchor link for: Define the service">🔗</a></h4>
<p>Our service in this example is a <strong>named load balancer</strong> that <strong>proxies traffic</strong> across one or many containers. Even though we only have one Redis master pod, we still want to use a service. This is a deterministic way of making the route to the master with a dynamic (or elastic) IP address.</p>
<p>Labeling the pods is important in this case, as Kubernetes will use the pods&rsquo; labels to determine which pods receive the traffic sent to the service, and load balance it accordingly.</p>

<h4 id="create-the-service">Create the service&nbsp;<a class="hanchor" href="#create-the-service" aria-label="Anchor link for: Create the service">🔗</a></h4>
<p>The next important step is to create the service. Note that we&rsquo;re doing this <em>before</em> we create the deployment. It&rsquo;s best practice to create the service first. This allows the scheduler to later spread the service across the deployments you create to support your application.</p>
<p>After creating the service, you can check its status by running this command. You should see similar output.</p>
<pre tabindex="0"><code>$ kubectl get services
NAME              CLUSTER-IP       EXTERNAL-IP       PORT(S)       AGE
redis-master      10.0.76.248      &lt;none&gt;            6379/TCP      1s
</code></pre><p>Now your Redis master serivce is up and running! The next step will be to create the Redis master deployment.</p>
<p>If you look at the service configuration file, you&rsquo;ll notice <code>port</code> and <code>targetPort</code> are two defined variables. Once everything is up and running, these will be important for determining how the traffic from the slaves to the masters is routed.</p>
<ol>
<li>Redis slave connects to <code>port</code> on Redis master service</li>
<li>Traffic forwarded from service&rsquo;s <code>port</code> to <code>targetPort</code> on pod the service listens to</li>
</ol>

<h4 id="create-the-deployment">Create the deployment&nbsp;<a class="hanchor" href="#create-the-deployment" aria-label="Anchor link for: Create the deployment">🔗</a></h4>
<p>Next, we created the Redis master pod in the cluster. To see our deployment and pods, we can run the following commands to see what was created.</p>
<pre tabindex="0"><code>$ kubectl get deployments
NAME           DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
redis-master   1         1         1            1           27s
</code></pre><pre tabindex="0"><code>$ kubectl get pods
NAME                            READY     STATUS    RESTARTS   AGE
redis-master-2353460263-1ecey   1/1       Running   0          1m
...
</code></pre><p>You should see all of the pods in your cluster so far. For now, that&rsquo;s just the Redis master. Let&rsquo;s give it some friends!</p>

<h2 id="start-the-redis-slaves">Start the Redis slaves&nbsp;<a class="hanchor" href="#start-the-redis-slaves" aria-label="Anchor link for: Start the Redis slaves">🔗</a></h2>
<pre tabindex="0"><code>$ kubectl create -f redis-slave-service.yaml
service &#34;redis-slave&#34; created
$ kubectl create -f redis-slave-deployment.yaml
deployment &#34;redis-slave&#34; created
</code></pre>
<h4 id="defining-the-deployment">Defining the deployment&nbsp;<a class="hanchor" href="#defining-the-deployment" aria-label="Anchor link for: Defining the deployment">🔗</a></h4>
<p>In the configuration file, we defined two replicas, unlike the master. By doing this, it tells Kubernetes that the minimum number of pods that should always be running is two. If one of your pods goes down, Kubernetes automatically creates a new one to support the application. If you want, you can try killing the Docker process for one of your pods to see it happen in real time.</p>

<h2 id="start-the-guestbook-front-end">Start the guestbook front-end&nbsp;<a class="hanchor" href="#start-the-guestbook-front-end" aria-label="Anchor link for: Start the guestbook front-end">🔗</a></h2>
<pre tabindex="0"><code>$ kubectl create -f frontend-service.yaml
service &#34;frontend&#34; created
$ kubectl create -f frontend-deployment.yaml
deployment &#34;frontend&#34; created
</code></pre><p>The front-end is a PHP application with an AJAX interface and Angular-based UI. When using the form on the front-end application, it talks to the Redis master or slave, depending on if it&rsquo;s reading or writing to Redis. Again, we&rsquo;re deploying the front-end with multiple replicas. In this case, there will be three pods to support the front-end.</p>

<h2 id="say-hello">Say hello!&nbsp;<a class="hanchor" href="#say-hello" aria-label="Anchor link for: Say hello!">🔗</a></h2>
<p>Once you&rsquo;ve finished deploying everything, your web app should now be accessible! To get the full domain from AWS, run this command to figure out where to look.</p>
<pre tabindex="0"><code>$ kubectl get deploy/frontend svc/frontend -o wide
NAME           CLUSTER-IP   EXTERNAL-IP                                                             PORT(S)        AGE       SELECTOR
svc/frontend   10.3.0.175   aaebd8247ef2311e6a045021d1620193-54019671.us-east-2.elb.amazonaws.com   80:31020/TCP   1m        k8s-app=guestbook,tier=frontend

NAME              DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
deploy/frontend   3         3         3            3           1m
</code></pre><p>Congratulations, we&rsquo;re all finished!</p>

<h2 id="cleaning-up">Cleaning up&nbsp;<a class="hanchor" href="#cleaning-up" aria-label="Anchor link for: Cleaning up">🔗</a></h2>
<p>Once you&rsquo;re finished or when you want to stop running the guestbook, it&rsquo;s easy to get rid of the deployments and services we created. Using labels, all the deployments and services can be deleted with one command.</p>
<pre tabindex="0"><code>$ kubectl delete deployments,services -l &#34;app in (redis, guestbook)&#34;
</code></pre><p>And now your guestbook application is offline. (It was nice while it lasted!)</p>

<h2 id="learn-more-about-kubernetes-and-tectonic">Learn more about Kubernetes and Tectonic&nbsp;<a class="hanchor" href="#learn-more-about-kubernetes-and-tectonic" aria-label="Anchor link for: Learn more about Kubernetes and Tectonic">🔗</a></h2>
<p>If you want to explore more about Kubernetes, you can read some of the earlier articles in this series. You can also read the original tutorial published by Kubernetes <a href="https://github.com/kubernetes/kubernetes/tree/master/examples/guestbook">on GitHub</a>. Additionally, the upstream documentation for <a href="https://kubernetes.io/docs/home/">Kubernetes</a> and <a href="https://coreos.com/tectonic/docs/latest/">Tectonic</a> is thorough and can help answer more advanced questions.</p>
<p>Questions, Tectonic stories, or tips for beginners? Add your comments below.</p>]]></description></item><item><title>FAmSCo August 2017 elections: Thoughts on a global community</title><link>https://jwheel.org/blog/2017/07/famsco-august-2017-elections/</link><pubDate>Mon, 31 Jul 2017 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2017/07/famsco-august-2017-elections/</guid><description><![CDATA[<p>A new release of Fedora makes headlines this month. With every release, it also means a new round of the Fedora community leadership elections. On 24 July 2017, the <a href="https://communityblog.fedoraproject.org/elections-august-2017-nomination-open/">call for nominations</a> went out for candidates. The <a href="https://fedoraproject.org/wiki/Fedora_Engineering_Steering_Committee">Fedora Engineering Steering Committee</a> (FESCo), <a href="https://fedoraproject.org/wiki/Fedora_Ambassadors_Steering_Committee">Fedora Ambassador Steering Committee</a> (FAmSCo), and the <a href="https://fedoraproject.org/wiki/Council">Fedora Council</a> all have <a href="https://fedoraproject.org/wiki/Elections">seats open</a>. Already, discussions on nominations are happening. The candidate interview templates are <a href="https://pagure.io/fedora-commops/pull-request/113">being prepared</a>. Even now, the nomination lists are filling up. However, I want to share an opinion on the upcoming FAmSCo election specifically.</p>

<h2 id="past-term">Past term&nbsp;<a class="hanchor" href="#past-term" aria-label="Anchor link for: Past term">🔗</a></h2>
<p>In this past election, the Council encouraged the new FAmSCo to retool themselves. They should support the Ambassadors in a new age of Linux outreach and events. And they have done exactly that. Clarifications and improvements to the <a href="https://pagure.io/famsco/issue/415">mentorship policies</a> are taking place, the Fedora Ambassadors Membership Administration (FAMA) was <a href="https://pagure.io/famsco/issue/421">reformed</a>, and a Fedora Activity Day (FAD) for the LATAM region was <a href="https://pagure.io/famsco/issue/426">successfully planned and executed</a>. As a voting Ambassador, I am proud of all FAmSCo members and happy to see the progress they have made this term.</p>

<h2 id="one-concern">One concern&nbsp;<a class="hanchor" href="#one-concern" aria-label="Anchor link for: One concern">🔗</a></h2>
<p>However, one thing stood out to me the past election. All of the representatives on FAmSCo were only from the EMEA and LATAM regions. Part of the fault is that there were no NA candidates and only one candidate from APAC. Therefore, the benefit of this was that EMEA and LATAM communities were more in touch with FAmSCo, since members in their meeting included elected representatives. In NA and APAC, this was not the case.</p>
<p>For Ambassadors in these regions, we did not have an attendee in our meetings to share news with FAmSCo. If we wanted to keep up, we would have to dig deeper. In March, I filed two tickets to suggest <a href="https://pagure.io/famsco/issue/419">opening the mailing list</a> to public participation and <a href="https://pagure.io/famsco/issue/420">establishing an IRC channel</a> presence. Consequently, FAmSCo has improved on being more accessible and transparent for all Ambassadors.</p>
<p>However, there is still a disconnection when your region doesn&rsquo;t have an elected official to help represent the unique needs and perspectives of your region. In NA, I thought it would help to have a representative. This past June, I traveled to India and met with some Ambassadors in Pune, India. My discussions with them led me to believe that APAC needs representation in FAmSCo too.</p>

<h2 id="looking-ahead-to-the-next-famsco">Looking ahead to the next FAmSCo&nbsp;<a class="hanchor" href="#looking-ahead-to-the-next-famsco" aria-label="Anchor link for: Looking ahead to the next FAmSCo">🔗</a></h2>
<p>Three seats are open for this coming election in August, leaving four (fantastic and well-qualified) FAmSCo members from EMEA to serve another term. Therefore, this leaves one region of the world well-represented by the Fedora Ambassador leadership body. Seeing as there are <strong>three seats</strong> up for elections and <strong>three regions</strong> that could be represented, I encourage voters in the next FAmSCo election to <strong>remember how big the Fedora community is</strong>.</p>
<p>The planet is big, and it&rsquo;s hard to know what&rsquo;s happening in different countries, regions, and continents. While we are all united as Fedora Ambassadors, there are unique challenges that our Fedora friends from one region may face that others may not. There are cultural, language, and currency differences. Some communities have a better foundation while others need guidance and encouragement to grow. I encourage all participating voters in this next election to remember our friends around the world and to <strong>help keep everyone included and involved</strong> in the conversations that drive the project forward.</p>]]></description></item><item><title>Deploy CoreOS Tectonic to Amazon Web Services (AWS)</title><link>https://jwheel.org/blog/2017/07/tectonic-amazon-web-services-aws/</link><pubDate>Fri, 28 Jul 2017 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2017/07/tectonic-amazon-web-services-aws/</guid><description><![CDATA[<p><em>This is a short series to introduce Kubernetes, what it does, and how to experiment with it on Fedora. This is a beginner-oriented series to help introduce some higher level concepts and give examples of using it on Fedora. In the first post, we covered <a href="https://fedoramagazine.org/introduction-kubernetes-fedora/">key concepts in Kubernetes</a>. The second post showed how to build a <a href="https://fedoramagazine.org/minikube-kubernetes/">single-node Kubernetes deployment</a> on your own computer. This post builds on top of the Fedora Magazine series by showing how to deploy CoreOS Tectonic to Amazon Web Services (AWS).</em></p>
<hr>
<p>Welcome back to the <strong>Kubernetes and Fedora</strong> series. Each week, we build on the previous articles in the series to help introduce you to using Kubernetes. This article takes off from running Kubernetes on your own hardware and moves us one step closer to the cloud. By the end of this article, you will…</p>
<ul>
<li>Understand what CoreOS Tectonic is</li>
<li>Set up Amazon Web Services (AWS) for Tectonic</li>
<li>Deploy Tectonic to AWS</li>
</ul>
<p>This article is also based off of the excellent tutorial provided in the <a href="https://coreos.com/tectonic/docs/latest/tutorials/creating-aws.html">CoreOS documentation</a>. Let&rsquo;s get started!</p>

<h2 id="what-is-tectonic">What is Tectonic?&nbsp;<a class="hanchor" href="#what-is-tectonic" aria-label="Anchor link for: What is Tectonic?">🔗</a></h2>
<p>In the <a href="https://fedoramagazine.org/introduction-kubernetes-fedora/">first article</a>, some of the key concepts of Kubernetes and why it&rsquo;s useful were explained. Kubernetes automates the deployment and setting up of your infrastructure across the three layers (users, masters, nodes). If you&rsquo;re working on your own at a small scale, Kubernetes itself can be plenty to meet your needs. However, there is still a decent amount of human involvement in managing the different pieces of Kubernetes. If you&rsquo;re working with multiple people in a team and across different environments, vanilla Kubernetes can be a lot to manage. For an enterprise environment, there&rsquo;s still some unmet needs. This is where Tectonic steps in.</p>
<p>Tectonic is a commercial product offered by <a href="https://coreos.com/">CoreOS</a>, the providers of <a href="https://coreos.com/os/docs/latest">Container Linux</a> and the original developers of <code>etcd</code>, now one of the core components of Kubernetes. Tectonic takes all of the open source components and pre-packages them. The self-proclaimed goal of doing this is to let anyone build a Google-style infrastructure into a cloud or on-premise environment. The outcome for the user is that it&rsquo;s easy to install a Kubernetes infrastructure across many different environments. In addition to simplifying the installation of the various components of a Kubernetes stack, Tectonic also provides a management console, a container registry for building and sharing containers, additional tools for deployment, and a few other nice features.</p>
<p>If we think about Kubernetes as a cake like we did before with three layers, Tectonic is like the box you set it in. Now, you can take your cake anywhere, move it around, and stack it with other cakes-in-a-box. All of your cakes are in their own boxes and you don&rsquo;t have to worry about them accidentally being damaged. If you&rsquo;re still a little confused, this diagram might help make more sense of it.</p>
<p>
<figure>
  <img src="https://cdn.fedoramagazine.org/wp-content/uploads/2017/06/platform-features.png" alt="Understanding where CoreOS Tectonic fits into the Kubernetes puzzle" loading="lazy">
  <figcaption>Understanding where Tectonic fits into the Kubernetes puzzle. From coreos.com/tectonic (<a href="https://coreos.com/tectonic/" class="bare">https://coreos.com/tectonic/</a>)</figcaption>
</figure>
</p>
<p>Fortunately, Tectonic has a free license that lets you use it for ten nodes. In this example, we&rsquo;ll register, get a free license, and deploy it into AWS.</p>
<p>(<em>Note</em>: If you want to revert anything we do in this example, there&rsquo;s an easy way to dismantle it across AWS and bring your bill to $0.00.)</p>

<h2 id="pre-requisites">Pre-requisites&nbsp;<a class="hanchor" href="#pre-requisites" aria-label="Anchor link for: Pre-requisites">🔗</a></h2>
<p>In order to successfully run this guide, there&rsquo;s a few things you&rsquo;ll need first.</p>
<ul>
<li><strong>Amazon Web Services (AWS) account</strong> (<em>free</em>)
<ul>
<li>Register <a href="https://aws.amazon.com">here</a></li>
</ul>
</li>
<li><strong>CoreOS Tectonic account and license</strong> (<em>free</em>)
<ul>
<li>Register <a href="https://account.coreos.com/">here</a></li>
</ul>
</li>
<li><strong>A root-level or sub-domain</strong> (<em>e.g. example.com or k8s.example.com</em>)
<ul>
<li>If you look around, you can probably find some for less than USD$1 a year if you need one</li>
</ul>
</li>
<li><strong>Curiosity</strong>!</li>
</ul>

<h2 id="setting-up-dns-with-route-53">Setting up DNS with Route 53&nbsp;<a class="hanchor" href="#setting-up-dns-with-route-53" aria-label="Anchor link for: Setting up DNS with Route 53">🔗</a></h2>
<p>The first things we&rsquo;ll do is set up our domain with Route 53 in AWS. Route 53 can do a lot of things, like DNS management, traffic management, availability monitoring, domain registration, and more. However, we&rsquo;re only going to be using it for DNS management. Tectonic will use this to automatically provision DNS records for internal and external use.</p>

<h4 id="add-your-domain">Add your domain&nbsp;<a class="hanchor" href="#add-your-domain" aria-label="Anchor link for: Add your domain">🔗</a></h4>
<p>
<figure>
  <img src="https://cdn.fedoramagazine.org/wp-content/uploads/2017/06/tectonic-add-domain-route-53-283x300.png" alt="Adding a new domain to AWS Route 53 for Tectonic" loading="lazy">
  <figcaption>Adding a new domain to AWS Route 53 for Tectonic</figcaption>
</figure>
</p>
<p>To add your domain to Route 53, follow these steps from AWS.</p>
<ol>
<li>From <em>Services</em>, select <em>Networking &amp; Content Delivery</em> &gt; <em>Route 53</em>.</li>
<li>Select <em>Hosted zones</em> from the left pane and click <em>Create Hosted Zone</em>.</li>
<li>Enter your domain or sub-domain, add a comment if you want, and choose a Public Zone for the type.</li>
</ol>
<p>Once you&rsquo;ve done this, you can go ahead and click &ldquo;<em>Create</em>&rdquo;.</p>

<h4 id="change-the-nameservers">Change the nameservers&nbsp;<a class="hanchor" href="#change-the-nameservers" aria-label="Anchor link for: Change the nameservers">🔗</a></h4>
<p>After adding the hosted zone to Route 53, you&rsquo;ll need to change the nameservers for your domain via the domain registrar (whoever you bought the domain from). Usually it should be easy to find this, but it varies among registrars. If you&rsquo;re having a hard figuring out how to do this, try searching for a how-to or contacting your registrar&rsquo;s support.</p>
<p>After you added the hosted zone, you should see the nameservers in Route 53. There will be four nameservers provided there. You can copy and paste them from Route 53 to your domain registrar. Also note that if you&rsquo;re using a subdomain, the instructions might be a little different. You can read how to do this in the <a href="https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/creating-migrating.html">Route 53 documentation</a>.</p>
<p>The nameservers could take minutes or hours to update, depending on how lucky you are. If you&rsquo;re impatient and want to check, open up a terminal and run this command. If you see the AWS nameservers in the output, then your domain has propagated and is now usable by Route 53.</p>
<pre tabindex="0"><code>dig -t ns &lt;example.com&gt;
</code></pre>
<h2 id="configuring-ec2-with-ssh-key-pair">Configuring EC2 with SSH key pair&nbsp;<a class="hanchor" href="#configuring-ec2-with-ssh-key-pair" aria-label="Anchor link for: Configuring EC2 with SSH key pair">🔗</a></h2>
<p>This guide assumes you already have an SSH key pair created on your system. If you don&rsquo;t have one generated, you can read how to generate one <a href="https://www.cyberciti.biz/faq/how-to-set-up-ssh-keys-on-linux-unix/">here</a>.</p>
<p>The next step for us is to add an SSH key pair to EC2, one of the compute engine products offered by AWS. We&rsquo;ll import an existing key on your system into EC2.</p>
<ol>
<li>From AWS, go to <em>Services</em> &gt; <em>Compute</em> &gt; <em>EC2</em>.</li>
<li>Confirm that you are in the <strong>correct EC2 region</strong> by checking the location next to your name in the menu bar.</li>
<li>Under <em>Network &amp; Security</em>, click <em>Key Pairs</em>.</li>
<li>Click <em>Import Key Pair</em>.</li>
<li>Either upload your public key file (<code>~/.ssh/id_rsa.pub</code>) or paste it into the text field. Don&rsquo;t forget to give it a name.</li>
</ol>
<p>And that&rsquo;s all you need to do!</p>

<h2 id="assigning-aws-user-privileges">Assigning AWS user privileges&nbsp;<a class="hanchor" href="#assigning-aws-user-privileges" aria-label="Anchor link for: Assigning AWS user privileges">🔗</a></h2>
<p>Tectonic does the magic of setting up AWS for you, so you don&rsquo;t have to manually add and create the services from the web interface. In order to do this, you need to add a user account that Tectonic can use to do all of the provisioning it needs. To do this, you&rsquo;ll need to create a new Access ID and Secret key pair from AWS.</p>
<ol>
<li>Select <em>Services</em> &gt; <em>Security, Identity &amp; Compliance</em> &gt; <em>IAM</em>.</li>
<li>From the left hand pane, click <em>Users</em>, then click <em>Add user</em>.</li>
<li>Set the user details:
<ol>
<li><em>User name</em> can be anything you like (I used <code>tectonic-mydomain.com</code>)</li>
<li><em>Access type</em> only needs to be <em>Programmatic access</em></li>
</ol>
</li>
<li>For permissions, click <em>Add user to group</em> and create a new group for your user.</li>
<li>When creating a new group, attach only the policies needed by Tectonic to operate correctly:
<ol>
<li><code>AmazonEC2FullAccess</code></li>
<li><code>IAMFullAccess</code></li>
<li><code>AmazonS3FullAccess</code></li>
<li><code>AmazonVPCFullAccess</code></li>
<li><code>AmazonRoute53FullAccess</code></li>
</ol>
</li>
<li>Finish creating the user. You&rsquo;ll then see the <em>Access key ID</em> and <em>Secret access key</em>. Hold onto these, you&rsquo;ll need them later. You won&rsquo;t get to see the secret key again!</li>
</ol>
<p>Now we&rsquo;re ready to install Tectonic! Let&rsquo;s grab your credentials next.</p>

<h2 id="download-tectonic-credentials">Download Tectonic credentials&nbsp;<a class="hanchor" href="#download-tectonic-credentials" aria-label="Anchor link for: Download Tectonic credentials">🔗</a></h2>
<p>Jump back over to the <a href="https://account.coreos.com/">CoreOS accounts page</a>. When you&rsquo;re logged in, you&rsquo;ll see the <em>Account Assets</em> area. Download the CoreOS license file and pull secret. Later on in the installer, you&rsquo;ll need to insert these to finish the installation.</p>

<h2 id="running-the-installer">Running the installer&nbsp;<a class="hanchor" href="#running-the-installer" aria-label="Anchor link for: Running the installer">🔗</a></h2>
<p>Now things get interesting! We finally get to install and deploy Tectonic into AWS. The installer takes the form of a graphical installer in your web browser. To use the installer, you need to download the binary and run it. If you&rsquo;re curious, you can find the installer source code <a href="https://github.com/coreos/tectonic-installer">on GitHub</a>.</p>

<h4 id="download-and-run-installer">Download and run installer&nbsp;<a class="hanchor" href="#download-and-run-installer" aria-label="Anchor link for: Download and run installer">🔗</a></h4>
<p>First, open up a new terminal window and navigate to a directory you want to download the installer to. Even though you likely won&rsquo;t need to run the installer again, you will want to hang on to this if you ever want to easily dismantle everything in AWS later.</p>
<pre tabindex="0"><code>curl -O https://releases.tectonic.com/tectonic-1.6.4-tectonic.1.tar.gz
</code></pre><p>Next, extract the tarball and navigate into the directory.</p>
<pre tabindex="0"><code>tar -xzvf tectonic-1.6.4-tectonic.1.tar.gz
cd tectonic/tectonic-installer
</code></pre><p>Now execute the installer binary. After running this, a new browser window will open that features the graphical installer.</p>
<pre tabindex="0"><code>./linux/installer
</code></pre><p>
<figure>
  <img src="https://cdn.fedoramagazine.org/wp-content/uploads/2017/06/tectonic-installer-aws.png" alt="Now we&rsquo;re ready to deploy Tectonic into AWS!" loading="lazy">
  <figcaption>Now we’re ready to deploy Tectonic into AWS!</figcaption>
</figure>
</p>

<h4 id="running-the-installer-1">Running the installer&nbsp;<a class="hanchor" href="#running-the-installer-1" aria-label="Anchor link for: Running the installer">🔗</a></h4>
<p>The installer is thorough and assumes safe defaults for most of the steps. Be sure to have your AWS Access and Secret ID keys on hand. You should be able to run through the installer without issue. If you&rsquo;re confused about what any of the values mean or want to make custom changes, you can read more in the <a href="https://coreos.com/tectonic/docs/latest/tutorials/installing-tectonic.html">upstream documentation</a>.</p>
<p>Once you&rsquo;re finished, congrats! You&rsquo;ve successfully installed Tectonic!</p>

<h2 id="check-out-your-tectonic-install">Check out your Tectonic install&nbsp;<a class="hanchor" href="#check-out-your-tectonic-install" aria-label="Anchor link for: Check out your Tectonic install">🔗</a></h2>
<p>Once you finish the installation successfully, your Tectonic installation will be accessible within AWS. You can navigate to the domain you specified during the install to find it. Unless you added a CA authority and certificates, your browser will probably complain about invalid SSL certificates, but you can ignore the warning safely. It might also take a few minutes before the URL is accessible, so if you were looking for a coffee or tea break, now would be a good time!</p>
<p>Once you&rsquo;re logged in, you should see something like this.</p>
<p>
<figure>
  <img src="https://cdn.fedoramagazine.org/wp-content/uploads/2017/06/tectonic-status-page.png" alt="Looking at a freshly installed Tectonic status page on AWS" loading="lazy">
  <figcaption>Looking at a freshly installed Tectonic status page on AWS</figcaption>
</figure>
</p>
<p>
<figure>
  <img src="https://cdn.fedoramagazine.org/wp-content/uploads/2017/06/prometheus-monitoring.png" alt="A more advanced use case of what Tectonic can do with monitoring" loading="lazy">
  <figcaption>A more advanced use case of what Tectonic can do with monitoring</figcaption>
</figure>
</p>

<h2 id="blow-it-all-away">Blow it all away!&nbsp;<a class="hanchor" href="#blow-it-all-away" aria-label="Anchor link for: Blow it all away!">🔗</a></h2>
<p>If you&rsquo;re like me, you might be frustrated by guides that tell you how to install things but not how to take it all apart. Fortunately, this guide not only tells you how to do that, but the Tectonic installer also makes it super easy to do. If you&rsquo;re sure that you&rsquo;re done with Tectonic and don&rsquo;t want any leftovers to remain in AWS, this is the best way to do it, instead of deleting everything manually from the AWS Console.</p>
<p>Every installation has a time-stamped folder in the <code>tectonic</code> directory we used earlier. First, you need to navigate into the specific folder for the cluster you installed. It&rsquo;s important to be inside of this directory first.</p>
<pre tabindex="0"><code>cd tectonic/tectonic-installer/linux/clusters/&lt;CLUSTERNAME&gt;
</code></pre><p><code>&lt;CLUSTERNAME&gt;</code> will be the time-stamped directory. Once you&rsquo;re in the folder, run this command to trigger the uninstaller. After running this, you&rsquo;ll see the installer slowly dismantle everything and delete any leftovers in AWS.</p>
<pre tabindex="0"><code>../../terraform destroy
</code></pre><p>Once it finishes, you should see an output message confirming how many AWS resources were destroyed. And now you&rsquo;re back to where you started.</p>

<h2 id="learn-more-about-tectonic">Learn more about Tectonic&nbsp;<a class="hanchor" href="#learn-more-about-tectonic" aria-label="Anchor link for: Learn more about Tectonic">🔗</a></h2>
<p>If you thought this was exciting and want to learn more, there is no shortage of resources for you to read. You can learn more about Tectonic from the <a href="https://coreos.com/tectonic/">CoreOS website</a> or the <a href="https://tectonic.com/blog/announcing-tectonic/">original release announcement</a>. You can also dig into the installer&rsquo;s source code <a href="https://github.com/coreos/tectonic-installer">on GitHub</a>. If you&rsquo;re still trying to wrap your head around Tectonic, there&rsquo;s a good write-up <a href="https://virtualizationreview.com/articles/2017/04/04/coreos-tectonic-to-shake-up-kubernetes.aspx">on virtualizationreview.com</a>.</p>
<p>Next week, we&rsquo;ll install a simple guestbook application to our Tectonic installation to see how it all works and what you can do with it. Stay tuned!</p>
<p>Questions, Tectonic stories, or tips for beginners? Add your comments below.</p>]]></description></item><item><title>Ura Design crowdfunds free design for open source projects</title><link>https://jwheel.org/blog/2017/07/ura-design-crowdfunds-design/</link><pubDate>Tue, 25 Jul 2017 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2017/07/ura-design-crowdfunds-design/</guid><description><![CDATA[<p><a href="https://opensource.com/article/17/6/ura-design-open-source-projects"><em>This article was originally published on Opensource.com.</em></a></p>
<hr>
<p><a href="/blog/2017/06/ura-logo.png">
<figure>
  <img src="/blog/2017/06/ura-logo.png" alt="Ura Design logo" loading="lazy">
</figure>
</a>Open source software is nothing new in 2017. Even now, big tech giants are exploring open source. More and more companies allow employees to contribute to open source software on company hours, if it isn&rsquo;t altogether encouraged. However, design assets and work have not enjoyed the same popularity with open source licensing and use as software has. However, Albanian design agency Ura Design is helping change this.</p>
<p>The team consists of four people: <a href="https://elioqoshi.me/">Elio Qoshi</a>, <a href="https://redon.skikuli.com/about/">Redon Skikuli</a>, <a href="http://konstantinidis.cc/">Giannis Konstantinidis</a>, and <a href="https://lushka.al/">Anxhelo Lushka</a>. <a href="https://ura.design/">Ura Design</a> started from an idea. The team believed that many open source projects are full of capabilities and features, but their design can make it difficult for users to effectively use the software. This could be through user experience, branding, or accessibility. And the goal? To help bring these better design principles to open source projects at little to no cost. &ldquo;In open source, there are amazing projects that are poorly communicated with the outside world. By communication, we mean visual communications, branding, even marketing. That is nonexistent for many reasons. There is a connection between communicating your project well and also getting contributors or users on board,&rdquo; says Skikuli.</p>
<p>
<figure>
  <img src="/blog/2017/06/ura-design-team.png" alt="The Ura Design team, left to right: Elio Qoshi, Redon Skikuli, Giannis Konstantinidis, Anxhelo Lushka" loading="lazy">
  <figcaption>The Ura Design team, left to right: Elio Qoshi, Redon Skikuli, Giannis Konstantinidis, Anxhelo Lushka</figcaption>
</figure>
</p>
<p>The Ura Design team helps open source projects improve their design so they can focus on great code.</p>

<h2 id="how-it-works">How it works&nbsp;<a class="hanchor" href="#how-it-works" aria-label="Anchor link for: How it works">🔗</a></h2>
<p>Together, the four of them work with open source project owners to help them bring better design elements to their projects. The principles of <a href="https://ind.ie/ethical-design/">ethical design</a> are part of the goals and values of the project.</p>
<p>Some of their past projects include <a href="https://www.mozilla.org/en-US/">Mozilla</a>, the <a href="https://www.torproject.org/">Tor Project</a>, <a href="https://fsfe.org/">Free Software Foundation Europe</a>, <a href="http://www.glucosio.org/">Glucosio</a>, and more. The team takes contract work with companies or communities with a budget, but for projects with less financial support, they&rsquo;ll even do the work free. This is in part supported by their <a href="https://www.patreon.com/ura">Patreon page</a>, where anyone can subscribe or see updates from Ura Design.</p>
<p>Their Patreon page is part of the reason Ura Design is able to take on some projects at no cost. &ldquo;Since there are working hours involved, we are asking for people to make small contributions to help us pay living costs, so we work for small projects who apply for free or minimal design support from us. This is our way of supporting some open source initiatives that we think are worth it,&rdquo; says Skikuli. Right now, they have 22 backers to the project, which lets them cover most infrastructure costs. Some of the goals for the team now is to expand into photography to release work into the public domain.</p>
<p>
<figure>
  <img src="/blog/2017/06/ura-patreon-screenshot.png" alt="Ura Design Patreon page" loading="lazy">
  <figcaption>Ura Design Patreon: <a href="https://patreon.com/ura" class="bare">https://patreon.com/ura</a></figcaption>
</figure>
</p>

<h2 id="past-projects">Past projects&nbsp;<a class="hanchor" href="#past-projects" aria-label="Anchor link for: Past projects">🔗</a></h2>
<p>Ura Design has worked with many open source projects already. Some of their work covers projects at <a href="https://github.com/mozilla/OpenDesign/issues/98">Mozilla</a>, the <a href="https://github.com/TheTorProject/tor-media">Tor Project</a>, Glucosio, <a href="https://opensource.com/article/17/4/linux-chromebook-gallium-os">GalliumOS</a>, <a href="https://opensource.com/article/17/3/open-labs-48-hour-hackathon-albania">Open Labs Hackerspace</a>, and more. You can see the full list of <a href="https://ura.design/works/">past works</a> on their website.</p>

<h4 id="mozilla">Mozilla&nbsp;<a class="hanchor" href="#mozilla" aria-label="Anchor link for: Mozilla">🔗</a></h4>
<p><a href="/blog/2017/05/mozilla-i10n-mentor-logo.png">
<figure>
  <img src="/blog/2017/05/mozilla-i10n-mentor-logo.png" alt="Mozilla Localization team mentorship logo by Ura Design" loading="lazy">
</figure>
</a>The Mozilla localization team was looking to send a reward to their community translators around the world. Specifically, it was to celebrate the relationships formed between mentors and mentees over the years. The localization team was hoping to design t-shirts that captured these relationships and why they were important for the community.</p>
<p>For Mozilla, Qoshi had an existing relationship with Mozilla as a contributor. He was asked to help design and capture this connection inside of the localization community for Mozilla. The final design focused on two lions, one big and one small, looking at each other. &ldquo;It was nice effort for contributors who have been mentoring others to get recognized for their contributions. Good design breaks off a conversation even for a project like this,&rdquo; Qoshi said.</p>

<h4 id="the-tor-project">The Tor Project&nbsp;<a class="hanchor" href="#the-tor-project" aria-label="Anchor link for: The Tor Project">🔗</a></h4>
<p>Working with the Tor Project was a unique experience for Ura Design. The Tor Project was looking at rebranding the entire project. The end goal was to try to improve the accessibility of the project by incorporating good design elements.</p>
<p>
<figure>
  <img src="/blog/2017/05/tor-logo.png" alt="Tor Project rebranding by Ura Design" loading="lazy">
  <figcaption>Part of the new branding used by the Tor Project</figcaption>
</figure>
</p>
<p>Together with the Tor Project leadership, Ura Design helped lead the rebranding of the project. This included graphical assets, logos, and corporate identity. Today, you can see the new branding featured across Tor&rsquo;s web presence online. There are still plans to continue to roll these changes out over the coming year.</p>

<h4 id="logobridge">Logobridge&nbsp;<a class="hanchor" href="#logobridge" aria-label="Anchor link for: Logobridge">🔗</a></h4>
<p>The newest project from the team is <a href="https://ura.design/logobridge/">Logobridge</a>. From unused work or small samples, Ura Design releases several new logos into the public domain each month. People are encouraged to use them in their projects, for icons, for placeholders, or anything they want. There&rsquo;s no restrictions on how the logos can be used. Anyone can download the source SVG files to use in vector imaging software, like Adobe Illustrator or Inkscape.</p>
<p>Most of the logos designed through Logobridge are supported by monthly subscribers to Ura Design. It was from this that they decided to start Logobridge. You can see all of the logos they have <a href="https://ura.design/logobridge/">on their website</a>.</p>

<h2 id="got-projects">Got projects?&nbsp;<a class="hanchor" href="#got-projects" aria-label="Anchor link for: Got projects?">🔗</a></h2>
<p>Ura Design is still relatively new, but they hope to continue impacting open source projects through their work. To learn more about Ura Design, you can visit their <a href="https://ura.design/">website</a> or read their <a href="https://ura.design/category/blog/">blog</a>. Additionally, you can follow them on <a href="https://www.facebook.com/uracreative/">Facebook</a> or <a href="https://www.twitter.com/uracreative">Twitter</a> for other news and updates from the team. If you want to support their work, you can visit their <a href="https://www.patreon.com/ura">Patreon page</a>. And if you&rsquo;re an open source project? The Ura Design team encourages you to get in touch!</p>]]></description></item><item><title>Clustered computing on Fedora with Minikube</title><link>https://jwheel.org/blog/2017/07/minikube-kubernetes/</link><pubDate>Fri, 07 Jul 2017 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2017/07/minikube-kubernetes/</guid><description><![CDATA[<p><em><strong>This article was originally published <a href="https://fedoramagazine.org/minikube-kubernetes/">on the Fedora Magazine</a>.</strong></em></p>
<hr>
<p><em>This is a short series to introduce Kubernetes, what it does, and how to experiment with it on Fedora. This is a beginner-oriented series to help introduce some higher level concepts and give examples of using it on Fedora. In the first post, we covered <a href="https://fedoramagazine.org/introduction-kubernetes-fedora/">key concepts in Kubernetes</a>. This second post shows you how to build a single-node Kubernetes deployment on your own computer.</em></p>
<hr>
<p>Once you have a better understanding of what the key concepts and terminology in Kubernetes are, getting started is easier. Like many programming tutorials, this tutorial shows you how to build a &ldquo;Hello World&rdquo; application and deploy it locally on your computer using Kubernetes. This is a simple tutorial because there aren&rsquo;t multiple nodes to work with. Instead, the only device we&rsquo;re using is a single node (a.k.a. your computer). By the end, you&rsquo;ll see how to deploy a Node.js application into a Kubernetes pod and manage it with a deployment on Fedora.</p>
<p>This tutorial isn&rsquo;t made from scratch. You can find the <a href="https://kubernetes.io/docs/tutorials/stateless-application/hello-minikube/">original tutorial</a> in the official Kubernetes documentation. This article adds some changes that will let you do the same thing on your own Fedora computer.</p>

<h2 id="introducing-minikube">Introducing Minikube&nbsp;<a class="hanchor" href="#introducing-minikube" aria-label="Anchor link for: Introducing Minikube">🔗</a></h2>
<p><a href="https://kubernetes.io/docs/getting-started-guides/minikube/">Minikube</a> is an official tool developed by the Kubernetes team to help make testing it out easier. It lets you run a single-node Kubernetes cluster through a virtual machine on your own hardware. Beyond using it to play around with or experiment for the first time, it&rsquo;s also useful as a testing tool if you&rsquo;re working with Kubernetes daily. It does support many of the features you&rsquo;d want in a production Kubernetes environment, like DNS, NodePorts, and container run-times.</p>

<h2 id="installation">Installation&nbsp;<a class="hanchor" href="#installation" aria-label="Anchor link for: Installation">🔗</a></h2>
<p>This tutorial requires virtual machine and container software. There are many options you can use. Minikube supports <code>virtualbox</code>, <code>vmwarefusion</code>, <code>kvm</code>, and <code>xhyve</code> drivers for virtualization. However, this guide will use KVM since it&rsquo;s already packaged and available in Fedora. We&rsquo;ll also use Node.js for building the application and Docker for putting it in a container.</p>

<h4 id="pre-requirements">Pre-requirements&nbsp;<a class="hanchor" href="#pre-requirements" aria-label="Anchor link for: Pre-requirements">🔗</a></h4>
<p>You can install the prerequisites with this command.</p>
<pre tabindex="0"><code>$ sudo dnf install kubernetes libvirt-daemon-kvm kvm nodejs docker
</code></pre><p>After installing these packages, you&rsquo;ll need to add your user to the right group to let you use KVM. The following commands will add your user to the group and then update your current session for the group change to take effect.</p>
<pre tabindex="0"><code>$ sudo usermod -a -G libvirt $(whoami)
$ newgrp libvirt
</code></pre>
<h4 id="docker-kvm-drivers">Docker KVM drivers&nbsp;<a class="hanchor" href="#docker-kvm-drivers" aria-label="Anchor link for: Docker KVM drivers">🔗</a></h4>
<p>If using KVM, you will also need to install the KVM drivers to work with Docker. You need to add <a href="https://github.com/docker/machine/releases">Docker Machine</a> and the <a href="https://github.com/dhiltgen/docker-machine-kvm/releases/">Docker Machine KVM Driver</a> to your local path. You can check their pages on GitHub for the latest versions, or you can run the following commands for specific versions. These were tested on a Fedora 25 installation.</p>

<h5 id="docker-machine">Docker Machine&nbsp;<a class="hanchor" href="#docker-machine" aria-label="Anchor link for: Docker Machine">🔗</a></h5>
<pre tabindex="0"><code>$ curl -L https://github.com/docker/machine/releases/download/v0.12.0/docker-machine-`uname -s`-`uname -m` &gt;/tmp/docker-machine
$ chmod +x /tmp/docker-machine
$ sudo cp /tmp/docker-machine /usr/local/bin/docker-machine
</code></pre>
<h5 id="docker-machine-kvm-driver">Docker Machine KVM Driver&nbsp;<a class="hanchor" href="#docker-machine-kvm-driver" aria-label="Anchor link for: Docker Machine KVM Driver">🔗</a></h5>
<p>This installs the CentOS 7 driver, but it also works with Fedora.</p>
<pre tabindex="0"><code>$ curl -L https://github.com/dhiltgen/docker-machine-kvm/releases/download/v0.10.0/docker-machine-driver-kvm-centos7 &gt;/tmp/docker-machine-driver-kvm
$ chmod +x /tmp/docker-machine-driver-kvm
$ sudo cp /tmp/docker-machine-driver-kvm /usr/local/bin/docker-machine-driver-kvm
</code></pre>
<h4 id="installing-minikube">Installing Minikube&nbsp;<a class="hanchor" href="#installing-minikube" aria-label="Anchor link for: Installing Minikube">🔗</a></h4>
<p>The final step for installation is getting Minikube itself. Currently, there is no package in Fedora available, and official documentation recommends grabbing the binary and moving it your local path. To download the binary, make it executable, and move it to your path, run the following.</p>
<pre tabindex="0"><code>$ curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
$ chmod +x minikube
$ sudo mv minikube /usr/local/bin/
</code></pre><p>Now you&rsquo;re ready to build your cluster.</p>

<h2 id="create-the-minikube-cluster">Create the Minikube cluster&nbsp;<a class="hanchor" href="#create-the-minikube-cluster" aria-label="Anchor link for: Create the Minikube cluster">🔗</a></h2>
<p>Now that you have everything installed and in the right place, you can create your Minikube cluster and get started. To start Minikube, run this command.</p>
<pre tabindex="0"><code>$ minikube start --vm-driver=kvm
</code></pre><p>Next, you&rsquo;ll need to set the context. Context is how <code>kubectl</code> (the command-line interface for Kubernetes) knows what it&rsquo;s dealing with. To set the context for Minikube, run this command.</p>
<pre tabindex="0"><code>$ kubectl config use-context minikube
</code></pre><p>As a check, make sure that <code>kubectl</code> can communicate with your cluster by running this command.</p>
<pre tabindex="0"><code>$ kubectl cluster-info
Kubernetes master is running at https://192.168.99.100:8443
To further debug and diagnose cluster problems, use &#39;kubectl cluster-info dump&#39;.
</code></pre>
<h2 id="build-your-application">Build your application&nbsp;<a class="hanchor" href="#build-your-application" aria-label="Anchor link for: Build your application">🔗</a></h2>
<p>Now that Kubernetes is ready, we need to have an application to deploy in it. This article uses the same Node.js application as the official tutorial in the Kubernetes documentation. Create a folder called <code>hellonode</code> and create a new file called <code>server.js</code> with your favorite text editor.</p>
<pre tabindex="0"><code>var http = require(&#39;http&#39;);

var handleRequest = function(request, response) {
 console.log(&#39;Received request for URL: &#39; + request.url);
 response.writeHead(200);
 response.end(&#39;Hello world!&#39;);
};
var www = http.createServer(handleRequest);
www.listen(8080);
</code></pre><p>Now try running your application and running it.</p>
<pre tabindex="0"><code>$ node server.js
</code></pre><p>While it&rsquo;s running, you should be able to access it on <a href="http://localhost:8080/">localhost:8080</a>. Once you verify it&rsquo;s working, hit <code>Ctrl+C</code> to kill the process.</p>

<h2 id="create-docker-container">Create Docker container&nbsp;<a class="hanchor" href="#create-docker-container" aria-label="Anchor link for: Create Docker container">🔗</a></h2>
<p>Now you have an application to deploy! The next step is to get it packaged into a Docker container (that you&rsquo;ll pass to Kubernetes later). You&rsquo;ll need to create a <code>Dockerfile</code> in the same folder as your <code>server.js</code> file. This guide uses an existing Node.js Docker image. It exposes your application on port 8080, copies <code>server.js</code> to the image, and runs it as a server. Your <code>Dockerfile</code> should look like this.</p>
<pre tabindex="0"><code>FROM node:6.9.2
EXPOSE 8080
COPY server.js .
CMD node server.js
</code></pre><p>If you&rsquo;re familiar with Docker, you&rsquo;re likely used to pushing your image to a registry. In this case, since we&rsquo;re deploying it to Minikube, you can build it using the same Docker host as the Minikube virtual machine. For this to happen, you&rsquo;ll need to use the Minikube Docker daemon.</p>
<pre tabindex="0"><code>$ eval $(minikube docker-env)
</code></pre><p>Now you can build your Docker image with the Minikube Docker daemon.</p>
<pre tabindex="0"><code>$ docker build -t hello-node:v1 .
</code></pre><p>Huzzah! Now you have an image Minikube can run.</p>

<h2 id="create-minikube-deployment">Create Minikube deployment&nbsp;<a class="hanchor" href="#create-minikube-deployment" aria-label="Anchor link for: Create Minikube deployment">🔗</a></h2>
<p>If you remember from the <a href="https://fedoramagazine.org/introduction-kubernetes-fedora/">first part</a> of this series, deployments watch your application&rsquo;s health and reschedule it if it dies. Deployments are the supported way of creating and scaling pods. <code>kubectl run</code> creates a deployment to manage a pod. We&rsquo;ll create one that uses the <code>hello-node</code> Docker image we just built.</p>
<pre tabindex="0"><code>$ kubectl run hello-node --image=hello-node:v1 --port=8080
</code></pre><p>Next, check that the deployment was created successfully.</p>
<pre tabindex="0"><code>$ kubectl get deployments
NAME         DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
hello-node   1         1         1            1           30s
</code></pre><p>Creating the deployment also creates the pod where the application is running. You can view the pod with this command.</p>
<pre tabindex="0"><code>$ kubectl get pods
NAME                          READY     STATUS    RESTARTS   AGE
hello-node-1644695913-k2314   1/1       Running   0          3
</code></pre><p>Finally, let&rsquo;s look at what the configuration looks like. If you&rsquo;re familiar with Ansible, the configuration files for Kubernetes also use easy-to-read YAML. You can see the full configuration with this command.</p>
<pre tabindex="0"><code>$ kubectl config view
</code></pre><p><code>kubectl</code> does many things. To read more about what you can do with it, you can read the <a href="https://kubernetes.io/docs/user-guide/kubectl-overview/">documentation</a>.</p>

<h2 id="create-service">Create service&nbsp;<a class="hanchor" href="#create-service" aria-label="Anchor link for: Create service">🔗</a></h2>
<p>Right now, the pod is only accessible inside of the Kubernetes pod with its internal IP address. To see it in a web browser, you&rsquo;ll need to expose it as a service. To expose it as a service, run this command.</p>
<pre tabindex="0"><code>$ kubectl expose deployment hello-node --type=LoadBalancer
</code></pre><p>The type was specified as a <code>LoadBalancer</code> because Kubernetes will expose the IP outside of the cluster. If you were running a load balancer in a cloud environment, this how you&rsquo;d provision an external IP address. However, in this case, it exposes your application as a service in Minikube. And now, finally, you get to see your application. Running this command will open a new browser window with your application.</p>
<pre tabindex="0"><code>$ minikube service hello-node
</code></pre><p>
<figure>
  <img src="https://cdn.fedoramagazine.org/wp-content/uploads/2017/06/minikube-hello-world-browser-e1497995645454.png" alt="Minikube: Exposing Hello Minikube application in browser" loading="lazy">
</figure>
</p>
<p>Congratulations, you deployed your first containerized application via Kubernetes! But now, what if you need to our small Hello World application?</p>

<h2 id="how-do-we-push-changes">How do we push changes?&nbsp;<a class="hanchor" href="#how-do-we-push-changes" aria-label="Anchor link for: How do we push changes?">🔗</a></h2>
<p>The time has come when you&rsquo;re ready to make an update and push it. Edit your <code>server.js</code> file and change &ldquo;Hello world!&rdquo; to &ldquo;Hello again, world!&rdquo;</p>
<pre tabindex="0"><code>response.end(&#39;Hello again, world!&#39;);
</code></pre><p>And we&rsquo;ll build another Docker image. Note the version bump.</p>
<pre tabindex="0"><code>$ docker build -t hello-node:v2 .
</code></pre><p>Next, you need to give Kubernetes the new image to deploy.</p>
<pre tabindex="0"><code>$ kubectl set image deployment/hello-node hello-node=hello-node:v2
</code></pre><p>And now, your update is pushed! Like before, run this command to have it open in a new browser window.</p>
<pre tabindex="0"><code>$ minikube service hello-node
</code></pre><p>If your application doesn&rsquo;t come up any different, double-check that you updated the right image. You can troubleshoot by getting a shell into your pod by running the following command. You can get the pod name from the command run earlier (<code>kubectl get pods</code>). Once you&rsquo;re in the shell, check if the <code>server.js</code> file shows your changes.</p>
<pre tabindex="0"><code>$ kubectl exec -it &lt;pod-name&gt; bash
</code></pre>
<h2 id="cleaning-up">Cleaning up&nbsp;<a class="hanchor" href="#cleaning-up" aria-label="Anchor link for: Cleaning up">🔗</a></h2>
<p>Now that we&rsquo;re done, we can clean up the environment. To clear up the resources in your cluster, run these two commands.</p>
<pre tabindex="0"><code>$ kubectl delete service hello-node
$ kubectl delete deployment hello-node
</code></pre><p>If you&rsquo;re done playing with Minikube, you can also stop it.</p>
<pre tabindex="0"><code>$ minikube stop
</code></pre><p>If you&rsquo;re done using Minikube for a while, you can unset Minikube Docker daemon that we set earlier in this guide.</p>
<pre tabindex="0"><code>$ eval $(minikube docker-env -u)
</code></pre>
<h2 id="learn-more-about-kubernetes">Learn more about Kubernetes&nbsp;<a class="hanchor" href="#learn-more-about-kubernetes" aria-label="Anchor link for: Learn more about Kubernetes">🔗</a></h2>
<p>You can find the <a href="https://kubernetes.io/docs/tutorials/stateless-application/hello-minikube/">original tutorial</a> in the Kubernetes documentation. If you want to read more, there&rsquo;s plenty of great information online. The <a href="https://kubernetes.io/docs/home/">documentation</a> provided by Kubernetes is thorough and comprehensive.</p>
<p>Questions, Minikube stories, or tips for beginners? Add your comments below.</p>]]></description></item><item><title>Introduction to Kubernetes with Fedora</title><link>https://jwheel.org/blog/2017/07/introduction-kubernetes-fedora/</link><pubDate>Mon, 03 Jul 2017 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2017/07/introduction-kubernetes-fedora/</guid><description><![CDATA[<p><em><strong>This article was originally published <a href="https://fedoramagazine.org/introduction-kubernetes-fedora/">on the Fedora Magazine</a>.</strong></em></p>
<hr>
<p><em>This article is part of a short series that introduces Kubernetes. This beginner-oriented series covers some higher level concepts and gives examples of using Kubernetes on Fedora.</em></p>
<hr>
<p>The information technology world changes daily, and the demands of building scalable infrastructure become more important. Containers aren&rsquo;t anything new these days, and have various uses and implementations. But what about building scalable, containerized applications? By itself, Docker and other tools don&rsquo;t quite cut it, as far as building the infrastructure to support containers. How do you deploy, scale, and manage containerized applications in your infrastructure? This is where tools such as Kubernetes comes in. <a href="https://kubernetes.io/">Kubernetes</a> is an open source system that automates deployment, scaling, and management of containerized applications. Kubernetes was originally developed by Google before being donated to the <a href="https://en.wikipedia.org/wiki/Linux_Foundation#Cloud_Native_Computing_Foundation">Cloud Native Computing Foundation</a>, a project of the <a href="https://www.linuxfoundation.org/">Linux Foundation</a>. This article gives a quick precursor to what Kubernetes is and what some of the buzzwords really mean.</p>

<h2 id="what-is-kubernetes">What is Kubernetes?&nbsp;<a class="hanchor" href="#what-is-kubernetes" aria-label="Anchor link for: What is Kubernetes?">🔗</a></h2>
<p>Kubernetes simplifies and automates the process of deploying containerized applications at scale. Just like Ansible <a href="https://fedoramagazine.org/using-ansible-provision-vagrant-boxes/">orchestrates software</a>, Kubernetes orchestrates deploying infrastructure that supports the software. There are various &ldquo;layers of the cake&rdquo; that make Kubernetes a strong solution for building resilient infrastructure. It also assists with making systems that can grow at scale. If your application has increasing demands such as higher traffic, Kubernetes helps grow your environment to support increasing demands. This is one reason why Kubernetes is helpful for building long-term solutions for complex problems (even if it&rsquo;s not complex… yet).</p>
<p>
<figure>
  <img src="https://cdn.fedoramagazine.org/wp-content/uploads/2017/06/kubernetes-high-level-design.jpg" alt="Kubernetes: The high level design" loading="lazy">
  <figcaption>Kubernetes: The high level design. Daniel Smith, Robert Bailey, Kit Merker (<a href="https://www.slideshare.net/RohitJnagal/kubernetes-intro-public-kubernetes-meetup-4212015" class="bare">https://www.slideshare.net/RohitJnagal/kubernetes-intro-public-kubernetes-meetup-4212015</a>).</figcaption>
</figure>
</p>
<p>At a high level overview, imagine three different layers.</p>
<ul>
<li><strong>Users</strong>: People who deploy or create containerized applications to run in your infrastructure</li>
<li><strong>Master(s)</strong>: Manages and schedules your software across various other machines, for example in a clustered computing environment</li>
<li><strong>Nodes</strong>: Various machines to support the application, called <em>kubelets</em></li>
</ul>
<p>These three layers are orchestrated and automated by Kubernetes. One of the key pieces of the master (not included in the visual) is <strong>etcd</strong>. etcd is a lightweight and distributed key/value store that holds configuration data. Each node, or kubelet, can access this data in etcd through a HTTP/JSON API interface. The components of communication between master and node such as etcd are explained <a href="https://kubernetes.io/docs/concepts/architecture/master-node-communication/">in the official documentation</a>.</p>
<p>Another important detail not shown in the diagram is that you might have many masters. In a high-availability (HA) set-up, you can keep your infrastructure resilient by having multiple masters in case one happens to go down.</p>

<h2 id="terminology">Terminology&nbsp;<a class="hanchor" href="#terminology" aria-label="Anchor link for: Terminology">🔗</a></h2>
<p>It&rsquo;s important to understand the concepts of Kubernetes before you start to play around with it. There are many core concepts in Kubernetes, such as services, volumes, secrets, daemon sets, and jobs. However, this article explains four that are helpful for the next exercise of building a mini Kubernetes cluster. The three concepts are <em>pods</em>, <em>labels</em>, <em>replica sets</em>, and <em>deployments</em>.</p>

<h4 id="pods"><a href="https://kubernetes.io/docs/concepts/workloads/pods/pod/">Pods</a>&nbsp;<a class="hanchor" href="#pods" aria-label="Anchor link for: Pods">🔗</a></h4>
<p>If you imagine Kubernetes as a Lego® castle, pods are the smallest block you can pick out. By themselves, they are the smallest unit you can deploy. The containers of an application fit into a pod. The pod can be one container, but it can also be as many as needed. Containers in a pod are unique since they share the Linux namespace and aren&rsquo;t isolated from each other. In a world before containers, this would be similar to running an application on the same host machine.</p>
<p>When the pods share the same namespace, all the containers in a pod:</p>
<ul>
<li>Share an IP address</li>
<li>Share port space</li>
<li>Find each other over <em>localhost</em></li>
<li>Communicate over IPC namespace</li>
<li>Have access to shared volumes</li>
</ul>
<p>But what&rsquo;s the point of having pods? The main purpose of pods is to have groups of &ldquo;helping&rdquo; containers on the same namespace (co-located) and integrated together (co-managed) along with the main application container. Some examples might be logging or monitoring tools that check the health of your application, or backup tools that act when certain data changes.</p>
<p>In the big picture, containers in a single pod are always scheduled together too. However, Kubernetes doesn&rsquo;t automatically reschedule them to a new node if the node dies (more on this later).</p>

<h4 id="labels"><a href="https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/">Labels</a>&nbsp;<a class="hanchor" href="#labels" aria-label="Anchor link for: Labels">🔗</a></h4>
<p>Labels are a simple but important concept in Kubernetes. Labels are key/value pairs attached to <em>objects</em> in Kubernetes, like pods. They let you specify unique attributes of objects that actually mean something to humans. You can attach them when you create an object, and modify or add them later. Labels help you organize and select different sets of objects to interact with when performing actions inside of Kubernetes. For example, you can identify:</p>
<ul>
<li><strong>Software releases</strong>: Alpha, beta, stable</li>
<li><strong>Environments</strong>: Development, production</li>
<li><strong>Tiers</strong>: Front-end, back-end</li>
</ul>
<p>Labels are as flexible as you need them to be, and this list isn&rsquo;t comprehensive. Be creative when thinking of how to apply them.</p>

<h4 id="replica-sets"><a href="https://kubernetes.io/docs/concepts/workloads/controllers/replicaset/">Replica sets</a>&nbsp;<a class="hanchor" href="#replica-sets" aria-label="Anchor link for: Replica sets">🔗</a></h4>
<p>Replica sets are where some of the magic begins to happen with automatic scheduling or rescheduling. Replica sets ensure that a number of pod instances (called <em>replicas</em>) are running at any moment. If your web application needs to constantly have four pods in the front-end and two in the back-end, the replica sets are your insurance that number is always maintained. This also makes Kubernetes great for scaling. If you need to scale up or down, change the number of replicas.</p>
<p>When reading about replica sets, you might also see <em>replication controllers</em>. They are somewhat interchangeable, but replication controllers are older, semi-deprecated, and less powerful than replica sets. The main difference is that sets work with more advanced set-based selectors &ndash; which goes back to labels. Ideally, you won&rsquo;t have to worry about this much today.</p>
<p>Even though replica sets are where the scheduling magic happens to help make your infrastructure resilient, you won&rsquo;t actually interact with them much. Replica sets are managed by deployments, so it&rsquo;s unusual to directly create or manipulate replica sets. And guess what&rsquo;s next?</p>

<h4 id="deployments"><a href="https://kubernetes.io/docs/concepts/workloads/controllers/deployment/">Deployments</a>&nbsp;<a class="hanchor" href="#deployments" aria-label="Anchor link for: Deployments">🔗</a></h4>
<p>Deployments are another important concept inside of Kubernetes. Deployments are a declarative way to deploy and manage software. If you&rsquo;re familiar with Ansible, you can compare deployments to the playbooks of Ansible. If you&rsquo;re building your infrastructure out, you want to make sure it is easily reproducible without much manual work. Deployments are the way to do this.</p>
<p>Deployments offer functionality such as revision history, so it&rsquo;s always easy to rollback changes if something doesn&rsquo;t work out. They also manage any updates you push out to your application, and if something isn&rsquo;t working, it will stop rolling out your update and revert back to the last working state. Deployments follow the mathematical property of <a href="https://en.wikipedia.org/wiki/Idempotence">idempotence</a>, which means you define your specs once and use them many times to get the same result.</p>
<p>Deployments also get into imperative and declarative ways to build infrastructure, but this explanation is a quick, fly-by overview. You can read more <a href="https://kubernetes.io/docs/concepts/workloads/controllers/deployment/">detailed information</a> in the official documentation.</p>

<h2 id="installing-on-fedora">Installing on Fedora&nbsp;<a class="hanchor" href="#installing-on-fedora" aria-label="Anchor link for: Installing on Fedora">🔗</a></h2>
<p>If you want to start playing with Kubernetes, install it and some useful tools from the Fedora repositories.</p>
<pre tabindex="0"><code>sudo dnf install kubernetes
</code></pre><p>This command provides the bare minimum needed to get started. You can also install other cool tools like <em>cockpit-kubernetes</em> (integration with <a href="http://cockpit-project.org/">Cockpit</a>) and <em>kubernetes-ansible</em> (provisioning Kubernetes with <a href="https://www.ansible.com/">Ansible</a> playbooks and roles).</p>

<h2 id="learn-more-about-kubernetes">Learn more about Kubernetes&nbsp;<a class="hanchor" href="#learn-more-about-kubernetes" aria-label="Anchor link for: Learn more about Kubernetes">🔗</a></h2>
<p>If you want to read more about Kubernetes or want to explore the concepts more, there&rsquo;s plenty of great information online. The <a href="https://kubernetes.io/docs/home/">documentation</a> provided by Kubernetes is fantastic, but there are also other helpful guides from <a href="https://www.digitalocean.com/community/tutorials/an-introduction-to-kubernetes">DigitalOcean</a> and <a href="https://blog.giantswarm.io/understanding-basic-kubernetes-concepts-i-introduction-to-pods-labels-replicas/">Giant Swarm</a>. The next article in the series will explore building a mini Kubernetes cluster on your own computer to see how it really works.</p>
<p>Questions, Kubernetes stories, or tips for beginners? Add your comments below.</p>]]></description></item><item><title>What I discovered in Tirana, Albania</title><link>https://jwheel.org/blog/2017/05/open-labs-tirana-albania/</link><pubDate>Mon, 15 May 2017 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2017/05/open-labs-tirana-albania/</guid><description><![CDATA[<p>The past few months have brought many changes for me. I traveled throughout Europe to experience some of the open source conferences and communities across the continent. Along the way, I met incredible people with powerful stories about their own communities. However, there is one community that I knew about before I came to Europe. The <a href="https://openlabs.cc/en/">Open Labs Hackerspace</a> in Tirana, Albania is a special community that I was fortunate enough to discover and meet. Together, they have helped set in motion the open source way in their own city.</p>
<p>If you&rsquo;re outside of the Mediterranean region, the Open Labs Hackerspace might be one of the hidden secrets of the region that you never knew existed. Free software and open principles build the community&rsquo;s foundation. In their hackerspace, they support various open source projects with time, energy, and activism. Members work on various open source projects, ranging from <a href="https://fedoraproject.org/wiki/Overview">Fedora</a>, <a href="https://www.mozilla.org/">Mozilla</a>, <a href="https://nextcloud.com/">Nextcloud</a>, Wikipedia, <a href="https://www.openstreetmap.org/about">OpenStreetMap</a>, and more. But the open source way goes beyond the software. The hierarchy of this Albanian non-profit organization is flat and open too. The hackerspace places a strong emphasis on empowering others to have a voice and to take part in the governance. No question is ever dumb, and anyone who wants to learn is able to find someone who will help guide them in the right direction. The combined effect of open software and open culture has helped Open Labs grow over the past five years.</p>

<h2 id="why-open-labs">Why Open Labs?&nbsp;<a class="hanchor" href="#why-open-labs" aria-label="Anchor link for: Why Open Labs?">🔗</a></h2>
<p>There are many hackerspaces in the world, but why does Open Labs mean so much to me? They love free and open source software and believe in the open source way… sure. That&rsquo;s definitely part of it. But beyond the mission, beyond the activities, Open Labs fosters an inclusive and empowering culture. This culture has the effective of motivating others to understand that their voice matters and that they can have an impact on something far bigger than themselves. The hackerspace helps give young people in Tirana a platform to stand up and share their ideas. But beyond that, it provides them with the resources and community to help turn the ideas into reality.</p>
<p>So, what is the secret? Simply… the people.</p>
<p>Everything that the community here does, they take their unique passion and energy into those tasks. They invest their own personal resources into building solutions to answer complicated problems, inside and outside of Albania. Some of their work is best demonstrated in events that happened earlier this year. In March, Open Labs helped coordinate the first-ever <a href="https://opensource.com/article/17/3/open-labs-48-hour-hackathon-albania">48 hour hackathon</a> for United Nations <a href="https://sustainabledevelopment.un.org/sdgs">Sustainable Development Goals</a>. Later in March, they organized <a href="https://fedoramagazine.org/students-fedora-linux-weekend-2017/">Linux Weekend</a>, an introductory event to help introduce Linux to students. This was done by demonstrating what can be done with Linux and open source and then connecting students to professionals from Tirana and abroad. The organic energy that came from these events is almost immeasurable. Even an event report is hard to convey how inspiring that energy was.</p>
<p>This past weekend, from May 13-14, 2017, the community organized the fourth edition of the annual <a href="https://oscal.openlabs.cc/">Open Source Conference Albania</a> (OSCAL) in Tirana. This is the largest open source event in Albania and one of the most notable in southeast Europe. No event report for this yet, but you can expect one soon.</p>
<p>
<figure>
  <img src="/blog/2017/05/Fedora-meetup-at-OSCAL-2017.jpg" alt="Fedora Project community meet-up in Tirana, Albania for Open Labs Hackerspace&rsquo;s OSCAL 2017" loading="lazy">
  <figcaption>Fedora community meet-up for OSCAL 2017</figcaption>
</figure>
</p>

<h2 id="why-part-of-my-heart-is-at-open-labs">Why part of my heart is at Open Labs&nbsp;<a class="hanchor" href="#why-part-of-my-heart-is-at-open-labs" aria-label="Anchor link for: Why part of my heart is at Open Labs">🔗</a></h2>
<p>Whenever I visit Albania and visit Open Labs, I learn something new. There&rsquo;s many different types of things I learn. Sometimes it&rsquo;s something about an open source project or community. Other times, I learn about events and opportunities happening in the local Tirana area for open source. And then other times, I gain unique insight towards some of the unique challenges and problems that citizens face here. Every time I visit, my perspective is always broadened in a way that I wouldn&rsquo;t be able to normally find. It&rsquo;s exhilarating.</p>
<p>I am privileged and honored to be an official member of this community. However, I am mostly an observer in my role. The passion and interest are at the heart of the hackerspace. The members from Tirana have invested so much of themselves into this community, its mission, and its values. From reading, visiting, and talking with the people involved with Open Labs, you see many of their hearts dedicated to what they&rsquo;re doing. And when you see someone else who invests their heart into something, it&rsquo;s challenging to not lend some of your own too.</p>
<p>And in today&rsquo;s world, where the hearts of many people close with borders and the world shifts towards coldness, the warmth that radiates from Open Labs is refreshing, inspiring, and powerful.</p>

<h2 id="discover-open-labs">Discover Open Labs&nbsp;<a class="hanchor" href="#discover-open-labs" aria-label="Anchor link for: Discover Open Labs">🔗</a></h2>
<p>You can learn more about the Open Labs Hackerspace <a href="https://openlabs.cc/en/">on their website</a>. Additionally, you can also follow them along on <a href="https://www.facebook.com/openlabsAlbania">Facebook</a> and <a href="https://twitter.com/OpenLabsAlbania">Twitter</a> to see what they&rsquo;re up to. You can also see their <a href="https://forum.openlabs.cc/">Discourse forums</a> to say hello and take part in any discussion too.</p>]]></description></item><item><title>Turn on the lights</title><link>https://jwheel.org/blog/2017/04/lights/</link><pubDate>Wed, 19 Apr 2017 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2017/04/lights/</guid><description><![CDATA[<p><em>Originally published on 19 April 2017 at <a href="https://medium.com/@jwflory/turn-on-the-lights-267603e553b5">Medium.com</a>.</em><br>
<em>Republished on 25 October 2021 at jwheel.org/blog.</em></p>
<hr>
<p>Many times, I’ve sat down to write this. The same number of times, I never finish and delete it all. Many times, I’ve wondered how to say the things I want to say. I’ve been doing this for years. However, the motivation this time is different.</p>
<p>Two important events made me realize that writing this is important. A conversation with one of my friends about what was happening in my life reminded me of the critical, psychological benefit of communicating and being honest and open about myself. The second thing was an insight from an article I saw on Twitter, about Sheryl Sandberg and <a href="http://time.com/sheryl-sandberg-option-b/">dealing with grief</a>. The profound insight in the article to me was the intersection between effective leadership and expressing emotion. “Expressing emotion when you’ve gone through extreme pain is not weakness. It is humanity.”</p>
<p>
<figure>
  <img src="/blog/2017/04/lights-1.jpeg" alt="A close-up of a lit vintage-style lightbulb hanging from a black cord, revealing a bright, glowing spiral filament inside. The background is dark and out of focus, showing faint warm lights and silhouettes of chairs." loading="lazy">
  <figcaption>It’s time to turn on the lights. (Armando Ascorve Morales (<a href="https://unsplash.com/@armandoascorve" class="bare">https://unsplash.com/@armandoascorve</a>), from Unsplash (<a href="https://unsplash.com/photos/pFukAtB81ZQ" class="bare">https://unsplash.com/photos/pFukAtB81ZQ</a>))</figcaption>
</figure>
</p>
<p>This post isn’t like anything I’ve written before, but it is a necessary next step for me to move forward.</p>
<p>I live with depression.</p>
<p>It’s a battle that has various turns and twists, and different highs and lows. There are days, weeks, even months where I don’t feel its weight. But there are also long periods of time where it envelops me and becomes my world.</p>
<p>There are some insights I’ve learned over time, though. In the spirit of being more open and true to myself, I want to share some of my experiences and also some advice from those experiences.</p>

<h2 id="in-my-own-world">In my own world&nbsp;<a class="hanchor" href="#in-my-own-world" aria-label="Anchor link for: In my own world">🔗</a></h2>
<p>Others who have experiences of their own can recount similar details to the looming feelings that overtake them. Sometimes it comes at the most unexpected moments, even if everything around you is <em>going right</em>. Yet, there it is.</p>
<p>The looming feeling deep in your stomach.</p>
<p>The heavy weight that presses down on your consciousness.</p>
<p>Sleeping early and waking up late, or not sleeping at all.</p>
<p>The sucking of your productive energy towards meaningless tasks, like spending more of your time reading about the lives of other people instead of living your own. The feelings have a wide range. Regardless of the specifics, anyone who has walked this quiet path can take these general points and recount them into their own story.</p>
<p>
<figure>
  <img src="/blog/2017/04/lights-2.jpeg" alt="A person wearing a full white spacesuit and helmet stands partially obscured within a dense, lush green forest. The deep green foliage surrounds the figure, creating a stark contrast with the bright white suit." loading="lazy">
  <figcaption>After a while, it feels like you’re a lost explorer, navigating the endless forest of your own emotions and feelings. (Martin Reisch (<a href="https://unsplash.com/@safesolvent" class="bare">https://unsplash.com/@safesolvent</a>), from Unsplash (<a href="https://unsplash.com/photos/pEb-Xf_qM0s" class="bare">https://unsplash.com/photos/pEb-Xf_qM0s</a>))</figcaption>
</figure>
</p>
<p>The most difficult part is the creeping feeling when the depression begins to take hold, but it feels like there’s nothing that can stop it.</p>
<p>Now that I’ve had more years to reflect on my depression, I’m better able to pick out some of its origins and characteristics. Even knowing these things, there isn’t one form of depression or one way it looks like. What form it takes on depends on contextual evidence and what’s happening around me.</p>

<h3 id="depression-is">Depression is…&nbsp;<a class="hanchor" href="#depression-is" aria-label="Anchor link for: Depression is…">🔗</a></h3>
<p>Sometimes, depression wears the mask of incompetence. It’s not uncommon for me to set too high of a bar for myself to reach. When I don’t meet those expectations or if I fall behind, my self-esteem slowly erodes. One missed assignment or deadline turns into two, then four. What was a small problem is exacerbated into a chain reaction of many problems. This builds the feeling of incompetence. Navigating the web of problems after it is spun becomes difficult and drains all energy. Personal motivation decreases leaving me wondering why I bother at all.</p>
<p>Sometimes, depression causes you to cast poor comparisons. It’s looking at the highlight reel of other peoples’ lives while you’re going through the cut-out reel. I wrap myself up in the achievements and successes of others. It’s an echo chamber of negative thought, where the lives of friends, family, or acquaintances remind me of my self-perceived incompetence. Everyone seems smarter and brighter. It looks like everyone else has it together when I’m struggling to meet deadlines and remembering to eat. Social media aggravates this. The entire premise of social media is to share the “highlight reel”, to show off when everything in your life is <em>going right</em>—which is why social media is the worst thing to look at when you’re in the trenches.</p>
<p>John Green shared a video recently about how we frame our lives that describes this well.</p>
<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
      <iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube-nocookie.com/embed/TZgkUUEf56s?autoplay=0&amp;controls=1&amp;end=0&amp;loop=0&amp;mute=0&amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"></iframe>
    </div>

<blockquote>
<p>In which John discusses the ways we frame reality, the distance between the selves we put online and the selves we inhabit, and the challenge of understanding public lives as self-portraiture rather than reality.</p>
</blockquote>
<p>There are other forms that it takes too. But underneath its form, the emotions are usually the same (at varying intensities). It’s a spectrum of feelings and activities, ranging from loss of interest, difficulty finding motivation, worthlessness, unusual sleep patterns, nail-biting, and at its worst, wanting a permanent way to escape. This goes without saying, over the years, I have become more adept at pushing out the harsher thoughts by recognizing them and reaching out to a close friend when I feel that way. But the spectrum varies depending on the surrounding events.</p>

<h3 id="invisible">Invisible&nbsp;<a class="hanchor" href="#invisible" aria-label="Anchor link for: Invisible">🔗</a></h3>
<p>My biggest challenge was how I kept it all hidden. Only a handful of people knew about some of my difficulties and what was going on behind the scenes. There were two critical fears that always prevented me from stepping out of the dark.</p>
<p>If I were to be honest about what I was going through, I didn’t want to be treated differently by others, personally or professionally. I’ve always felt that if I presented an idea or had a conversation with someone, agreements or disagreements were because of the ideas being conveyed, not because someone cast judgment on what they think I can handle. This was and is valuable to me.</p>
<p>But why was this a fear of mine? We <a href="http://www.huffingtonpost.com/christy-heitgerewing/why-we-should-talk-about-_b_5672782.html">have a problem</a> of “talking about it”. The stigma is that it’s wrong to “feel bad”. It’s not comfortable to talk about. It’s difficult for others to sometimes relate. The tone that people speak to you changes. This stigma created the fear that every conversation would become heavy-handed with special treatment. What I realized is that this fear isn’t justification to keep the lights off.</p>
<p>By becoming transparent about it, my hope is that this won’t be the case. I don’t want to be treated differently than how anyone has already treated me. If you’re wondering about how you can help, this is one of the best ways: to treat me the same way. (Although more hugs are never something I complain about!)</p>
<p>However, there was one more fear that kept me in the dark.</p>
<p>
<figure>
  <img src="/blog/2017/04/lights-3.jpeg" alt="An unfinished portrait painting showing the left half of a person&rsquo;s face with red lipstick and a lit cigarette resting between their lips. The right half of the image is a blank white canvas showing only faint pencil sketch lines." loading="lazy">
  <figcaption>Not expressing what’s going on in a healthy way only sets you up to find unhealthy ways to express it instead. (wafflesduhpanda (<a href="http://wafflesduhpanda.tumblr.com/" class="bare">http://wafflesduhpanda.tumblr.com/</a>), from tumblr (<a href="http://wafflesduhpanda.tumblr.com/post/137672137686" class="bare">http://wafflesduhpanda.tumblr.com/post/137672137686</a>))</figcaption>
</figure>
</p>
<p>To become more comfortable with sharing these emotions, it means being honest when someone asks how you are and reaching out for help when you need it. But it can be a lot to ask someone to help untangle the thick cobwebs when you’re having a hard time seeing through. From being on the receiving end before, I knew how it can be draining (even if it’s worthwhile and makes a difference in the end). My fear was putting too much burden on others and draining their energy on problems that don’t concern them. Everyone has their own stress and problems too. As a result, I rarely shared my pain and difficulty with others to avoid placing more stress on others.</p>
<p>When you’re afraid of adding more stress onto others, it impacts the type of actions you make. It might look typing out a long message when someone asks if everything is okay, then deleting it to say, “Everything is fine!” Other times, it’s the confusion over how to answer a simple question like, “How are you?” Sometimes it’s simply feeling alone.</p>
<p>But even though this is a fear, there is also a balance and a way to prevent adding so much stress to a close one’s life. Real relationships don’t flow like a river, in a single direction. It’s like a two-way road where traffic passes in both directions. It’s unsustainable for one person to only lean on one person. It goes both ways and the communication has to be two-way to be successful. However, letting everything out at once after it’s built up for so long isn’t the answer either. This is that overloading stress that creates this fear of sharing in the first place. Communication needs to be early and often. You have to share and you have to be honest.</p>
<p>I realized these fears shouldn’t keep me from sharing my story. The benefits of being open and sincere outweigh the perceived negatives from these fears. It takes a lot to throw yourself out in the open, but once it’s out, some of the extra weight falls off.</p>

<h2 id="opening-the-blinds-turning-on-the-lights">Opening the blinds, turning on the lights&nbsp;<a class="hanchor" href="#opening-the-blinds-turning-on-the-lights" aria-label="Anchor link for: Opening the blinds, turning on the lights">🔗</a></h2>
<p>But my purpose with this post wasn’t to only reflect on my personal experiences either. I hate raising problems without offering means to solving them. There are plenty of ways to learn about <a href="https://encrypted.google.com/search?hl=en&amp;q=how%20to%20deal%20with%20depression">how to deal with depression</a>. You can talk to a therapist and seek medicine too. But I wanted to share some of the things that have helped me get out of the hole and fight back.</p>
<p>However, none of this advice should be taken over professional medical advice. I am not a doctor and I won’t act like one. If you are experiencing severe depression, please <a href="http://www.healthline.com/health/depression/help-for-depression">take the first step</a> and talk to a doctor.</p>

<h3 id="seriously-talk-about-it">Seriously… talk about it&nbsp;<a class="hanchor" href="#seriously-talk-about-it" aria-label="Anchor link for: Seriously… talk about it">🔗</a></h3>
<p>Maybe this seems like common sense. Maybe you are afraid of what others might think of you if you tell them “the truth”. What talking about it looks like is up to you. Whether it’s a trusted friend, a family member, or a trusted individual, psychotherapy (or talk therapy) has <a href="http://www.dbsalliance.org/site/PageServer?pagename=wellness_brochures_psychotherapy">significant benefits</a> for helping you put your best foot forward. Whether it’s formal or informal, professional or friend-to-friend, getting it out there helps. It lets you have a chance to decompress from the build-up of stress. It also gives someone else a chance to remind you of the positive counterpoints to the negative thoughts.</p>
<p>Sometimes the best responses I’ve received is just an affirmation of love. Telling someone that you value them and that you love and care for them goes a long way.</p>

<h3 id="find-your-detox">Find your detox&nbsp;<a class="hanchor" href="#find-your-detox" aria-label="Anchor link for: Find your detox">🔗</a></h3>
<p>Your “detox” activity depends on you. Everyone has a different form of what helps remove them from the negative emotion and feelings. The purpose of detoxing is to give yourself a chance to separate from what’s providing the stress and to step away, even if for a short while. Usually, one of the best first steps is unplugging from the laptop, the phone, or other digital ties. Some time off from the grind will help you to refocus and bring your mind to a better place.</p>
<p>For example, some of my detox activities are listening to the right music and taking a walk. <a href="https://www.last.fm/user/jflory7">My music</a> might be my best therapy. Sometimes it’s having a conversation with a close friend about something completely random. Other times, it’s writing a few lines into a notebook. What the activity is depends on you. But it’s important to find those positive, uplifting experiences and remember them when your vision becomes cloudy.</p>

<h3 id="look-up-even-if-it-feels-wrong">Look up, even if it feels wrong&nbsp;<a class="hanchor" href="#look-up-even-if-it-feels-wrong" aria-label="Anchor link for: Look up, even if it feels wrong">🔗</a></h3>
<p>One of the things that I’ve started to practice is persuading my mind how to think. Even when everything looks or feels completely awful, I make myself look up. I tell myself that I’m feeling good, and I make myself genuinely believe it. I put my entire faith into that positive energy, of what I know things should be. It’s a challenge. It’s not easy. I can’t always do it. But it’s an art of persuasion. And with any art, it takes practice.</p>
<p>The challenge is to sincerely look for the positivity and happy emotions that are around you. You have to tune yourself to the same emotional frequency as the positive energy. Like a radio signal, you have to turn your channel to receive that positive energy and emotion. And if you’re ready to receive, it will present itself.</p>
<p>
<figure>
  <img src="/blog/2017/04/lights-4.jpeg" alt="A woman stands in the dark looking upward next to a window, her face clearly illuminated by a warm light source. Her faint reflection is cast onto the dark window glass beside her." loading="lazy">
  <figcaption>Even when it feels wrong, you have to look up. (Frank McKenna (<a href="https://unsplash.com/@frankiefoto" class="bare">https://unsplash.com/@frankiefoto</a>), from Unsplash (<a href="https://unsplash.com/photos/-sCrec27yDM" class="bare">https://unsplash.com/photos/-sCrec27yDM</a>))</figcaption>
</figure>
</p>
<p>In the more difficult times, this is the hardest advice to follow. The negative thoughts creep back into your mind. But recognition is key. To see and identify those thoughts and consciously acknowledge them for what they are is the first step. After identifying the negative energy, you have to turn your own channel. Instead of thinking, “I don’t want to feel <em>that</em> way,” think of the way you do want to feel. Think of the positive energy, emotions, experiences, or memories. Tell yourself, “I want to feel <em>this</em> way,” or “I want to feel <em>good</em>.” Even if it seems trivial and impossible, invest your energy and focus into attracting that positive energy. If you convince yourself that it’s there and you are going to find it, circumstances change. They have a strange way of working themselves out. But you have to know what you want.</p>
<p>Even when it feels like you’re in an emotional headlock straight to the ground, twist a little more to look up. At the sun, the light. The positive emotions and energy in life. And keep looking up.</p>

<h2 id="remember-whats-good">Remember what’s good&nbsp;<a class="hanchor" href="#remember-whats-good" aria-label="Anchor link for: Remember what’s good">🔗</a></h2>
<p>Depression isn’t a one-time illness. You don’t have a revelation one magical day and are suddenly “cured” of depression. It’s a cycle, with ups and downs. It requires balance and powerful support systems to stave off its hardest moments. The first step is recognizing the tug-of-war and identifying when things start to feel wrong. Make the steps to pull back from the things that bring the negative thoughts and energy. Remember what you <em>do</em> want and how you <em>want</em> to feel. Remember what’s good.</p>
<p>It took me a long time to write this. For six or seven years, I’ve tried to find the right words. But what I realized is that if I wait for the right words, I’ll wait forever. Even with the advice I gave, I’m not perfect and I’m not always able to fight it every time. This is something I actively live with. I have good days and I have bad days. The bad days are what brought me to write this in the first place. But the sun always comes up, one way or another. That’s what I always have to remind myself.</p>
<p>There are many stories out there. But this one is mine. Thank you.</p>]]></description></item><item><title>Mission to understand: Fedora Diversity FAD 2017</title><link>https://jwheel.org/blog/2017/04/fedora-diversity-fad-2017/</link><pubDate>Mon, 17 Apr 2017 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2017/04/fedora-diversity-fad-2017/</guid><description><![CDATA[<p><a href="https://communityblog.fedoraproject.org/fedora-diversity-fad-2017/"><em>This article was originally published on the Fedora Community Blog.</em></a></p>
<hr>
<p>
<figure>
  <img src="/blog/2017/04/DSC_0031.jpg" alt="Team picture of the Diversity Team members (left to right: Brian Exelbierd, Amita Sharma, Radka Janek, Jona Azizaj, Bhagyashree Padalkar, Justin Wheeler)" loading="lazy">
  <figcaption>Team picture of the Diversity Team members (left to right: Brian Exelbierd, Amita Sharma, Radka Janek, Jona Azizaj, Bhagyashree Padalkar, Justin Wheeler)</figcaption>
</figure>
</p>
<p>The <a href="https://fedoraproject.org/wiki/FAD_Diversity_2017">Fedora Diversity FAD</a> (a.k.a. Fedora Activity Day, or a sprint) took place during the weekend of <a href="https://devconf.cz/">DevConf</a>, 27-29 January. The original planning for this FAD started in August 2016, after the <a href="https://flocktofedora.org/">Flock 2016</a> conference. At Flock, the Diversity Team held a panel with open discussion about diversity and inclusion efforts in Fedora. Based on the feedback received during and after the panel, it was a priority for us to continue working on the objectives we had established before Flock. For the FAD, a majority of the Fedora Diversity Team was present along with a few others.</p>
<ul>
<li>Amita Sharma (<a href="https://fedoraproject.org/wiki/User:Amsharma">amsharma</a>)</li>
<li>Bhagyashree &ldquo;Bee&rdquo; Padalkar (<a href="https://fedoraproject.org/wiki/User:Bee2502">bee2502</a>)</li>
<li>Brian Exelbierd (<a href="https://fedoraproject.org/wiki/User:Bex">bex</a>)</li>
<li>Jona Azizaj (<a href="https://fedoraproject.org/wiki/User:Jonatoni">jonatoni</a>)</li>
<li>Justin Wheeler (<a href="https://fedoraproject.org/wiki/User:Jflory7">jflory7</a>)</li>
<li>Maria &ldquo;tatica&rdquo; Leandro (<a href="https://fedoraproject.org/wiki/User:Tatica">tatica</a>)</li>
<li>Marina Zhurakhinskaya (<a href="https://fedoraproject.org/wiki/User:Marinaz">marinaz</a>)</li>
<li>Radka Janek (<a href="https://fedoraproject.org/wiki/User:Rhea">rhea</a>)</li>
</ul>
<p>We made significant progress in accomplishing our larger objectives and to contribute to the Fedora Project mission and goals. The primary objectives we established for our FAD were completing plans for the demographic survey, building a campaign based on those results, and analyzing our Code of Conduct to find ways to better impact the community. This report covers each of these objectives, what we accomplished, and what we plan to do next.</p>
<p>
<figure>
  <img src="/blog/2017/04/Diversity_FAD_2017_Logic_Model.png" alt="Logic model used for preliminary planning and mapping out the activities and impact of the Fedora Diversity FAD 2017" loading="lazy">
  <figcaption>Logic model used for preliminary planning and mapping out the activities and impact of the Fedora Diversity FAD</figcaption>
</figure>
</p>

<h2 id="demographic-survey--marketing-campaign">Demographic survey / marketing campaign&nbsp;<a class="hanchor" href="#demographic-survey--marketing-campaign" aria-label="Anchor link for: Demographic survey / marketing campaign">🔗</a></h2>
<p>The majority of our discussions and planning on Friday and Saturday were focused on establishing strategic goals for the demographic survey and crafting the questions. The wish for having a survey like this predates the Diversity Team back to some of the earliest tickets in the Fedora Council ticket tracker (see <a href="https://pagure.io/Fedora-Council/tickets/issue/1">#1</a> and <a href="https://pagure.io/Fedora-Council/tickets/issue/16">#16</a>). The need for a demographic survey was established by the Diversity Team as well shortly after Flock. At Flock, there was expressed concern about little understanding for the diversity of our community. Fedora is a global community spanning all four corners of the world. It&rsquo;s hard to understand the unique needs and wishes of our community if we don&rsquo;t know they are there or what they think we could do better. The survey is the means to this end and how we best understand how our community is composed to make Fedora a more welcoming and inviting place for our global community of contributors.</p>
<p>The FAD enabled us to make significant progress on establishing the groundwork for the survey and move towards deploying a live version of the survey. One of the early outcomes of our discussion was postponing ideas about a marketing campaign until we had actual data and results to work with. This would make sure our efforts and focus on that would not be wasted. While the marketing campaign is a primary goal for our team, we decided it was best to double our efforts on the survey. As it turned out, this was a good decision with the amount of time we had, as the survey discussion and planning took the longest part of our time together.</p>

<h4 id="building-the-questions">Building the questions&nbsp;<a class="hanchor" href="#building-the-questions" aria-label="Anchor link for: Building the questions">🔗</a></h4>
<p>Before the FAD, Maria, Bee, and Marina had compiled a list of questions starting in a <a href="https://lists.fedoraproject.org/archives/list/diversity@lists.fedoraproject.org/thread/BPV2OTZ5OFMKPTO3PJ5WAYVBHUCE3VXQ/">mailing list thread</a>. Many of the questions at the beginning were based on survey questions used in the FLOSS 2013 and <a href="https://cwiki.apache.org/confluence/display/COMDEV/ASF&#43;Committer&#43;Diversity&#43;Survey&#43;-&#43;2016">Apache Software Foundation Committer Diversity</a> surveys. We started our discussion about the objectives and problems we wanted to solve with this survey. We established these two points as our primary goals.</p>
<ol>
<li>Gather baseline demographics about the contributor community</li>
<li>Determine contributor knowledge about project components that ease contribution</li>
</ol>
<p>
<figure>
  <img src="/blog/2017/04/DSC_0023.jpg" alt="The entire team in Brno listening to Maria &ldquo;tatica&rdquo; Leandro and Marina Zhurakhinskaya, dialing in from Venezuela and the United States for the Fedora Diversity FAD 2017" loading="lazy">
  <figcaption>The entire team in Brno listening to Maria \&#34;tatica\&#34; Leandro and Marina Zhurakhinskaya, dialing in from Venezuela and the United States</figcaption>
</figure>
</p>
<p>With these points in mind, we revisited the draft of questions prepared by Marina. We took an initial pass discussing the questions and weighing if this was something we needed to know and whether we saw a use for the answers based on our goals. The first pass took the longest amount of time, but it narrowed the questions significantly. After getting to a smaller number of questions with varied opinions, the questions were organized them into a spreadsheet where we weighted them by point values and narrowed it down to our final set. Our final draft of questions can be found <a href="https://pagure.io/fedora-diversity/issue/12#comment-114215">in the Pagure ticket</a> tracking this task. We are awaiting feedback from Fedora Legal before moving forward. Once we receive additional feedback, we plan to revisit the implementation questions about how and where to deploy the survey.</p>

<h4 id="noting-the-working-process">Noting the working process&nbsp;<a class="hanchor" href="#noting-the-working-process" aria-label="Anchor link for: Noting the working process">🔗</a></h4>
<p>One thing worth mentioning and explaining is how we narrowed the questions. We originally had a wide set of questions and were struggling with how to narrow them down. The methods we ended up using, suggested by Brian, were successful in us focusing on the purpose and goals we originally identified. The concern was on survey engagement and trying to guarantee survey completion. Too many questions or making it too long could result in people not finishing the survey. It is more valuable for us to have the most important data (even if it&rsquo;s less) rather than have more questions but fewer responses.</p>
<p>
<figure>
  <img src="/blog/2017/04/DSC_0018.jpg" alt="Brian Exelbierd providing input on the demographic survey at the Fedora Diversity FAD 2017" loading="lazy">
  <figcaption>Brian Exelbierd providing input on the demographic survey</figcaption>
</figure>
</p>
<p>In the beginning, we started with the set of questions curated by Maria, Bee, and Marina. It was over 50 questions with different motivations or objectives. Our first approach was going from top to bottom of all the questions. We discussed each one and tried to justify if it was worthwhile to include. Some questions were easy to remove, but others were more challenging. All of this initial discussion gave background to the questions in the later steps. This took up a significant amount of time and was possibly one of the more difficult parts of this process.</p>
<p>After the initial pass, Brian organized all of the questions into a spreadsheet and established a scale from 1 to 7. Of the remaining questions, we ranked them in this order:</p>
<ul>
<li><strong>Category 1</strong>: Five questions</li>
<li><strong>Category 2</strong>: Five questions</li>
<li><strong>Category 3</strong>: Five questions</li>
<li><strong>Category 4</strong>: Five questions</li>
<li><strong>Category 5</strong>: Five questions</li>
<li><strong>Category 6</strong>: Five questions</li>
<li><strong>Category 7</strong>: Four questions</li>
</ul>
<p>After all of the team members ranked the questions by order of preference, we tallied up the points for all of the questions. We ended up taking the top twenty-two questions, which can currently be found <a href="https://pagure.io/fedora-diversity/issue/12#comment-114215">in the ticket</a>. This method of going through the options we had forced us into making tough calls and choices on the things we felt were most important. It was powerfully effective for us to go through our options in this way, and it&rsquo;s a method that could definitely be recycled for other purposes or even by other teams in Fedora.</p>

<h2 id="code-of-conduct">Code of conduct&nbsp;<a class="hanchor" href="#code-of-conduct" aria-label="Anchor link for: Code of conduct">🔗</a></h2>
<p>A code of conduct is a valuable part of an open source community. Its purpose is to set clear expectations about how the community interacts and behaves with each other. An effective code of conduct empowers contributors to be excellent to each other. This creates a welcoming and inclusive space.</p>

<h4 id="background">Background&nbsp;<a class="hanchor" href="#background" aria-label="Anchor link for: Background">🔗</a></h4>
<p>Before we all gathered in Brno, we planned to analyze the Fedora code of conduct to understand its strengths and weaknesses. We also wanted to focus on its visibility and ensure that it is well-communicated. This includes new contributors when they first join the community and also current contributors. We <a href="https://communityblog.fedoraproject.org/what-is-fedora-code-conduct/">published a post</a> about the Fedora Code of Conduct to help raise awareness, but planned to cover this more during our FAD.</p>
<p>
<figure>
  <img src="/blog/2017/04/DSC_0043.jpg" alt="Getting ready for another day of discussion on Sunday morning for the Fedora Diversity FAD 2017" loading="lazy">
  <figcaption>Getting ready for another day of discussion on Sunday morning</figcaption>
</figure>
</p>
<p>A comprehensive code of conduct is important to set the tone for interactions among contributors. This helps promote a global perspective and create a welcoming community. The code of conduct drives the belief that contributors should always be excellent to each other. This builds the community as a united, global team. It was valuable for us to deliver on our proposed impact for the Fedora community through our discussions and planning.</p>

<h4 id="seeking-positive-engagement">Seeking positive engagement&nbsp;<a class="hanchor" href="#seeking-positive-engagement" aria-label="Anchor link for: Seeking positive engagement">🔗</a></h4>
<p>After we arrived in Brno, we started to have discussions about this and what some our actions would be. The tone of our conversation switched from looking at it from a disciplinary point of view to an enabling point of view. A code of conduct isn&rsquo;t the only part of how to empower contributors to be excellent. To this end, we asked ourselves these questions.</p>
<ol>
<li>What kind of behaviors does the Fedora code of conduct encourage?</li>
<li>How are we able to reward positive interactions that show this behavior?</li>
</ol>
<p>While we spent time looking at the code of conduct, the main focus was how to promote the behavior the code of conduct encourages. The biggest idea that came from this discussion was Fedora Appreciation Week. It is a subtle yet positive way for people to be excellent to each other by saying &ldquo;thanks!&rdquo; and raising awareness for the work that people put into Fedora.</p>

<h4 id="fedora-appreciation-week">Fedora Appreciation Week&nbsp;<a class="hanchor" href="#fedora-appreciation-week" aria-label="Anchor link for: Fedora Appreciation Week">🔗</a></h4>
<p>This discussion mostly occurred on parts of Saturday and the Sunday of DevConf. This idea was originally suggested on the <a href="https://pagure.io/fedora-commops/issue/92">CommOps Pagure</a>. It was not an original part of our pre-planning, but it became a pivotal point in the context of how to encourage the positive behavior the code of conduct suggests. One of the first changes to the original suggestion was making it into an entire week instead of a day, so we have the most flexibility for planning the event and giving ample time for contributors to participate.</p>
<p>Afterwards, we started to look at systems used in other places to use as case studies. We examined the Red Hat appreciation system and the <a href="https://happinesspackets.io/">Happiness Packets</a> project. These examples helped to understand the benefit of co-workers or other community members encouraging each other. The Happiness Packets website puts it simply: &ldquo;The feeling that you made a difference, that your work matters and has value, and that the people you work with are happy to work with you, is an awesome feeling.&rdquo; Taking the time to understand the background and motivations behind these systems helped us determine the background and motivations for Fedora Appreciation Week. We divided our plans into short-term and long-term criteria.</p>
<p>
<figure>
  <img src="/blog/2017/04/DSC_0047.jpg" alt="Jona Azizaj and Brian Exelbierd discussing on the way to lunch for the Fedora Diversity FAD 2017" loading="lazy">
  <figcaption>Jona Azizaj and Brian Exelbierd discussing on the way to lunch</figcaption>
</figure>
</p>

<h4 id="long-term">Long-term&nbsp;<a class="hanchor" href="#long-term" aria-label="Anchor link for: Long-term">🔗</a></h4>
<p>The long-term discussion mostly focused on how we could make it easier for people to thank each other with Fedora web services. We started our focus with the existing platform of Fedora Badges. One idea was giving all Fedora contributors the ability to award a special type of badge to other contributors a fixed number of times in a release cycle. Each special badge would fit into one of the Four Foundations of Fedora (Freedom, Friends, Features, First). Each one would have guided criteria to consider when awarding the badge to someone else. The effect of doing is to strengthen our commitment to our Four Foundations and to thank contributors who are committed to any of the four areas.</p>
<p>As one example, imagine someone working on a new feature or exciting change for an upcoming Fedora release. They have invested a lot of time and energy into developing this change. Another contributor who noticed this could give them a &ldquo;Features&rdquo; badge to thank them for their commitment to driving Fedora forward. Another example might be when one contributor sends thoughtful words to another, thanking them for their time or for everything they do. That person might give the first person a &ldquo;Friends&rdquo; badge for being kind and considerate to them.</p>
<p>We also discussed the idea of tying the accumulation of these badges into a physical reward, such as a special t-shirt or sticker sent via the mail. We ran out of time to discuss this idea further.</p>

<h4 id="short-term">Short-term&nbsp;<a class="hanchor" href="#short-term" aria-label="Anchor link for: Short-term">🔗</a></h4>
<p>We started by trying to establish the general timeline for planning Fedora Appreciation Week. Initially, we want start defining guidelines and creating promotional materials to use and spread leading up to the week. This would include things like giving examples of the different ways contributors can give thanks and also to work on articles or posts.</p>
<p>The month before the appreciation week would focus on general awareness. This would include a Community Blog article and a post to the <a href="https://lists.fedoraproject.org/archives/list/announce%40lists.fedoraproject.org/">Fedora announce list</a>. The week before the first day would include a Fedora Magazine article explaining what&rsquo;s happening and also to provide a way for users or people outside of the contributor community to participate.</p>
<p>Methods to give thanks included thanking in IRC (either thoughtful messages or with <a href="https://badges.fedoraproject.org/tags/cookie/any">karma cookies</a>), writing messages on a public wall or forum, and sending personal notes to individual contributors. Methods we could use to measure this impact included but was not limited to were karma cookies, mailing list traffic, or wiki page edits.</p>
<p>For the short-term focus, more discussion is needed to develop the ideas for running Fedora Appreciation Week in 2017.</p>

<h2 id="tying-it-together">Tying it together&nbsp;<a class="hanchor" href="#tying-it-together" aria-label="Anchor link for: Tying it together">🔗</a></h2>
<p>The first-ever Diversity FAD was a great opportunity to spend significant amounts of time looking at how we can build more inclusive environments for Fedora contributors and how to tackle other issues like understanding who makes up the Fedora community. Our team was able to use this valuable time to work on these issues more personally and intently than IRC or mailing lists can provide.</p>
<p>Special thanks and our gratitude go to the Fedora Council for supporting our work with the Fedora Project budget and enabling us to be gather and work on these tasks. To all of us, this also showed that Fedora leadership is committed to supporting these initiatives and helping make diversity and inclusion an important part of the Fedora community. Additionally, we&rsquo;d also like to thank Brian Exelbierd for participating in the FAD even though his attendance wasn&rsquo;t originally planned—we were lucky to have him with us and to steal his time from other DevConf activities happening during the weekend!</p>
<p>We&rsquo;re looking forward to next plan talks and/or workshops at Flock 2017 this year.</p>

<h2 id="come-say-hello">Come say hello!&nbsp;<a class="hanchor" href="#come-say-hello" aria-label="Anchor link for: Come say hello!">🔗</a></h2>
<p>The Fedora Diversity Team mostly consists of a few active, core members. But we are always looking for more people to get involved and participate! Every contribution is significant and it helps to have numerous people from different backgrounds following along with our discussions, so they can speak up and add their voice when they feel it&rsquo;s important.</p>
<p>There are multiple ways you can get in touch with the Diversity Team. We have a <a href="https://lists.fedoraproject.org/admin/lists/diversity@lists.fedoraproject.org">mailing list</a> you can subscribe to and you can follow our discussions. We have an IRC channel on freenode (<code>#fedora-diversity</code>). You . We meet once every other week on Wednesdays at 12:00 UTC in #fedora-meeting on free</p>
<ul>
<li><a href="https://lists.fedoraproject.org/admin/lists/diversity@lists.fedoraproject.org"><strong>Mailing list</strong></a>: Subscribe to follow our discussions</li>
<li><strong>IRC channel</strong>: Say hello in <code>#fedora-diversity</code> on freenode (you can <a href="https://webchat.freenode.net/?channels=fedora-diversity">join with a web client</a> if you don&rsquo;t have an IRC client)</li>
<li><a href="https://apps.fedoraproject.org/calendar/meeting/4422/"><strong>Weekly meeting</strong></a>: Meet every other week on Wednesdays (12:00 UTC) in <code>#fedora-meeting</code> on freenode</li>
<li><a href="https://pagure.io/fedora-diversity"><strong>Pagure tickets</strong></a>: See some of the current tasks we&rsquo;re working on and what needs doing</li>
</ul>
<p>Come say hello and introduce yourself—we&rsquo;d love to hear what you have to say!</p>
<p>
<figure>
  <img src="/blog/2017/04/DSC_0041.jpg" alt="Saturday night dinner with other members of the Fedora community for the Fedora Diversity FAD 2017" loading="lazy">
  <figcaption>Saturday night dinner with other members of the Fedora community</figcaption>
</figure>
</p>
<hr>
<p><em><a href="https://thenounproject.com/search/?q=diversity&amp;i=913730">Heterogeneous group</a> icon by <a href="https://thenounproject.com/magicon">Magicon</a> from <a href="https://thenounproject.com/">the Noun Project</a></em></p>]]></description></item><item><title>Take the #HappinessPacketChallenge!</title><link>https://jwheel.org/blog/2017/04/happiness-packets-challenge/</link><pubDate>Sat, 08 Apr 2017 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2017/04/happiness-packets-challenge/</guid><description><![CDATA[<p>One of the most important lessons I was taught growing up is to say &ldquo;thank you&rdquo; when someone does something nice for you. Many months ago, someone first introduced me to something called <a href="https://happinesspackets.io/">Happiness Packets</a>. The idea is simple but powerfully effective. Happiness Packets are like thank-you cards for open source users or contributors. You can send a packet to anyone for anything. Your message can be as short or as long as you like. You can put your name on your message or you can keep it totally anonymous. The choice is yours. And now, <strong>I want to challenge you to the #HappinessPacketChallenge</strong>!</p>

<h2 id="what-exactly-are-happiness-packets">What exactly are Happiness Packets?&nbsp;<a class="hanchor" href="#what-exactly-are-happiness-packets" aria-label="Anchor link for: What exactly are Happiness Packets?">🔗</a></h2>
<p>Fortunately, I don&rsquo;t have to do a lot of work to explain this, because it&rsquo;s all on the front page of the <a href="https://happinesspackets.io/">Happiness Packets</a> website. Repeated below for your convenience:</p>
<blockquote>
<p>People are generally much more loved than they think they are. Especially when things don&rsquo;t go according to plan, other people almost never think as harshly of you as you might think of yourself. It&rsquo;s easy for us to complain when bad things happen, and yet we&rsquo;re often fairly silent when things are good. Open-source communities are no different, especially when our main communication channels are textual and virtual.</p>
<p>The feeling that you made a difference, that your work matters and has value, and that the people you work with are happy to work with you, is an awesome feeling. With Open-Source Happiness Packets, we&rsquo;re trying to spread that feeling.</p>

<h4 id="how-does-it-work">How does it work?&nbsp;<a class="hanchor" href="#how-does-it-work" aria-label="Anchor link for: How does it work?">🔗</a></h4>
<p>Openly expressing appreciation, gratitude, or happiness to other people can be difficult. This is especially true when you don&rsquo;t know them very well. Many of us come from cultures in which people are not open by default about such feelings, and naturally feel uncomfortable or even creepy to share them.</p>
<p>Open-Source Happiness Packets is a very simple platform to anonymously reach out to the people that you appreciate or to whom you are thankful in your open-source community. Your message can be sent anonymously if you feel uncomfortable to share your name with the recipient. Of course, we encourage you to share your name, but it&rsquo;s completely optional!</p>
</blockquote>

<h2 id="take-the-challenge">Take the challenge&nbsp;<a class="hanchor" href="#take-the-challenge" aria-label="Anchor link for: Take the challenge">🔗</a></h2>
<p>So, what is the #HappinessPacketChallenge? I challenge you to do the following: <strong>write at least one Happiness Packet (or more!) every day for one week</strong>. At a minimum, this is only seven times where you say &ldquo;thank you&rdquo; to someone else in open source. Of course, you can send more if you want to.</p>
<p>If you open your social media feed or turn on the news channel, you probably see a lot of negativity. Whether it&rsquo;s world events, politics, or other sad news, the negativity gets at you. For one week, this is your opportunity to have the opposite effect. For all of the good things and people you see, you can spend a few minutes of each day this week to make someone&rsquo;s day. It seems simple—and it is! But the power you have to spread the positivity is a big power. So <strong>this is the challenge you have</strong>: to commit yourself to spreading that message every day for one week.</p>

<h4 id="i-dont-know-what-to-say">&ldquo;I don&rsquo;t know what to say.&rdquo;&nbsp;<a class="hanchor" href="#i-dont-know-what-to-say" aria-label="Anchor link for: &ldquo;I don&rsquo;t know what to say.&rdquo;">🔗</a></h4>
<p>Having a hard time coming up with words or not sure who to thank? No problem. Your message can be as short or as long as you like. If you&rsquo;re not sure who to thank, look at some of the software you&rsquo;re using now. If you&rsquo;re using a Linux distribution, start there! Look for the names and emails of maintainers of software you enjoy using. If you&rsquo;re already contributing to open source, consider some of the people in your community! You can thank someone who had a special role in helping you get started or impacted why you decided to work on a project.</p>
<p>Maybe you have other ideas or reasons to thank others. Whatever the reason is, don&rsquo;t make an excuse to say thanks! The options are limitless. If you have a lot to say, say it! If not, even a simple &ldquo;thanks for all the work you do!&rdquo; can go a long way to make someone&rsquo;s day.</p>

<h2 id="share-your-happiness">Share your happiness&nbsp;<a class="hanchor" href="#share-your-happiness" aria-label="Anchor link for: Share your happiness">🔗</a></h2>
<p>The magical part of Happiness Packets is sharing happy moments with others. If you receive one, don&rsquo;t be afraid to tell the world! You can tweet at <a href="https://twitter.com/happinesspacket">@happinesspacket</a> on Twitter. Use the <a href="https://twitter.com/hashtag/HappinessPacketChallenge">#HappinessPacketChallenge</a> hashtag. Encourage other people to send their own thanks. If you can get one other person to take the challenge, then you&rsquo;re already making the days of seven more people! Imagine what would happen if all of those seven people decided to take the challenge too.</p>
<p>So, what are you waiting for? Get started! Go <a href="https://happinesspackets.io/send/">send a Happiness Packet</a> now! And if you&rsquo;re feeling bold, try challenging someone directly.</p>
<hr>
<p><em><a href="https://thenounproject.com/search/?q=love%20mail&amp;i=314865">Love Letter</a> by <a href="https://thenounproject.com/vectorsmarket">Vectors Market</a> from <a href="https://thenounproject.com/">the Noun Project</a></em></p>]]></description></item><item><title>Stepping out of Fedora: May to August 2017</title><link>https://jwheel.org/blog/2017/04/stepping-out-fedora-may-august-2017/</link><pubDate>Wed, 05 Apr 2017 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2017/04/stepping-out-fedora-may-august-2017/</guid><description><![CDATA[<p>Transparency is the best policy and communication is key. This is why I felt it was important to make this announcement ahead of time to make clear expectations for the coming months. This past December, I was happy to accept a Production Engineer Intern position at <a href="http://jumptrading.com/">Jump Trading, LLC</a>. From June to August, I will be working at their office in Chicago, IL. I&rsquo;m excited for this opportunity to learn from some of the sharpest people in the industry and to leave my own mark as an intern during the summer.</p>
<p>During the hiring process, I was happy to ensure that contributing to open source software would still be possible during my time of employment. I saw during my on-site interview that Jump Trading employs open source software throughout the company but also contributes back to open source, either with hours or donations. However, while I am still able to contribute to Fedora, I do not anticipate being able to maintain the level of activity that I contribute at now during my internship.</p>

<h2 id="stepping-out-from-may-to-august">Stepping out from May to August&nbsp;<a class="hanchor" href="#stepping-out-from-may-to-august" aria-label="Anchor link for: Stepping out from May to August">🔗</a></h2>
<p>Due to exams and personal travel plans in May followed by an almost immediate departure to Chicago in early June, I will be stepping out of Fedora beginning in early May. I hope to spend time with friends and family before departing for Chicago, so my estimate is a little generous to the benefit of being realistic. My internship will finish around August 20th, 2017, so I hope to begin my normal levels of contribution around this time.</p>
<p>It will be challenging for me to step back for this long amount of time, after my involvement with Fedora has become such a <a href="https://jwfblog.wpenginepowered.com/2015/10/my-journey-into-fedora/">huge</a> <a href="https://jwfblog.wpenginepowered.com/2016/06/fedora-ambassadors-communicating-design/">part</a> <a href="https://jwfblog.wpenginepowered.com/2016/08/gsoc-2016-thats-wrap/">of</a> <a href="https://jwfblog.wpenginepowered.com/2016/08/fedora-flock-2016/">my</a> <a href="https://jwfblog.wpenginepowered.com/2016/10/hackmit-meets-fedora/">life</a>. However, it is only a temporary change, and the time off ends near <a href="https://flocktofedora.org/">Flock 2017</a>. So I will have a lot to get caught up on before the conference begins!</p>
<p>The only area I hope to stay partially active with is the <a href="https://fedoramagazine.org/">Fedora Magazine</a> to continue my post as the <a href="https://jwfblog.wpenginepowered.com/2016/08/new-role-fedora-magazine-editor-in-chief/">editor-in-chief</a>. While I still don&rsquo;t anticipate being fully involved, I hope to help with editing and to write a few articles during the summer as well.</p>
<p>I&rsquo;m looking forward to seeing familiar faces again in August!</p>
<p>
<figure>
  <img src="/img/Flock-2015-Strong-Museum-of-Play.jpg" alt="Fedora Flock 2015 at the Strong Museum of Play in Rochester, NY" loading="lazy">
  <figcaption>Fedora Flock 2015 at the Strong Museum of Play in Rochester, NY</figcaption>
</figure>
</p>
<p>
<figure>
  <img src="/img/flock-group-photo-2_28739637620_o.jpg" alt="Fedora Flock 2016 in Kraków, Poland" loading="lazy">
  <figcaption>Fedora Flock 2016 in Kraków, Poland</figcaption>
</figure>
</p>]]></description></item><item><title>Students meet Fedora at Linux Weekend 2017</title><link>https://jwheel.org/blog/2017/04/students-fedora-linux-weekend-2017/</link><pubDate>Tue, 04 Apr 2017 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2017/04/students-fedora-linux-weekend-2017/</guid><description><![CDATA[<p><em>This article was originally published <a href="https://fedoramagazine.org/students-fedora-linux-weekend-2017/">on the Fedora Magazine</a>.</em></p>
<hr>
<p>Open source projects are built online and a lot of their community members are placed all over the world. Even though projects have people from around the world, this doesn&rsquo;t stop ambitious community members to organize open source conferences or events in their own cities. Whether they&rsquo;re focused generally to open source or for a specific project, you can find a variety of conferences, hackathons, workshops, or meet-ups all over the world. Fedora benefits from having <a href="https://fedoraproject.org/wiki/Ambassadors">Ambassadors</a> to attend these events to introduce Fedora and spread the word about the community. It&rsquo;s not uncommon to see Fedora participating in these events, and Linux Weekend 2017 in Tirana, Albania was not an exception.</p>
<p>
<figure>
  <img src="https://cdn.fedoramagazine.org/wp-content/uploads/2017/03/Azizaj-kicking-off-conference-300x146.jpg" alt="Jona Azizaj, Fedora Ambassador and Open Labs board member, kicks off Linux Weekend 2017" loading="lazy">
  <figcaption>Jona Azizaj (<a href="http://jona.azizaj.com/" class="bare">http://jona.azizaj.com/</a>), Fedora Ambassador and Open Labs board member, kicks off Linux Weekend 2017</figcaption>
</figure>
</p>
<p>From March 25-26, 2017 in Tirana, Albania, nearly 130 people attended the first-ever <a href="http://linuxweekend.openlabs.cc/">Linux Weekend 2017</a>. Linux Weekend was organized by <a href="https://openlabs.cc/en/">Open Labs Hackerspace</a> at the <a href="http://fti.edu.al/?lang=en">Universiteti Politeknik i Tiranës</a> as an introduction to Linux for beginners. Throughout Tirana, universities have a strong focus on Windows or macOS operating systems and little focus is given to Linux. Open Labs community members wanted to organize an event that would promote Linux as an open source alternative and demonstrate some of its benefits over proprietary environments. The event collected representatives from various communities, including Fedora, Ubuntu, OpenSUSE, NextCloud, MusicBrainz, and more.</p>

<h2 id="organizing-linux-weekend">Organizing Linux Weekend&nbsp;<a class="hanchor" href="#organizing-linux-weekend" aria-label="Anchor link for: Organizing Linux Weekend">🔗</a></h2>
<p>The Open Labs community is not unfamiliar to organizing open source events in Tirana. Their portfolio includes <a href="https://openlabs.cc/sq/fedora-23-release-party-report/">Fedora release parties</a>, <a href="https://openlabs.cc/sq/openstreetmap-hyrje-ne-josm/">OpenStreetMap map-a-thons</a>, <a href="https://openlabs.cc/sq/wikiprojekti-grate/">Wikipedia edit-a-thons</a>, and <a href="https://openlabs.cc/sq/fedora-meetup-tirana-2-report/">Fedora community meet-ups</a>. However, these events have been targeted towards people who already had prior interest or knowledge about open source communities. The organization and planning for Linux Weekend began in the middle of January as an idea to introduce Linux to complete beginners.</p>
<p>
<figure>
  <img src="https://cdn.fedoramagazine.org/wp-content/uploads/2017/03/Fedora-community-table-1024x683.jpg" alt="The Fedora community table at Linux Weekend 2017 in Tirana, Albania had no shortage of swag, stickers, and more to share with attendees" loading="lazy">
  <figcaption>The Fedora community table had no shortage of swag, stickers, and more to share with attendees</figcaption>
</figure>
</p>
<p>Planning and organizing Linux Weekend was a community effort. <a href="http://jona.azizaj.com/">Jona Azizaj</a> is a board member of Open Labs and a Fedora contributor, and was involved as an organizer for the event. &ldquo;This was the first edition of Linux Weekend, so the main focus is to raise awareness about Linux and open source. We wanted to educate beginners and spread the word about the choices that are available,&rdquo; Azizaj explained. The two tracks for the event were full of talks and workshops to introduce attendees not only to Linux, but also various software and applications of what someone can do with Linux.</p>
<p>Many of the attendees were students who had either heard of Linux in their classes or from their peers. Other attendees included industry professionals or other open source community members. Several representatives of Fedora from different parts of the community were in attendance as well. <a href="http://whatcanidoforfedora.org/en/#advocacy">Ambassadors</a>, <a href="http://whatcanidoforfedora.org/en/#designexclamation">designers</a>, and <a href="http://whatcanidoforfedora.org/en/#translation">translators</a> were available to answer questions and teach newcomers about Fedora.</p>

<h2 id="albanian-students-learn-linux">Albanian students learn Linux&nbsp;<a class="hanchor" href="#albanian-students-learn-linux" aria-label="Anchor link for: Albanian students learn Linux">🔗</a></h2>
<p>Since the focus of the event was to teach newcomers about Linux and how it can be used, Linux Weekend was organized to be an introduction to various parts of the Linux ecosystem. Representatives from Fedora, Ubuntu, Arch Linux, OpenSUSE, Linux Mint, and elementaryOS gave introductions to the operating systems and their communities. In addition to distributions, there were also sessions on open source licenses, <a href="https://nextcloud.com/about/">NextCloud</a>, text editors, <a href="https://musicbrainz.org/doc/About">MusicBrainz</a>, and more. The benefit of these sessions were demonstrating the different ways Linux can be used to accomplish various tasks.</p>
<p>
<figure>
  <img src="https://cdn.fedoramagazine.org/wp-content/uploads/2017/04/Uku-introducing-editors-1024x683.jpg" alt="Sidorela Uku introduces different editors and tools in her talk at Linux Weekend 2017 in Tirana, Albania" loading="lazy">
  <figcaption>Sidorela Uku (<a href="https://twitter.com/SidorelaUku" class="bare">https://twitter.com/SidorelaUku</a>) introduces different editors and tools in her talk</figcaption>
</figure>
</p>
<p>In addition to the various sessions during the weekend, there were three community booths for Fedora, OpenSUSE, and Mozilla. Attendees had a chance to get swag from each project and also talk with representatives about their own experiences or how to get started using their project.</p>
<p><a href="https://twitter.com/SidorelaUku">Sidorela Uku</a> was both an attendee and a speaker at Linux Weekend. Her talk, &ldquo;Programming in Linux, editors, and tools&rdquo;, introduced various text editors and other tools to help customize any Linux distribution to someone&rsquo;s needs or personal preferences. In addition to sharing her own knowledge, she was also excited to discover new things. &ldquo;I wanted to attend the talks and workshops to learn as much as possible. I also wanted to figure out the next steps to find a project and get involved as a contributor,&rdquo; Uku explained. &ldquo;I also wanted to share the things I know with others to help them get started with Linux.&rdquo; This was Uku&rsquo;s first time speaking at an event and she looks forward to more open source events in Tirana in the future.</p>

<h2 id="fedora-contributors-introduce-community">Fedora contributors introduce community&nbsp;<a class="hanchor" href="#fedora-contributors-introduce-community" aria-label="Anchor link for: Fedora contributors introduce community">🔗</a></h2>
<p>Various members of the Fedora community were also in attendance. Some of the Fedora presentations over the weekend introduced the project to newcomers, detailed the <a href="https://communityblog.fedoraproject.org/fedora-translation-sprint-5-days-50-members-20-thousand-words/">translation efforts</a> to bring Fedora to Albanian, and also guided attendees on how to make their first steps as contributors. The Fedora presence aimed to help give newcomers a taste of the operating system but also to show the impact someone can have if they decide to contribute.</p>
<p>
<figure>
  <img src="https://cdn.fedoramagazine.org/wp-content/uploads/2017/04/Balla-introduces-Fedora-Project-1024x683.jpg" alt="Mariana Balla, a Fedora contributor, introduces the Fedora Project to Linux Weekend 2017 attendees in Tirana, Albania" loading="lazy">
  <figcaption>Mariana Balla (<a href="https://twitter.com/marianaballa1" class="bare">https://twitter.com/marianaballa1</a>), a Fedora contributor, introduces the Fedora Project to attendees</figcaption>
</figure>
</p>
<p><a href="https://twitter.com/marianaballa1">Mariana Balla</a> was one of the first speakers on Saturday morning with her talk titled, &ldquo;Introduction to Fedora Project and how to be a part of the community&rdquo;. She started with localizing Fedora into Albanian in early 2016 and more recently started to become an advocate as well. &ldquo;Fedora is one of the most used distributions, and it was great to have Fedora here to spread the word and show what our community is all about,&rdquo; Balla said. &ldquo;One thing I hoped to show in my talk was that technical skills aren&rsquo;t required to contribute to Fedora. There&rsquo;s so many things that aren&rsquo;t code that people can help with!&rdquo; One of the highlights of Balla&rsquo;s presentation was breaking down the different sub-projects in the community and how they contribute to making Fedora what it is. One site that was mentioned was <a href="http://whatcanidoforfedora.org/">whatcanidoforfedora.org</a>, a site anyone can click their way through to find an area that interests them.</p>
<p>One key contribution area that was important for the local community was localization. Many attendees and speakers alike thought it was important to have software translated into their native language. <a href="https://twitter.com/anxhelahyseni">Anxhela Hyseni</a> is a Fedora Ambassador and led the workshop on &ldquo;Translation of Fedora&rdquo;. &ldquo;It&rsquo;s important for Albanians to have software in Albanian because we are Albanians!&rdquo; Hyseni laughs. &ldquo;People are better able to understand Fedora and it makes it more accessible for us to have it in our local language.&rdquo; She hopes that attendees left Linux Weekend with plenty of new contacts in the open source community and a better idea of what Linux is all about. She and others also helped Linux newcomers install Fedora 25 as a dual-boot or for virtual machines in the installfest on Saturday morning.</p>
<p>
<figure>
  <img src="https://cdn.fedoramagazine.org/wp-content/uploads/2017/03/Anxhela-at-Fedora-table-1024x683.jpg" alt="Fedora Ambassador Anxhela Hyseni at the Fedora community table at Linux Weekend 2017 in Tirana, Albania" loading="lazy">
  <figcaption>Fedora Ambassador Anxhela Hyseni (<a href="https://twitter.com/anxhelahyseni" class="bare">https://twitter.com/anxhelahyseni</a>) at the Fedora community table</figcaption>
</figure>
</p>

<h2 id="wrapping-up">Wrapping up&nbsp;<a class="hanchor" href="#wrapping-up" aria-label="Anchor link for: Wrapping up">🔗</a></h2>
<p>After two days of talks, workshops, and hallway discussions, the final talk finished around 4:00pm on Sunday. Azizaj closed out with some final words of encouragement and thanks for attendee participation.</p>
<p>
<figure>
  <img src="https://cdn.fedoramagazine.org/wp-content/uploads/2017/04/Lushka-introducing-Fedora-spins-1024x683.jpg" alt="Angelo Lushka, a Fedora translator and user, introduces the different Fedora spins at the installfest for Linux Weekend 2017 in Tirana, Albania" loading="lazy">
  <figcaption>Angelo Lushka (<a href="https://lushka.al/" class="bare">https://lushka.al/</a>), a Fedora translator and user, introduces the different Fedora spins at the installfest</figcaption>
</figure>
</p>
<p>The presence of Fedora, open source software, and its philosophy was present during the entire weekend. Between stickers, install media, and brochures from community tables and the various presentations during the weekend, participants and organizers felt the event was worthwhile. &ldquo;We had limited time to plan, but it was important to bring Linux to people to introduce the philosophy, show them how to use it, and also how they can give back,&rdquo; <a href="https://lushka.al/">Anxhelo Lushka</a>, an event organizer and Fedora contributor, explained. &ldquo;We hope attendees had new experiences and learned something new and useful for the real world, for jobs or studying. We also hope we convinced them to contribute and give back, even if in a small way.&rdquo;</p>
<p>Now that Linux Weekend 2017 is finished, the organizing team is switching their focus to <a href="https://oscal.openlabs.cc/">Open Source Conference Albania</a> (OSCAL), the largest open source conference in the region.</p>

<h2 id="find-fedora-near-you">Find Fedora near you&nbsp;<a class="hanchor" href="#find-fedora-near-you" aria-label="Anchor link for: Find Fedora near you">🔗</a></h2>
<p>Open source events are happening all around the world, and Fedora might be closer to you than you think! Check for local user or meet-up groups near you to get involved in some of these events. <a href="https://www.meetup.com/">Meetup.com</a> is a great way to find local events happening in your community. You can also keep an eye on what Fedora is up to by following us on <a href="https://www.facebook.com/TheFedoraProject">Facebook</a>, <a href="https://twitter.com/fedora">Twitter</a>, <a href="https://plus.google.com/&#43;Fedora">Google+</a>, or <a href="https://www.instagram.com/thefedoraproject/">Instagram</a>.</p>
<p>We hope to see you at an event in the coming future!</p>]]></description></item><item><title>First-ever overnight hackathon in Albania for sustainable goals</title><link>https://jwheel.org/blog/2017/03/hackathon-albania-sustainable-goals/</link><pubDate>Thu, 23 Mar 2017 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2017/03/hackathon-albania-sustainable-goals/</guid><description><![CDATA[<p><a href="https://opensource.com/article/17/3/open-labs-48-hour-hackathon-albania"><em>This article was originally published on Opensource.com.</em></a></p>
<hr>
<p>
<figure>
  <img src="/blog/2017/03/hackathon-kick-off-eduard-pagria.jpg" alt="Redon Skikuli addresses all attendees in Open Labs to kick off the hackathon" loading="lazy">
  <figcaption>Redon Skikuli addresses all attendees in Open Labs to kick off the hackathon. © Eduard Pagria, used with permission</figcaption>
</figure>
</p>
<p>The local hackerspace in Tirana, Albania might be small, but they make up for size in spirit. During the weekend of 18-19 March 2017, the <a href="https://openlabs.cc/en/">Open Labs Hackerspace</a> organized the first-ever 48 hour &ldquo;open source&rdquo; hackathon focused on the United Nations Sustainable Development Goals. The <a href="https://sustainabledevelopment.un.org/sdgs">UN Sustainable Development Goals</a> are seventeen objectives identified by the <a href="http://www.undp.org/">United Nations Development Programme</a> (UNDP) to build a better world, starting in our own communities. Some of the goals include quality education, gender equality, decent work and economic growth, clean energy, and more. During the course of the hackathon, participants selected a goal, broke into teams, and worked on projects to make real change in their own neighborhoods. In the spirit of open source, all projects are made available under free and open licenses.</p>

<h2 id="organizing-the-hackathon-in-albania">Organizing the hackathon in Albania&nbsp;<a class="hanchor" href="#organizing-the-hackathon-in-albania" aria-label="Anchor link for: Organizing the hackathon in Albania">🔗</a></h2>
<p>The board members of Open Labs oversee most of its operations and help guide members in hosting events and keeping the hackerspace busy. The current board members are <a href="http://redon.skikuli.com/about/">Redon Skikuli</a>, <a href="http://jona.azizaj.com/">Jona Azizaj</a>, <a href="https://elioqoshi.me/">Elio Qoshi</a>, <a href="https://kristiprogri.com/">Kristi Progri</a>, and <a href="https://twitter.com/AnisaKuci">Anisa Kuci</a>. However, they emphasize that it&rsquo;s strongly a community-based organization. Board members invite others to take part in the organization&rsquo;s governance.</p>
<p>
<figure>
  <img src="/blog/2017/03/open-labs-board-members-justin-w-flory.jpg" alt="Open Labs board members. Pictured left to right: Jona Azizaj, Anisa Kuci, Kristi Progri, Redon Skikuli, Elio Qoshi" loading="lazy">
</figure>
</p>
<p><em>Open Labs board members. Pictured left to right: Jona Azizaj, Anisa<br>
Kuci, Kristi Progri, Redon Skikuli, Elio Qoshi. (Justin Wheeler, CC-BY-SA 4.0)</em></p>
<p>When the opportunity came to take part in this event, the board members felt it was a great opportunity to try something new. While hackathon events are popular and well-known in the United States and elsewhere, this was foreign territory for the community. &ldquo;At first, we were nervous because this type of 48 hour event was new for Open Labs but also for Albania. But we wanted to use this as a chance to introduce the open source philosophy to new people and to show what we do and why,&rdquo; said Azizaj. The organizers hoped to appeal to a wider audience than only active community members too.</p>
<p>
<figure>
  <img src="/blog/2017/03/un-representative-meeting-hackers-eduard-pagria.jpg" alt="The visiting representative from the United Nations meets participants and helps work with them on brainstorming ideas" loading="lazy">
</figure>
</p>
<p><em>The visiting representative from the United Nations meets participants<br>
and helps work with them on brainstorming ideas. © Eduard Pagria, used with permission</em></p>
<p>Organizing the hackathon was a challenge since many of the core team members were traveling the week before the event. However, community members and UN representatives were more than willing to help with organizing the hackathon. This event also required a level of coordination that was uncommon for the normal type of event organized in Open Labs. &ldquo;When planning, we were hoping to reach out to non-members of Open Labs too. This way, more people are exposed to open source and its culture. This lets people who want to make change, but don&rsquo;t know how, to understand what is available to help them,&rdquo; said Skikuli. When the Friday before the event arrived, the team was ready for a weekend of open source, civic hacking.</p>
<p>On Saturday morning, approximately 30 people were present for the event kick-off. Open Labs members and United Nations representatives introduced the hackathon and the themes for attendees to focus on during the weekend. Attendees were a diverse group of people as well: there was a balance between technical and non-technical people, and the gender ratio was almost evenly split between males and females.</p>

<h2 id="working-on-projects">Working on projects&nbsp;<a class="hanchor" href="#working-on-projects" aria-label="Anchor link for: Working on projects">🔗</a></h2>
<p>
<figure>
  <img src="/blog/2017/03/edlina-works-on-education-eduard-pagria.jpg" alt="One participant, Edlina, worked with Augest to develop an application that creates a feedback loop with students and teachers to NGOs and governments to understand problems in schools and find ways to work together without duplicating work" loading="lazy">
</figure>
</p>
<p><em>One participant, Edlina, worked with Augest to develop an application<br>
that creates a feedback loop with students and teachers to NGOs and<br>
governments to understand problems in schools and find ways to work<br>
together without duplicating work. © Eduard Pagria, used with permission</em></p>
<p>The Open Labs organizers placed emphasis in networking between participants at the beginning. The event started with introductions and each participant made a note of whether they were a technical or non-technical contributor. After this, they wrote their names on sticky notes along with their preferred goals to stick on the wall. Participants were paired up with someone with a different background but with a mutual interest in a specific goal. &ldquo;We separated participants into two groups: technical and non-technical. Our idea was the two sides would complement each other to share experiences to build a strong team,&rdquo; said Azizaj. After the teams were formed, they began brainstorming and working on their projects. Mentors were available to offer support to participants and to introduce them to open source tools to help them prototype their projects.</p>

<h4 id="world-of-sounds">World of Sounds&nbsp;<a class="hanchor" href="#world-of-sounds" aria-label="Anchor link for: World of Sounds">🔗</a></h4>
<p>
<figure>
  <img src="/blog/2017/03/silva-arapi-profile-justin-w-flory-e1490131911268.jpg" alt="Silva Arapi, one participant, worked with her team on their project &ldquo;World of Sounds&rdquo;" loading="lazy">
</figure>
</p>
<p><em>Silva Arapi, one participant, worked with her team on their project<br>
&ldquo;World of Sounds&rdquo;. (Justin Wheeler, CC-BY-SA 4.0)</em></p>
<p>One participant, <a href="https://twitter.com/ArapiSilva">Silva Arapi</a>, worked with teammates Dritan Sakuta, Hulemita Leka, Kristi Leka, and Klajdi Qehaja to address reduced inequalities. Their team project is called &ldquo;World of Sounds&rdquo;.  The application is a resource for parents of children with hearing or speaking disabilities. &ldquo;World of Sounds is a platform to understand early on to improve education of parents and accessibility for children. This is very helpful for rural parts [of Albania],&rdquo; Arapi explained.</p>
<p>She has been involved with the Open Labs community for almost a year and a half. It was her first hackathon but she also hadn&rsquo;t seen an event like this in Albania before. &ldquo;It was a new experience and something different. We get something done in 48 hours to have a social impact – why not participate?&rdquo; Arapi balances her time leading the NextCloud efforts in Tirana while working towards her master&rsquo;s degree in Information Security. She hopes to take part in another event at Open Labs like this again in the future.</p>

<h4 id="tackling-gender-equality-in-albania">Tackling gender equality in Albania&nbsp;<a class="hanchor" href="#tackling-gender-equality-in-albania" aria-label="Anchor link for: Tackling gender equality in Albania">🔗</a></h4>
<p>Another Open Labs community member came with an idea and a friend to try thinking through a specific issue she had seen in her community. <a href="https://twitter.com/Nafie_Shehu">Nafie Shehu</a> is an Information Communication Technology student and has been involved with Open Labs for the past seven months. With her, she brought her friend Afrim Kamberi to help, for his first visit to Open Labs and an open source event in Tirana.</p>
<p>
<figure>
  <img src="/blog/2017/03/working-on-project-eduard-pagria.jpg" alt="Two attendees work together on their project idea" loading="lazy">
  <figcaption>Two attendees work together on their project idea. © Eduard Pagria, used with permission</figcaption>
</figure>
</p>
<p>Shehu&rsquo;s selected goal was gender equality combined with an experience of one of her friends. In some rural areas and villages in Albania, women have a more difficult time maintaining their rights. They rarely have financial independence, and as a result, this sometimes leads them to live a life they might not want. Sometimes, women are obligated into a non-consensual marriage and aren&rsquo;t in a place to defend what they want for themselves. Her friend was in this situation and divorced later, but she didn&rsquo;t know where to go after and had little resources of her own. Nafie heard about this story and it deeply affected her. She hoped to brainstorm ideas on how to improve this problem.</p>
<p>After research and looking at other solutions, she discovered similar attempts had been started to solve this problems. However, for various reasons, they were ineffective and weren&rsquo;t thorough solutions to the problems. While this changed her own project development, she finished the hackathon determined to find ways to improve on what was already there and continue this even after the weekend ended.</p>

<h2 id="closing-the-hackathon">Closing the hackathon&nbsp;<a class="hanchor" href="#closing-the-hackathon" aria-label="Anchor link for: Closing the hackathon">🔗</a></h2>
<p>Towards the end of Sunday, participants put the last touches onto their projects. The deliverable product was prepared and all participants organized a short presentation to demo their project. &ldquo;In the end, you get a real product, not just talking. It&rsquo;s a real product that has an impact,&rdquo; Progri explained. All of the various teams pitched their projects to the Open Labs community and to representatives from the United Nations.</p>
<p>
<figure>
  <img src="/blog/2017/03/hacking-past-midnight-justin-w-flory.jpg" alt="Anxhelo Lushka helps two participants after midnight to help work through some problems in their project" loading="lazy">
</figure>
</p>
<p><em>Anxhelo Lushka helps two participants after midnight to help work<br>
through some problems in their project. (Justin Wheeler, CC-BY-SA 4.0)</em></p>
<p>In the project presentations, teams were given specific criteria to present in the project.</p>
<ol>
<li>Summary or main idea of the project</li>
<li>Sustainability of the project for implementation beyond the weekend</li>
<li>Recommendations for funding the project / creating a budget to carry it out</li>
<li>Reasons why they would support this if it wasn&rsquo;t their own project</li>
</ol>
<p>After the presentations, teams were given the option to send their information and projects to the UNDP via Open Labs. The UNDP will select one project and team to bring to the United Nations office in New York City to propose their project and seek support to develop it further.</p>

<h2 id="thats-a-wrap">That&rsquo;s a wrap!&nbsp;<a class="hanchor" href="#thats-a-wrap" aria-label="Anchor link for: That&rsquo;s a wrap!">🔗</a></h2>
<p>After a closing ceremonies and words of encouragement from Skikuli, the hackathon came to an end. Both participants and organizers felt it ended on a high note. &ldquo;I love coming to these events to learn new things, meet new people, and they&rsquo;re cool!&rdquo; Arapi said. Additionally, the organizers hoped that participants left with valuable knowledge and resources that would go beyond this weekend. &ldquo;We hope people understand the role open source had in this event and understand why the philosophy is so important,&rdquo; Qoshi explained. &ldquo;Some people might think the projects are the main part, but networking with people from different backgrounds goes beyond the event. These connections support sustainability for people working together. We hope these projects continue beyond this event.&rdquo;</p>
<p>The presence of open source software and its philosophy was present throughout the event. Stickers and swag from various open source projects was available for participants to take. This included stickers from Mozilla, Fedora, LibreOffice, NextCloud, and more. &ldquo;We hope attendees enjoyed the experience and had fun meeting new people. Later on, when they leave Open Labs and work on their own projects, we hope they will remember open source tools to build their work and create FOSS solutions,&rdquo; said Azizaj.</p>

<h2 id="whats-next-for-open-labs">What&rsquo;s next for Open Labs?&nbsp;<a class="hanchor" href="#whats-next-for-open-labs" aria-label="Anchor link for: What&rsquo;s next for Open Labs?">🔗</a></h2>
<p>
<figure>
  <img src="/blog/2017/03/morning-brainstorming-eduard-pagria.jpg" alt="Brainstorming together at the beginning of the Open Labs Albania 48 hour hackathon on project ideas" loading="lazy">
  <figcaption>Brainstorming together at the beginning of the hackathon on project ideas. © Eduard Pagria, used with permission</figcaption>
</figure>
</p>
<p>This was a milestone event for the Open Labs community, but they have more on the horizon after the weekend of this event. Organizers, volunteers, and members are putting together the first <a href="http://linuxweekend.openlabs.cc/">Linux Weekend</a> in Tirana from 25-26 March. This is a traditional barcamp-like model with talks and workshops by several local and international speakers. However, there are a couple of goals ahead that the team hopes to begin working at.</p>
<p>One of them is a book in time for the hackerspace&rsquo;s fifth anniversary. The book would be an &ldquo;open source handbook&rdquo; in the Albanian language. Not only would it have the history of Open Labs, but it would introduce various open source projects and connect readers to resources so they could have an impact on a project. Additionally, the team is looking at policy in their government as a next step. Qoshi had a great deal to say on this: &ldquo;It feels like we&rsquo;re reaching critical mass and gaining momentum to influence local policy in Albania. We want to push for open policies and government, especially with the coming elections in June. This is a great opportunity to let people know our stances on policies. Pushing FOSS only in our space can&rsquo;t be an insider secret—we need conversations with people coming from different views if we want change.&rdquo;</p>
<p>You can learn more about the hackerspace online at their <a href="https://openlabs.cc/en/">website</a>.</p>]]></description></item><item><title>2016 – My Year in Review</title><link>https://jwheel.org/blog/2017/02/2016-my-year-in-review/</link><pubDate>Fri, 17 Feb 2017 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2017/02/2016-my-year-in-review/</guid><description><![CDATA[<p>Before looking too far ahead to the future, it&rsquo;s important to spend time to reflect over the past year&rsquo;s events, identify successes and failures, and devise ways to improve. Describing my 2016 is a challenge for me to find the right words for. This post continues a habit I started last year with my <a href="https://jwfblog.wpenginepowered.com/2016/02/2015-year-review/">2015 Year in Review</a>. One thing I discover nearly every day is that I&rsquo;m always learning new things from various people and circumstances. Even though 2017 is already getting started, I want to reflect back on some of these experiences and opportunities of the past year.</p>

<h2 id="preface">Preface&nbsp;<a class="hanchor" href="#preface" aria-label="Anchor link for: Preface">🔗</a></h2>
<p>When I started writing this in January, I read <a href="https://freenode.net/">freenode</a>&rsquo;s &ldquo;<a href="https://freenode.net/news/2016-is-finally-dead">Happy New Year!</a>&rdquo; announcement. Even though their recollection of the year began as a negative reflection, the freenode team did not fail to find some of the positives of this year as well. The attitude reflected in their blog post is reflective of the attitude of many others today. 2016 has brought more than its share of sadness, fear, and a bleak unknown, but the colors of radiance, happiness, and hope have not faded either. Even though some of us celebrated the end of 2016 and its tragedies, two thoughts stay in my mind.</p>
<p>One, it is fundamentally important for all of us to stay vigilant and aware of what is happening in the world around us. The changing political atmosphere of the world has brought a shroud of unknowing, and the changing of a number does not and will not signify the end of these doubts and fears. 2017 brings its own series of unexpected events. I don&rsquo;t consider this a negative, but in order for it not to become a negative, we must constantly remain active and aware.</p>
<p>Secondly, despite the more bleak moments of this year, there has never been a more important time to embrace the positives of the past year. For every hardship faced, there is an equal and opposite reaction. Love is all around us and sometimes where we least expect it. Spend extra time this new year remembering the things that brought you happiness in the past year. Hold them close, but share that light of happiness with others too. You might not know how much it&rsquo;s needed.</p>

<h2 id="first-year-of-university-complete">First year of university: complete!&nbsp;<a class="hanchor" href="#first-year-of-university-complete" aria-label="Anchor link for: First year of university: complete!">🔗</a></h2>
<p>Many things changed since I decided to pack up my life and go to a school a thousand miles away from my hometown. In May, I officially finished my first year at the <a href="https://www.rit.edu/">Rochester Institute of Technology</a>, finishing the full year on dean&rsquo;s list. Even though it was only a single year, the changes from my decision to make the move are incomparable. Rochester exposed me to amazing, brilliant people. I&rsquo;m connected to organizations and groups based on my interests like I never imagined. My courses are challenging, but interesting. If there is anything I am appreciative of in 2016, it is for the opportunities that have presented themselves to me in Rochester.</p>

<h4 id="adventures-into-fossmagic">Adventures into FOSS@MAGIC&nbsp;<a class="hanchor" href="#adventures-into-fossmagic" aria-label="Anchor link for: Adventures into FOSS@MAGIC">🔗</a></h4>
<p>
<figure>
  <img src="/blog/2017/02/Group-photo.jpg" alt="On 2016 Dec. 10th, the &ldquo;FOSS Family&rdquo; went to dinner at a local restaurant to celebrate the semester" loading="lazy">
  <figcaption>On 2016 Dec. 10th, the \&#34;FOSS Family\&#34; went to dinner at a local restaurant to celebrate the semester</figcaption>
</figure>
</p>
<p>My involvement with the <a href="http://foss.rit.edu">Free and Open Source Software (FOSS) community at RIT</a> has grown exponentially since I began participating in 2015. I took <a href="https://hfoss-ritjoe.rhcloud.com/">my first course</a> in the FOSS minor, Humanitarian Free and Open Source Software Development in spring 2016. In the following fall 2016 semester, I <a href="https://hfoss16f-ritjoe.rhcloud.com/">became the teaching assistant</a> for the course. I helped show our community&rsquo;s projects <a href="https://opensource.com/education/16/6/imagine-rit">at Imagine RIT</a>. I helped carry the <a href="https://jwfblog.wpenginepowered.com/2016/11/spigotmc-california-minecon/">RIT FOSS flag in California</a> (more on that later). The FOSS@MAGIC initiative was an influencing factor for my decision to attend RIT and continues to play an impact in my life as a student.</p>
<p>I eagerly look forward to future opportunities for the FOSS projects and initiatives at RIT to grow and expand. Bringing open source into more students&rsquo; hands excites me!</p>

<h4 id="i-3-wic">I &lt;3 WiC&nbsp;<a class="hanchor" href="#i-3-wic" aria-label="Anchor link for: I &lt;3 WiC">🔗</a></h4>
<p>With a new schedule, the fall 2016 semester marked the beginning of my active involvement with the Women in Computing (WiC) program at RIT, as part of the Allies committee. Together with other members of the RIT community, we work together to find issues in our community, discuss them and share experiences, and find ways to grow the WiC mission: to promote the success and advancement of women in their academic and professional careers.</p>
<p><a href="/img/WiCHacks-Opening-Ceremony.jpg">
<figure>
  <img src="/img/WiCHacks-Opening-Ceremony.jpg" alt="WiCHacks 2016 Opening Ceremony" loading="lazy">
</figure>
</a>In spring 2016, I participated as a <a href="https://jwfblog.wpenginepowered.com/2016/03/why-i-love-wichacks/">volunteer for WiCHacks</a>, the annual <a href="http://wichacks.rit.edu/">all-female hackathon</a> hosted at RIT. My first experience with WiCHacks left me impressed by all the hard work by the organizers and the entire atmosphere and environment of the event. After participating as a volunteer, I knew I wanted to become more involved with the organization. Fortunately, fall 2016 enabled me to become more active and engaged with the community. Even though I will be unable to attend WiCHacks 2017, I hope to help support the event in any way I can.</p>
<p>Also, hey! If you&rsquo;re a female high school or university student in the Rochester area (or willing to do some travel), you should seriously <a href="http://wichacks.rit.edu/">check this out</a>!</p>

<h2 id="google-summer-of-code">Google Summer of Code&nbsp;<a class="hanchor" href="#google-summer-of-code" aria-label="Anchor link for: Google Summer of Code">🔗</a></h2>
<p><a href="https://summerofcode.withgoogle.com/">Google Summer of Code</a>, abbreviated to GSoC, is an annual program run by Google every year. Google works with open source projects to offer stipends for them to pay students to work on projects over the summer. In a last-minute decision to apply, I was <a href="https://communityblog.fedoraproject.org/fedora-google-summer-of-code-2016/">accepted as a contributing student</a> to the Fedora Project. My proposal was to work within the Fedora Infrastructure team to help <a href="https://summerofcode.withgoogle.com/archive/2016/projects/4844704050970624/">automate the WordPress platforms</a> with Ansible. My mentor, <a href="https://patrick.uiterwijk.org/about/">Patrick Uiterwijk</a>, provided much of the motivation for the proposal and worked with me throughout the summer as I began learning Ansible for the first time. Over the course of the summer, my learned knowledge began to turn into practical experience.</p>
<p>It would be unfair for a reflection to count successes but not failures. GSoC was one of the most challenging and stressful activities I&rsquo;ve ever participated in. It was a complete learning experience for me. One area I noted that I needed to improve on was communication. My failing point was not regularly communicating what I was working through or stuck on with my mentor and the rest of the Fedora GSoC community. GSoC taught me the value of asking questions often when you&rsquo;re stuck, especially in an online contribution format.</p>
<p>On the positive side, GSoC helped formally introduce me to Ansible, and to a lesser extent, the value of automation in operations work. My work in GSoC helped enable me to become a sponsored sysadmin of Fedora, where I mostly focus my time contributing to the <a href="https://badges.fedoraproject.org/about">Badges site</a>. Additionally, my experience in GSoC helped me when interviewing for summer internships (also more on this later).</p>
<p>Google Summer of Code came with many ups and downs. But I made it and <a href="https://jwfblog.wpenginepowered.com/2016/08/gsoc-2016-thats-wrap/">passed the program</a>. I&rsquo;m happy and fortunate to have received this opportunity from the Fedora Project and Google. I learned several valuable lessons that have and will impact going forward into my career. I look forward to participating either as a mentor or organizer for GSoC 2017 with the Fedora Project this year.</p>

<h2 id="flock-2016">Flock 2016&nbsp;<a class="hanchor" href="#flock-2016" aria-label="Anchor link for: Flock 2016">🔗</a></h2>
<p>
<figure>
  <img src="/blog/2017/02/flock-group-photo-5_28949792761_o.jpg" alt="Group photo of all Flock 2016 attendees outside of the conference venue (Photo courtesy of Joe Brockmeier)" loading="lazy">
  <figcaption>Group photo of all Flock 2016 (<a href="https://flocktofedora.org/" class="bare">https://flocktofedora.org/</a>) attendees outside of the conference venue (Photo courtesy of Joe Brockmeier)</figcaption>
</figure>
</p>
<p>Towards the end of summer, in the beginning of August, I was <a href="https://jwfblog.wpenginepowered.com/2016/07/czesc-poland-back-europe/">accepted as a speaker</a> to the annual Fedora Project contributor conference, <a href="https://flocktofedora.org/">Flock</a>. As a speaker, my travel and accommodation were sponsored to the event venue in Kraków, Poland.</p>
<p>Months after Flock, I am still incredibly grateful for receiving the opportunity to attend the conference. I am appreciative and thankful to Red Hat for helping cover my costs to attend, which is something I would never be able to do on my own. Outside of the real work and productivity that happened during the conference, I am happy to have mapped names to faces. I met incredible people from all corners of the world and have made new lifelong friends (who I was fortunate to see again in 2017)! Flock introduced me in-person to the diverse and brilliant community behind the Fedora Project. It is an experience that will stay with me forever.</p>
<p>To read a more in-depth analysis of my time in Poland, you can read <a href="https://jwfblog.wpenginepowered.com/2016/08/fedora-flock-2016/">my full write-up</a> of Flock 2016.</p>
<p>
<figure>
  <img src="/img/IMG_9225.jpg" alt="To Kraków for Flock with Bee, Amita, Jona, and Giannis" loading="lazy">
  <figcaption>On a bus to the Kraków city center with Bee Padalkar, Amita Sharma, Jona Azizaj, and Giannis Konstantinidis (left to right).</figcaption>
</figure>
</p>

<h2 id="maryland-bitcamp-massachusetts-hackmit-california-minecon">Maryland (Bitcamp), Massachusetts (HackMIT), California (MINECON)&nbsp;<a class="hanchor" href="#maryland-bitcamp-massachusetts-hackmit-california-minecon" aria-label="Anchor link for: Maryland (Bitcamp), Massachusetts (HackMIT), California (MINECON)">🔗</a></h2>
<p>
<figure>
  <img src="/img/group-photo.png" alt="Bitcamp 2016: The Fedora Ambassadors of Bitcamp 2016" loading="lazy">
  <figcaption>The Fedora Ambassadors at Bitcamp 2016. Left to right: Chaoyi Zha (cydrobolt), Justin Wheeler (jflory7), Mike DePaulo (mikedep333), Corey Sheldon (linuxmodder)</figcaption>
</figure>
</p>
<p>2016 provided me the opportunity to explore various parts of my country. Throughout the year, I attended various conferences to represent the <a href="https://fedoraproject.org/wiki/Overview">Fedora Project</a>, the <a href="https://www.spigotmc.org/wiki/about-spigot/">SpigotMC project</a>, and the <a href="http://foss.rit.edu">RIT open source</a> community.</p>
<p>There are three distinct events that stand out in my memory. For the first time, I visited the <a href="https://jwfblog.wpenginepowered.com/2016/04/bitcamp-2016/">University of Maryland for Bitcamp</a> as a Fedora Ambassador. It also provided me an opportunity to see my nation&rsquo;s capitol for the first time. I also visited Boston for the first time this year as well for HackMIT, MIT&rsquo;s annual hackathon event. I also participated as a Fedora Ambassador and <a href="https://communityblog.fedoraproject.org/hackmit-meets-fedora/">met brilliant students</a> from around the country (and even the world, with one student I met flying in from India for the weekend).</p>
<p>
<figure>
  <img src="/blog/2017/02/Team-Ubuntu-2.jpg" alt="Team Ubuntu shows off their project to Charles Profitt before the project deadline for HackMIT 2016" loading="lazy">
  <figcaption>Team Ubuntu shows off their project to Charles Profitt (<a href="https://fedoraproject.org/wiki/User:Cprofitt" class="bare">https://fedoraproject.org/wiki/User:Cprofitt</a>) before the project deadline for HackMIT 2016 (<a href="https://hackmit.org/" class="bare">https://hackmit.org/</a>)</figcaption>
</figure>
</p>
<p>Lastly, I also took my first journey to the US west coast for MINECON 2016, the annual Minecraft convention. <a href="https://jwfblog.wpenginepowered.com/2016/11/spigotmc-california-minecon/">I attended</a> as a staff member of the SpigotMC project and a representative of the open source community at RIT.</p>
<p>All three of these events have their own event reports to go with them. More info and plenty of pictures are in the full reports.</p>
<ul>
<li><a href="https://jwfblog.wpenginepowered.com/2016/04/bitcamp-2016/">Going to Bitcamp 2016</a></li>
<li><a href="https://communityblog.fedoraproject.org/hackmit-meets-fedora/">HackMIT meets Fedora</a></li>
<li><a href="https://jwfblog.wpenginepowered.com/2016/11/spigotmc-california-minecon/">SpigotMC goes to California for MINECON</a></li>
</ul>

<h2 id="vermont-2016-with-matt">Vermont 2016 with Matt&nbsp;<a class="hanchor" href="#vermont-2016-with-matt" aria-label="Anchor link for: Vermont 2016 with Matt">🔗</a></h2>
<p>
<figure>
  <img src="/blog/2017/02/IMG_8441.jpg" alt="Shortly after I arrived, Matt Coutu took me around to see the sights and find coffee" loading="lazy">
  <figcaption>Shortly after I arrived, Matt took me around to see the sights and find coffee.</figcaption>
</figure>
</p>
<p>Some trips happen without prior arrangements and planning. Sometimes, the best memories are made by not saying no. I remember the phone call with one of my closest friends, Matt Coutu, at some point in October. On a sudden whim, we planned my first visit to Vermont to visit him. Some of the things he told me to expect made me excited to explore Vermont! And then in the pre-dawn hours of November 4th, I made the trek out to Vermont to see him.</p>
<p>
<figure>
  <img src="/blog/2017/02/IMG_8525-e1487263384338.jpg" alt="50 feet up into the air atop Spruce Mountain was colder than we expected" loading="lazy">
  <figcaption>50 feet up into the air atop Spruce Mountain was colder than we expected.</figcaption>
</figure>
</p>
<p>Instantly when crossing over the state border, I knew this was one of the most beautiful states I ever visited. During the weekend, the two of us did things that I think only the two of us would enjoy. We climbed a snowy mountain to reach an abandoned fire watchtower, where we endured a mini blizzard. We walked through a city without a specific destination in mind, but to go wherever the moment took us.</p>
<p>We visited a quiet dirt road that led to a meditation house and cavern maintained by monks, where we meditated and drank in the experience. I wouldn&rsquo;t classify the trip has a high-energy or engaging trip, but for me, it was one of the most enjoyable trips I&rsquo;ve embarked on yet. There are many things that I still hold on to from that weekend for remembering or reflecting back on.</p>
<p>A big shout-out to Matt for always supporting me with everything I do and always being there when we need each other.</p>
<p>
<figure>
  <img src="/blog/2017/02/IMG_8476.jpg" alt="Martin Bridge may not be one of your top places to visit in Vermont, but if you keep going, you&rsquo;ll find a one-of-a-kind view" loading="lazy">
  <figcaption>Martin Bridge may not be one of your top places to visit in Vermont, but if you keep going, you’ll find a one-of-a-kind view.</figcaption>
</figure>
</p>

<h2 id="finally-seeing-nyc-with-nolski">Finally seeing NYC with Nolski&nbsp;<a class="hanchor" href="#finally-seeing-nyc-with-nolski" aria-label="Anchor link for: Finally seeing NYC with Nolski">🔗</a></h2>
<p>
<figure>
  <img src="/blog/2017/02/Nolski-and-jflory-take-Manhatten.jpg" alt="Mike Nolan and Justin Wheeler venture through New York City early on a Sunday evening" loading="lazy">
  <figcaption>Mike Nolan and I venture through New York City early on a Sunday evening</figcaption>
</figure>
</p>
<p>In no short time after the Vermont trip, I purchased tickets for my favorite band, <a href="http://www.elteneleven.com/">El Ten Eleven</a>, in New York City on November 12th. What turned into a one-day trip to see the band turned into an all-weekend trip to see the band, see New York City, and spend some time catching up with two of my favorite people, <a href="http://nolski.rocks/">Mike Nolan</a> (nolski) and <a href="http://decausemaker.org/">Remy DeCausemaker</a> (decause). During the weekend, I saw the World Trade Center memorial site for the first time, tried some amazing bagels, explored virtual reality in Samsung&rsquo;s HQ, and got an exclusive inside look at the <a href="https://giphy.com/">Giphy</a> office.</p>
<p>This was my third time in New York City, but my first time to explore the city. Another shout-out goes to Mike for letting me crash on his couch and stealing his Sunday to walk through his metaphorical backyard. Hopefully it isn&rsquo;t my last time to visit the city either!</p>

<h2 id="finalizing-study-abroad">Finalizing study abroad&nbsp;<a class="hanchor" href="#finalizing-study-abroad" aria-label="Anchor link for: Finalizing study abroad">🔗</a></h2>
<p>
<figure>
  <img src="/blog/2017/02/DSC_0029.jpg" alt="This may be cheating since it was taken in 2017, but this is one of my favorite photos from Dubrovnik, Croatia so far" loading="lazy">
  <figcaption>This may be cheating since it was taken in 2017, but this is one of my favorite photos from Dubrovnik, Croatia so far. You can find more like this on my 500px gallery (<a href="https://500px.com/jflory7/galleries/dubrovnik-croatia" class="bare">https://500px.com/jflory7/galleries/dubrovnik-croatia</a>)!</figcaption>
</figure>
</p>
<p>At the end of 2016, I finalized a plan that was more than a year in the making. I applied and was accepted to study abroad at the Rochester Institute of Technology campus in Dubrovnik, Croatia. RIT has a few satellite campuses across the world: two in Croatia (Zagreb and Dubrovnik) and one in Dubai, UAE. In addition to being accepted, the university provided me a grant to further my education abroad. I am fortunate to have received this opportunity and can&rsquo;t wait to spend the next few months of my life in Croatia. I am currently studying in Dubrovnik since January until the end of May.</p>
<p>During my time here, I will be taking 12 credit hours of courses. I am taking ISTE-230 (Introduction to Database and Data Modeling), ENGL-361 (Technical Writing), ENVS-150 (Ecology of the Dalmatian Coast), and lastly, FOOD-161 (Wines of the World). The last one was a fun one that I took for myself to try broadening my experiences while abroad.</p>
<p>Additionally, one of my personal goals for 2017 is to practice my photography skills. During my time abroad, I have created a <a href="https://500px.com/jflory7/galleries/dubrovnik-croatia">gallery on 500px</a> where I upload my top photos from every week. I welcome feedback and opinions about my pictures, and if you have criticism for how I can improve, I&rsquo;d love to hear about it!</p>

<h2 id="accepting-my-first-co-op">Accepting my first co-op&nbsp;<a class="hanchor" href="#accepting-my-first-co-op" aria-label="Anchor link for: Accepting my first co-op">🔗</a></h2>
<p>The last big break that I had in 2016 was accepting my first co-op position. Starting in June, I will be a Production Engineering Intern at <a href="http://jumptrading.com/">Jump Trading, LLC</a>. I started interviewing with Jump Trading in October and even had an on-site interview that brought me to their headquarters in Chicago at the beginning of December. After meeting the people and understanding the culture of the company, I am happy to accept a place at the team. I look forward to learning from some of the best in the industry and hope to contribute to some of the fascinating projects going on there.</p>
<p>From June until late August, I will be starting full-time at their Chicago office. If you are in the area or ever want to say hello, let me know and I&rsquo;d be happy to grab coffee, once I figure out where all the best coffee shops in Chicago are!</p>

<h2 id="in-summary">In summary&nbsp;<a class="hanchor" href="#in-summary" aria-label="Anchor link for: In summary">🔗</a></h2>
<p>2015 felt like a difficult year to follow, but 2016 exceeded my expectations. I acknowledge and I&rsquo;m grateful for the opportunities this year presented to me. Most importantly, I am thankful for the people who have touched my life in a unique way. I met many new people and strengthened my friendships and bonds with many old faces too. All of the great things from the past year would not be possible without the influence, mentorship, guidance, friendship, and comradery these people have given me. My mission is to always pay it forward to others in any way that I can, so that others are able to experience the same opportunities (or better).</p>
<p>2017 is starting off hot and moving quickly, so I hope I can keep up! I can&rsquo;t wait to see what this year brings and hope that I have the chance to meet more amazing people, and also meet many of my old friends again, wherever that may be.</p>
<p>Keep the FOSS flag high.</p>]]></description></item><item><title>Students and professors work across the aisle during Election Night Hackathon</title><link>https://jwheel.org/blog/2016/12/2016-election-night-hackathon/</link><pubDate>Thu, 15 Dec 2016 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2016/12/2016-election-night-hackathon/</guid><description><![CDATA[<p><a href="https://opensource.com/article/16/12/2016-election-night-hackathon"><em>This post was originally published on Opensource.com.</em></a></p>
<hr>
<p>On Tuesday, November 8th, 2016, the <a href="http://foss.rit.edu/">FOSS@MAGIC</a> at the <a href="https://magic.rit.edu/">MAGIC Center</a> at RIT held the annual Election Night Hackathon. Over 140 students from across campus and across departments gathered together to work on a range of civic projects as the election night results came in. This year&rsquo;s hackathon was the sixth in a long-standing tradition of civic duty and open source collaboration.</p>

<h2 id="starting-the-election-night-hackathon">Starting the Election Night Hackathon&nbsp;<a class="hanchor" href="#starting-the-election-night-hackathon" aria-label="Anchor link for: Starting the Election Night Hackathon">🔗</a></h2>
<p>
<figure>
  <img src="/blog/2016/11/IMG_8753.jpg" alt="Dan Schneiderman updating the news sources on the projector screens during the Election Night Hackathon by FOSS at RIT" loading="lazy">
  <figcaption>Dan Schneiderman (<a href="http://www.schneidy.com/" class="bare">http://www.schneidy.com/</a>) updating the news sources on the projector screens</figcaption>
</figure>
</p>
<p>For this year&rsquo;s event, registration was a ticketed event because of the overwhelming interest in the election. At 5:00pm, the sign-in table popped up in front of the <a href="https://www.rit.edu/research/simonecenter/">Student Innovation Hall</a>, where the hackathon would take place. Students began lining up to receive their wristband for admission, food, and open source swag.</p>
<p>The space quickly became filled over the next hour as people began settling in for the night to work on projects (or maybe homework). On all sides were a range of projector screens with a range of sources for election night coverage. There would not be a lack of information through the night. In addition to the federal election, local and state elections throughout New York were also included on the projectors.</p>
<p>
<figure>
  <img src="/blog/2016/11/IMG_8759.jpg" alt="The Election Night Hackathon was a full house after the kick-off ceremony during the Election Night Hackathon by FOSS at RIT" loading="lazy">
  <figcaption>The Election Night Hackathon was a full house after the kick-off ceremony</figcaption>
</figure>
</p>
<p>The Election Night Hackathon had no shortage of goodies provided by numerous open source organizations, companies, and supporters. The &ldquo;swag table&rdquo; featured plenty of stickers for people to add to their laptops or other devices. The <a href="https://fedoraproject.org/wiki/Overview">Fedora Project</a>, <a href="https://github.com/">GitHub</a>, <a href="https://www.redhat.com/en">Red Hat</a>, the <a href="https://magic.rit.edu/">MAGIC Center</a>, and more were available for attendees to pick their favorites out.</p>

<h2 id="projects">Projects&nbsp;<a class="hanchor" href="#projects" aria-label="Anchor link for: Projects">🔗</a></h2>
<p>At the peak of the event, nearly 140 students, faculty, staff, and local citizens filled the MAGIC Center and overflow work spaces. <a href="http://www.schneidy.com/">Dan Schneiderman</a>, the event coordinator and <a href="https://opensource.com/education/16/5/interview-dan-schneiderman-rit">FOSS@MAGIC Research Associate and Community Liaison</a>, led the event on a high note with a brief kick-off ceremony. Hackers were provided with a list of resources for building applications related to civic hacking. Shortly after the start, attendees began talking with one another to discuss project ideas or other topics to work on throughout the night. Professors and alumni provided mentorship, advice, and help for students planning projects.</p>
<p>
<figure>
  <img src="/blog/2016/11/IMG_8742.jpg" alt="Mark Repka works on his 2016 Election Viewer app during the Election Night Hackathon by FOSS at RIT" loading="lazy">
  <figcaption>Mark Repka works on his 2016 Election Viewer app</figcaption>
</figure>
</p>
<p><a href="https://github.com/tydus101">Tyler Reimold</a> worked on creating an open source server for real-time election updates in a Reddit thread. His <a href="https://github.com/tydus101/reddit-live-election">Python-based project</a> used the <a href="http://elections.huffingtonpost.com/pollster/api">Huffington Post</a> and Reddit APIs to build the application.</p>
<p>Adjunct professor at Monroe Community College  David M. Shein gathered a small group of hackers to build a website. The website, <a href="https://thankyousuffragists.org/">thankyousuffragists.org</a>, honors and maps the graves of women around the country who campaigned for the right to vote. The early stage site allows people to add the locations of graves around the country to a map. &ldquo;I personally loved how a number of our attendees were inspired by the crowds that stopped by <a href="http://www.pbs.org/newshour/rundown/hundreds-voted-stickers-left-susan-b-anthonys-grave/">Susan B. Anthony’s grave</a> in Rochester, which then led to a project focused on honoring her work,&rdquo; Schneiderman said.</p>
<p>Additionally, another project was the <a href="https://repkam09.com/election/">2016 Election Viewer</a> by <a href="https://repkam09.com/">Mark Repka</a>. His Node-powered application delivered a state-by-state breakdown of election results throughout the night. Attendees were encouraged to check it out and provide feedback as he built the site to provide accurate coverage during the heat of the election coverage. You can view Mark&rsquo;s application on <a href="https://repkam09.com/election/">his website</a>, browse <a href="https://api.repkam09.com/api/election/full">its own API</a>, or find the source code <a href="https://github.com/repkam09/election-viewer">on GitHub</a> (MIT License).</p>
<p>Many other students worked on smaller projects or collaborated with professors on other ideas. Dr. Vullo at RIT opened a call for students to help him with a virtual reality idea powered by <a href="https://aframe.io/">AFrame</a>. Most of the projects and work from the evening was published on GitHub in the spirit of contributing civic hacking projects to the open source ecosystem.</p>

<h2 id="and-the-winner-is">And the winner is…&nbsp;<a class="hanchor" href="#and-the-winner-is" aria-label="Anchor link for: And the winner is…">🔗</a></h2>
<p>After seven hours of hacking and nail-biting, the election results were mostly called by midnight. With a short conclusion speech by Schneiderman, the hackathon began closing down in time for the next day of classes. &ldquo;[My favorite part was] the collaborations and the mixing of students from majors that don’t usually get to work alongside each other. Attendance was a mix of computer science, marketing, political science, engineering, history, and visual arts,&rdquo; Schneiderman said. Special thanks for the event go to the <a href="https://magic.rit.edu/">MAGIC Center</a> at RIT for providing space and resources for the event. Additional thanks go to <a href="https://www.redhat.com/en">Red Hat</a> for supporting the <a href="http://foss.rit.edu/">FOSS@MAGIC initiative</a> so these events are made possible. You can find the full photo album from the event <a href="https://500px.com/jflory7/galleries/election-night-hackathon-2016">on 500px</a>.</p>
<p>November 8th is a day that will stand in memory for a long time, and the Election Night Hackathon is a great opportunity for students to engage in discussion and collaboration with others in the community to identify issues in the civic area and try to build open source solutions to those problems. We&rsquo;re looking forward to continuing the tradition next year for the next round of local, state, and federal elections.</p>]]></description></item><item><title>SpigotMC goes to California for MINECON</title><link>https://jwheel.org/blog/2016/11/spigotmc-california-minecon/</link><pubDate>Tue, 15 Nov 2016 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2016/11/spigotmc-california-minecon/</guid><description><![CDATA[<p>Every year, <a href="http://mojang.com/">Mojang</a> holds the annual <a href="https://minecraft.net/en/">Minecraft</a> convention, MINECON. <a href="https://en.wikipedia.org/wiki/Minecon">MINECON</a> is a convention where Minecraft players, software developers, content creators, and others in the Minecraft gaming world come together for a weekend of panels, activities, shows, and most importantly, comradery. I traveled to <a href="https://en.wikipedia.org/wiki/Anaheim,_California">Anaheim, California</a> to see the <a href="https://www.spigotmc.org/">SpigotMC</a> team again and help represent the open source cause. The convention was from September 24-25, 2016. This is my second time going to MINECON – <a href="https://jwfblog.wpenginepowered.com/2016/02/2015-year-review/">last year</a>, I went to London with the team as well.</p>

<h2 id="arriving-in-anaheim">Arriving in Anaheim&nbsp;<a class="hanchor" href="#arriving-in-anaheim" aria-label="Anchor link for: Arriving in Anaheim">🔗</a></h2>
<p>
<figure>
  <img src="/blog/2016/11/IMG_0115.jpg" alt="SpigotMC team grabs lunch on Friday and meets others in the community at MINECON 2016 in Anaheim, California" loading="lazy">
  <figcaption>SpigotMC team grabs lunch on Friday and meets others in the community</figcaption>
</figure>
</p>
<p>I arrived in Anaheim early in the morning on Friday, September 23. Unlike last year when I flew in on the first day, I had some time to get to my hotel, settle in, and meet the team before the action began. <a href="https://twitter.com/md__5/">Michael Dardis</a>, the project lead, and <a href="https://twitter.com/jtaylor69">Jordan Taylor</a>, a fellow community moderator, were already in California. Michael was visiting from Australia and Jordan flew in from the UK. They decided to take advantage of the opportunity to travel and see some of what the west coast has to offer.</p>
<p>After checking into our room and leaving our luggage, we went to scout the convention floor and see what we would be facing on Saturday and Sunday. The convention was held in the <a href="https://en.wikipedia.org/wiki/Anaheim_Convention_Center">Anaheim Convention Center</a>, which was a large venue to accommodate over 12,000 attendees. I checked myself in as an Agent, or in other words, a convention volunteer. After getting our badges and goodies, the team visited some of the various food trucks outside the convention center. Without much of a delay, we began meeting various others from the Minecraft community. One of the people we spent the most time with over the weekend was <a href="https://github.com/rmichela">Ryan Michela</a>, a former developer of the Bukkit project. He would join us for most of the weekend as an honorary Spigot team member.</p>
<p>As the day began to close, we traveled through Anaheim to see if we could find a spot to host our annual tradition of a community meal, and that we did!</p>

<h2 id="spigot-hits-the-minecon-floor">Spigot hits the MINECON floor!&nbsp;<a class="hanchor" href="#spigot-hits-the-minecon-floor" aria-label="Anchor link for: Spigot hits the MINECON floor!">🔗</a></h2>
<p>
<figure>
  <img src="/blog/2016/11/IMG_0182.jpg" alt="SpigotMC team gathers on Saturday before going into the convention center for MINECON 2016 in Anaheim, California" loading="lazy">
  <figcaption>SpigotMC team gathers on Saturday before going into the convention center</figcaption>
</figure>
</p>
<p>Saturday morning started bright and early as some of the team members had meetings with other people in the community, and I had my Agent shift for the <a href="https://hypixel.net/">Hypixel</a> Arena for most of the morning. My shift mostly consisted of directing people to and from various computer stations for a tournament bracket of various mini games. This was probably one of the most high-pace jobs for the volunteers as it was low-light and required constant vigilance to cycle new players into open stations. Nonetheless, I enjoyed the experience and met some cool members of the Hypixel team and other Agents along the way.</p>
<p>
<figure>
  <img src="/blog/2016/11/IMG_0169.jpg" alt="The Hypixel Arena in full swing! Working here was crazy, but fun at MINECON 2016 in Anaheim, California" loading="lazy">
  <figcaption>The Hypixel Arena in full swing! Working here was crazy, but fun.</figcaption>
</figure>
</p>
<p>After my shift ended, I reunited with the rest of the team as we explored everything MINECON had to offer. It was a different experience than last year since SpigotMC did not have a booth, but we watched some interesting panels and talked with various fans throughout the day. Those of us on the floor had brought plenty of <a href="https://twitter.com/Spigot_MC/status/780159798247428096">SpigotMC swag</a>, from t-shirts to flyers to wristbands. By the end of the convention, we had distributed around 20 t-shirt packages and nearly 500 wristbands.</p>

<h4 id="minecraft-mods-for-teaching">Minecraft mods for teaching&nbsp;<a class="hanchor" href="#minecraft-mods-for-teaching" aria-label="Anchor link for: Minecraft mods for teaching">🔗</a></h4>
<p>
<figure>
  <img src="/blog/2016/11/IMG_0133.jpg" alt="SpigotMC project lead Michael Dardis answers a question at the Using Minecraft Mods for Teaching panel at MINECON 2016" loading="lazy">
  <figcaption>SpigotMC project lead Michael Dardis (<a href="https://twitter.com/md__5/" class="bare">https://twitter.com/md__5/</a>) answers a question at the <em>Using Minecraft Mods for Teaching</em> panel</figcaption>
</figure>
</p>
<p>One of the big highlights of the weekend was the &ldquo;<a href="https://youtu.be/XwPUb4Wa1U4"><em>Using Minecraft Mods for Teaching</em></a>&rdquo; panel. Our project lead, Michael, was one of the panelists to speak. The panel covered the various methods and tools from Minecraft and the community. These methods and tools help enable teachers and mentors to introduce programming concepts to children and grow interest in computer science.</p>

<h4 id="asking-about-open-source">Asking about open source&nbsp;<a class="hanchor" href="#asking-about-open-source" aria-label="Anchor link for: Asking about open source">🔗</a></h4>
<p>As some in the team joked that they knew I would bring it up, I asked the panelists about the role of open source in Minecraft and computer science education. Through my own experiences, I believe the game is a powerful medium to empower children to begin thinking critically of their digital world, and not only to think about it, but to begin shaping it. Open source fits well with this because kids can read how others did a particular task or project and learn by example. <a href="https://twitter.com/arungupta/">Arun Gupta</a>, the panel moderator, took lead on the question and talked further about how open source is an important part of the puzzle.</p>
<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
      <iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube-nocookie.com/embed/XwPUb4Wa1U4?autoplay=0&amp;controls=1&amp;end=0&amp;loop=0&amp;mute=0&amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"></iframe>
    </div>


<h4 id="encouraging-girls-into-programming">Encouraging girls into programming&nbsp;<a class="hanchor" href="#encouraging-girls-into-programming" aria-label="Anchor link for: Encouraging girls into programming">🔗</a></h4>
<p>Lastly, a question I did not expect to hear but was glad to hear it was from <a href="http://ninaarens.com/">Nina Arens</a>, an educator and part of the <a href="http://www.livingcomputers.org/">Living Computer Museum</a> in Seattle. Her question specifically targeted how to help more young girls get interested in what is traditionally a male-dominated environment. While the discussion was hard to come to a definitive solution in the time of the panel, I was happy to see this question raised. The discourse for raising interest in computer science in children needs to include these types of questions. The role of diversity in tech is an ongoing issue and needs more exposure even in places where it&rsquo;s not traditionally asked. Thank you, Nina, for asking some of these hard questions during the panel.</p>
<p>For more coverage of these points, you can watch the full panel above.</p>

<h2 id="community-dinner">Community dinner&nbsp;<a class="hanchor" href="#community-dinner" aria-label="Anchor link for: Community dinner">🔗</a></h2>
<p>
<figure>
  <img src="/blog/2016/11/IMG_0171.jpg" alt="The annual SpigotMC dinner, where the community joins the staff team for a night of food and fun at MINECON 2016 in Anaheim, California" loading="lazy">
  <figcaption>The annual SpigotMC dinner, where the community joins the staff team for a night of food and fun</figcaption>
</figure>
</p>
<p>Tradition calls for the SpigotMC team to organize an annual meal for our community members. This year, we settled on the <a href="http://www.cpk.com/">California Pizza Kitchen</a> as our venue. Because of a range of complications, we were unable to reserve ahead of time. On Friday night, Michael, Jordan, Ryan, and myself did a trial run of CPK and decided we would host there. The view was beautiful from the outside tables, with the sun setting right down the middle of the boulevard. We went ahead and booked the reservation the day of.</p>

<h4 id="night-of-food-and-fun">Night of food and fun&nbsp;<a class="hanchor" href="#night-of-food-and-fun" aria-label="Anchor link for: Night of food and fun">🔗</a></h4>
<p>On Saturday, after the convention floor closed up, we began gathering the team members and some of the community together from the convention center and walked over to the restaurant. Some people were waiting there or joined us shortly after we arrived. Overall, I think the total number of attendees was close to 40 people. We didn&rsquo;t have cool name badges like last year, but it was an enjoyable event and I was happy to meet so many amazing people from the community in-person. If you attended our dinner, thank you again for coming out and I hope the team will get to see you again!</p>
<p>
<figure>
  <img src="/blog/2016/11/IMG_0172.jpg" alt="We checked Twitter for a moment to find that our feeds were exploding with MINECON activity in Anaheim, California" loading="lazy">
  <figcaption>We checked Twitter for a moment to find that our feeds were exploding with MINECON activity!</figcaption>
</figure>
</p>
<p>Furthermore, one thing I find worth noting is the kind generosity that I have come to know from Michael. At the end of the evening, he left one of the most generous tips to the (awesome) wait staff at the California Pizza Kitchen. The manager had to come out and verify that the amount was correct before charging it. It was clear this made their night. For these reasons and plenty of others, I am happy that Michael is the person leading the SpigotMC project.</p>

<h4 id="open-education">Open education&nbsp;<a class="hanchor" href="#open-education" aria-label="Anchor link for: Open education">🔗</a></h4>
<p>One of my most interesting conversations was with Christie Fierro, part of the <a href="http://www.yeticraft.net/">YetiCraft team</a> and an educator at the <a href="http://www.tacomacc.edu/">Tacoma Community College</a> in Tacoma, Washington. I quickly found that Christie and I shared many of the same interests and engagement with using open source and open content to empower students and build better curriculum in education systems. The big project she was helping drive was a Minecraft seeing eye dog to help engage blind students.</p>
<p>Another one of the big goals she was helping drive was <a href="https://creativecommons.org/">Creative Commons</a>-licensed textbooks and material for courses. This was fascinating for me to hear about and I enjoyed learning how the open world is continuing to have a larger presence in education. Thank you Christie for the great conversation and discussion, and I hope we can collaborate together in the future with some of the open work at the <a href="https://www.rit.edu/">Rochester Institute of Technology</a>.</p>

<h2 id="meeting-my-server-staff">Meeting my server staff&nbsp;<a class="hanchor" href="#meeting-my-server-staff" aria-label="Anchor link for: Meeting my server staff">🔗</a></h2>
<p>
<figure>
  <img src="/blog/2016/11/Justin-and-Justin.jpg" alt="After four years, I finally meet one of my awesome staff members, Justin Natzic at MINECON 2016 in Anaheim, California" loading="lazy">
  <figcaption>After four years, I finally meet one of my awesome staff members, Justin Natzic (<a href="https://crystalcraftmc.com/members/natzic.20/" class="bare">https://crystalcraftmc.com/members/natzic.20/</a>)</figcaption>
</figure>
</p>
<p>This event report wouldn&rsquo;t be complete without noting the opportunity I had to meet one of my Minecraft server staff members. For over four years, I created, manage, and run the <a href="https://crystalcraftmc.com">CrystalCraftMC</a> Minecraft server network. One of the people who has been around for almost the entire time is <a href="https://crystalcraftmc.com/members/natzic.20/">Justin Natzic</a>. Justin is now a moderator on the server and has helped complete projects like a <a href="https://youtu.be/hh4sKCMzuKk">Mob Arena</a>, where players fight endless waves of monsters and bosses to receive prizes and loot. Together with the rest of the team, Justin helped lead and develop challenging waves to keep players on their toes.</p>

<h4 id="sunday-night-dinner">Sunday night dinner&nbsp;<a class="hanchor" href="#sunday-night-dinner" aria-label="Anchor link for: Sunday night dinner">🔗</a></h4>
<p>On Sunday night, I went to dinner with him and his father. We had to chance to reminisce about four years of memories, brainstorm some new ideas for the server, and enjoy the chance to finally meet each other in-person. I am fortunate to have an awesome team of volunteers like Justin help with my Minecraft server. Without my staff team, CrystalCraftMC would never have made it this far. I look forward to a chance where I might see him again, on the west coast or otherwise!</p>
<p>A double special thanks goes to him and his father for driving me to the airport, where I ended up racing through the airport with lights turning off behind me. I made my flight by about two minutes… no more, no less. I appreciate that I had them to drive me there, because I wouldn&rsquo;t have made it back in time for my 10:00am class on Monday otherwise!</p>

<h2 id="saying-goodbye">Saying goodbye&nbsp;<a class="hanchor" href="#saying-goodbye" aria-label="Anchor link for: Saying goodbye">🔗</a></h2>
<p>
<figure>
  <img src="/blog/2016/11/Team-photo.jpg" alt="Some of the team poses in front of the big MINECON 2016 banner in Anaheim, California" loading="lazy">
  <figcaption>Some of the team poses in front of the big MINECON 2016 banner</figcaption>
</figure>
</p>
<p>The end of the weekend was difficult for me. A couple of weeks after MINECON, I officially announced <a href="https://www.spigotmc.org/threads/its-been-an-amazing-three-years.185023/">my resignation</a> from the SpigotMC team. While I was still a staff member during MINECON, I had given this thought for a while and knew that this would likely be my last convention as a team member. SpigotMC is a major part of my life. From the project, I discovered the world of open source software and learned about various other things from the community. My experiences afforded by the SpigotMC project even influenced my choice in university and degree.</p>
<p>
<figure>
  <img src="/blog/2016/11/In-the-hotel.jpg" alt="Getting ready to wind down the night in our hotel at MINECON 2016 in Anaheim, California" loading="lazy">
  <figcaption>Getting ready to wind down the night in our hotel</figcaption>
</figure>
</p>
<p>Special thanks go to <a href="http://foss.rit.edu/">FOSS@MAGIC</a> at RIT for helping sponsor some of my travel costs to this convention. Without the support of the university, I would never have been able to attend. Extra big thanks goes to <a href="https://www.rit.edu/gccis/stephen-jacobs">Stephen Jacobs</a> for helping me navigate attending the convention even after the last-minute rejection of my panel.</p>

<h4 id="parting-words-of-advice">Parting words of advice&nbsp;<a class="hanchor" href="#parting-words-of-advice" aria-label="Anchor link for: Parting words of advice">🔗</a></h4>
<p>Throughout the years that I served, I have met many incredible and inspiring people. I am happy to know that the team behind the SpigotMC project are some of the best people I have met in open source. Even though my time is up, SpigotMC is in great hands and I know that its leadership will make the right decisions, even when it is hard to do. As I said to some of the others in the community, the absence of one giant gives way to the rise of others. I hope that with my passing, more members of the community will answer the call of building the community forward and caring for the SpigotMC family.</p>
<p>My other parting words for anyone reading is to always keep an open mind. What we learned as a moderation team is that no matter what decision we make, there will always be someone who thinks it is the wrong decision. It is impossible to make everyone happy. But the team is thoroughly committed to do the best job we can. So if there is ever something that frustrates you, spend time considering how decisions impact others. Try to think through our motivations for making the decisions we make. If you still disagree, instead of only complaining, help build a collaborative solution for how to make it better. This kind of feedback is always welcome. And should you ever feel stuck, my email inbox is always open. You can reach me at <code>jflory7 [at] spigotmc [dot] org</code>.</p>

<h4 id="thanks-team">Thanks, team&nbsp;<a class="hanchor" href="#thanks-team" aria-label="Anchor link for: Thanks, team">🔗</a></h4>
<p>I was incredibly fortunate to have the opportunity to travel to California this year and meet my fellow SpigotMC team members. I am thankful that I was able to see all the team members one last time and help wave the &ldquo;SpigotMC flag&rdquo; for another MINECON. Thank you everyone who has been a part of my journey through the world of Minecraft and SpigotMC. It has shaped my life immensely. Saying goodbye after all this long feels impossible to do. So instead…</p>
<p>So long. See you soon.</p>
<p>
<figure>
  <img src="/img/Spigot-Team.jpg" alt="SpigotMC Team at MINECON 2015 in London, England" loading="lazy">
  <figcaption>You guys all rock. Team photo from MINECON 2015 in London.</figcaption>
</figure>
</p>]]></description></item><item><title>Hatchit puts open source power in developers' hands</title><link>https://jwheel.org/blog/2016/11/hatchit-puts-open-source-power-developers-hands/</link><pubDate>Thu, 03 Nov 2016 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2016/11/hatchit-puts-open-source-power-developers-hands/</guid><description><![CDATA[<p><a href="https://opensource.com/life/16/10/hatchit"><em>This post was originally published on OpenSource.com.</em></a></p>
<hr>
<p>More and more students are learning about the world of open source through video games. Games like <a href="http://www.freeciv.org/">FreeCiv</a> let players build empires based on the history of human civilization while games like <a href="http://www.minetest.net/">Minetest</a> emulates Minecraft in an open source block-building sandbox. Students are encouraged to dig deeper into games like this, and projects like <a href="https://www.spigotmc.org">SpigotMC</a> empower kids to write plugins to extend their favorite games. However, the tools in open source to build the actual games do not share the same prominence. <a href="https://www.rit.edu/">Rochester Institute of Technology</a> student <a href="https://github.com/MattGuerrette">Matt Guerrette</a> hopes to help change that with his open source gaming engine, <a href="https://github.com/thirddegree/Hatchit">Hatchit</a>.</p>

<h2 id="introducing-hatchit">Introducing Hatchit&nbsp;<a class="hanchor" href="#introducing-hatchit" aria-label="Anchor link for: Introducing Hatchit">🔗</a></h2>
<p>Hatchit was a project started between <a href="https://github.com/MattGuerrette">Matt Guerrette</a> and fellow student <a href="https://github.com/Honeybunch">Arsen Tufankjian</a> together in February 2016. After working with game engines for other classes, they both found challenges over how popular game engines are designed for developers. They noted that these game engines were more design-oriented. It lacked some technical details they were looking for when working on their own personal or academic projects. Together, they had the idea to build their own open source gaming engine with a goal of exposing more of the technical sides of the process to developers. &ldquo;We want to give you more access to the programming side of the game engine,&rdquo; Matt explains.</p>
<p>Hatchit is written in C/C++ and licensed in a mix between GPL and LGPL. Originally, the project was started to take advantage of the <a href="https://en.wikipedia.org/wiki/DirectX">DirectX</a> APIs for development. However, Guerrette and Tufankjian ran into an unexpected event while they were getting started. Nvidia released the <a href="https://developer.nvidia.com/Vulkan">Vulkan</a> APIs in competition to the DirectX APIs. Originally, they had attempted to support both APIs simultaneously, but later opted to focus on Vulkan.</p>

<h4 id="inspiration-for-hatchit">Inspiration for Hatchit&nbsp;<a class="hanchor" href="#inspiration-for-hatchit" aria-label="Anchor link for: Inspiration for Hatchit">🔗</a></h4>
<p>Guerrette remembers a specific type of task he wanted to accomplish with Hatchit. In the game editor, he wanted to be able to construct a render pass instead of having the engine handle it internally. An earlier project had motivated the need for this feature. By being able to create the render passes in real time, a developer would be able to create something like a custom shader that bends vertices into straight, geometric shapes in real-time. His earlier project, Mineshaft Mayhem, demonstrates this concept with how the mineshaft seems to be warping and turning, but the tunnels are actually straight in the editor.</p>
<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
      <iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube-nocookie.com/embed/tzLMCVoDDGs?autoplay=0&amp;controls=1&amp;end=0&amp;loop=0&amp;mute=0&amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"></iframe>
    </div>

<p>You can find more videos of Guerrette&rsquo;s work on his <a href="https://www.youtube.com/channel/UC5HDOa8-y1loj3SUm4Zxzyw">YouTube channel</a>.</p>

<h2 id="whats-happening-now">What&rsquo;s happening now&nbsp;<a class="hanchor" href="#whats-happening-now" aria-label="Anchor link for: What&rsquo;s happening now">🔗</a></h2>
<p>Since starting the project, Tufankjian graduated and is now working at Amazon Game Design. Over the summer, the community started to show interest in the project. They&rsquo;ve received a pull request from one member outside of the core developer team and have several issues filed against the <a href="https://github.com/thirddegree">different repositories</a> for the engine.</p>
<p>Matt has a few milestones set ahead for the project this year. One of the biggest tasks he is working on is getting the Vulkan renderer multi-threaded design implemented and working. This vastly speeds up the render time when working on projects and is also proving one of the greatest challenges so far. In addition to the multi-threaded design, he hopes to have game objects and components serialized with JSON. This would make it easier for the editor application to modify game data and manipulate configurations with <a href="https://en.wikipedia.org/wiki/Qt_%5C%28software%5C%29">Qt</a>.</p>

<h2 id="looking-at-foss-and-hatchit">Looking at FOSS and Hatchit&nbsp;<a class="hanchor" href="#looking-at-foss-and-hatchit" aria-label="Anchor link for: Looking at FOSS and Hatchit">🔗</a></h2>
<p>Guerrette is not unfamiliar with open source, but this is his largest undertaking yet with an open source project. While working on the project, using an open source development model has made it easier to receive feedback, work with community contributors outside of the RIT community, and also handle some technical aspects well.</p>

<h4 id="benefits-of-working-in-the-open">Benefits of working in the open&nbsp;<a class="hanchor" href="#benefits-of-working-in-the-open" aria-label="Anchor link for: Benefits of working in the open">🔗</a></h4>
<p>Working on the project on GitHub has proved to benefit the project in a variety of ways. One of the most clear ways this helped is having people file issues and raise concerns over parts of the code. In one case, someone filed an issue against an older library that made a mathematical error in its calculations. &ldquo;Having the world&rsquo;s eyes on your project to catch errors is a good thing,&rdquo; Matt said. Guerrette found the freedom to use other open source libraries and dependencies for the engine especially useful. All the licenses were compatible and presented no issue to work with.</p>
<p>Some technical challenges were also made easier with open source tooling. One of the greatest challenges for the Hatchit team was writing the build system to use build system generator software and maintain compatibility with both Windows and Linux. Locally linking dependencies in the project was inconvenient and made the project unnecessarily huge. With git, they used submodules to link dependencies in the repository and build them from source when compiling Hatchit. &ldquo;Being able to link dependency repositories has been really useful, especially for developing on Windows,&rdquo; Matt found. Additionally, some of the continuous integration features on GitHub and other services made it easy to quickly test new changes for compatibility.</p>

<h4 id="challenges-of-open-source">Challenges of open source&nbsp;<a class="hanchor" href="#challenges-of-open-source" aria-label="Anchor link for: Challenges of open source">🔗</a></h4>
<p>Along the way, some challenges came by developing in the open that the team worked to resolve. With the convenience of using git submodules also came a difficulty of tracking upstream changes. On occasion, a dependency might break in the project. The team then has to check if the project has updated or changed upstream or if a fix needs to be made locally in their project.</p>
<p>Additionally, community outreach is a challenge Guerrette is hoping to focus on as the new project lead. He shares development updates on his <a href="https://www.youtube.com/channel/UC5HDOa8-y1loj3SUm4Zxzyw">YouTube channel</a> and occasionally will stream his development on <a href="https://www.livecoding.tv/">livecoding.tv</a>. One thing is working on to make it easier for new contributors to get involved is recommending them to try building the engine from the source code. This gives potential developers experience with compiling the engine and walks them through a variety of documentation available with the project.</p>

<h2 id="get-involved">Get involved&nbsp;<a class="hanchor" href="#get-involved" aria-label="Anchor link for: Get involved">🔗</a></h2>
<p>The Hatchit team is working further on the game engine and are looking for community participation. To get involved, Guerrette recommends checking out the l<a href="https://gitter.im/thirddegree/Hatchit">Hatchit Gitter chat</a> and to review the <a href="https://github.com/thirddegree/Hatchit/blob/master/README.md">README file</a> on the main repository. Any contributions are welcome, either in the form of pull requests or filing issues.</p>]]></description></item><item><title>Converting sounds into words: All of a Sudden I Miss Everyone</title><link>https://jwheel.org/blog/2016/10/converting-sounds-words-sudden-miss-everyone/</link><pubDate>Thu, 20 Oct 2016 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2016/10/converting-sounds-words-sudden-miss-everyone/</guid><description><![CDATA[<p>The dancer gracefully glides across the stage, with a slow but determined gait radiant with purpose. The movement is not her own, but neither is it forced. The sound uncoils itself as a rope and instructs the dancer forward, synchronizing her movement with the delicate pressure of the pianist&rsquo;s fingers. There is no consciousness, no concept of time. The moment is forever captured in the combination of auditory and visual perception. Without a single spoken word, an emotion is tearing at the seams of the casual observer.</p>
<p>Converting the sounds of music into words is a difficult task. It is more difficult task when the sounds of the music lack lyrics. It is possible, but a difficult task even for the most skilled linguist. Yet the embedded meaning, value, and transmission of emotion present in the music speaks a thousand words in the human heart. What makes this so difficult to describe? I am still searching for an answer to this question, but <a href="http://explosionsinthesky.com/">Explosions in the Sky</a> makes it easier for me by providing <a href="https://en.wikipedia.org/wiki/All_of_a_Sudden_I_Miss_Everyone"><em>All of a Sudden I Miss Everyone</em></a>, their fourth album. Originally released in 2007, the Texas-based band shares an irreplaceable part of human psyche and emotional strength through their six-track escapade. More solemn than my <a href="https://jwfblog.wpenginepowered.com/2016/05/tribute-halo-3-odst-soundtrack/">previous musical tribute</a>, I take my own interpretation of this timeless album.</p>

<h2 id="visual-clues">Visual clues&nbsp;<a class="hanchor" href="#visual-clues" aria-label="Anchor link for: Visual clues">🔗</a></h2>
<p>Explosions in the Sky (further referred to as EITS) leaves the listener with the album artwork to shape the mood and direction of the album. The artwork features a man peering over a boat amidst what appears to be a flooded city. His lantern dimly lights a reflection in the water. Fallen electricity poles and flooded buildings scatter the horizon. A mix of other artwork is accompanied in the full album artwork with the vinyl edition. Surrounding the image of the man in the boat are various other images, circling around the center like memories. One is of a ghostly-colored woman playing a piano, another of two children watching television late at night. Another is a dog with a flashlight running towards a person, one final basketball match lit by the sunset, and a man celebrating alone with a cake.</p>
<p>
<figure>
  <img src="/blog/2016/10/All-of-a-Sudden-I-Miss-Everyone-sleeve-cover.jpg" alt="Additional artwork from &ldquo;All of a Sudden I Miss Everyone&rdquo; sleeve cover by Explosions in the Sky" loading="lazy">
  <figcaption>Additional artwork from \&#34;All of a Sudden I Miss Everyone\&#34; sleeve cover</figcaption>
</figure>
</p>
<p>These images seem irrelevant to each other, but all of them connect back to the main image in the center: the primary cover of <em>All of a Sudden I Miss Everyone</em>. Each of the six additional images accompanies one of the six tracks on the album. The man is searching for these lost memories in the sea of regret and desire. The tides have risen far beyond normal and now he is the only survivor. Even though he does not drown in the waves of &ldquo;have-nots&rdquo; and wistful wishing, he is lost. Like a mountaineer without a compass, the protagonist of this album is seeking to rid himself of the loneliness that he finds himself immersed in.</p>
<p>The adventurous story of escape and breaking free of the sea is the plot buried within this album.</p>

<h2 id="track-titles">Track titles&nbsp;<a class="hanchor" href="#track-titles" aria-label="Anchor link for: Track titles">🔗</a></h2>
<p>If the album title and artwork serves as the front cover of the book, the track titles serve as the table of contents for the listener. Each track of <em>All of a Sudden I Miss Everyone</em> represents an important milestone on the adventure to escape the sea of regret and tides of loneliness. Some tracks are defeated submission while others are bittersweet victories. Each track itself could be put into a powerful, hundred-page story. I have summarized my interpretation of each track below as briefly as possible. The purpose of this is to serve as pointers for interpretation, not definitive and irrefutable interpretations. That is a unique experience that you, the listener, must determine on your own.</p>
<ol>
<li><strong>The Birth and Death of the Day</strong>: Representative of the intangibility of time; the day begins and ends within a momentary flash. The time you wished to have spent doing things that matter to you is lost in the fading light of dusk. It rises again at dawn, only to start an endless cycle of hope followed by crushing disappointment.</li>
<li><strong>Welcome, Ghosts</strong>: The ghosts are the ghosts of memories past. This track deals with losing your present mind in the past. Memories of smiles, happy moments, albums of pictures… all of these things are the ghosts that haunt us in the present. In the times where the present is too much to bear, we welcome the ghosts of past to haunt us as a way to numb the present.</li>
<li><strong>It&rsquo;s Natural to Be Afraid</strong>: Longest track on the album. The track begins with a fearful self-monologue about the current condition of the self. Whether it&rsquo;s overcoming an addiction, leaving behind a painful memory, or winning the fight over your own internal chemical balance, the fear is overwhelming and daunting. As the song progresses, it gives way to a glimmer of hope… a way out of the vicious cycle that traps you with your own ghosts. When the hope becomes more clear and defined, it becomes the only thing that matters to you. You cling and grasp onto it, fighting and hoping this solution is the answer you are looking for. You have no way to be certain if this is the answer, but that only drives your fear forward. It is expected… natural. The music abruptly changes as you find it isn&rsquo;t what you expected. Your fear gives way to embarrassed defeat as you pick up the shards of your attempt to recover to a normal state. The defeat slowly gives way to neglect, and neglect gives way to habit. Despite the momentary glimmer of something better, you are no farther ahead or behind than from the start.</li>
<li><strong>What Do You Come Home To?</strong>: Reflective of the deepest state of loneliness and depression. This home is a place of solitude and prison. Trapped in a cycle of despair and immobility, the daily retreat and commute from daily obligations to the home is a voluntary prison sentence. Alone you sit each night, faced with the same thoughts and the same ghosts. In the end, you realize that the only escape out of this cycle is a complete and drastic change before it becomes irreversible.</li>
<li><strong>Catastrophe and the Cure</strong>: The time for change is now. The critical point of the album surges in a powerful burst of energy and desperation in this eight minute ballad. Life was not meant to feel like a daily disaster, you were not meant to feel powerless of the actions in your own life! The ghosts must be shaken away. Value isn&rsquo;t given, it is taken. It is taken by you, the interpreter. There is value you must take in your own existence. The cure to the catastrophe of you is a change of mind and a change of heart. To find the worth in life, you have to fight for it and make it worthy. <em>You are in charge of your own cure</em>. Don&rsquo;t remain passive… be active. Don&rsquo;t wait for a solution… be a part of it.</li>
<li><strong>So Long, Lonesome</strong>: Like a dream, you emerge. Ghosts are no longer of the past. The people and smiles are here now. They always were. The tides of your tears, waves of wallowing, sea of sadness… all drain away. Back into the ocean, back into the sea. You emerge. You hold a great power of knowledge: of your cure. You are entrusted to share it and make this message grow in volume and in power. So long, to your lonesome self… you were never alone to begin with.</li>
</ol>

<h2 id="the-moral">The moral&nbsp;<a class="hanchor" href="#the-moral" aria-label="Anchor link for: The moral">🔗</a></h2>
<p>The moral to this album is broad and widely open to personal perspective. But the moral that stands out to me seems clear.</p>
<p>It&rsquo;s easy to become a victim of a system that feeds off of desire and material value. Desire leads to suffering from a longing to always have more. In the daylight hours, you always wish to do more, to have more. Everywhere around you, material wealth defines the value in the world. It shapes perspectives, it gives or lessens power. Trying to be above this is staying afloat amidst a flood. It&rsquo;s unavoidable because it&rsquo;s everywhere.</p>
<p>You have to build a boat to get a clear picture of everything. It&rsquo;s hard to see around you when you&rsquo;re submerged in the water. From this new perspective, you are able to see what matters most to you. Desire should be staved off. You have to give value to the things, to the people, that matter to you. Take all of this to heart and don&rsquo;t let the indecisive nature of desire control your heart and your mind.</p>
<p>It may feel like your problems cannot be traversed. They are too much for a single person to bear. But you are never alone. When you least expect it, there is someone who cares more than you ever realized. There are resources available you had not seen before. There is always a way to getting better. Even in the darkest moments, there is a path to light.</p>

<h2 id="get-all-of-a-sudden-i-miss-everyone">Get &ldquo;<em>All of a Sudden I Miss Everyone</em>&rdquo;&nbsp;<a class="hanchor" href="#get-all-of-a-sudden-i-miss-everyone" aria-label="Anchor link for: Get &ldquo;All of a Sudden I Miss Everyone&rdquo;">🔗</a></h2>
<p>The album is available in countless places. I hope my analysis has compelled you to at least listen to the beautiful sounds within the album, or possibly even have convinced you to support the work of <a href="http://explosionsinthesky.com/">Explosions in the Sky</a>. They deserve every dime.</p>
<p>You can find this album at any of the following sources… happy listening.</p>
<ul>
<li><a href="https://explosionsinthesky.merchline.com/collections/music/products/all-of-a-sudden-i-miss-everyone">Official store</a></li>
<li><a href="https://play.spotify.com/album/34RLNUE77WOvP9na4nf7Ua">Spotify</a></li>
<li><a href="https://www.amazon.com/ALL-SUDDEN-MISS-EVERYON-Vinyl/dp/B000MCH54U/">Amazon</a></li>
<li><a href="https://itunes.apple.com/us/album/all-of-a-sudden-i-miss-everyone/id319136556">iTunes</a> (pls no)</li>
</ul>
<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
      <iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube-nocookie.com/embed/Gq681aDM53U?autoplay=0&amp;controls=1&amp;end=0&amp;loop=0&amp;mute=0&amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"></iframe>
    </div>]]></description></item><item><title>How to set up GitHub organizations for clubs</title><link>https://jwheel.org/blog/2016/10/set-up-github-organizations-clubs/</link><pubDate>Mon, 17 Oct 2016 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2016/10/set-up-github-organizations-clubs/</guid><description><![CDATA[<p>For many universities and colleges, there are many technical clubs that students can join. Some clubs focus on programming or using programming for collaborative projects. For anything involving code, clubs usually turn to GitHub. GitHub has become the standard for open source project hosting by thousands of projects in the world. GitHub organizations are the tool GitHub provides to allow someone to create a team of people for working on projects. Organizations can have many repositories and smaller teams inside of them. When getting started with GitHub, there is a method to the madness, and there are ways you can have an ordered organization instead of keeping it messy. Here&rsquo;s how you do it.</p>

<h2 id="teams-for-purpose-teams-for-tracking">Teams for purpose, teams for tracking&nbsp;<a class="hanchor" href="#teams-for-purpose-teams-for-tracking" aria-label="Anchor link for: Teams for purpose, teams for tracking">🔗</a></h2>
<p>Team structure and designation are some of the most important ways to use organizations effectively. Since GitHub <a href="https://github.com/blog/2020-improved-organization-permissions">revamped teams</a>, they are an effective way to categorize members and to assign privileges. You can decide who can create repositories, who can push code to what repositories, or who has admin rights on projects.</p>
<p>You should create teams that have a purpose and will work with real repositories. For example, if your club has various committees, you should create a team for each committee. Then, you can give each committee privileges to their own repositories and leave it to them to manage. Being smart with what teams you create is important. Teams with a purpose should exist to carry out certain tasks within the organization. Equip them with the means to do so.</p>
<p>It&rsquo;s also helpful to create teams for tracking. In a university setting, students will graduate in a certain year and then they&rsquo;ll be gone. For university clubs using GitHub organizations, create teams for every graduating class, staff and faculty, and alumni (e.g. &ldquo;Class of 2019, Class of 2020, University staff, Graduated members, etc.). While it may seem trivial with a few people in the beginning, it is useful as the organization grows. If someone wonders why someone is part of a repository or if they are still participating in the club or organization, it is easy to see whether the student is still on campus or whether they are a graduated alumnus or alumna.</p>

<h2 id="use-organization-for-on-boarding">Use organization for on-boarding&nbsp;<a class="hanchor" href="#use-organization-for-on-boarding" aria-label="Anchor link for: Use organization for on-boarding">🔗</a></h2>
<p>Organizations are a powerful tool for bringing new people into your club or group. The moment someone receives an email inviting them to be a member of the GitHub organization, it holds a certain weight. &ldquo;<em>Wow, I&rsquo;m officially a part of this thing!</em>&rdquo; It&rsquo;s a great way to create an inclusive environment and enable new contributors to feel like they are a part of the team.</p>
<p>Having a team for newcomers or new recruits is helpful to have in place beforehand. The group doesn&rsquo;t have any real permissions in the organization, but it is a temporary holding ground for new members while they figure out their position in the club. But this way, they get to be included in the member list and show off your organization&rsquo;s logo in their profile if they choose.</p>

<h2 id="publicize-your-membership-on-github">Publicize your membership on GitHub&nbsp;<a class="hanchor" href="#publicize-your-membership-on-github" aria-label="Anchor link for: Publicize your membership on GitHub">🔗</a></h2>
<p>If someone is in your organization, make sure you encourage them to show it off! By default, GitHub sets the team member visibility to private. Unless a member of the organization sets themselves as public, they won&rsquo;t appear as a part of the organization to visitors.</p>
<p>
<figure>
  <img src="https://i.jwf.io/u/6631b7d25bbbdfa9033a2d922912fddd.png" alt="Publicize a GitHub membership" loading="lazy">
  <figcaption>\&#34;People\&#34; page of an organization - this is where you publicize a GitHub membership</figcaption>
</figure>
</p>
<p>Publicizing your membership is an underestimated step in bringing new contributors in. It&rsquo;s even helpful for older members too. By publicizing memberships, you are giving faces and real people to characterize your organization. If someone finds your organization in a search or in a link, it looks better to have rows of people associated with the group. The alternative of a team with what looks like no members implies your club is inactive. It can also make your club look smaller than it is. Additionally, individual team members also get to show off your organization on their individual profiles. This is helpful for anyone visiting their profile for activities or programming experience. For university students, this is helpful for applying for co-ops or internships.</p>
<p>To make a membership visible, the organization member has to go to the &ldquo;People&rdquo; page of the organization. On the page, next to their name, there is an option for &ldquo;Public&rdquo; or &ldquo;Private&rdquo; in a drop-down menu. Change it to &ldquo;Public&rdquo;.</p>

<h2 id="consider-repository-for-tasks">Consider repository for tasks&nbsp;<a class="hanchor" href="#consider-repository-for-tasks" aria-label="Anchor link for: Consider repository for tasks">🔗</a></h2>
<p>
<figure>
  <img src="https://camo.githubusercontent.com/4a034f0e6a4db65dc0d7779e1752256572174182/68747470733a2f2f692e696d6775722e636f6d2f77566b327771302e6a7067" alt="The FOSS@MAGIC " loading="lazy">
  <figcaption>The FOSS@MAGIC (<a href="http://foss.rit.edu/" class="bare">http://foss.rit.edu/</a>) family dinner, organized with an issue tracker</figcaption>
</figure>
</p>
<p>While not essential, a repository for real-life tasks or issues in a club can be a helpful planning tool. It also makes it easy for people to see what the club or group is working on. This promotes the idea of transparent and open leadership. You can use labels to tag issues for specific types of work or committees. Milestones are useful for deadlines or goals the group is working towards. The new <em>Projects</em> feature may also be useful in a repository for real-life task management.</p>
<p>For an example of a repository like this, you can see the <a href="https://github.com/FOSSRIT/fossbox-tasks/issues">FOSSRIT/fossbox-tasks</a> repository on GitHub. We even <a href="https://github.com/FOSSRIT/fossbox-tasks/issues/16">planned a dinner</a> on GitHub!</p>

<h2 id="go-forth-and-conquer">Go forth and conquer!&nbsp;<a class="hanchor" href="#go-forth-and-conquer" aria-label="Anchor link for: Go forth and conquer!">🔗</a></h2>
<p>Congratulations! You now have some basic knowledge and ideas on how to effectively use GitHub organizations for a club or small team. While this guide is not completely thorough, it helps give some starting points to consider when you&rsquo;re setting up your organization for the first time. It&rsquo;s also never too late to make changes later, if your organization is already formed.</p>
<p>If you have questions, comments, or feedback, I&rsquo;d love to hear about it! Feel free to leave a comment below.</p>]]></description></item><item><title>Light/Dark</title><link>https://jwheel.org/blog/2016/10/light-dark/</link><pubDate>Sun, 16 Oct 2016 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2016/10/light-dark/</guid><description><![CDATA[<p><em>This post is published as part of a personal archival project of <a href="https://jwfblog.wpenginepowered.com/category/poems/">my poetry</a> and other creative works. The actual publish date of this post is Friday, April 19th, 2024, but the publish date of the post reflects the original date of authorship. This archival project aims to digitize a selection of written works that exist only in my private records. Enjoy.</em></p>
<hr>
<p>Which is a lie: darkness or lightness?</p>
<p>Light illuminates all details,<br>
Corners, etches, ink, faces,<br>
The true nature of things is found.</p>
<p>Dark marks the details,<br>
Obfuscates what you thought as truth,<br>
An alternate reality presents itself.</p>
<p>Darkness is a master of tricks,<br>
Or is it the light that plays with the head?<br>
Whose word are you to take?</p>
<p>Where light exposes kindness, gratitude, warmth,<br>
Dark brings hostility, hate, cold,<br>
Both complement and counteract another.</p>
<p>Which is a lie: darkness or lightness?</p>
<p>The answer lies within,<br>
Neither one is entirely true itself.<br>
The secret lies within dawn and dusk.</p>
<hr>
<p><em>Photo by <a href="https://unsplash.com/@elizabethlies?utm_content=creditCopyText&amp;utm_medium=referral&amp;utm_source=unsplash">elizabeth lies</a> on <a href="https://unsplash.com/photos/green-grass-field-and-brown-soil-YbgPWfWlvkE?utm_content=creditCopyText&amp;utm_medium=referral&amp;utm_source=unsplash">Unsplash</a>. Modified by Justin Wheeler. CC BY-SA 4.0.</em></p>]]></description></item><item><title>How Minecraft got me involved in the open source community</title><link>https://jwheel.org/blog/2016/10/minecraft-involved-open-source-community/</link><pubDate>Mon, 10 Oct 2016 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2016/10/minecraft-involved-open-source-community/</guid><description><![CDATA[<p><a href="https://opensource.com/life/16/10/my-open-source-story-justin-flory"><em>This post was originally published on OpenSource.com.</em></a></p>
<hr>
<p>When people first think of &ldquo;open source&rdquo;, their mind probably first goes to code. Something technical that requires an intermediate understanding of computers or programming languages. But open source is a broad concept that goes beyond only binary bits and bytes. Open source projects hold great regard for community participation. The community is a fundamental piece of a successful open source project. For my experience getting involved with open source, I began in the community and worked my way around from there. At the age of fifteen, I was beginning my open source journey and I didn&rsquo;t even know it.</p>

<h2 id="gaming-introduces-open-source">Gaming introduces open source&nbsp;<a class="hanchor" href="#gaming-introduces-open-source" aria-label="Anchor link for: Gaming introduces open source">🔗</a></h2>
<p>One of my strongest memories of a &ldquo;gaming addiction&rdquo; was when I was fifteen and a younger cousin introduced me to the game Minecraft. The game was in beta then, but I remember the sandbox-style of the game entertaining the two of us for hours. But what I discovered was that playing the game alone became boring. Playing and mining with others made the experience more fun and meaningful. In order to do this, I learned I would have to host a server for my friends to connect to play with me.</p>
<p>I originally used the &ldquo;vanilla&rdquo; Minecraft server software at first, but it was limited to what it could do, and didn&rsquo;t compare to other multiplayer servers in existence. They all seemed to be using something that offered more, so players could play games, cast spells, or do other unique things that would normally not be possible in the game. After digging, I discovered <a href="https://bukkit.org/">Bukkit</a>, an open source Minecraft server software with an extensible API to let developers change the multiplayer experience. I soon became wrapped up with Bukkit like a child with a new toy. Except this toy had me digging through my computer to set up &ldquo;port forwarding&rdquo;, &ldquo;setting NAT records&rdquo;, and &ldquo;creating static IP addresses&rdquo;. I was teaching myself the basics of computer networking in the guise of creating a game server for my friends.</p>
<p>Over time, my Minecraft server hobby began to take up more and more time. More people began playing on my server and I began searching for ways to improve the performance of my server. After doing some digging, I discovered the <a href="https://www.spigotmc.org/">SpigotMC project</a>, shortened to just Spigot. Spigot was a <em>fork</em> of the Bukkit project that made specific enhancements to performance. After trialing it on my server, I discovered the performance gains were measurable and I would commit to using Spigot from then on.</p>

<h2 id="participating-in-spigotmc">Participating in SpigotMC&nbsp;<a class="hanchor" href="#participating-in-spigotmc" aria-label="Anchor link for: Participating in SpigotMC">🔗</a></h2>
<p>Before long, I began running into new challenges with managing my Minecraft server community, whether it was finding ways to scale or finding the best ways to build a community up. In October 2013, I registered an account on the Spigot forums to talk with other server owners and seek advice on ways I could improve. I found the community welcoming and accepting to helping me learn and improve. Several people in the community were owners of larger servers or developers of unique plugins to Spigot. In response to my detailed inquisitions, they responded with genuine and helpful feedback and support. Within a week, I was already in love with the people and helpfulness of the Spigot community.</p>
<p>I became an active participant in the forum community in Spigot. Through the project, I was <a href="https://fedoramagazine.org/beginners-guide-irc/">introduced to IRC</a> and how to use it for communicating with other server owners and developers. What I didn&rsquo;t realize was a trend in my behavior. Over time, I began shifting away from asking all the questions. Almost as if in a role reversal, I became the one answering questions and helping support other new server owners or developers. I became the one in an advisory role instead of the one always asking.</p>
<p>
<figure>
  <img src="/img/Spigot-Team.jpg" alt="SpigotMC team at annual Minecraft convention, MINECON, in 2015" loading="lazy">
  <figcaption>SpigotMC (<a href="https://www.spigotmc.org" class="bare">https://www.spigotmc.org</a>) team at annual Minecraft convention, MINECON, in 2015</figcaption>
</figure>
</p>
<p>In April 2014, the project lead of Spigot reached out to me asking if I would consider a role as a community staff member. Part of my responsibilities would be responding to reports, encouraging a helpful and friendly community, and maintaining the atmosphere of the community. With as much prestige and honor as my sixteen-year-old self could muster, I accepted and began serving as a community moderator. I remember feeling privileged to serve the position – I would finally get to help the community that had done so much to help me.</p>

<h2 id="expanding-the-open-source-horizon">Expanding the open source horizon&nbsp;<a class="hanchor" href="#expanding-the-open-source-horizon" aria-label="Anchor link for: Expanding the open source horizon">🔗</a></h2>
<p>Through 2014 and 2015, I actively served as a moderator of the community, both in the forums and the IRC network for Spigot. I remained in the Spigot community as the project steadily grew. It was incredible to see how the project was attracting more and more users.</p>
<p>However, my open source journey did not end there. After receiving my high school diploma in May 2015, I had set my sights on the <a href="https://www.rit.edu/">Rochester Institute of Technology</a>, a school I noted as having the country&rsquo;s only <a href="https://www.rit.edu/news/story.php?id=50590">Free and Open Source Software minor</a>. By coincidence, I also noticed that my preferred Linux distribution, Fedora, was holding its annual contributor <a href="https://fedoramagazine.org/flock-2015-rochester-institute-of-technology/">conference in Rochester</a>, a week before I would move in for classes. I decided I would make the move up early to see what it was all about.</p>

<h2 id="flock-2015-introduces-fedora">Flock 2015 introduces Fedora&nbsp;<a class="hanchor" href="#flock-2015-introduces-fedora" aria-label="Anchor link for: Flock 2015 introduces Fedora">🔗</a></h2>
<p>The summer passed, and before I knew I was ready, I was packing up from my home outside of Atlanta, Georgia to leave for Rochester, New York. After fourteen hours of driving, I finally arrived and began moving into my new home. A day after I arrived, <a href="https://flocktofedora.org/">Flock</a> was slated to begin, marking my first journey in Rochester.</p>
<p>
<figure>
  <img src="/img/Flock-2015-Strong-Museum-of-Play.jpg" alt="Group photo of Fedora Flock 2015 attendees at the Strong Museum of Play" loading="lazy">
  <figcaption>Group photo of Fedora Flock (<a href="https://flocktofedora.org/" class="bare">https://flocktofedora.org/</a>) 2015 attendees at the Strong Museum of Play (<a href="http://www.museumofplay.org/" class="bare">http://www.museumofplay.org/</a>)</figcaption>
</figure>
</p>
<p>At Flock, I entered as an outsider. I was in an unfamiliar city with unfamiliar people and an open source project I was only mildly familiar with. It was all new to me. But during that week, I discovered a community of people who were united around four common ideals. Freedom, Friends, Features, First: the <a href="https://fedoraproject.org/wiki/Foundations">Four Foundations</a> of the Fedora Project were made clear to me. The community members at Flock worked passionately towards advancing their project during the talks and workshops. And after the talks finished, they gathered together for hallway discussions, sharing drinks, and enjoying the presence of their (usually) internationally dispersed team. Without having ever attended a Fedora event before, I knew that the Four Foundations and the community behind Fedora were the real deal. Leaving Flock that year, I vowed to pursue becoming a part of this incredible community.</p>

<h2 id="pen-to-paper-keyboard-to-post">Pen to paper, keyboard to post&nbsp;<a class="hanchor" href="#pen-to-paper-keyboard-to-post" aria-label="Anchor link for: Pen to paper, keyboard to post">🔗</a></h2>
<p>The first major step I took towards contributing to the Fedora Project was in September 2015, during <a href="http://www.softwarefreedomday.org/">Software Freedom Day</a>. Then Fedora Community Action and Impact Coordinator <a href="http://decausemaker.org/">Remy DeCausemaker</a> was in attendance <a href="https://fedoraproject.org/wiki/Softwarefreedomday/2015">representing Fedora</a>. During the event, I reached out to the <a href="https://fedoramagazine.org/">Fedora Magazine</a> editorial team asking to become involved as a writer. By the end of September, I penned my first article for the Fedora Magazine, tying in my experience in the Spigot community to Fedora: <a href="https://fedoramagazine.org/run-a-minecraft-server-using-spigot/">run a Minecraft server using Spigot</a>.</p>
<p>My first step getting involved with the Fedora community was an exciting one. I remember feeling proud and excited to see my first article published on the front page, not only helping Fedora, but also helping Spigot. I realized then that it was relatively straightforward to contribute this kind of content, and I would keep writing about software I was familiar with for the Magazine.</p>
<p>As I continued writing posts for the Fedora Magazine, I became aware of another team forming up in Fedora: the <a href="https://fedoraproject.org/wiki/CommOps">Community Operations</a>, or CommOps, team. I subscribed to their mailing list, joined the IRC channel, and attended the first meetings. Over time, I became wrapped up and involved with the community efforts within Fedora. I slowly found one thing leading to another.</p>
<p>Today in Fedora, I am the leading member of the Community Operations (CommOps) team, the editor-in-chief of the Fedora Magazine, a Marketing team member, an Ambassador of North America, a leading member of the Diversity Team, and a few other things.</p>

<h2 id="advice-for-other-students">Advice for other students&nbsp;<a class="hanchor" href="#advice-for-other-students" aria-label="Anchor link for: Advice for other students">🔗</a></h2>
<p>When you&rsquo;re first getting started, it can sometimes be tough and a little confusing. As students getting involved with FOSS, there are a few challenges that we might have to face. A lot of this can be with making the first steps into a new project. There are countless open source projects of various sizes and they all do things a bit differently from others, so the process changes from project to project.</p>
<p>One of the most obvious challenges with getting involved is your personal experience level. Especially when getting started, it can be easy to look at a large project or well-known project and see all the work devoted there. There are smart and active people working on these projects, and many times their contributions are quite impressive! One of the many concerns I&rsquo;ve seen other students here face (including myself at first) is wondering how someone with beginning to moderate experience or knowledge can get involved, in comparison to some of these contributions from active contributors. If it&rsquo;s a large project, like Fedora, it can be intimidating to think where to start when there&rsquo;s so many things to do and areas to get involved with. But if you think of it all as one big project, it is intimidating and difficult for you to make that first step.</p>
<p>Break a bigger project into smaller pieces. Start small and look for something you can help with. A healthy open source project usually will have things like easyfix bugs that are good ones to start with if it&rsquo;s your first time contributing. Keep an eye out for those if you&rsquo;re getting started.</p>
<p>Another challenge you might face as a student or beginner to open source is something called <a href="https://opensource.com/life/15/8/interview-major-hayden-rackspace">imposter syndrome</a>. For me, this was something I had identified with before I knew what it was. For a definition, I&rsquo;ll pull straight from <a href="https://en.wikipedia.org/wiki/Impostor_syndrome">Wikipedia</a> first: &quot; Term referring to high-achieving individuals marked by an inability to internalize their accomplishments and a persistent fear of being exposed as a &ldquo;fraud&rdquo;.</p>
<p>Imposter syndrome can be a common feeling as you get involved with open source, especially if comparing yourself to some of those active and smart contributors that you meet as you become involved. But you should also remember you are a student – comparing yourself or your contributions to a professional or someone with years of experience isn&rsquo;t fair to yourself! It&rsquo;s not apple-to-apples. Your contributions as you get involved with open source are worthy and valuable to an open source project regardless of how deep, how many, or how much time you spend on the project. Even if it&rsquo;s a couple of hours in the week, that&rsquo;s saving others those couple of hours and it&rsquo;s adding something into the project. A contribution is a contribution – it&rsquo;s a bad idea to rate the worth of contributions to other contributions.</p>
<p>Those are some of the challenges that are useful to know and understand as you become more involved with FOSS. If you know the challenges you are up against, it makes it easier to handle them as they come.</p>
<p>There are also benefits to contributing to open source as a student as well. Contributing to open source is a great way for you to take knowledge and info you have learned from classes and begin applying it to real-world projects and gain experience. It&rsquo;s one thing to take you to the next level as a student. If you are contributing to a project in the real world, that is unique experience that is helpful for you for future career outlooks as well.</p>
<p>It&rsquo;s also a great networking opportunity. In open source, you meet many incredible and smart people. In my time in Fedora, I&rsquo;ve met many contributors and had various mentors help me get involved. I&rsquo;ve made new friends and met people who I normally would never have had the opportunity to meet.</p>
<p>
<figure>
  <img src="/blog/2016/10/IMG_9336.jpg" alt="River boat cruise dinner with Fedora friends at Flock 2016" loading="lazy">
  <figcaption>River boat cruise dinner with Fedora friends at Flock 2016</figcaption>
</figure>
</p>
<p>There are also opportunities for leadership in open source projects. Whether it&rsquo;s just one task, one bug, or even a role, you might find that sometimes all it takes is someone willing to say, &ldquo;I&rsquo;ll do this!&rdquo; to have leadership on something. It might be challenging or difficult at first, but it&rsquo;s a great way for you to understand working in team environments, how to work effectively even if you&rsquo;re remote, and how to break down a task and work on finding solutions for complex problems.</p>
<p>Lastly, it&rsquo;s important for younger people to become more involved with open source communities. As students and younger community members, we add unique perspective and ideas to open source projects. It&rsquo;s important to a healthy community for an open source project and any open source project worth contributing to should be welcoming and accepting to students who are willing to spend time working on the project and helping solve those problems, whether they&rsquo;re bugs, tasks, or other things. In short, there is absolutely a role for students getting involved with open source!</p>]]></description></item><item><title>Willful Winds</title><link>https://jwheel.org/blog/2016/10/willful-winds/</link><pubDate>Sun, 09 Oct 2016 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2016/10/willful-winds/</guid><description><![CDATA[<p><em>This post is published as part of a personal archival project of <a href="https://jwfblog.wpenginepowered.com/category/poems/">my poetry</a> and other creative works. The actual publish date of this post is Friday, April 19th, 2024, but the publish date of the post reflects the original date of authorship. This archival project aims to digitize a selection of written works that exist only in my private records. Enjoy.</em></p>
<p><em>Original annotation</em>: This was in the random parking lot not too far from the Colony Manor apartment. I wrote this in the car.</p>
<hr>
<p>It should have started with a bang,<br>
But instead of sound,<br>
Only light.</p>
<p>At a window facing out,<br>
I stand.<br>
Willed by a force absent my control.</p>
<p>Keychains jangling,<br>
Steps toward the car,<br>
Apartment lights in rearview.</p>
<p>The wind speaks stories:<br>
of adventure, love, destiny.<br>
My role is but an observer.</p>
<p>Thousand-year winds,<br>
Thousand-mile winds,<br>
Transoceanic drifts.</p>
<p>If you listen and if you feel,<br>
See past, present, and future,<br>
Sift through the fibers of your clothes.</p>
<p>The wind retreats to the clouds,<br>
The clouds alight to sparks.<br>
Rain washes the stories away.</p>
<p>Listen to your own words,<br>
Vivid with imagination and dreams.<br>
Impart your own being to the stream,<br>
And you will never die.</p>
<hr>
<p><em>Photo by <a href="https://unsplash.com/@weirick?utm_content=creditCopyText&amp;utm_medium=referral&amp;utm_source=unsplash">Jake Weirick</a> on <a href="https://unsplash.com/photos/asphalt-road-Zu6wtAvLWgE?utm_content=creditCopyText&amp;utm_medium=referral&amp;utm_source=unsplash">Unsplash</a>. Modified by Justin Wheeler. CC BY-SA 4.0.</em></p>]]></description></item><item><title>Virtual meetup with WiC, Open Labs, FOSS Wave</title><link>https://jwheel.org/blog/2016/10/virtual-meetup-wic-open-labs-foss-wave/</link><pubDate>Sat, 08 Oct 2016 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2016/10/virtual-meetup-wic-open-labs-foss-wave/</guid><description><![CDATA[<p>Over the past year, I&rsquo;ve met incredible people from around the world doing great things in their local communities. At my university, the <a href="http://wic.rit.edu/">Women in Computing @ RIT</a> program provides networking for students with faculty, staff, and alumni. They also help advance women in computing through community outreach. I&rsquo;ve also come into contact with two other international tech communities with interesting stories of their own. With the help of the <a href="http://wic.rit.edu/pages/committees.php">WiC events committee</a>, we are working on organizing a virtual meetup with WiC from New York, <a href="https://openlabs.cc/">Open Labs Albania</a>, and <a href="http://landing.fosswave.com/">FOSS Wave</a> from India to introduce each other, share experiences, and more.</p>

<h2 id="about-open-labs">About Open Labs&nbsp;<a class="hanchor" href="#about-open-labs" aria-label="Anchor link for: About Open Labs">🔗</a></h2>
<p>
<figure>
  <img src="https://i2.wp.com/oscal.openlabs.cc/wp-content/uploads/2013/10/OSCAL2016GroupPhoto-1.png?w=920" alt="Group photo of attendees at OSCAL 2016 in Tirana, Albania (courtesy of Open Labs)" loading="lazy">
  <figcaption>Group photo of attendees at OSCAL 2016 (<a href="http://oscal.openlabs.cc/" class="bare">http://oscal.openlabs.cc/</a>)</figcaption>
</figure>
</p>
<p><a href="https://openlabs.cc/">Open Labs Albania</a> is a non-profit organization and community based out of <a href="https://en.wikipedia.org/wiki/Tirana">Tirana, Albania</a>. Open Labs focuses on freedom, transparency, and decentralization to empower the community. They support and contribute to a variety of open source projects to tackle local problems. Sometimes, this even includes regional and international issues. Each year, the Open Labs team organizes their annual conference, <a href="http://oscal.openlabs.cc/">OSCAL</a> (Open Source Conference Albania). Hundreds of people from across Europe gather to &ldquo;promote software freedom, open source software, free culture and open knowledge&rdquo;. In 2016, over <a href="https://eischmann.wordpress.com/2016/05/26/event-report-oscal-2016/">50% of attendees and 70% of organizers were women</a>, numbers unheard of anywhere else in the world.</p>
<p>The story of Open Labs in Albania is a growing but powerful story of people from a developing country working together to build real solutions to real problems. The story of their movement is motivating, insightful, and worth sharing.</p>

<h2 id="about-foss-wave">About FOSS Wave&nbsp;<a class="hanchor" href="#about-foss-wave" aria-label="Anchor link for: About FOSS Wave">🔗</a></h2>
<p><a href="http://landing.fosswave.com/">FOSS Wave</a> is a group of open source developers and students dedicated to connecting other students into open source communities. They help develop students&rsquo; professional skills for the industry. The mentors have a &ldquo;Boot Up&rdquo; program where interested students reach out for a mentor. Mentors offer direct support to students on getting started. Program organizers also attend various universities to deliver workshops and talks about open source technology. Many mentors are female and speak about diversity in open source communities and give advice for women who want to get involved.</p>
<p><a href="https://communityblog.fedoraproject.org/foss-wave-women-in-technology-part-2/">https://communityblog.fedoraproject.org/foss-wave-women-in-technology-part-2/</a></p>
<p><a href="https://communityblog.fedoraproject.org/foss-wave-fedora-bangalore-india/">https://communityblog.fedoraproject.org/foss-wave-fedora-bangalore-india/</a></p>
<p><a href="https://communityblog.fedoraproject.org/foss-wave-bangalore-uvce/">https://communityblog.fedoraproject.org/foss-wave-bangalore-uvce/</a></p>

<h2 id="virtual-meetup">Virtual meetup&nbsp;<a class="hanchor" href="#virtual-meetup" aria-label="Anchor link for: Virtual meetup">🔗</a></h2>
<p>Over the next month, we hope to combat time zones (six hours in Europe and nine and a half with India) to find mutual times that work well for both communities. These are two separate virtual meetup opportunities, one with WiC and Open Labs, and another with WiC and FOSS Wave. We are trying to collect responses from members of both communities of when they would be available to take part in the meetup.</p>
<p>Are you a member of WiC, Open Labs, or FOSS Wave? Please make sure you fill in your available times in either poll so we can select a date soon!</p>
<ul>
<li><a href="http://whenisgood.net/wic/open-labs-virtual-meetup">WiC + Open Labs meetup time poll</a></li>
<li><a href="http://whenisgood.net/wic/foss-wave-virtual-meetup">WiC + FOSS Wave meetup time poll</a></li>
</ul>
<p>I&rsquo;m looking forward to these awesome communities meeting, sharing experiences, and learning about what other groups of students, women, and other great role models in tech are working on across the world. Hope to see you there too!</p>]]></description></item><item><title>HackMIT meets Fedora</title><link>https://jwheel.org/blog/2016/10/hackmit-meets-fedora/</link><pubDate>Tue, 04 Oct 2016 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2016/10/hackmit-meets-fedora/</guid><description><![CDATA[<p><em>This post was originally published on the <a href="https://communityblog.fedoraproject.org/hackmit-meets-fedora/">Fedora Community Blog</a>.</em></p>
<p><a href="https://communityblog.fedoraproject.org/hackmit-meets-fedora/">https://communityblog.fedoraproject.org/hackmit-meets-fedora/</a></p>
<hr>
<p><a href="https://hackmit.org/">HackMIT</a> is the annual hackathon event organized by students at the <a href="http://web.mit.edu/">Massachusetts Institute of Technology</a> in Cambridge, Massachusetts. HackMIT 2016 took place on September 17th and 18th, 2016. This year, the Fedora Project partnered with Red Hat as sponsors for the hackathon. Fedora Ambassadors <a href="http://hub.cprofitt.com/">Charles Profitt</a> and <a href="https://jwheel.org/">Justin Wheeler</a> attended to represent the project and help mentor top students from around the country in a weekend of learning and competitive hacking. Fedora engaged with a new audience of students from various universities across America and even the globe.</p>

<h2 id="arriving-at-hackmit">Arriving at HackMIT&nbsp;<a class="hanchor" href="#arriving-at-hackmit" aria-label="Anchor link for: Arriving at HackMIT">🔗</a></h2>
<p>The Fedora team arrived in Massachusetts a day early on Friday to ensure prompt arrival at the event the following morning. Fedora was one of the first sponsors to arrive on MIT&rsquo;s campus Saturday morning, and scouted one of the best positions on the floor. Fedora was given a choice of anywhere in the bleachers surrounding the floor. As a result, the team set up Fedora&rsquo;s banners close to many of the tables where hackers would spend the weekend.</p>
<p>
<figure>
  <img src="/blog/2016/09/Fedora-booth-compressed.jpg" alt="Fedora setup at HackMIT 2016" loading="lazy">
  <figcaption>The Fedora setup at HackMIT 2016</figcaption>
</figure>
</p>
<p>On the morning of the first day, over a thousand students arrived on the MIT campus. Around 10:00am, the kickoff ceremony began in the main auditorium. The event staff introduced themselves and the structure of the event. After covering the basics, every sponsor was given a 30 second &ldquo;elevator pitch&rdquo; to explain their company or project, and share anything important with the hackers. Justin represented Fedora and Red Hat on stage to introduce Fedora and what Fedora wanted to help students with. He introduced Fedora as a distribution targeted towards developers, briefly introduced the <a href="https://getfedora.org/">three editions</a> of Fedora, and offered help for anyone wanting to open source their hack or seek support with open source tooling.</p>

<h2 id="may-the-hacking-begin">May the hacking begin!&nbsp;<a class="hanchor" href="#may-the-hacking-begin" aria-label="Anchor link for: May the hacking begin!">🔗</a></h2>
<p>After the sponsor introductions, hackers relocated to the main floor to start seeking teams and begin working on projects. While HackMIT was getting into full swing, many people visited the Fedora area before jumping into a project. Many of the students who talked with Charles and Justin were either surprised to see Fedora at an event like HackMIT or were curious to know what was going on in Fedora. For the most part, many students were familiar with Linux through classes or lectures. The ones familiar with Linux knew about it from hands-on experience or from guided instruction in classes. A smaller number of people were running Linux environments or using them in servers or other ways.</p>
<p>Overall, the demographic of people attending the hackathon were generally familiar with Linux, but not at an advanced level. This group was ideal for promoting Fedora as a developer environment. The ease of setting up a development workspace or installing dependencies for projects intrigued many students. HackMIT was an ideal opportunity to present Fedora to a new group of budding technological enthusiasts. HackMIT participants had an organic interest in Fedora and wanted to know how Fedora made development easier or what made it different from other distributions.</p>

<h2 id="personal-engagement">Personal engagement&nbsp;<a class="hanchor" href="#personal-engagement" aria-label="Anchor link for: Personal engagement">🔗</a></h2>
<p>
<figure>
  <img src="/blog/2016/09/MeTime-team-compressed.jpg" alt="MeTime team demos project at HackMIT to Fedora" loading="lazy">
  <figcaption>The MeTime team demos their product to Charles before the last judgment</figcaption>
</figure>
</p>
<p>During the event, Charles walked around the various tables to talk with students while Justin manned the Fedora area. Charles introduced himself to the hackers and asked to know what they were working on or what their plans were. For many teams, he provided advice on how to get over hurdles with first planning and project direction. He checked back in with these groups across the weekend to see how they progressed.</p>
<p>At the Fedora space, Justin fielded questions from students about Linux, what Fedora offers, and about open source software. Some people were familiar with Fedora, and a small handful of students were running Fedora as a primary operating system. However, most students were only familiar with Linux and were curious to know more. As a student, Justin offered specific advice about contributing to open source software and how helpful it is to gain real-world experience. Some students expressed interest in contributing but were unsure about where to start. Justin coached students through key steps to start with on beginning their open source adventure. He identified the process of choosing a project to contribute to, matching something genuinely interesting with technical skills, and getting involved with the community.</p>
<p>Additionally, there were two students organizing other hackathons in the country with a specific focus towards open source software development. The Ambassadors engaged with these students and joined in a dialogue about making open source a critical part of hackathons. More information about these events will become available in the coming future.</p>

<h2 id="evaluating-impact">Evaluating impact&nbsp;<a class="hanchor" href="#evaluating-impact" aria-label="Anchor link for: Evaluating impact">🔗</a></h2>
<p>
<figure>
  <img src="/blog/2016/09/Charles-and-May-compressed.jpg" alt="May Tomic works on her team&rsquo;s project, Conversationalist at HackMIT" loading="lazy">
  <figcaption>May Tomic (<a href="https://github.com/ValerieMayTomic" class="bare">https://github.com/ValerieMayTomic</a>) works on her team’s project, Conversationalist (<a href="https://github.com/solkiim/conversationalist" class="bare">https://github.com/solkiim/conversationalist</a>)</figcaption>
</figure>
</p>
<p>To help gauge our impact with the event, there was a limited edition <a href="https://badges.fedoraproject.org/badge/hackmit-2016-attendee">HackMIT 2016 Attendee</a> badge that attendees could claim during the event. The team leveraged <a href="https://badges.fedoraproject.org/about">Fedora Badges</a> as a tool to help tell the story of our impact at the event. Through Badges, you can see a list of FAS accounts that claimed the badge from the event and their account activity in the long run. <a href="https://fedoraproject.org/wiki/User:Bee2502">Bee Padalkar</a>&rsquo;s <a href="https://networksfordata.wordpress.com/2016/03/08/fedora-at-fosdem/">FOSDEM event evaluation</a> demonstrates how this data can be used. Ten people claimed the badge during the weekend. One of the benefits of using badges as a tool for measuring impact and engagement is the follow-up it allows us to make with what badge claimers do in the Fedora community.</p>
<p>However, there were more ways to measure engagement with the students and hackers than only with badges. Many of the most valuable insight into our impact was follow-up on the second morning. Charles went around to most of the tables he visited on the first day leading up to the final deadline. With one team, he helped do some live testing in the last 30 minutes before the deadline since her team was asleep from the previous night. Engagements like these left a positive impression of Fedora, and by extension, the community.</p>

<h4 id="what-was-our-engagement">What was our engagement?&nbsp;<a class="hanchor" href="#what-was-our-engagement" aria-label="Anchor link for: What was our engagement?">🔗</a></h4>
<p>
<figure>
  <img src="/blog/2016/09/events-hackmit-2016.png" alt="HackMIT 2016 Attendee Fedora badge" loading="lazy">
  <figcaption>The HackMIT 2016 Attendee (<a href="https://badges.fedoraproject.org/badge/hackmit-2016-attendee" class="bare">https://badges.fedoraproject.org/badge/hackmit-2016-attendee</a>) Fedora badge</figcaption>
</figure>
</p>
<p>The type of interactions and conversations Fedora held with students and other attendees was productive and motivating, not only to the students but also to the Ambassador team. People were genuinely interested in Fedora and it was easier to shape their interest into an insightful discussion about what Fedora enables students to create and develop. A powerful message about open source software development was also delivered during the event. This stands in contrast to some other hackathons in the United States which are sometimes set up more like unofficial career fairs. HackMIT clearly held a strong focus on community. Events with that kind of management and direction are where Fedora succeeds and has a more valuable impact.</p>
<p>Leaving the event, the Fedora team was confident that we had a powerful impact on students during the event. For many, Fedora was not only introduced as an operating system, but as a tool for accomplishing and doing. Fedora provides the tools and utilities students need to build their projects and drive them forward. Open source as a development practice was also introduced to many for the first time, or deeper explained for those with a mild interest. These messages and the team&rsquo;s other engagements were warmly received.</p>

<h2 id="looking-ahead">Looking ahead&nbsp;<a class="hanchor" href="#looking-ahead" aria-label="Anchor link for: Looking ahead">🔗</a></h2>
<p>The <a href="https://fedoraproject.org/wiki/Fedora_Ambassadors_North_America_%5C%28FAMNA%5C%29">Fedora Ambassadors of North America</a> would like to make a special thanks to <a href="https://www.redhat.com/">Red Hat</a> and <a href="https://fedoraproject.org/wiki/User:Spot">Tom Callaway</a> for partnering to sponsor this event. Without Red Hat&rsquo;s help, attending this event would not have been possible. Our engagement and impact after HackMIT excites the Ambassador team. We hope many students from the event turn to Fedora not only as an operating system, but as a tool for their expanding technological toolbox. A congratulations also goes to the organizers of HackMIT for putting together a thoroughly planned and carefully executed event that placed a strong focus on community, which fits within one of Fedora&rsquo;s <a href="https://fedoraproject.org/wiki/Foundations">four key foundations</a>, Friends.</p>
<p>We hope to return to Cambridge again next year!</p>
<hr>
<p><em>You can read Charles Profitt&rsquo;s event report on <a href="http://hub.cprofitt.com/hackmit.html">his blog</a>.</em></p>]]></description></item><item><title>Achievement get: Rainbow!</title><link>https://jwheel.org/blog/2016/08/achievement-get-rainbow/</link><pubDate>Thu, 25 Aug 2016 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2016/08/achievement-get-rainbow/</guid><description><![CDATA[<p>Earlier this month, I received the <a href="https://badges.fedoraproject.org/badge/rainbow-cookie-v"><em>Rainbow</em> badge</a> in <a href="https://badges.fedoraproject.org/about">Fedora Badges</a>. <em>Rainbow</em> is the fifth badge in a series for receiving &ldquo;karma cookies&rdquo; from others in IRC. Every time I receive a new badge in this series, I like to <a href="https://jwfblog.wpenginepowered.com/2016/03/achievement-get-pizzelle/">reflect</a> back on the past and where my Fedora journey has taken me <a href="https://jwfblog.wpenginepowered.com/2015/10/my-journey-into-fedora/">since October 2015</a>.</p>

<h2 id="what-is-a-rainbow-cookie">What is a rainbow cookie?&nbsp;<a class="hanchor" href="#what-is-a-rainbow-cookie" aria-label="Anchor link for: What is a rainbow cookie?">🔗</a></h2>
<p>If you&rsquo;re not aware already, Fedora has a unique system of rewarding positive contributions in the community through karma cookies.</p>
<p>Karma cookies are a unique way of rewarding positive interactions and actions in Fedora with a friendly, quantifiable number. In any official Fedora IRC channel, Fedora contributors can give any other contributor Karma by adding ‘<code>++</code>’ after their nick (e.g. <code>mattdm++</code> or <code>puiterwijk++</code>).</p>
<p>This “positive” karma cookies are distributed by zodbot, Fedora&rsquo;s IRC bot. A contributor can give another contributor a “karma cookie” once a release cycle before they are able to give another one. For reaching certain milestones of <a href="https://badges.fedoraproject.org/tags/cookie/any">karma cookies</a>, contributors are awarded badges via Fedora Badges. Fedora uses this as a method to promote positive behavior in the community as well as help support and build community in Fedora. This reflects upon the “Friends” part of the Four Foundations of Fedora. I love the concept of karma cookies and I think it&rsquo;s a small and great way for us to share our appreciation for other contributors in the project.</p>
<p>The <a href="https://badges.fedoraproject.org/badge/rainbow-cookie-v"><em>Rainbow</em> badge</a> is awarded after receiving 100 karma cookies across all Fedora releases.</p>

<h2 id="thank-you">Thank you!&nbsp;<a class="hanchor" href="#thank-you" aria-label="Anchor link for: Thank you!">🔗</a></h2>
<p>I did spend a lot of time giving thanks and appreciation in my <a href="https://jwfblog.wpenginepowered.com/2016/08/fedora-flock-2016/">Flock 2016 write-up</a>, so I think it would be better to point there for a longer, more verbose expression of gratitude.</p>
<p><a href="https://jwfblog.wpenginepowered.com/2016/08/fedora-flock-2016/">https://jwfblog.wpenginepowered.com/2016/08/fedora-flock-2016/</a></p>
<p>I am still appreciative and thankful of all the people who have spared their time for helping get me started in Fedora. Sometimes, it&rsquo;s hard to believe it hasn&rsquo;t yet been a full year since my first contributions. The opportunities and friendships that being a member of the Fedora community have provided are irreplaceable. I hope that I am able to continue making an impact on Fedora far into the future and share some cookies with some other contributors. And as always, I hope to pay forward the kindness and guidance that others have bestowed to me towards others who are entering our project.</p>
<p>Thanks to all the mentors both past and present, friends, and fellow community members who have participated in my journey so far.</p>]]></description></item><item><title>New role as Fedora Magazine editor in chief</title><link>https://jwheel.org/blog/2016/08/new-role-fedora-magazine-editor-in-chief/</link><pubDate>Mon, 22 Aug 2016 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2016/08/new-role-fedora-magazine-editor-in-chief/</guid><description><![CDATA[<p>
<figure>
  <img src="/blog/2016/08/IMG_9424.jpg" alt="Picture from Flock 2016 with Justin Wheeler and Ryan Lerch for Fedora Magazine" loading="lazy">
  <figcaption>Me (left) with Ryan Lerch (right) at Flock 2016 (<a href="https://flocktofedora.org/" class="bare">https://flocktofedora.org/</a>)</figcaption>
</figure>
</p>
<p>Today, I am pleased to announce my new role as the <a href="https://fedoramagazine.org/">Fedora Magazine</a> editor-in-chief. After deciding to shift focus to other areas of the Fedora Project, I am receiving the torch from <a href="https://fedoramagazine.org/author/ryanlerch/">Ryan Lerch</a>. Ryan has helped lead the Magazine, edit pieces from other contributors, contribute his own pieces, and decide strategic direction for the Magazine.</p>
<p>He leaves big shoes to fill, but I hope to offer my own leadership, creativity, and direction in coming years as well. I&rsquo;d like to thank both Ryan, <a href="https://fedoraproject.org/wiki/User:Pfrields">Paul Frields</a>, and <a href="https://fedoraproject.org/wiki/User:Decause">Remy DeCausemaker</a> for their mentorship and guidance towards becoming involved with Fedora and the Magazine. I&rsquo;m excited to have the opportunity to help guide the Fedora Magazine in how it fits with the rest of Fedora.</p>

<h2 id="history-of-the-magazine">History of the Magazine&nbsp;<a class="hanchor" href="#history-of-the-magazine" aria-label="Anchor link for: History of the Magazine">🔗</a></h2>
<p>The Fedora Magazine began in late 2013, replacing the former publication, <a href="https://fedoraproject.org/wiki/FWN">Fedora Weekly News</a>. The Magazine delivers all official news and announcements for the Fedora Project, covers how-to guides on using software available in Fedora, and other general tips and tricks for using Fedora. The Magazine has had a large number of contributors assist in getting it off the ground and to where it is now.</p>
<p>A special thanks goes out to Ryan, Paul, and <a href="https://fedoraproject.org/wiki/User:Chrisroberts">Chris Roberts</a> for helping bring the Magazine to where it is today. There are surely many more names than these too worth mentioning, but it would be impossible for me to cover them all here.</p>

<h2 id="write-for-the-magazine">Write for the Magazine!&nbsp;<a class="hanchor" href="#write-for-the-magazine" aria-label="Anchor link for: Write for the Magazine!">🔗</a></h2>
<p>Want to write your own article for the Magazine? Know a useful piece of software you want to share with other Fedora users? Want to write about how using Fedora made something easier for you? Or maybe your own &ldquo;top 5&rdquo; list of tools for doing an everyday task? <a href="https://fedoramagazine.org/writing-an-article-for-the-fedora-magazine/">Come write for us!</a> If you&rsquo;re interested, check out <a href="https://fedoramagazine.org/writing-an-article-for-the-fedora-magazine/">this guide</a> about writing an article, and then <a href="https://fedoramagazine.org/writing-a-new-pitch/">how to write a pitch</a> for the Magazine team to review.</p>
<hr>
<p><em><a href="https://thenounproject.com/search/?q=magazine&amp;i=540631">Book</a> by <a href="https://thenounproject.com/mockturtle">Sergey Demushkin</a> from <a href="https://thenounproject.com/">the Noun Project</a>.</em></p>]]></description></item><item><title>GSoC 2016: That's a wrap!</title><link>https://jwheel.org/blog/2016/08/gsoc-2016-thats-wrap/</link><pubDate>Sun, 21 Aug 2016 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2016/08/gsoc-2016-thats-wrap/</guid><description><![CDATA[<p>Tomorrow, August 22, 2016, marks the end of the <a href="https://summerofcode.withgoogle.com/">Google Summer of Code</a> 2016 program. This year, I participated as a student for the Fedora Project working on my proposal, &ldquo;<a href="https://summerofcode.withgoogle.com/archive/2016/projects/4844704050970624/"><em>Ansible and the Community (or automation improving innovation)</em></a>&rdquo;. You can read my <a href="https://fedoraproject.org/wiki/GSOC_2016/Student_Application_jflory7">original project proposal</a> on the Fedora wiki. Over the summer, I spent time learning more about <a href="https://www.ansible.com/">Ansible</a>, applying the knowledge to real-world applications, and then taking that experience and writing my final deliverable. The last deliverable items, closing plans, and thoughts on the journey are detailed as follows.</p>

<h2 id="deliverable-items">Deliverable items&nbsp;<a class="hanchor" href="#deliverable-items" aria-label="Anchor link for: Deliverable items">🔗</a></h2>
<p>The last deliverable items from my project are two (2) git patches, one (1) git repository, and seven (7) blog posts (including this one).</p>
<ul>
<li>Git patches (<a href="https://jflory7.fedorapeople.org/pub/gsoc/2016/patches/0001-Add-role-and-playbooks-for-installing-and-upgrading-.patch">ansible.git</a> and <a href="https://jflory7.fedorapeople.org/pub/gsoc/2016/patches/0001-Add-WordPress-SOP-based-on-corresponding-additions-t.patch">infra-docs.git</a>)</li>
<li><a href="https://pagure.io/jflory7-ansible">Git repository</a></li>
<li><a href="https://jwfblog.wpenginepowered.com/tag/gsoc/feed/">Blog posts</a></li>
</ul>

<h2 id="closing-plans">Closing plans&nbsp;<a class="hanchor" href="#closing-plans" aria-label="Anchor link for: Closing plans">🔗</a></h2>
<p>At the end of the summer, I was using a private cloud instance in Fedora&rsquo;s infrastructure for testing my playbooks and other resources. One of the challenges towards the end of my project was moving my changes from my local development instance into a more permanent part of Fedora&rsquo;s infrastructure. For these reasons, I had some issues with running them in a context and workflow specific to Fedora&rsquo;s infrastructure and set-up (since I am not a sponsored member of the Fedora system administration group).</p>
<p>My current two patches were submitted to my mentor, Patrick. Together, we worked through some small problems with running my playbook in the <a href="https://infrastructure.fedoraproject.org/cgit/ansible.git/">context of Fedora&rsquo;s infrastructure</a>. There may still be some small remaining hoops to jump through for running it in production, but any remaining changes to be made should be minor. The majority of the work and preparation for moving to production is complete. This is also something I plan to follow up on past the end of the GSoC 2016 program as a member of the Fedora <a href="https://fedoraproject.org/wiki/Infrastructure_Apprentice">Infrastructure Apprentice</a> program.</p>
<p>My patches should be merged into the <a href="https://infrastructure.fedoraproject.org/cgit/ansible.git/">ansible.git</a> and <a href="https://infrastructure.fedoraproject.org/cgit/infra-docs.git/">infra-docs.git</a> repositories soon.</p>

<h2 id="reflection-on-gsoc-2016">Reflection on GSoC 2016&nbsp;<a class="hanchor" href="#reflection-on-gsoc-2016" aria-label="Anchor link for: Reflection on GSoC 2016">🔗</a></h2>
<p>As the program comes to a close, there&rsquo;s a lot of valuable lessons I&rsquo;ve learned and opportunities I&rsquo;m thankful to have received. I want to share some of my own personal observations and thoughts in the hopes that future students or mentors might find it useful for later years.</p>

<h4 id="planning-your-timeline">Planning your timeline&nbsp;<a class="hanchor" href="#planning-your-timeline" aria-label="Anchor link for: Planning your timeline">🔗</a></h4>
<p>In my case, I spent a large amount of time <a href="https://fedoraproject.org/wiki/GSOC_2016/Student_Application_jflory7">planning my timeline</a> for the project before the summer. Once the summer began, my original timeline was too broad for having smaller milestones to work towards. My timeline on the student application was more broad and general, and while it covered the big points, it was difficult to work towards those at first. Creating smaller milestones and goals for the bigger tasks makes them easier to work through on a day-by-day basis and helps add a sense of accomplishment to the work you are doing. It also helps shape direction for your work in the short-term and not just the long-term.</p>
<p>For an incoming Google Summer of Code student for Fedora (or any project), I would recommend creating the general, &ldquo;big picture&rdquo; timeline for your project before the summer. Then, if you are accepted and beginning your proposal, spend a full day creating small milestones for the bigger items. Try to map out accomplishments every week and break down how you want to reach those milestones throughout the week. I started using <a href="https://taskwarrior.org/">TaskWarrior</a> with an <a href="https://inthe.am/about">Inthe.AM Taskserver</a> to help me manage weekly tasks going into my project. But it&rsquo;s important to find a tool that works for you. You should reach out to your mentor about ideas for tools. If possible, your mentor should also have a way to view your agenda and weekly tasks. This will help make sure your goals are aligned to the right kind of work you are doing for an on-time completion.</p>
<p>I think this kind of short-term planning or task management is essential for hitting the big milestones and being timely with your progress.</p>

<h4 id="regular-communication">Regular communication&nbsp;<a class="hanchor" href="#regular-communication" aria-label="Anchor link for: Regular communication">🔗</a></h4>
<p>Consistent and frequent communication is also essential for your success in Google Summer of Code. This can be different depending on the context of how you are contributing to the project. For a normal student, this might just be communicating about your proposal with your mentor regularly. If you&rsquo;re already an active contributor and working in other areas of the project, this might be spending extra time on communicating your progress on the GSoC project (but more on that specifically in the next section).</p>
<p>Regardless of the type of contributor you are, one thing is common and universal – <strong>be noisy</strong>! Ultimately, project mentors and GSoC program administrators want to be sure that you are spending the time on your project and making progress towards accomplishing your goals. If you are not communicating, you will run the highest risk of failing. How to communicate can vary from project to project, but for Fedora, here&rsquo;s my personal recommendations.</p>

<h6 id="blog-posts">Blog posts&nbsp;<a class="hanchor" href="#blog-posts" aria-label="Anchor link for: Blog posts">🔗</a></h6>
<p>Even for someone like me who spends a lot of time writing already, this can be a difficult thing to do. But no matter how hard it is to do it, this is the cornerstone for communicating your progress and leaving a trail for future students to learn from you as well. Even if you&rsquo;ve had a difficult week or haven&rsquo;t had much progress, take the time to sit down and write a post. If you&rsquo;re stuck, share your challenges and share what you&rsquo;re stuck on. Focus on any success or breakthroughs you&rsquo;ve made, but also reflect on issues or frustrations you have had.</p>
<p>Taking the time to reflect on triumphs and failures is important not only for Google Summer of Code, but even looking past that into the real world. Not everything will go your way and there will be times where you will be face challenges that you don&rsquo;t know how to resolve. Don&rsquo;t burn yourself out trying to solve those kinds of problems alone! Communicate about them, ask for help from your mentors and peers, and make it an open process.</p>

<h6 id="irc-check-ins">IRC check-ins&nbsp;<a class="hanchor" href="#irc-check-ins" aria-label="Anchor link for: IRC check-ins">🔗</a></h6>
<p>Whether in a public channel, a meeting, or a private one-on-one chat with your mentor, make sure you are both active and present in IRC. Make sure you are talking and communicating with your mentor on a regular basis (at a <em>minimum</em>, weekly). Taking the time to talk with your mentor about your challenges or progress is helpful for them so they know what you&rsquo;re up to or where you are in the project. It also provides a chance for them to offer advice and oversight into your direction and potentially steer you away from making a mistake or going into the wrong direction. It is demotivating when you&rsquo;ve spent a lot of time on something and then later discovered it either wasn&rsquo;t necessary or had a simpler solution than you realized.</p>
<p>Make sure you are communicating often with your mentor over IRC to make your progress transparent and to also offer the chance for you to avoid any pitfalls or traps that can be avoided.</p>

<h6 id="hang-out-in-the-development-channels">Hang out in the development channels&nbsp;<a class="hanchor" href="#hang-out-in-the-development-channels" aria-label="Anchor link for: Hang out in the development channels">🔗</a></h6>
<p>As a Fedora Google Summer of Code student, there are a few channels that you should be present in on a regular basis (a daily presence is best).</p>
<ul>
<li><code>#fedora-admin</code></li>
<li><code>#fedora-apps</code></li>
<li><code>#fedora-summer-coding</code></li>
<li>Any specific channel for your project, e.g. <code>#fedora-hubs</code></li>
</ul>
<p>A lot of development action happens in this channels, or people who can help you with problems are available here. This also provides you the opportunity to gain insight into what the communication in an active open source project looks like. You should at least be present and reading the activity in these channels during the summer. Participation is definitely encouraged as well.</p>

<h4 id="balancing-project-with-open-source-contributions">Balancing project with open source contributions&nbsp;<a class="hanchor" href="#balancing-project-with-open-source-contributions" aria-label="Anchor link for: Balancing project with open source contributions">🔗</a></h4>
<p>I think my single, most difficult challenge with Google Summer of Code was balancing my proposal-specific contributions with the rest of contributions and work in the Fedora Project. I believe I was a minority of Google Summer of Code students who applied for the program as an active member of the project <a href="https://jwfblog.wpenginepowered.com/2015/10/my-journey-into-fedora/">almost a full year</a> before the program began. Additionally, my areas of contribution in Fedora before GSoC were mostly unrelated to my project proposal. My project proposal mostly aligned with my <a href="http://nsa.rit.edu/">intended degree</a> and education I am pursuing. A lot of the technology I would be working with was new to me and I had minimal knowledge about it before beginning the summer. As a result, this presented a unique set of challenges and problems I would face throughout my project.</p>
<p>The consequences of this were that I had to spend a lot more time researching and becoming familiar with the technology before advancing with creating the deliverable items. A great resource for me to learn about Ansible was <a href="https://www.ansiblefordevops.com/"><em>Ansible for DevOps</em> by Jeff Geerling</a>. But I spent more time on learning and &ldquo;trying out the tech&rdquo; than I had anticipated.</p>
<p>This extra time spent on research and experimentation were in tandem to my ongoing contributions in other areas of the project like <a href="https://fedoraproject.org/wiki/CommOps">Community Operations</a>, <a href="https://fedoraproject.org/wiki/Marketing">Marketing</a>, <a href="https://fedoraproject.org/wiki/Ambassadors">Ambassadors</a>, the <a href="https://fedoraproject.org/wiki/Diversity">Diversity Team</a>, and as of recently, the <a href="https://fedoraproject.org/wiki/SIGs/Games">Games SIG</a>. Balancing my time between these different areas, including GSoC, was the biggest challenge to me over the summer (along with a separate, part-time job on weekends). A separation of time to different areas of Fedora became essential for making progress on my project. What worked well for me was setting short-term goals (by the hour or day) that I wanted to hit and carry out. Until those goals were reached, I wouldn&rsquo;t focus on anything other than those tasks.</p>

<h2 id="special-thanks">Special thanks&nbsp;<a class="hanchor" href="#special-thanks" aria-label="Anchor link for: Special thanks">🔗</a></h2>
<p>I&rsquo;m both thankful and grateful to those who have offered their mentorship, time, and guidance for me to be a member of the GSoC Class of 2016. Special thanks go to <a href="https://fedoraproject.org/wiki/User:Puiterwijk">Patrick Uiterwijk</a>, my mentor for the program. I&rsquo;ve learned a lot from Patrick through these past few months and enjoyed our conversations. Even though we were both running around the entire week, I&rsquo;m glad I had the chance to meet him at <a href="https://jwfblog.wpenginepowered.com/2016/08/fedora-flock-2016/">Flock 2016</a> (and hope to see him soon at <a href="https://fosdem.org/2017/">FOSDEM</a> or <a href="http://devconf.cz/">DevConf</a>)! Another thanks goes to one of my former supporting mentors and program administrator <a href="https://fedoraproject.org/wiki/User:Decause">Remy DeCausemaker</a>.</p>
<p>I&rsquo;m looking forward to another year and beyond of Fedora contributions, and can&rsquo;t wait to see what&rsquo;s next!</p>]]></description></item><item><title>Żegnajcie! Fedora Flock 2016 in words</title><link>https://jwheel.org/blog/2016/08/fedora-flock-2016/</link><pubDate>Mon, 15 Aug 2016 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2016/08/fedora-flock-2016/</guid><description><![CDATA[<p>From August 2 - 5, the annual Fedora contributor conference, <a href="https://flocktofedora.org/">Flock</a>, was held in the beautiful city of <a href="https://en.wikipedia.org/wiki/Krak%C3%B3w">Kraków, Poland</a>. Fedora contributors from all over the world attend for a week of talks, workshops, collaboration, fun, and community building (if you&rsquo;re tuning in and not sure what Fedora is exactly, you can read more <a href="https://fedoraproject.org/wiki/Overview">here</a>). Talks range from technical topics dealing with upcoming changes to the distribution, talks focusing on the community and things working well and how to improve, and many more. The workshops are a chance for people normally separated by thousands of miles to work and collaborate on real issues, problems, and tasks in the same room. As a Fedora contributor, this is the &ldquo;premier&rdquo; event to attend as a community member.</p>
<p>Although my report comes a little late, it comes with a lot of thought and reflection over the week at Flock. I participated as a speaker for my talk with <a href="https://fedoraproject.org/wiki/User:Jonatoni">Jona Azizaj</a> titled, &ldquo;<a href="https://jflory7.fedorapeople.org/pub/flock/2016/university-outreach/flock-2016-university-outreach-new-task-new-mindset-slides.pdf">University Outreach: New task or new mindset?</a>&rdquo; I also worked with <a href="https://fedoraproject.org/wiki/User:Bee2502">Bee Padalkar</a> on running the <a href="https://fedoraproject.org/wiki/CommOps">Community Operations</a> (CommOps) team workshop for <a href="https://jflory7.fedorapeople.org/pub/flock/2016/commops-workshop/flock-2016-commops-workshop-slides.pdf">planning our own future tasks</a> in coming months and knowing what issues or topics the community had in mind. And lastly, due to last-minute scheduling issues, I helped plan and organize the <a href="https://flock2016.sched.org/event/76nj/diversity-women-in-open-source">Diversity Panel</a> with <a href="https://fedoraproject.org/wiki/User:Amsharma">Amita Sharma</a> and many other incredible contributors.</p>
<p>Without further ado, this is my analysis and report on the events at Flock 2016. And for anyone wondering what &ldquo;żegnajcie&rdquo; in the title means, Google Translate tells me that means &ldquo;farewell!&rdquo; in Polish.</p>

<h2 id="general-experiences-around-flock">General experiences around Flock&nbsp;<a class="hanchor" href="#general-experiences-around-flock" aria-label="Anchor link for: General experiences around Flock">🔗</a></h2>
<p>As a second-time visitor to Flock, I was a little familiar with the conference structure. <a href="https://fedoraproject.org/wiki/User:Jzb">Joe Brockmeier</a> made a <a href="https://fedoraproject.org/wiki/Flock/Volunteers2016">call for volunteers</a> to help transcribe talks over IRC. I signed myself up to help transcribe all the talks and workshops I was attending to help cover them in the &ldquo;CommOps-style&rdquo; way that I run meetings. This proved effective and I hope that my transcriptions were useful both to those who wanted to keep up with Flock from home and attendees who wanted to remember specific parts of talks after the conference ended. You can find an index of all talks and their transcriptions <a href="https://fedoraproject.org/wiki/Flock_2016_Talks">on the wiki</a>.</p>
<p>
<figure>
  <img src="/blog/2016/08/IMG_9238.jpg" alt="Brian Exelbierd nobly tries to organize Fedora Flock attendees for walking tour" loading="lazy">
  <figcaption>Brian Exelbierd (<a href="https://fedoraproject.org/wiki/User:Bex" class="bare">https://fedoraproject.org/wiki/User:Bex</a>) nobly tries to organize Flock attendees for the walking tour on Tuesday night.</figcaption>
</figure>
</p>
<p>The event organizers did an effective and incredible job of planning the fine details for the conference. When I arrived on August 1 at the airport, <a href="https://badges.fedoraproject.org/user/rluzynski">Rafał Lużyński</a> greeted me and provided a ride from the airport to the hotel. Along with us at the airport was <a href="https://fedoraproject.org/wiki/User:Bee2502">Bee Padalkar</a>, <a href="https://fedoraproject.org/wiki/User:Amsharma">Amita Sharma</a>, <a href="https://fedoraproject.org/wiki/User:Sgallagh">Stephen Gallagher</a> (thanks for sharing a plane ride with me!), and <a href="https://pagure.io/user/ryanlerch">Ryan Lerch</a>. Throughout the entire conference, I was always amazed at the hospitality and constant willingness to help by all the local organizers. For traveling in a country where the language was completely foreign, I never felt too confused or had a difficult time. I remember when Rafał helped translate the menu options for me at the restaurants we ate at on the first day, which was a major help for finding vegetarian choices. My impression on Kraków and then Poland is high and I hope to return again someday in the future.</p>
<p>Overall, the &ldquo;i&rsquo;s were dotted and the t&rsquo;s were crossed&rdquo;, as the saying goes. I am impressed by and thankful for the hard work that went into organizing this conference. The work of the organizers is one of the most important roles of the entire conference as it enables us to come together as a community. Events like Flock are powerful in many ways, and it would be easy for a conference to fall towards the &ldquo;lousy&rdquo; side of the scale. But the organizers, volunteers, and staff behind Flock help make the conference an amazing experience for all attendees. It&rsquo;s difficult to explain my appreciation for this work that enables so many incredible experiences and magic to come together every year.</p>

<h2 id="my-participation-at-flock">My participation at Flock&nbsp;<a class="hanchor" href="#my-participation-at-flock" aria-label="Anchor link for: My participation at Flock">🔗</a></h2>
<p>Unlike last year&rsquo;s Flock, I also participated as a speaker. In all, I helped organize and plan three different talks and workshops, which are detailed individually as follows.</p>

<h4 id="university-outreach-new-task-or-new-mindset">University Outreach: New task or new mindset?&nbsp;<a class="hanchor" href="#university-outreach-new-task-or-new-mindset" aria-label="Anchor link for: University Outreach: New task or new mindset?">🔗</a></h4>
<p>My first talk was on Tuesday. Together with <a href="https://fedoraproject.org/wiki/User:Jonatoni">Jona Azizaj</a>, we presented on the topic of outreach to students and university staff and faculty for the Ambassadors program. The talk structure was past, present, and future. We begin by looking at past efforts and trying to see what we could learn by things that have happened before now. Then, we looked at how Fedora is doing in working towards the <a href="https://fedoraproject.org/wiki/Objectives/University_Involvement_Initiative">University Involvement Initiative</a> and what tactics are effective now. We also focused on areas of student outreach with the events we are attending now. Everything up to this point was more of presenting information.</p>
<p>
<figure>
  <img src="/blog/2016/08/IMG_9222.jpg" alt="Me and Jona during our presentation on University Outreach at Fedora Flock" loading="lazy">
  <figcaption>Me and Jona during our presentation on University Outreach in Fedora</figcaption>
</figure>
</p>
<p>After running through the past and present, we presented the direction for moving forward with improving our outreach to universities, high schools, and their students and faculty members. We broke up the main points into four big topics: on-boarding, mentorship, focusing on not just students, and improving visibility. We presented some of our own thoughts on these topics and then opened the floor for community ideas and brainstorming.</p>
<p>My original plan for this talk was to present more hard information on how to begin moving forward sooner than later (e.g. &ldquo;less talking, more acting!&rdquo;). However, I had made plans and expectations for an <a href="https://fedoraproject.org/wiki/FAD_EDU_2016">EDU FAD</a> to happen in late July, which at the time, would be the place where resources and guides were created focusing on this specific topic. But due to <a href="https://web.archive.org/web/20161022131347/https://decausemaker.org/posts/friendsfeaturesfreedomfirstforever.html">sudden complications</a>, the FAD never happened. The resources I hoped to have were not available. So the end of this talk was a valuable time for attendees to leave their own thoughts and ideas on generating these resources and what kind of areas we should focus on first. The room was packed, and many people with diverse ideas had something to offer. The feedback was at times harsh, but I appreciated the directness towards coming up with solutions and the interest in the topic (after all, a full room says a lot more than an empty room).</p>
<p>A super big and special thanks goes to both <a href="https://fedoraproject.org/wiki/User:Ardian">Ardian Haxha</a> and <a href="https://fedoraproject.org/wiki/User:Jonatoni">Jona Azizaj</a>. Ardian was originally the other co-speaker for this talk, but was unable to attend Flock due to visa issues in Kosovo. Jona willingly stepped up as an interested member of the community to help deliver the talk and her help was greatly appreciated and helpful.</p>
<p>Once the videos of Flock are uploaded, I hope to review the comments and feedback from the talk once more and begin converting the ideas into action.</p>

<h4 id="diversity-panel">Diversity Panel&nbsp;<a class="hanchor" href="#diversity-panel" aria-label="Anchor link for: Diversity Panel">🔗</a></h4>
<p>The first-ever <a href="https://flock2016.sched.org/event/6yp5/diversity-panel-building-an-inclusive-community">Diversity Panel</a> was originally headed by Fedora&rsquo;s <a href="https://fedoraproject.org/wiki/Diversity_Adviser">Diversity Adviser</a>, <a href="https://fedoraproject.org/wiki/User:Tatica">María &rsquo;tatica&rsquo; Leandro</a>. But due to medical concerns, María was unable to make it to Flock. <a href="https://fedoraproject.org/wiki/User:Amsharma">Amita Sharma</a> stepped up to help lead and organize the panel this year. Amita reached out to me for help as a fellow member of the <a href="https://fedoraproject.org/wiki/Diversity">Diversity Team</a>, along with several others at the conference.</p>
<p>
<figure>
  <img src="/blog/2016/08/IMG_9317.jpg" alt="Intense thinking on the Diversity Panel at Fedora Flock" loading="lazy">
  <figcaption>Panelists on the Diversity Panel intensely thinking about the questions and concerns being fielded by the audience.</figcaption>
</figure>
</p>
<p>I was invited to take part, but I didn&rsquo;t get to spend as much time answering questions or offering ideas as I would have liked to. I helped organize and establish a remote call with María to participate from her home and also helped document the panel with some picture-taking. I feel I have to say this because the picture I&rsquo;ve seen shared the most from the panel has me looking down at my phone while the other panelists look deep in thought! At that exact moment, I was replying to messages with María to help troubleshoot some audio problems and help her identify who was speaking.</p>
<p>Overall, I feel the panel was a great success and I hope to see it become a regular part of Flock every year. We were able to target and name issues that the community feels needed focus in terms of diversity. Awareness was also raised for the incredibly large and diverse community we have. I hope together we can work towards breaking some of the stereotypes of Linux and open source communities, starting with our own. Big thanks (and hugs!) to Amita for helping organize the panel at the last minute, and a round of applause for all the panelists (<a href="https://fedoraproject.org/wiki/User:Mattdm">Matthew Miller</a>, <a href="https://fedoraproject.org/wiki/User:Marinaz">Marina Zhurakhinskaya</a>, <a href="https://fedoraproject.org/wiki/User:Lailah">Sylvia Sánchez</a>, <a href="https://fedoraproject.org/wiki/User:Bee2502">Bee Padalkar</a>, <a href="https://fedoraproject.org/wiki/User:Jonatoni">Jona Azizaj</a>, and <a href="https://fedoraproject.org/wiki/User:Riecatnor">Marie Nordin</a>).</p>

<h4 id="commops-workshop">CommOps workshop&nbsp;<a class="hanchor" href="#commops-workshop" aria-label="Anchor link for: CommOps workshop">🔗</a></h4>
<p>The <a href="https://fedoraproject.org/wiki/CommOps">Community Operations</a> (CommOps) workshop was originally headed by Fedora&rsquo;s <a href="https://fedoraproject.org/wiki/Community_Leader">Community Lead</a>, <a href="https://fedoraproject.org/wiki/User:Decause">Remy DeCausemaker</a>, but due to an <a href="http://decausemaker.org/posts/friendsfeaturesfreedomfirstforever.html">opportunity of a lifetime</a>, he left his position at Red Hat and was unable to make it to Flock. Together with <a href="https://fedoraproject.org/wiki/User:Bee2502">Bee Padalkar</a>, we took over responsibility for this workshop.</p>
<p>Together, we helped plan out the key areas of focus we wanted to have for the workshop. We decided to focus on on-boarding discussions with community members and planning ahead for tasks we wanted to work on in the coming year. We created and developed some <a href="https://jflory7.fedorapeople.org/pub/flock/2016/commops-workshop/flock-2016-commops-workshop-slides.pdf">slides</a> to help structure the workshop. Most of our preliminary planning work was done in an Etherpad, but some of the general structure and outlining exists in our <a href="https://fedoraproject.org/wiki/CommOps/Flock_2016">wiki planning pad</a>.</p>
<p>In the literal last minute before the talk began, Remy reached out to me and we patched him in for a brief audio introduction over Google Hangouts. He added some background and context to the work happening in CommOps over the past few months. Even with the suddenness of the arrangement, I was glad to have Remy with us for a time as we launched into the workshop. Unfortunately, it was only after his words we realized that our recording hadn&rsquo;t started. So his words will live on in our minds and memories forever instead.</p>
<p>The on-boarding discussion was shaped by those who were in attendance, but as I anticipated, even a few people would be enough to begin discussion to know areas that need extra focus and attention. Two areas we spent a good amount of time covering and reviewing were the <a href="https://fedoraproject.org/wiki/SIGs/Python">Python SIG</a> (thanks to <a href="https://fedoraproject.org/wiki/User:Churchyard">Miro Hrončok</a>) and the <a href="https://fedoraproject.org/wiki/Ambassadors">Ambassadors</a> (thanks to <a href="https://fedoraproject.org/wiki/User:Cwickert">Christoph Wickert</a>). We collected a lot of feedback and notes on these two specific teams. Until the workshop, the Python SIG wasn&rsquo;t on the CommOps radar, and knowing that they could use some help and assistance with on-boarding new team members is the exact type of feedback that was perfect to hear. I knew the Ambassadors would be a large one to tackle, but we were able to get some added context and feedback from a <a href="https://fedoraproject.org/wiki/Fedora_Ambassadors_Steering_Committee">FAmSCo</a> member and veteran Ambassadors to help steer the direction for how that discussion and subsequent actions will be shaped and directed.</p>
<p>We also spent some time collecting feedback on &ldquo;wishes&rdquo; for community metrics that would be helpful to understand both our impact and areas that we could spend more time focusing on. Most of this part of the discussion was lead by CommOps metrics genius Bee. You can see some of her past work on her <a href="https://networksfordata.wordpress.com/">blog</a> (like her <a href="https://networksfordata.wordpress.com/2016/03/08/fedora-at-fosdem/">FOSDEM analysis</a>). One area that would be better to understand is the <a href="https://fedoraproject.org/wiki/G11N">Globalization</a> and translation parts of the project. It would also be powerful to measure contributions by location for translations. The example used was if a small number of translations begin appearing in a new language, we can spend time providing resources and help to new contributors, with the goal of helping spur organic growth and interest in translating Fedora to that local language.</p>
<p>Of course, there are hundreds of different ways we could spin this story on metrics, but hopefully with the information we gained, we can begin directing focus at specific areas and teams. Bee has already started reaching out to Fedora&rsquo;s G11N team!</p>
<p>Again, I&rsquo;d like to reserve a very special thanks to Bee for helping organize, plan, and execute this workshop. I didn&rsquo;t originally anticipate being tasked with this and I had never organized something like this before. Having her help was a lifesaver and I think together we turned it into a productive and informative session. I&rsquo;m looking forward to another year and beyond on working with her throughout the Fedora Project.</p>

<h2 id="what-flock-was-for-me">What Flock was for me&nbsp;<a class="hanchor" href="#what-flock-was-for-me" aria-label="Anchor link for: What Flock was for me">🔗</a></h2>
<p>The context differences between my first and second Flock are immense. At the first Flock, it was a stroke of luck that it happened to be hosted in the same city as where I was already planning to move for attending my university. At Flock 2015, I was a newcomer and even an outsider. I didn&rsquo;t know anyone in the conference, I didn&rsquo;t know the city, and I had only ever wished to contribute up to that point. But I hadn&rsquo;t done much leading up to Flock 2015 other than observe. But even at the conference last year, there was one thing that was evident to me even as an outsider. The community is strong. The community is together. It was clear that the relationships within Fedora also extended outside of Fedora. I remember seeing people have a heated discussion about Fedora, or spend an entire workshop focusing on a particular issue… and after all the work was done for the day, they would walk out, have dinner together, buy each other a drink, and celebrate. There were smiles, there were hugs, there was a true air of friendliness across the entire conference. I didn&rsquo;t have to be much of a contributor to see that, even then.</p>

<h4 id="changing-roles">Changing roles&nbsp;<a class="hanchor" href="#changing-roles" aria-label="Anchor link for: Changing roles">🔗</a></h4>
<p>
<figure>
  <img src="/blog/2016/08/IMG_9383.jpg" alt="Smiling, laughing at Flock 2016" loading="lazy">
  <figcaption>One of the rare moments where I’m in front of the lens, not behind it.</figcaption>
</figure>
</p>
<p>Now, at Flock this year, the roles were reversed. Since becoming involved in Fedora around September and October of 2015, I slowly became immersed and absorbed into the community that I had watched and observed from the sidelines at Flock 2015 (and a year or so before then). But instead of watching this time, I became a participant. IRC names become names, and names become faces. In place of giving karma cookies, we shared real cookies, high-fives, hugs, and our thanks for each other. We had intense discussions on real issues or dilemmas in <em>our</em> project and <em>our</em> community. We built solutions and addressed tricky topics, we challenged each others&rsquo; ideas, we focused on how to improve the thing we spend so much time working on, either paid or volunteering.</p>
<p>And then we would walk around the city, jump on a river boat, visit a brewery, or hit the dance floor together. We smiled, we laughed, and we enjoyed the rare opportunity to eliminate the factor of distance and spend time with our community members. There&rsquo;s an air of incredibleness to this that makes it difficult to describe. But when you&rsquo;ve experienced it, you know exactly what it feels like.</p>

<h4 id="difference-in-saying-goodbye">Difference in saying goodbye&nbsp;<a class="hanchor" href="#difference-in-saying-goodbye" aria-label="Anchor link for: Difference in saying goodbye">🔗</a></h4>
<p>
<figure>
  <img src="/blog/2016/08/IMG_9404.jpg" alt="Bee, Jona, Amita at Kraków brewery at Fedora Flock 2016" loading="lazy">
  <figcaption>Bee, Jona, and Amita as we get ready to have dinner at a famous local brewery in Kraków.</figcaption>
</figure>
</p>
<p>The one major difference between Flock 2015 and 2016 for me, outside of changing roles from an observer to a participant, was something I wasn&rsquo;t expecting. Unlike the previous year where saying goodbye was driving a couple of miles to my apartment and thinking about all the things I saw and experienced, this time it was saying goodbye to new friends, shared memories, and an empowering sense of community. The names in IRC weren&rsquo;t just usernames, but they were faces… people. They were conversations, they were walking around together in a foreign city, they were sharing the view of a beautiful sunset on a river. It was remembering that we&rsquo;re all humans with unique ideas, perspectives, and personalities, even if the tools we use to communicate make it easy to forget that.</p>
<p>Saying goodbye at the end of the week was far harder than I anticipated, and it made me crave the opportunity to close the factor of distance again at the soonest possible opportunity.</p>

<h4 id="on-a-more-personal-note">On a more personal note&nbsp;<a class="hanchor" href="#on-a-more-personal-note" aria-label="Anchor link for: On a more personal note">🔗</a></h4>
<p>To this end, Flock came at the right time for me this year. Over the past few months, I&rsquo;ve spent a lot of time working across all different areas. My weekdays focused on Fedora and <a href="https://summerofcode.withgoogle.com/">Google Summer of Code</a>, my weekends woke me up at 4:00am for my weekend job at a <a href="http://www.dutchmonkeydoughnuts.com/">local coffee shop</a> in my hometown, and any extra time I could sneak goes into managing my now four-year-old Minecraft server community, <a href="https://crystalcraftmc.com/">CrystalCraftMC</a>. Before that, I finished my first year of my undergraduate degree at the <a href="https://www.rit.edu/">Rochester Institute of Technology</a>, and I&rsquo;m preparing to move back up to Rochester this week.</p>
<p>As much as I may have tried convincing others and myself that I wasn&rsquo;t at least a bit burnt out, it was definitely beginning to wear on me. Anyone who has experienced burnout knows what the feeling is like. It&rsquo;s different in how it affects all of us. But I was reaching that point through this summer. But Flock helped remind me of all the different people who are involved in this incredible project and why we&rsquo;re doing the work we are doing. Anyone who isn&rsquo;t familiar with open source will always question why we spend so much time working on something without being paid for it. But it&rsquo;s more than just that. It&rsquo;s more than a financial thing. The reason anyone volunteers willingly to open source is rarely ever to meet a financial or monetary goal. This is also a difficult thing to describe, and I hate to write something off as &ldquo;you have to experience it to know what I mean&rdquo;, but maybe this applies in this situation.</p>
<p>On that note, Flock served as a vital reminder for me about why I choose to involve myself with the Fedora Project. And it helped show me that the answer I need to take away isn&rsquo;t to contribute more, but it&rsquo;s to contribute enough for me. The several times someone in the community came up to me personally and said, &ldquo;Hey, thanks for all the work you&rsquo;re doing&rdquo; or something along those lines was incredibly powerful and moving to me. And that helped provide value for all the contributions and time I spend in Fedora. I want to make sure that I am at my best where I am able to contribute without burning myself out and away from Fedora. The unique opportunity of being in the same physical place with so many other Fedora contributors added that context for me. And who knows, maybe this realization from Flock saved me from hitting a wall at some point in the future. But now, I am confident and ready to continue with another year, and beyond, of Fedora contributions.</p>

<h4 id="thanks-for-having-me">Thanks for having me&nbsp;<a class="hanchor" href="#thanks-for-having-me" aria-label="Anchor link for: Thanks for having me">🔗</a></h4>
<p>I am incredibly thankful and grateful to be a part of the Fedora community. The opportunity to attend a conference like Flock with sponsorship in a country I&rsquo;ve never been to before was an incredible experience. Without a doubt, it&rsquo;s something that will stay with me for a long time. There are so many people I have to thank for helping open a door or offer pointers and tips for getting involved. There&rsquo;s the <a href="https://fedoramagazine.org/">Fedora Magazine</a> team, the <a href="https://fedoraproject.org/wiki/CommOps">CommOps</a> team and its <a href="https://fedoraproject.org/wiki/User:Decause">original founder</a>, the <a href="https://fedoraproject.org/wiki/Marketing">Marketing</a> team, the <a href="https://fedoraproject.org/wiki/Ambassadors">Ambassadors</a> (both globally and locally), the <a href="https://fedoraproject.org/wiki/Diversity">Diversity Team</a>… to list names would both be incredibly time-consuming and unfair (because I&rsquo;m beyond sure I would forget some name of someone who did have an impact on me getting involved).</p>
<p>I would like to give special thanks and appreciation for the companionship and friendliness of <a href="https://fedoraproject.org/wiki/User:Amsharma">Amita</a>, <a href="https://fedoraproject.org/wiki/User:Bee2502">Bee</a>, <a href="https://fedoraproject.org/wiki/User:Jonatoni">Jona</a>, and <a href="https://fedoraproject.org/wiki/User:Giannisk">Giannis</a> during Flock. We probably spent a large part of our time at the conference together and I have a deep appreciation for the opportunity to get to you know you all personally, not just as fellow contributors but as true friends. I anticipate the next time we can all be together in the same space again!</p>
<p>
<figure>
  <img src="/img/IMG_9225.jpg" alt="To Kraków for Flock with Bee, Amita, Jona, and Giannis" loading="lazy">
  <figcaption>On a bus to the Kraków city center with Bee, Amita, Jona, and Giannis (left to right).</figcaption>
</figure>
</p>

<h2 id="looking-ahead">Looking ahead&nbsp;<a class="hanchor" href="#looking-ahead" aria-label="Anchor link for: Looking ahead">🔗</a></h2>
<p>2016 is past halfway complete and we&rsquo;re on track towards a speedy arrival of 2017. But there is a lot to do before we get there. Flock has helped give the opportunity for the community and all of its teams to find their direction and aim for the next few months and to work towards that. I am refreshed, reinvigorated, and ready for another year of noting all the <code>#info</code>, answering the calls for <code>#help</code>, and taking on <code>#action</code> items to build and grow the Fedora Project forward.</p>
<p>See you in channel, on the mailing lists, or wherever our paths will collide next… as I&rsquo;m sure they will.</p>]]></description></item><item><title>GSoC 2016: Moving towards staging</title><link>https://jwheel.org/blog/2016/07/gsoc-2016-moving-towards-staging/</link><pubDate>Fri, 29 Jul 2016 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2016/07/gsoc-2016-moving-towards-staging/</guid><description><![CDATA[<p>This week wraps up for July and the last period of Google Summer of Code (GSoC 2016) is almost here. As the summer comes to a close, I&rsquo;m working on the last steps for preparing my project for deployment into Fedora&rsquo;s <a href="https://infrastructure.fedoraproject.org/cgit/ansible.git/">Ansible infrastructure</a>. Once it checks out in a staging instance, it can make the move to production.</p>

<h2 id="next-steps-for-gsoc-2016">Next steps for GSoC 2016&nbsp;<a class="hanchor" href="#next-steps-for-gsoc-2016" aria-label="Anchor link for: Next steps for GSoC 2016">🔗</a></h2>
<p>My last steps for the project are moving closer to production. Earlier this summer, the best plan of action was to use my development cloud instance for quick, experimental testing. Once a point of stability is reached, it would be tested on a staging instance of the real <a href="https://stg.fedoramagazine.org/">Fedora Magazine</a> or Community Blog. Once reviewed and tested, it would work its way to production for managing future installations and upgrades for any WordPress platform in Fedora.</p>
<p>When the time comes to move it to production, I will file a ticket in the <a href="https://fedorahosted.org/fedora-infrastructure/">Infrastructure Trac</a> with my patch file to the Ansible repository.</p>

<h2 id="one-last-correction">One last correction&nbsp;<a class="hanchor" href="#one-last-correction" aria-label="Anchor link for: One last correction">🔗</a></h2>
<p>One sudden difficulty I&rsquo;ve found is using the <code>synchronize</code> module in my upgrade playbook. Originally, I was copying and replacing the files using the <code>copy</code> module to carry out this, but I found <code>synchronize</code> to offer a better solution, using <code>rsync</code>. However, after switching, I ran into a small error that had me hung up.</p>
<p>When running the upgrade playbook, it would trigger an issue with <code>rsync</code> requiring a TTY session to work as a privileged user. I found a <a href="https://github.com/ansible/ansible/issues/4676">filed bug</a> for this in the Ansible repository. Fixing it required setting a specific flag in the server configuration when using <code>rsync</code>. To avoid doing this, I altered my upgrade playbook to not avoid dependence on a root user for running, and instead using user and group permissions for the <code>wordpress</code> user. I&rsquo;m working through smoothing out a few minor hiccups with the <code>synchronize</code> module during today, mostly dealing with the directory not being found when executing the module, even though it exists.</p>

<h2 id="flock-2016">Flock 2016&nbsp;<a class="hanchor" href="#flock-2016" aria-label="Anchor link for: Flock 2016">🔗</a></h2>
<p>On Sunday, I&rsquo;ll be <a href="https://jwfblog.wpenginepowered.com/2016/07/czesc-poland-back-europe/">flying out to Poland</a> for <a href="https://flocktofedora.org/">Flock 2016</a>, Fedora&rsquo;s annual contributor conference. During Flock, I&rsquo;ll meet several other Fedora contributors in person, including my mentor. We plan to set up the staging instance either later tonight or during Flock, depending on how time ends up going.</p>
<p>I&rsquo;ll also be delivering a talk and hosting a workshop during the week as well! One of the workshops I&rsquo;m hoping to attend is the <a href="https://flock2016.sched.org/event/76oY/ansible-best-practice-working-session">Ansible best practice working session</a>. I&rsquo;ll be seeing if there&rsquo;s anything I can glean to build into the last week of the project during the workshop.</p>]]></description></item><item><title>GSoC 2016 Weekly Rundown: Documentation and upgrades</title><link>https://jwheel.org/blog/2016/07/gsoc-2016-documentation-upgrades/</link><pubDate>Mon, 18 Jul 2016 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2016/07/gsoc-2016-documentation-upgrades/</guid><description><![CDATA[<p>This week and the last were busy, but I&rsquo;ve made some more progress towards creating the last, idempotent product for managing WordPress installations in Fedora&rsquo;s Infrastructure for GSoC 2016. The past two weeks had me mostly working on writing the standard operating procedure / documentation for my final product as well as diving more into handling upgrades with WordPress. My primary playbook for installing WordPress is mostly complete, pending <a href="https://serverfault.com/questions/790104/using-external-variables-inside-of-an-ansible-template/790111?noredirect=1#comment999485_790111">one last annoyance</a>.</p>

<h2 id="documentation">Documentation&nbsp;<a class="hanchor" href="#documentation" aria-label="Anchor link for: Documentation">🔗</a></h2>
<p>The first complete draft of my documentation for managing WordPress installations in Fedora&rsquo;s infrastructure is available on my Pagure repository. The guide covers deployment, including upgrades, as well as more notes about working with the playbooks. As my project work begins to finish, the documented procedure is an outline for the final work. It will also be expanded as I close out the project.</p>

<h2 id="installing-new-wordpress-site">Installing new WordPress site&nbsp;<a class="hanchor" href="#installing-new-wordpress-site" aria-label="Anchor link for: Installing new WordPress site">🔗</a></h2>
<p>After testing on my development instance in the Fedora cloud, my playbook is able to successfully install multiple WordPress sites to various hosts (pending <a href="https://serverfault.com/questions/790104/using-external-variables-inside-of-an-ansible-template/">one caveat</a> for automatically setting up MySQL databases). I was able to spin up multiple sites quickly and easily to a point where I was satisfied with how it worked.</p>
<p>A few challenges I faced in this part were figuring out templating the right information into the WordPress configuration file. I was originally going to try using a variable file, but due to the issue of storing private information, I was trying to use external variables. After revisiting the idea with Patrick, I&rsquo;m going to use a variables file with the information for each hypothetical installation. This file will then be stored in the private Ansible repository that holds server and application credentials.</p>
<p>Determining SELinux flags and contexts was also challenging. I had to learn which ones to apply to WordPress for basic functionality to still work (particularly for things like uploading media files to the server and letting WordPress cron work as expected). I&rsquo;m not wholly satisfied with how I implemented it yet, as I want to dig more into setting the contexts with different parts of modules like <code>unarchive</code> and <code>file</code>, if possible.</p>

<h2 id="upgrading-and-master">Upgrading and master&nbsp;<a class="hanchor" href="#upgrading-and-master" aria-label="Anchor link for: Upgrading and master">🔗</a></h2>
<p>The last significant task to handle is writing the playbook for handling upgrades for WordPress installations. There were two options originally available. The first option would be to allow upgrading via the WordPress admin panel. The second option would be writing a playbook to handle the upgrade. We opted for the second method as this will allow the files on the web server to be read-only, which will serve as an extra measure of hardened security.</p>
<p>I hope to have a playbook created in the next week to tackle upgrading an existing WordPress installation to a newer version. This will be the last significant task of my proposal, before I begin taking what I have so far and finding ways to integrate it into Fedora&rsquo;s infrastructure.</p>
<p>One of these smaller but important tasks will be writing a &ldquo;master&rdquo; playbook to orchestrate the entire process of setting up a machine to run it (and referring to the necessary roles). Some of these roles I&rsquo;ll be referring to are the <code>httpd</code> and <code>mariadb</code> roles.</p>

<h2 id="moving-towards-flock">Moving towards Flock&nbsp;<a class="hanchor" href="#moving-towards-flock" aria-label="Anchor link for: Moving towards Flock">🔗</a></h2>
<p>With Flock fast on approach, I&rsquo;m hoping to have the majority of my project work finished and completed before that time frame. Anything past Flock should mostly be tidying up or fully documenting any changes made in the last stretch. This is my target goal at the moment! I&rsquo;m looking forward to being a part of Flock again this year and meeting many members of the Fedora community.</p>]]></description></item><item><title>Cześć, Poland! Back to Europe</title><link>https://jwheel.org/blog/2016/07/czesc-poland-back-europe/</link><pubDate>Mon, 11 Jul 2016 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2016/07/czesc-poland-back-europe/</guid><description><![CDATA[<p>Earlier this month, I received some of the most exciting news I have had all year. After much finger-crossing and (hopefully) hard work, I am traveling to Kraków, Poland, for the <a href="https://fedoraproject.org/wiki/Overview">Fedora Project</a>&rsquo;s annual <a href="https://flocktofedora.org/">Flock</a> conference. Flock is described by the organizers as the following.</p>
<blockquote>
<p>Flock, now in its fourth year, is a conference for Fedora contributors to come together, discuss new ideas, work to make those ideas a reality, and continue to promote the core values of the Fedora community: Freedom, Friends, Features, and First.</p>
</blockquote>
<p>This year, I am attending as a contributor to the project, giving a talk, and leading a workshop!</p>

<h2 id="poland-new-experience">Poland: New experience&nbsp;<a class="hanchor" href="#poland-new-experience" aria-label="Anchor link for: Poland: New experience">🔗</a></h2>
<p>Last year, I attended Flock 2015 without having much of an idea of what to expect. Flock 2015 was less than ten minutes away from my then future university, the <a href="https://www.rit.edu/">Rochester Institute of Technology</a>. I was a user of Fedora since 2013, but I had never figured out how to start contributing to the project. To take advantage of this experience, I made plans to move into school early so I could see what Flock was all about.</p>
<p>Fast forward a full year, and a lot has changed. Now, I spend many hours a week working on the Fedora Project in many places. I help lead the <a href="https://fedoraproject.org/wiki/CommOps">CommOps</a> and <a href="https://fedoraproject.org/wiki/Marketing">Marketing</a> teams. I organize and attend events on the US East Coast as an <a href="https://fedoraproject.org/wiki/Ambassadors">Ambassador</a>. I&rsquo;m a <a href="https://fedoraproject.org/wiki/GSOC_2016/Student_Application_jflory7">Google Summer of Code 2016</a> student for Fedora. When I walked into the conference center last year as a shy student, I never imagined that many of the people I met would become familiar faces in short time.</p>
<p>This year, Flock 2016 in Poland will be a different experience, and I am looking forward to seeing what it will bring. Do you have plans to attend? If so, allow me to share some details for sessions you will want to add to your <a href="https://flock2016.sched.org/">schedule</a>!</p>

<h2 id="evaluating-our-impact-in-education">Evaluating our impact in education&nbsp;<a class="hanchor" href="#evaluating-our-impact-in-education" aria-label="Anchor link for: Evaluating our impact in education">🔗</a></h2>
<p>At 17:30 UTC+2 on August 2nd, 2016, together with <a href="https://twitter.com/jonatoni">Jona Azizaj</a>, we will lead a talk titled, &ldquo;<a href="https://flock2016.sched.org/event/76nd/university-outreach-new-task-or-new-mindset">University Outreach – New task or new mindset?</a>&rdquo;</p>
<p>In early 2015, the Fedora Council proposed a new objective: the <a href="https://fedoraproject.org/wiki/Objectives/University_Involvement_Initiative">University Involvement Initiative</a>. The purpose? Try to increase exposure of Fedora in university settings to gain new users, but also to hopefully gain new contributors. In order to carry this out, is it a new task, or does it need a new mindset? In this talk, we begin looking at the current mindset and marketing thoughts around attracting university students to Fedora. What is working? What isn&rsquo;t?</p>
<p>We will look at personal experiences among the presenters with getting involved with Fedora as a student for an example. We will focus on how changing the ways we approach reaching out to students might be the best way to begin making an impact on students with Fedora.</p>
<p>If you are someone interested in reaching new audiences of students with Fedora, make sure you work this talk into your agenda.</p>

<h2 id="commops-workshop">CommOps Workshop&nbsp;<a class="hanchor" href="#commops-workshop" aria-label="Anchor link for: CommOps Workshop">🔗</a></h2>
<p>As of recently, I will also be leading the <a href="https://flock2016.sched.org/event/6ypN/commops-workshop">CommOps workshop</a> on August 4th, 2016 at 13:30 UTC+2.</p>
<p>This year, for the first time, CommOps will be hosting its own workshop to tackle existing tasks and project items, offer a place for the community to add their own ideas and wishes for what they would like to see, and planning for the future growth of our sub-project. Flock offers a unique venue to do this as it brings together multiple people from different areas of Fedora in the same rooms. This is a great place for us to take advantage of the combined people power to accomplish tasks that would be hard otherwise.</p>
<p>The workshop will be designed to also try to keep remote contributors in mind, where possible, over IRC and possibly other means.</p>
<p>To help organize thoughts and ideas on the workshop in a public and open way, the workshop planned <a href="https://fedoraproject.org/wiki/CommOps/Flock_2016">in the open</a> on the wiki. We&rsquo;re working with other CommOps contributors on shaping how the workshop will run. We hope to have you join us and see what we&rsquo;re up to in CommOps land!</p>

<h2 id="thank-you-red-hat">Thank you Red Hat&nbsp;<a class="hanchor" href="#thank-you-red-hat" aria-label="Anchor link for: Thank you Red Hat">🔗</a></h2>
<p>Finally, I want to offer my sincere gratitude and appreciation to Red Hat and the Flock sponsors for sponsoring my travel costs to Flock 2016. As a student, there would not be a way for me to afford making this trip on my own expenses. Thanks to the great folks behind Flock, I will be attending and hope to contribute my worth with the above talk and workshop, as well as throughout the entire conference.</p>
<p>Thank you for granting me this opportunity, and I look forward to seeing many other Fedora contributors next month in Poland!</p>
<hr>
<p><em>Image courtesy <a href="https://unsplash.com/@devilcoders">Alexey Topolyanskiy</a> – originally posted to <a href="https://unsplash.com/">Unsplash</a> as <a href="https://unsplash.com/photos/u2GVjG8Ajig">Untitled</a>.</em></p>]]></description></item><item><title>How to push Fedora Badges</title><link>https://jwheel.org/blog/2016/07/push-fedora-badges/</link><pubDate>Fri, 08 Jul 2016 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2016/07/push-fedora-badges/</guid><description><![CDATA[<p>Ever wondered what goes on behind the magic of <a href="https://badges.fedoraproject.org/">Fedora Badges</a>? How does a badge go from being a design to an earn-able entity? This short but handy guide breaks down the entire process for you. This post is adapted from a <a href="https://meetbot.fedoraproject.org/fedora-meeting-3/2016-06-03/commops.2016-06-03-20.56.log.html#l-34">series of notes</a> I took while watching Ralph Bean demo the procedure at <a href="https://fedoraproject.org/wiki/PyCon_2016">PyCon</a>. This guide is a supplement, not a replacement, for the official <a href="https://infrastructure.fedoraproject.org/infra/docs/badges.rst">Badges SOP</a>.</p>

<h2 id="badges-prerequisites">Badges Prerequisites&nbsp;<a class="hanchor" href="#badges-prerequisites" aria-label="Anchor link for: Badges Prerequisites">🔗</a></h2>
<p>Before beginning to consider whether you are going to push a badge, you must first meet the following prerequisites.</p>
<ol>
<li>Clone the <a href="https://git.fedorahosted.org/cgit/badges.git"><code>badges</code> repository</a>, where all badges live.</li>
<li>Be a sponsored member of the <code>sysadmin-badges</code> FAS group</li>
</ol>

<h2 id="taking-care-of-art-assets">Taking care of art assets&nbsp;<a class="hanchor" href="#taking-care-of-art-assets" aria-label="Anchor link for: Taking care of art assets">🔗</a></h2>
<p>Before publishing the badge, you will need to make sure all the art assets are in the right place for the ticket. This usually consists of a PNG and SVG, but can also include an STL file for 3D printing a badge design.</p>
<p>The following steps are a handy checklist of things you need to do for gathering all the art assets together.</p>
<ol>
<li>Go to the ticket for the badge and pull both art asset types (PNG and SVG) into the <code>badges</code> repository. If there is a YAML rule file, pull that down as well.</li>
<li>Place both art assets (and YAML file, if applicable) into their appropriate folder. Make sure both files share the same name. It is preferred to name the files the name of the badge for easy indexing later on.</li>
<li>Double-check to make sure the image assets you pulled down are &ldquo;good&rdquo; - sometimes the images can be corrupted and this can cause problems later. Check if you can view both files.</li>
<li>Change directories into <code>bin/</code> and run the <code>export.sh</code> script. This will create an STL file for the badge and move it in the right place for you. Check the <code>README</code> file in <code>bin/</code> for more info about running the script.</li>
<li> Add the files in git and commit. If you have push privileges, go ahead and push. If not, create a patch file and add it to the original badge ticket.</li>
</ol>
<p>At this point, all the art assets will now be prepared and ready for deployment.</p>

<h2 id="pushing-out-badges">Pushing out badges&nbsp;<a class="hanchor" href="#pushing-out-badges" aria-label="Anchor link for: Pushing out badges">🔗</a></h2>
<p>Once you have committed the badge to the FedoraHosted repository, it doesn&rsquo;t mean the badge is &ldquo;out there&rdquo; yet. To do this, you will need to use an Ansible playbook for that purpose.</p>
<p>These steps will take you to the Batcave and have you push the badge out to the Badges front-end, <a href="https://github.com/fedora-infra/tahrir">Tahrir</a>.</p>
<ol>
<li>Log into the <code>batcave</code> machine and find the <a href="https://infrastructure.fedoraproject.org/cgit/ansible.git/tree/playbooks/manual/push-badges.yml"><code>push-badges.yml</code></a> playbook. Execute it.
<ol>
<li>Note that you will need to have proper privileges to execute and run the playbook. Sysadmins with privileges (<code>sysadmin-badges</code> FAS group) will be able to run the playbook to pull the changes from FedoraHosted to <code>batcave</code> - the changes then get synced to the <code>badges-web</code> server.</li>
<li>If you are only a member of <code>sysadmin-badges</code> but not other groups, you can use the <code>rbac-playbook</code> tool to execute this specific playbook. For more information on <a href="https://lists.fedoraproject.org/archives/list/infrastructure@lists.fedoraproject.org/thread/ZT73GIDEKL5WUQJWN4DD35KXGODLKW3S/">role-based-access-control playbooks</a>, read the original announcement.</li>
</ol>
</li>
<li>Wait for the playbook to finish. Once complete, check if the PNG file is publicly viewable on the Badges website.
<ol>
<li><code>https://badges.fedoraproject.org/pngs/{{ badge_name }}.png</code></li>
</ol>
</li>
</ol>
<p>Now, the hard work is done. From this point, you will have to use the front-end of Tahrir to finish adding the badge.</p>

<h2 id="adding-badges-from-tahrir">Adding badges from Tahrir&nbsp;<a class="hanchor" href="#adding-badges-from-tahrir" aria-label="Anchor link for: Adding badges from Tahrir">🔗</a></h2>
<p>Once the art assets are on <code>badges-web</code>, you will be ready to make the badge. <strong>But be warned</strong>! Creating a badge is easy, but editing it is not! Make sure the information you are entering is right on the first go. Otherwise, fixing it will involve fixing the data with SQL statements.</p>
<ol>
<li>Log into the admin interface on badges.fedoraproject.org.</li>
<li>Go to the &ldquo;Add badge&rdquo; section.</li>
<li>Enter in all the information as provided in the badge ticket. Make sure to include the right name, description, and location of the image file. Once you have double-checked and verified the information is correct, hit &ldquo;<em>Create badge</em>&rdquo;.
<ol>
<li>Tags are an important part of this process too. Compare to other similar badges when adding a new one, otherwise it may not be categorized correctly in the badges index.</li>
<li>Some information is consistent across all badges, like the <em>Badge Criteria</em> field. For this field, you should always put the link back to the original Badges Team ticket where the badge was proposed, designed, and discussed.</li>
</ol>
</li>
<li>If the badge does not have an automatic rule for being awarded, you will need to grant authorizations for issuing the badge. You can do this at the bottom of the admin interface. Use the badge name and the @fedoraproject.org email for the person gaining privileges.</li>
</ol>
<p>After pushing the badge out, do some last checks to make sure the badge pushed correctly. Make sure the page is viewable and double-check that it&rsquo;s categorized correctly in the <a href="https://badges.fedoraproject.org/explore/badges">badge index</a>. If everything looks right, you should be finished.</p>
<p>Congratulations, you just pushed your very own Fedora Badge!</p>
<hr>
<p><em>Image courtesy <a href="https://unsplash.com/@annadziubinska">Anna Dziubinska</a> – originally posted to <a href="https://unsplash.com/">Unsplash</a> as <a href="https://unsplash.com/photos/mVhd5QVlDWw">Untitled</a>.</em></p>]]></description></item><item><title>GSoC 2016 Weekly Rundown: Breaking down WordPress networks</title><link>https://jwheel.org/blog/2016/07/gsoc-2016-wordpress-networks/</link><pubDate>Sat, 02 Jul 2016 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2016/07/gsoc-2016-wordpress-networks/</guid><description><![CDATA[<p>This week, with an <a href="https://pagure.io/jflory7-ansible/blob/master/f/playbooks/deliverables">initial playbook</a> for creating a WordPress installation created (albeit needing polish), my next focus was to look at the idea of creating a WordPress <a href="https://codex.wordpress.org/Create_A_Network">multi-site network</a>. Creating a multi-site network would offer the benefits of only having to keep up a single base installation, with new sites extending from the same core of WordPress. Before making further refinements to the playbook, I wanted to investigate whether a WordPress network would be the best fit for Fedora.</p>

<h2 id="background-for-fedora">Background for Fedora&nbsp;<a class="hanchor" href="#background-for-fedora" aria-label="Anchor link for: Background for Fedora">🔗</a></h2>
<p>Understanding the background context for how WordPress fits into the needs for Fedora is important. There are two sites powered by WordPress within Fedora: the <a href="https://communityblog.fedoraproject.org/">Community Blog</a> and the <a href="https://fedoramagazine.org/">Fedora Magazine</a>. Each site uses a different domain (<a href="https://communityblog.fedoraproject.org/">communityblog.fedoraproject.org</a> and <a href="https://fedoramagazine.org/">fedoramagazine.org</a>, respectively).</p>
<p>At the moment, there are not any plans to set up or offer a blog-hosting service to contributors (and for good reason). The only two websites that would receive the benefits of a multi-site network would be the Community Blog and the Magazine. For now, the intended scale of expanding WordPress into Fedora is to these two platforms.</p>

<h2 id="setting-up-the-wordpress-network">Setting up the WordPress network&nbsp;<a class="hanchor" href="#setting-up-the-wordpress-network" aria-label="Anchor link for: Setting up the WordPress network">🔗</a></h2>
<p>To test the possibilities of using a network for our needs, I used a development CentOS 7 machine for my project testing purposes. There are some <a href="https://codex.wordpress.org/Before_You_Create_A_Network">guidelines</a> on creating networks for reading first before proceeding. After reading these, it was clear the approach to take was the domain method. I moved to the <a href="https://codex.wordpress.org/Create_A_Network">installation guide</a> on the development machine.<a href="/blog/2016/07/GSoC-2016-Adding-sites-to-WordPress-network.png">
<figure>
  <img src="/blog/2016/07/GSoC-2016-Adding-sites-to-WordPress-network.png" alt="GSoC 2016 - Adding sites to WordPress network" loading="lazy">
</figure>
</a></p>
<p>I wanted to document the process I was following for the multi-site network, so I created a <a href="https://github.com/jflory7/logbook/blob/master/logs/gsoc/notes/multisite.md">short log file</a> of my observations and information I found as I proceeded.</p>
<p>One of the time burners of this section was picking up Apache again. A few years ago, I switched my own personal web servers to <a href="http://nginx.com/">nginx</a> from Apache. Fedora&rsquo;s infrastructure <a href="https://infrastructure.fedoraproject.org/cgit/ansible.git/tree/roles/apache">uses Apache</a> for its web servers. It took me a little longer than I had hoped to get familiar with it again, mostly with virtual hosts and SELinux contexts for WordPress media uploads. Despite the extra time it took with Apache, I feel like this will save me time later when I am working on polishing the final deliverable or working with the Apache roles available.</p>
<p>In addition to this, I also picked out the dependencies for WordPress, such as the PHP packages needed and setting up a MariaDB database. After a while, I was able to get the WordPress network established and running on the development machine. It was convenient having a testable interface at my fingertips to work with.</p>

<h2 id="wordpress-network-conclusion">WordPress network: Conclusion?&nbsp;<a class="hanchor" href="#wordpress-network-conclusion" aria-label="Anchor link for: WordPress network: Conclusion?">🔗</a></h2>
<p>At the end of my testing and poking around, it appeared to me that there would not be an <em>easy</em> solution to using a WordPress network for Fedora. The network had the best ability when set up to use wildcard sub-domains, which wouldn&rsquo;t be a plausible solution for us because of the two different domains. There were more manual ways of doing it (i.e. not in the WordPress interface) with Apache virtual hosts. However, I felt like it would be easier to write one playbook that handles a single WordPress installation, and can be run for both sites separately (or new sites).</p>
<p>Given that the factor of scale is two websites, I think maintaining two separate WordPress installations will be the easier method and save time and keep efficiency.</p>

<h2 id="this-weeks-challenges">This week&rsquo;s challenges&nbsp;<a class="hanchor" href="#this-weeks-challenges" aria-label="Anchor link for: This week&rsquo;s challenges">🔗</a></h2>
<p>This week had a late start for me on Wednesday due to traveling on a <a href="https://apps.fedoraproject.org/calendar/meeting/4373/">short vacation</a> with my family from Sunday to Tuesday. Coming back from the trip, I also have a new palette of responsibilities that I am assisting with in <a href="https://fedoraproject.org/wiki/CommOps">Community Operations</a> and <a href="https://fedoraproject.org/wiki/Marketing">Marketing</a>, following <a href="https://lists.fedoraproject.org/archives/list/commops@lists.fedoraproject.org/thread/CG5JS4DQ3G2TVA5YZX7LBOSXVNCUPTIB/">decause&rsquo;s departure</a> from Red Hat. I&rsquo;m still working on finding a healthy balance of time and focus between other important tasks I am responsible for and my project work.</p>
<p>I&rsquo;m hoping that having a full week will allow me to make further progress and continue to overcome some of the challenges that have arisen in the past few weeks.</p>

<h2 id="next-weeks-goals">Next week&rsquo;s goals&nbsp;<a class="hanchor" href="#next-weeks-goals" aria-label="Anchor link for: Next week&rsquo;s goals">🔗</a></h2>
<p>For next week, I&rsquo;m planning on focusing on my existing product and making it feel and run more like a &ldquo;Fedora playbook&rdquo;. I mostly want to work on saving unnecessary effort and being consistent by tapping into the <a href="https://infrastructure.fedoraproject.org/cgit/ansible.git/tree/roles">existing Ansible roles</a> in Fedora Infrastructure. This would make setting up an Apache web server, MySQL database, and a few other tasks more automated. It keeps the tasks and organization in a consistent manner as well since they are across Fedora&rsquo;s infrastructure already.</p>
<p>By next Friday, the plan is to have a more idempotent product that runs effectively and as expected in my development server. Beyond that, the next step would be to work on getting my site into a staging instance.</p>]]></description></item><item><title>Fedora Ambassadors: Communicating about Design</title><link>https://jwheel.org/blog/2016/06/fedora-ambassadors-communicating-design/</link><pubDate>Thu, 30 Jun 2016 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2016/06/fedora-ambassadors-communicating-design/</guid><description><![CDATA[<p>This week is busy and continues to keep the pace of previous weeks. A lot has happened this week in the Fedora Project and I&rsquo;ve taken on a few new tasks too. In addition to existing work on <a href="https://jwfblog.wpenginepowered.com/tag/gsoc/feed/">Google Summer of Code</a>, Community Operations, Marketing, and more, I wanted to take some time this week to focus on CommOps <a href="https://fedorahosted.org/fedora-commops/ticket/71">Ticket #71</a>. This ticket originally focused on improving accessibility of design resources for Fedora <a href="https://fedoraproject.org/wiki/Ambassadors">Ambassadors</a>. However, after an interesting conversation with <a href="https://fedoraproject.org/wiki/User:Duffy">Máirín Duffy</a> on the <a href="https://fedoraproject.org/wiki/Design">Design Team</a> workflow, I discovered the availability was not the main issue. Instead, it seemed like communicating was an area needing focus.</p>

<h2 id="communicating-between-ambassadors-and-design">Communicating between Ambassadors and Design&nbsp;<a class="hanchor" href="#communicating-between-ambassadors-and-design" aria-label="Anchor link for: Communicating between Ambassadors and Design">🔗</a></h2>
<p>From our conversation, I learned that there was a disconnect between the Ambassadors and the Design team. As a sponsored Ambassador myself, I had never seen anywhere documenting the steps or process I should take to ask for art assets when needed for an event. There were also things I had not considered about what goes into the printing and production process for items too. Every region of the world seems to do things a little differently!</p>
<p>With the information I learned from our conversation in a <a href="https://meetbot.fedoraproject.org/fedora-meeting/2016-06-07/commops.2016-06-07-15.58.html">CommOps meeting</a>, I penned up a first draft of what the <a href="https://fedoraproject.org/wiki/Ambassadors/Design">communication process should look</a> like between Ambassadors and the Design team. The page is not official yet, and I posted a bit ago to the Design Team mailing list <a href="https://lists.fedoraproject.org/archives/list/design-team@lists.fedoraproject.org/thread/QSU5V4ALJFAYRFMQB4RQ365UQRMOECCV/">requesting feedback</a> on the page. Hopefully, if the information passes approval from the Design Team, we can work on socializing this information with all Ambassadors across the four regions of the world. The end goal of this is to make it easier on both the Ambassadors and the Design Team by doing the following…</p>
<ul>
<li>Making it clear what to do as an Ambassador for requesting art assets / printed items</li>
<li>Reducing strain / load on Design Team from repetitive situations / &ldquo;common questions&rdquo;</li>
<li>Creating a faster and more efficient workflow for Ambassadors organizing events and Designers creating art and deliverables</li>
</ul>

<h2 id="long-term-though">Long-term, though…&nbsp;<a class="hanchor" href="#long-term-though" aria-label="Anchor link for: Long-term, though…">🔗</a></h2>
<p>In this discussion, we acknowledged a wiki page is not a long-term solution to this problem. There are now initiatives in the project to help bring greater unity and cohesion between different sub-projects. <a href="https://fedoraproject.org/wiki/CommOps">CommOps</a> is definitely one of the biggest players to this. The future <a href="https://fedorahosted.org/famsco/ticket/373">formation of FOSCo</a> will help specifically towards communication between groups like <a href="https://fedoraproject.org/wiki/Ambassadors">Ambassadors</a>, <a href="https://fedoraproject.org/wiki/Design">Design</a>, and <a href="https://fedoraproject.org/wiki/Marketing">Marketing</a>. <a href="https://fedoraproject.org/wiki/Fedora_Hubs">Fedora Hubs</a> will also contribute to making this process easier by having improved methods of communicating key information like this.</p>
<hr>
<p><em><a href="https://thenounproject.com/search/?q=communication&amp;i=27324">Communication</a> by <a href="https://thenounproject.com/lorenzo.stl">Lorenzo Stella</a> from the <a href="https://thenounproject.com/">Noun Project</a>.</em></p>]]></description></item><item><title>GSoC 2016 Weekly Rundown: Assembling the orchestra</title><link>https://jwheel.org/blog/2016/06/gsoc-2016-rundown-assembling-orchestra/</link><pubDate>Fri, 24 Jun 2016 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2016/06/gsoc-2016-rundown-assembling-orchestra/</guid><description><![CDATA[<p>This week is the <a href="https://summerofcode.withgoogle.com/">Google Summer of Code 2016</a> midterm evaluation week. Over the past month since the program started, I&rsquo;ve learned more about the technology I&rsquo;m working with, implementing it within my infrastructure, and moving closer to completing my proposal. My <a href="https://fedoraproject.org/wiki/GSOC_2016/Student_Application_jflory7">original project proposal</a> details how I am working with <a href="https://www.ansible.com/">Ansible</a> to bring improved automation for WordPress platforms within Fedora, particularly to the <a href="https://communityblog.fedoraproject.org/">Fedora Community Blog</a> and the <a href="https://fedoramagazine.org/">Fedora Magazine</a>.</p>

<h2 id="understanding-background">Understanding background&nbsp;<a class="hanchor" href="#understanding-background" aria-label="Anchor link for: Understanding background">🔗</a></h2>
<p>My project proposal originated from a discussion based on an observation about managing the Fedora Magazine. Fedora&rsquo;s infrastructure is entirely automated in some form, often times using Ansible playbooks to &ldquo;conduct&rdquo; the Fedora orchestra of services, applications, and servers. However, all the WordPress platforms within Fedora are absent from this automated setup. This has to do with the original context of setting up the platforms.</p>
<p>However, now that automation is present in so much of the Infrastructure through a variety of tasks and roles, it makes sense to merge the two existing WordPress platforms in Fedora into the automation. This was the grounds for my proposal back in March, and I&rsquo;ve made progress towards learning a completely new technology and learning it by example.</p>

<h2 id="initial-research">Initial research&nbsp;<a class="hanchor" href="#initial-research" aria-label="Anchor link for: Initial research">🔗</a></h2>
<p><a href="/blog/2016/06/ansible-for-devops-cover.jpg">
<figure>
  <img src="/blog/2016/06/ansible-for-devops-cover.jpg" alt="GSoC 2016: &ldquo;Ansible For DevOps&rdquo; as a learning resource" loading="lazy">
</figure>
</a>From the beginning, I&rsquo;ve used two resources as guides and instructions for GSoC 2016. &ldquo;<a href="http://www.ansiblefordevops.com/"><em>Ansible For DevOps</em></a>&rdquo;, a book by <a href="http://jeffgeerling.com/">Jeff Geerling</a>, has played a significant part in helping bootstrap me with Ansible and the in&rsquo;s and out&rsquo;s. I&rsquo;m about halfway through the book so far, and it has helped profoundly with learning the technology. Special thanks to <a href="http://impactvps.com/about.html">Alex Wacker</a> for introducing me to the book!</p>
<p>The second resource is, as one would expect, the <a href="https://docs.ansible.com/">Ansible documentation</a>. The documentation for Ansible is complete and fully explanatory. Usually if there is an Ansible-specific concept I am struggling with learning, or finding a module for accomplishing a task, the Ansible documentation helps point me in the right direction quickly.</p>

<h2 id="research-into-practice">Research into practice&nbsp;<a class="hanchor" href="#research-into-practice" aria-label="Anchor link for: Research into practice">🔗</a></h2>
<p>After making some strides through the book and the documentation, I began turning the different concepts into practical playbooks for my own personal infrastructure. I run a handful of machines for different purposes, ranging from my <a href="https://crystalcraftmc.com/">Minecraft server</a>, a <a href="https://irc.jwheel.org/">ZNC bouncer</a>, some <a href="https://tipforums.com/">PHP forum websites</a>, and more. Ever since I began using headless Linux servers, I&rsquo;ve never explored automation too deeply. Every time I set up a new machine or a service, I would configure it all manually, file by file.</p>

<h4 id="first-playbook">First playbook&nbsp;<a class="hanchor" href="#first-playbook" aria-label="Anchor link for: First playbook">🔗</a></h4>
<p>After reading more about Ansible, I began seeing ways I could try automating things in my &ldquo;normal&rdquo; setup. This helped give a way to ease myself into Ansible without overwhelming myself with too large of tasks. I created repositories on Pagure for my <a href="https://pagure.io/jflory7-ansible">personal playbooks</a> and <a href="https://pagure.io/ccmc-ansible">Minecraft playbooks</a>. The very first one I wrote was my &ldquo;first 30 minutes&rdquo; on a new machine. <a href="https://pagure.io/jflory7-ansible/blob/master/f/playbooks/basic-provisioning/initial-centos-rhel-7-setup.yml">This playbook</a> sets up a RHEL / CentOS 7 machine with basic security measures and a few personal preferences ready to go. It&rsquo;s nothing fancy, but it was a satisfying moment to run it in my Vagrant machine and see it do all of my usual tasks on a new machine instantly.</p>
<p>For more information on using Ansible in a Vagrant testing environment, check out <a href="https://jwfblog.wpenginepowered.com/2016/06/setting-vagrant-testing-ansible/">my blog post</a> about it below.</p>
<p><a href="https://jwfblog.wpenginepowered.com/2016/06/setting-vagrant-testing-ansible/">https://jwfblog.wpenginepowered.com/2016/06/setting-vagrant-testing-ansible/</a></p>

<h4 id="moving-to-minecraft">Moving to Minecraft&nbsp;<a class="hanchor" href="#moving-to-minecraft" aria-label="Anchor link for: Moving to Minecraft">🔗</a></h4>
<p>After writing the first playbook, I tried moving to focusing on some other areas I could try automating to improve my &ldquo;Ansible chops&rdquo;. Managing my Minecraft server network is one place where I recognized I could improve automation. I spend a lot of time repeating the same sort of tasks, and having an automated way to do these tasks would make sense.</p>
<p>I started writing playbooks in the <a href="https://pagure.io/ccmc-ansible/blob/master/f/playbooks/add-servers.yml">adding</a> and <a href="https://pagure.io/ccmc-ansible/blob/master/f/playbooks/start-servers.yml">restarting</a> Minecraft servers based on the popular open source server software, <a href="https://www.spigotmc.org/">Spigot</a>. Writing these playbooks helped introduce me to different core modules in Ansible, like <code>lineinfile</code>, <code>template</code>, <code>copy</code>, <code>get_url</code>, and more.</p>
<p>I have also been using sites like ServerFault to find answers for any starting questions I have. Some of the changes between Ansible 1.x and 2.x caused some hiccups in <a href="https://serverfault.com/questions/784465/parse-through-a-list-of-ansible-variables-and-refer-to-itself-while-running-task/">one case</a> for me.</p>

<h4 id="using-infrastructure-resources">Using Infrastructure resources&nbsp;<a class="hanchor" href="#using-infrastructure-resources" aria-label="Anchor link for: Using Infrastructure resources">🔗</a></h4>
<p>After getting a better feel for the basics, I started focusing less on my infrastructure and more on the project proposal. One of the key differences from me writing playbooks, roles, and tasks for my infrastructure is that there are already countless <a href="https://infrastructure.fedoraproject.org/cgit/ansible.git/">Ansible resources</a> available from Fedora Infrastructure. For example, to create a WordPress playbook for Fedora Infrastructure, I would want to use the <a href="https://infrastructure.fedoraproject.org/cgit/ansible.git/tree/roles/mariadb_server"><code>mariadb_server</code></a> role for setting up a database for the site. Doing that in my playbook (or writing a separate role for it just for WordPress) would increase the difficulty of maintaining the playbooks and make it inconvenient for other members of Fedora Infrastructure.</p>

<h2 id="creating-a-deliverable">Creating a deliverable&nbsp;<a class="hanchor" href="#creating-a-deliverable" aria-label="Anchor link for: Creating a deliverable">🔗</a></h2>
<p>In my personal Ansible repository, I have begun constructing the <a href="https://pagure.io/jflory7-ansible/blob/master/f/playbooks/deliverables">deliverable product</a> for the end of the summer. So far, I have a playbook that creates a basic, single-site WordPress installation. The intention for the final deliverable is to have a playbook for creating a &ldquo;base&rdquo; installation of a <a href="https://codex.wordpress.org/Create_A_Network">WordPress network</a>, and then any other tasks for creating extra sites added to the network. This will make sure that any WordPress sites in Fedora are running the same core version, receive the same updates, and are consistent in administration.</p>
<p>I also intend to write documentation for standing up a WordPress site in Fedora based on my deliverable product. Fortunately, there is already a guide on <a href="https://infrastructure.fedoraproject.org/cgit/infra-docs.git/tree/infra-sop.rst">writing a new SOP</a>, so after talking with my mentor, <a href="https://fedoraproject.org/wiki/User:Puiterwijk">Patrick Uiterwijk</a>, on documentation expectations and needs next week, I will be referring back to this document as a guide for writing my own.</p>

<h2 id="reflection-on-gsoc-2016-so-far">Reflection on GSoC 2016 so far&nbsp;<a class="hanchor" href="#reflection-on-gsoc-2016-so-far" aria-label="Anchor link for: Reflection on GSoC 2016 so far">🔗</a></h2>
<p>I was hoping to have advanced farther by this point, but due to learning bumps and other tasks, I wasn&rsquo;t able to move at a pace as I hoped. However, since starting GSoC 2016, I&rsquo;ve made some personal observations about the project and how I can improve.</p>
<ul>
<li>Despite being behind from where I wanted to be, I feel I am at a point where I am mostly on track and able to work towards completing my project proposal on schedule.</li>
<li>I recognize communication on my progress has not been handled well, and I am making plans to make sure shorter, more frequent updates are happening at a consistent and regular basis. This includes a consistent, weekly (if not twice every week) blog post about my findings, progress, commits, and more.</li>
<li>After talking with Patrick this week, we are going to begin doing more frequent check-ins about where I am in the project and making sure I am on track for where I should be.</li>
</ul>

<h4 id="excerpt-from-gsoc-2016-evaluation-form">Excerpt from GSoC 2016 evaluation form&nbsp;<a class="hanchor" href="#excerpt-from-gsoc-2016-evaluation-form" aria-label="Anchor link for: Excerpt from GSoC 2016 evaluation form">🔗</a></h4>
<p>As one last bit, I thought it would be helpful to share my answers from Google&rsquo;s official midterm evaluation form from the experience section.</p>

<h6 id="what-is-your-favorite-part-of-participating-in-gsoc">&ldquo;What is your favorite part of participating in GSoC?&rdquo;&nbsp;<a class="hanchor" href="#what-is-your-favorite-part-of-participating-in-gsoc" aria-label="Anchor link for: &ldquo;What is your favorite part of participating in GSoC?&rdquo;">🔗</a></h6>
<p>&ldquo;Participating in GSoC gave me a means to continue contributing to an open source community I was still getting involved in. I began contributing to Fedora in September 2015, and up until the point when I applied for GSoC, I had anticipated having to give up my activity levels of contributing to open source while I maintained a job over the summer. GSoC enabled me to remain active and engaged with the Fedora Project community and it has kept me involved with Fedora.</p>
<p>The Fedora Project is also a strong user of Ansible, which is what my project proposal mostly deals with. My proposal gives me a lot of experience and the opportunity to learn new technology that not only allows me to complete my proposal, but also understand different levels and depths of contributing to the project far beyond the end of the summer. With the skills I am learning, I am being enabled as a contributor for the present and the future. To me, this is exciting as the area that I am contributing in has always been one that&rsquo;s interested to me, and this project is jump-starting me with the skills and abilities needed to be a successful contributor in the future.</p>
<p>GSoC is also actively teaching me lessons about time management and overcoming challenges of working remote (which I will detail in the next question). I believe the experience I am getting now from participating in GSoC allows me to improve on myself as an open source developer and contributor and learn important skills about working remotely with others on shared projects.&rdquo;</p>

<h6 id="what-is-the-most-challenging-part-of-participating-in-gsoc">&ldquo;What is the most challenging part of participating in GSoC?&rdquo;&nbsp;<a class="hanchor" href="#what-is-the-most-challenging-part-of-participating-in-gsoc" aria-label="Anchor link for: &ldquo;What is the most challenging part of participating in GSoC?&rdquo;">🔗</a></h6>
<p>&ldquo;The hardest part for me was (is) learning how to work remotely. In the past, when I was contributing at school, I had resources available to me where I could reach out to others nearby for assistance, places I could leave to focus, and a more consistent schedule. Working from home has required me to reach out for help either by improving how well I can search for something or reaching out to others in the project community about how to accomplish an objective.</p>
<p>There are also different responsibilities at home, and creating a focused, constructive space for me to focus on project work is an extremely important part of helping me accomplish my work. Learning to be consistent in my own work and setting my own deadlines is a large part of what I&rsquo;m working on doing now. Learning the ability to follow and set personal goals for working on the project was a hard lesson to learn at first, but finding that balance quickly and swiftly is something that is helping me move forward.&rdquo;</p>]]></description></item><item><title>Setting up Vagrant for testing Ansible</title><link>https://jwheel.org/blog/2016/06/setting-vagrant-testing-ansible/</link><pubDate>Fri, 10 Jun 2016 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2016/06/setting-vagrant-testing-ansible/</guid><description><![CDATA[<p>As part of my <a href="https://summerofcode.withgoogle.com/">Google Summer of Code</a> project proposal for the <a href="https://fedoraproject.org/wiki/Overview">Fedora Project</a>, I&rsquo;ve spent a lot of time learning about the ins and outs of Ansible. <a href="https://www.ansible.com/">Ansible</a> is a handy task and configuration automation utility. In the Fedora Project, Ansible is <a href="https://infrastructure.fedoraproject.org/cgit/ansible.git/">used extensively</a> in Fedora&rsquo;s infrastructure. But if you&rsquo;re first starting to learn Ansible, it might be tricky to test and play with it if you don&rsquo;t have production or development servers you can use. This is where Vagrant comes in.</p>

<h2 id="what-is-vagrant">What is Vagrant?&nbsp;<a class="hanchor" href="#what-is-vagrant" aria-label="Anchor link for: What is Vagrant?">🔗</a></h2>
<p>
<figure>
  <img src="/blog/2016/06/Vagrant.png" alt="Together, Vagrant and Ansible are a powerful combination." loading="lazy">
  <figcaption>Together, Vagrant and Ansible are a powerful combination.</figcaption>
</figure>
</p>
<p>Many people in the tech industry are already familiar with virtual machines (VMs) and using them for testing. If using a virtual machine is useful for testing and experimentation, Vagrant takes that idea and makes it a thousand times for powerful. <a href="https://www.vagrantup.com/">Vagrant</a> creates and configures a single virtual machine or several groups of inter-connected virtual machines. For someone trying to learn configuration management software like Ansible (or Puppet, or Chef, or Salt…), it features tight integration for creating virtual machines from playbooks.</p>
<p>Using Vagrant allows you to make quick, simple, and easy changes in a safe, local environment. Vagrant is also incredibly easy to set up, and in my experiences, it also ran well on a laptop. My trusty Toshiba Satellite with 8GB of RAM and an Intel i3 chip was able to handle three CentOS 7 virtual machines at once, and still manage to do other regular tasks.</p>

<h2 id="installing-vagrant-for-fedora">Installing Vagrant for Fedora&nbsp;<a class="hanchor" href="#installing-vagrant-for-fedora" aria-label="Anchor link for: Installing Vagrant for Fedora">🔗</a></h2>
<p>Since I&rsquo;m working with Fedora on my hardware while working on the Fedora Project over the summer, it would make sense for this guide to cover how to install and set up Vagrant inside of Fedora. However, I imagine it&rsquo;s similar for most other distributions, so try adapting these commands for your own distribution.</p>
<p>The Fedora repositories have a Vagrant package available. To install it, run the following command.</p>
<pre tabindex="0"><code>$ sudo dnf install vagrant
</code></pre><p>This will pull down Vagrant and all the dependencies it needs to run. However, what it won&rsquo;t do is pull down some of the many providers that it might need to use a virtual machine.</p>

<h3 id="vagrant-and-providers">Vagrant and providers&nbsp;<a class="hanchor" href="#vagrant-and-providers" aria-label="Anchor link for: Vagrant and providers">🔗</a></h3>
<p>For my testing, I used a <a href="https://atlas.hashicorp.com/geerlingguy/boxes/centos7">centos7 box image</a> from geerlingguy. This image creates a current, updated CentOS 7 virtual machine. In order to use it, you must have one of the two providers available: VMware or VirtualBox. Seeing as how VirtualBox is easier for me to install and use on my system, I chose to use VirtualBox as the &ldquo;provider&rdquo; for building and simulating the CentOS 7 box within Vagrant.</p>
<p>It took a bit of figuring out at first, but I found a current and well-documented <a href="http://www.if-not-true-then-false.com/2010/install-virtualbox-with-yum-on-fedora-centos-red-hat-rhel/">guide</a> on how to install VirtualBox on to a Fedora 22 or 23 system. For a more detailed explanation of how to do it, you can read the <a href="http://www.if-not-true-then-false.com/2010/install-virtualbox-with-yum-on-fedora-centos-red-hat-rhel/">instructions</a>, but for simplicity, I have the commands here to show how to add it to your Fedora system quickly.</p>
<pre tabindex="0"><code>$ sudo dnf upgrade
$ cd /etc/yum.repos.d/
$ sudo wget http://download.virtualbox.org/virtualbox/rpm/fedora/virtualbox.repo
$ sudo dnf install VirtualBox-5.0 binutils gcc make patch libgomp glibc-headers glibc-devel kernel-headers kernel-devel dkms
$ sudo /usr/lib/virtualbox/vboxdrv.sh setup
$ sudo usermod -a -G vboxusers your_username
</code></pre><p>From here,  VirtualBox  will be available as a provider within Vagrant.</p>

<h2 id="running-a-centos-7-image">Running a CentOS 7 image&nbsp;<a class="hanchor" href="#running-a-centos-7-image" aria-label="Anchor link for: Running a CentOS 7 image">🔗</a></h2>
<p>Now that you have both Vagrant and VirtualBox installed, you can create a Vagrant virtual machine with this image. Navigate to a new directory you want to use for managing your virtual machines. Once there, you can use the following commands to start your CentOS 7 virtual machine.</p>
<pre tabindex="0"><code>$ vagrant box add geerlingguy/centos7
$ vagrant init geerlingguy/centos7
$ vagrant up --provider virtualbox
</code></pre><p>After a lot of downloading and then waiting for the first setup to finish, you should receive a notification that your virtual machine started! Huzzah! You can log in directly to it by typing <code>vagrant ssh</code> in the same directory you ran the above commands.</p>
<p>There&rsquo;s a lot of cool things you can do to set up your virtual machines and configure how they start. For example, you can choose to use the VirtualBox GUI for running your virtual machines if you don&rsquo;t want to SSH into it. You can tweak several different flags to alter the environment for the virtual machine. However, that is out of the scope of this guide, and there is a fair amount of documentation already online.</p>

<h2 id="provisioning-with-ansible">Provisioning with Ansible&nbsp;<a class="hanchor" href="#provisioning-with-ansible" aria-label="Anchor link for: Provisioning with Ansible">🔗</a></h2>
<p>The fun part (and what was really cool for me) was provisioning new virtual machines with Ansible. You can instruct Vagrant to seek an Ansible playbook when creating a new virtual machine. It will use the instructions of the playbook to configure, install, or tweak whatever is in the playbook, as if it&rsquo;s being run for the first time. Or maybe it&rsquo;s the second, the third, the fourth time you&rsquo;ve run it. In either case, the idempotent nature of Ansible should help make sure you avoid repeating anything that doesn&rsquo;t need repeating.</p>
<p>In order to tell Vagrant to search for an Ansible playbook, you will need to edit the <code>Vagrantfile</code> for wherever you initialized Vagrant. Open it up in your favorite text editor and add the following bits at the bottom, but before the final <code>end</code> statement.</p>
<pre tabindex="0"><code>config.vm.provision &#34;ansible&#34; do |ansible|
  ansible.playbook = &#34;playbook.yml&#34;
end
</code></pre><p>These short but sweet instructions tell Vagrant to look for a <code>playbook.yml</code> file when starting this virtual machine. It will then be easy to provision (i.e. configure / modify / change) the machine with your playbook later on.</p>

<h3 id="writing-the-playbook">Writing the playbook&nbsp;<a class="hanchor" href="#writing-the-playbook" aria-label="Anchor link for: Writing the playbook">🔗</a></h3>
<p>For this blog post, I&rsquo;ll offer a simple but clear example of a playbook you can use to start a Vagrant machine. This snippet specifically comes from <em><a href="http://www.ansiblefordevops.com/">Ansible for DevOps</a></em> by <a href="http://jeffgeerling.com/">Jeff Geerling</a>, which I have (and am) using as a guide as I continue to learn more about Ansible (I highly recommend the book, consider getting a copy).</p>
<pre tabindex="0"><code>---
- hosts: all
  sudo: yes
  tasks:
  - name: Ensure NTP (for time synchronization) is installed.
    yum: name=ntp state=present
  - name: Ensure NTP is running.
    service: name=ntpd state=started enabled=yes
</code></pre><p>All this example playbook does installs NTP if it is not present on the system, and then start and enable it, if it is not already. This is a very simple example, but it&rsquo;s good for getting started quickly.</p>

<h3 id="running-the-playbook">Running the playbook&nbsp;<a class="hanchor" href="#running-the-playbook" aria-label="Anchor link for: Running the playbook">🔗</a></h3>
<p>In the same directory as your <code>Vagrantfile</code>, create a <code>playbook.yml</code> with the above content. Once you have the YAML file there, running the following command will run the Ansible playbook and allow you to see how it runs.</p>
<pre tabindex="0"><code>$ vagrant provision
</code></pre><p>Now, Vagrant will take your playbook and instantly run it in your machine. If all goes right, your virtual machine will now have NTP installed and be syncing your clock to the Internet! While a simple task, it was a satisfying feeling for me to see this run, but also to imagine the other possibilities that this could be used for. It would be easy to run a playbook on one, two, ten, a hundred, a thousand servers, and have it do the same thing on all of them.</p>
<p>The automation was fascinating to me and began giving me ideas of how I could automate my infrastructure, as well as to creating one for WordPress (for my GSoC project).</p>
<p>Congratulations! By the end of this short but (hopefully) useful guide, you will have Vagrant virtual machines that are controlled and orchestrated by Ansible.</p>]]></description></item><item><title>Throwback draft: An untitled poem</title><link>https://jwheel.org/blog/2016/05/throwback-draft-an-untitled-poem/</link><pubDate>Fri, 27 May 2016 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2016/05/throwback-draft-an-untitled-poem/</guid><description><![CDATA[<p><em>This post is published as part of a personal archival project of <a href="https://jwfblog.wpenginepowered.com/category/poems/">my poetry</a> and other creative works. The actual publish date of this post is Thursday, April 2nd, 2020, but the publish date of the post reflects the original date of authorship. This archival project aims to digitize a selection of written works that exist only in my private records. Enjoy.</em></p>
<p>I was cleaning out my saved notes on Telegram and found this untitled poem.</p>
<hr>
<pre tabindex="0"><code>To walk a stranger on the path,
A path of former glory,
Filled with fearlessness,
And the structure of a cloud.
</code></pre><pre tabindex="0"><code>The path is the same.
The memories burn like a flame,
Reignited by repetition.
Strengthened by familiarity.
</code></pre><pre tabindex="0"><code>But it is not the same.
Once you were ingrained,
But no longer the same.
The difference is you.
</code></pre><pre tabindex="0"><code>Your own snapshots emerge,
Out of the dark room,
Into the light.
Side by side you can compare.
</code></pre><pre tabindex="0"><code>Colors blend,
Lines blur.
Faces merge,
Age shows.
</code></pre><pre tabindex="0"><code>From analog to digital,
The past stands before you.
Electrons absent from pocket,
Disconnected but immersed.
</code></pre><pre tabindex="0"><code>The classical poet&#39;s demise,
Never has appeared so clear.
Turning to cryptic meaning,
As it cannot be explained.
</code></pre><pre tabindex="0"><code>The sun sets on our histories,
But rises anew ahead in time.
Keep close your memories,
But remember one thing.
</code></pre><pre tabindex="0"><code>Do not let them consume your new world.
</code></pre>]]></description></item><item><title>Tribute to the Halo 3: ODST soundtrack</title><link>https://jwheel.org/blog/2016/05/tribute-halo-3-odst-soundtrack/</link><pubDate>Mon, 02 May 2016 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2016/05/tribute-halo-3-odst-soundtrack/</guid><description><![CDATA[<p>The time is nearing 2:00am on a Wednesday morning. Outside is dark, a swirling mist of rain and blurred lights. As I stare out the window, the white light from my laptop illuminates my face. Around me, a room that is as quiet as the deserted roads and parking lots I see from my window. This is the scene that surrounds me as I listen to the 2009 <a href="https://en.wikipedia.org/wiki/Halo_3:_ODST">Halo 3: ODST</a> Original Soundtrack. Anyone who knows me well knows that I love the Halo series, especially the music that surrounds it.</p>
<p>Halo has a special place in my heart for its storytelling dynamics and the music that builds and drives the plot further. The composer, <a href="https://en.wikipedia.org/wiki/Martin_O%27Donnell">Marty O&rsquo;Donnell</a>, is one of my music idols. His work is inspiring and the sounds he creates across the games gives the story its character. It gives the characters purpose. All of the games reflect this in their soundtrack. But one game had a soundtrack different from the others.</p>

<h2 id="halo-3-odst-and-its-soundtrack">Halo 3: ODST and its soundtrack&nbsp;<a class="hanchor" href="#halo-3-odst-and-its-soundtrack" aria-label="Anchor link for: Halo 3: ODST and its soundtrack">🔗</a></h2>
<p>The Halo 3: ODST soundtrack places you in the feet of the rookie ODST soldier from the Halo series. Through the soundtrack, you join the rookie as you travel through an ominous, abandoned skyline. You are voyaging through the city, searching for clues. Answers for what has happened. Answers for where to go next.</p>
<p>The soundtrack takes on a <a href="https://en.wikipedia.org/wiki/Film_noir">film noir</a> approach, unlike other Halo soundtracks. It is fitting for this game as it essentially plays itself as a mystery. Halo 3: ODST sometimes gets hate for its campaign, but it is a complex story that requires deep thinking and a craving for a solution. The soundtrack aides in this and helps drive the story forward.</p>
<p>Even when you listen to the soundtrack outside of the context of the game, it fits many situations. Whether you&rsquo;re catching up on a backlog of tasks (and procrastination) at 2:00am, or you&rsquo;re on a lonely drive to somewhere, the soundtrack has an uncanny ability to transport you to a new world. You are lifted out of reality and into the fictional storyline of whatever the music creates. It&rsquo;s not always the same experience every time. Often the story the soundtrack creates for you is different each listen.</p>

<h2 id="one-rule">One rule&nbsp;<a class="hanchor" href="#one-rule" aria-label="Anchor link for: One rule">🔗</a></h2>
<p>Regardless of what your story is, there is one rule. You must listen to the entire soundtrack in order. The soundtrack plays itself in a serial way. Each song has a relevance into the next. While it may be possible to alter the order to a custom mix, the original story is best embedded in the original order of the soundtrack. One track may lead into a comforting calm for the next, or it may give rise to a dire situation that requires fast action.</p>

<h2 id="get-the-soundtrack">Get the soundtrack&nbsp;<a class="hanchor" href="#get-the-soundtrack" aria-label="Anchor link for: Get the soundtrack">🔗</a></h2>
<p>You can find the soundtrack for sale in many places. I urge you to support <a href="https://en.wikipedia.org/wiki/Martin_O%27Donnell">Marty O&rsquo;Donnell</a> with a well-deserved purchase of the album. If game soundtracks, instrumental music, and/or stories in music are your thing, this album is worth the listen.</p>
<ul>
<li><a href="https://open.spotify.com/album/0niO5iEowop0ptvm6oLGNy">Spotify</a></li>
<li><a href="http://www.amazon.com/Halo-3-Original-Game-Soundtrack/dp/B002LBGBOK">Amazon</a></li>
<li><a href="https://itunes.apple.com/us/album/halo-3-odst-original-soundtrack/id331836360">iTunes</a> (ewwww)</li>
</ul>]]></description></item><item><title>Google Summer of Code, Fedora Class of 2016</title><link>https://jwheel.org/blog/2016/04/google-summer-code-fedora-class-2016/</link><pubDate>Wed, 27 Apr 2016 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2016/04/google-summer-code-fedora-class-2016/</guid><description><![CDATA[<p>This summer, I&rsquo;m excited to say I will be trying on a new pair of socks for size.</p>
<p>Bad puns aside, I am actually enormously excited to announce that I am participating in this year&rsquo;s <a href="https://summerofcode.withgoogle.com/">Google Summer of Code</a> program for the <a href="https://fedoraproject.org/wiki/Overview">Fedora Project</a>. If you are unfamiliar with Google Summer of Code (or often shortened to GSoC), Google describes it as the following.</p>
<blockquote>
<p>Google Summer of Code is a global program focused on bringing more student developers into open source software development. Students work with an open source organization on a 3 month programming project during their break from school.</p>
</blockquote>
<p>I will work with the Fedora Project over the summer on the CommOps slot. As part of my proposal, I will assist with migrating key points of communication in Fedora, like the Fedora Magazine and Community Blog, to Ansible-based installations. I have a few more things planned up my sleeve too.</p>

<h2 id="google-summer-of-code-proposal">Google Summer of Code proposal&nbsp;<a class="hanchor" href="#google-summer-of-code-proposal" aria-label="Anchor link for: Google Summer of Code proposal">🔗</a></h2>
<p>My proposal summary is on the <a href="https://summerofcode.withgoogle.com/organizations/5630777857409024/#5114063432450048">GSoC 2016 website</a>. The full proposal is available on the <a href="https://fedoraproject.org/wiki/GSOC_2016/Student_Application_jflory7">Fedora wiki</a>.</p>

<h4 id="the-what">The What&nbsp;<a class="hanchor" href="#the-what" aria-label="Anchor link for: The What">🔗</a></h4>
<p>The <a href="https://fedoraproject.org/wiki/Community_Blog">Community Blog</a> is becoming an important part of the Fedora Project. This site is a shared responsibility between <a href="https://fedoraproject.org/wiki/CommOps">CommOps</a> and the <a href="https://fedoraproject.org/wiki/Infrastructure">Infrastructure</a> team. Unlike most applications in the Fedora infrastructure, the Community Blog is not based off Ansible playbooks. <a href="https://www.ansible.com/">Ansible</a> is an open-source configuration management suite designed to make automation easier. Fedora already uses Ansible extensively across its infrastructure.</p>
<p>My task would consist of migrating the Community Blog (and by extension, <a href="https://fedoraproject.org/wiki/Magazine">Fedora Magazine</a>) to an Ansible-based set up and writing the documentation for any related SOPs.</p>

<h4 id="the-why">The Why&nbsp;<a class="hanchor" href="#the-why" aria-label="Anchor link for: The Why">🔗</a></h4>
<p>Ansible is a useful tool to make automation and configuration easier. In their current set up, the Community Blog and Fedora Magazine are managed separately from each other, and are managed by a single member of the Infrastructure team. By moving them to Ansible-based installations and merging the WordPress bases together, it provides the following benefits:</p>
<ol>
<li>Makes it easier for other Infrastructure team members to fix, maintain, or apply updates to either site</li>
<li>Prevents duplicate work by maintaining a single, Ansible-based WordPress install versus two independent WordPress sites</li>
<li>Creates a standard operating procedure for hosting blog platforms within Fedora (can be used for other extensions in the future)</li>
</ol>

<h2 id="thanks-to-my-mentors">Thanks to my mentors&nbsp;<a class="hanchor" href="#thanks-to-my-mentors" aria-label="Anchor link for: Thanks to my mentors">🔗</a></h2>
<p>I would like to issue a special thanks to my mentors, <a href="https://fedoraproject.org/wiki/User:Puiterwijk">Patrick Uiterwijk</a> and <a href="https://fedoraproject.org/wiki/User:Decause">Remy DeCausemaker</a>. Patrick will be my primary mentor for the slot, as a member of the Fedora Infrastructure team. I will be working closest with him in the context of my proposal. I will also be working with Remy on the &ldquo;usual&rdquo; CommOps tasks that we work on week by week.</p>
<p>Another thanks goes out to all of those in the Fedora community who have positively affected and influenced my contributions. Thanks to countless people, I am happy to consider Fedora my open source home for many years to come. There is so much to learn and the community is amazing.</p>

<h2 id="getting-started">Getting started&nbsp;<a class="hanchor" href="#getting-started" aria-label="Anchor link for: Getting started">🔗</a></h2>
<p>As of the time of publication, the Community Bonding period is currently happening. The official &ldquo;coding&rdquo; time hasn&rsquo;t started yet. Without much delay, I will be meeting up with Patrick and Remy later today in a conference call to check in after the official announcement, make plans for what&rsquo;s coming up in the near future, and become more acquainted with the Infrastructure community.</p>
<p>In addition to our conference call, I&rsquo;m also planning on (formally) attending the next Fedora Infrastructure meeting on Thursday. Shortly afterwards, I hope to begin my journey as an Infrastructure apprentice and learn more about the workflow of the team.</p>
<p>Things are just getting started for the summer and I&rsquo;m beyond excited that I will have a paid excuse to work on Fedora full-time. Expect more check-ins as the summer progresses!</p>]]></description></item><item><title>Going to Bitcamp 2016</title><link>https://jwheel.org/blog/2016/04/bitcamp-2016/</link><pubDate>Sun, 24 Apr 2016 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2016/04/bitcamp-2016/</guid><description><![CDATA[<p>Over the weekend of April 9th - 10th, the Fedora Project <a href="https://fedoraproject.org/wiki/Fedora_Ambassadors_North_America_%28FAMNA%29">Ambassadors of North America</a> attended the <a href="http://bitca.mp/">Bitcamp 2016</a> hackathon at the <a href="https://www.umd.edu/">University of Maryland</a>. But what is Bitcamp? The organizers describe it as the following.</p>
<blockquote>
<p>Bitcamp is a place for exploration. You will have 36 hours to delve into your curiosities, learn something new, and make something awesome. With world-class mentors and hundreds of fellow campers, you’re in for an amazing time. If you’re ready for an adventure, see you by the fire!</p>
</blockquote>
<p>The <a href="https://fedoraproject.org/wiki/Overview">Fedora Project</a> attended as an event sponsor this year. At the event, we held a table in the hacker arena. The Ambassadors offered mentorship and help to Bitcamp 2016 programmers, gave away some free Fedora swag, and offered an introduction to Linux, <a href="http://www.theopensourceway.org/">open source</a>, and our community. This report recollects some highlights from the event.</p>
<p>
<figure>
  <img src="/img/group-photo.png" alt="Bitcamp 2016: The Fedora Ambassadors of Bitcamp 2016" loading="lazy">
  <figcaption>The Fedora Ambassadors at Bitcamp 2016. Left to right: Chaoyi Zha (cydrobolt), Justin Wheeler (jflory7), Mike DePaulo (mikedep333), Corey Sheldon (linuxmodder)</figcaption>
</figure>
</p>

<h2 id="getting-to-bitcamp-2016">Getting to Bitcamp 2016&nbsp;<a class="hanchor" href="#getting-to-bitcamp-2016" aria-label="Anchor link for: Getting to Bitcamp 2016">🔗</a></h2>
<p>
<figure>
  <img src="/blog/2016/04/chaoyi-friends.png" alt="Bitcamp 2016: Chaoyi Zha (cydrobolt) helping hackers with code" loading="lazy">
  <figcaption>Fedora Ambassador Chaoyi Zha (<a href="https://fedoraproject.org/wiki/User:Cydrobolt" class="bare">https://fedoraproject.org/wiki/User:Cydrobolt</a>) (cydrobolt) helps two other students working on their projects.</figcaption>
</figure>
</p>
<p>I left Rochester, New York around 4:00pm after my classes for the day had finished. Bitcamp check-in started at 7:00pm on Friday, April 8th. It was about a six hour drive for me to get there, and I got to Maryland right around 9:30pm.</p>
<p>Once I arrived, walking in was a crazy experience. Tables upon tables of hackers were lined up bu the hundreds. Most were already working on brainstorming. I meandered my way through the crowds to the Fedora table where <a href="https://fedoraproject.org/wiki/User:Corey84">Corey Sheldon</a>, <a href="https://fedoraproject.org/wiki/User:Mikedep333">Mike DePaulo</a>, and <a href="https://fedoraproject.org/wiki/User:Cydrobolt">Chaoyi Zha</a> were set up.</p>

<h2 id="meeting-the-hackers">Meeting the hackers&nbsp;<a class="hanchor" href="#meeting-the-hackers" aria-label="Anchor link for: Meeting the hackers">🔗</a></h2>
<p>
<figure>
  <img src="/blog/2016/04/corey-mentoring.png" alt="Bitcamp 2016: Corey Sheldon (linuxmodder) helps a student install Fedora" loading="lazy">
  <figcaption>Fedora Ambassador Corey Sheldon (<a href="https://fedoraproject.org/wiki/User:Corey84" class="bare">https://fedoraproject.org/wiki/User:Corey84</a>) (linuxmodder) works with a student trying to set up dual-boot on his laptop.</figcaption>
</figure>
</p>
<p>Many other students came up to the table before the hackathon officially began. We interacted with several students and helped establish ourselves as mentors as well. Additionally, we also had a <a href="https://badges.fedoraproject.org/badge/bitcamp-2016">badge</a> that attendees could scan to get added to their FAS account!</p>
<p>Once the event officially began, teams of people began working on their projects. Many people had grand ideas of projects to cram into the one weekend. For a brief time, the Ambassadors had a chance to rest from answering questions and helping people with their own hardware.</p>
<p>The hackers began settling into a groove for the evening.</p>

<h2 id="spending-the-night">Spending the night&nbsp;<a class="hanchor" href="#spending-the-night" aria-label="Anchor link for: Spending the night">🔗</a></h2>
<p>
<figure>
  <img src="/blog/2016/04/all-the-hackers.png" alt="Bitcamp 2016: Over 1,000 hackers attended at the University of Maryland" loading="lazy">
  <figcaption>Over a thousand hackers were present at Bitcamp 2016.</figcaption>
</figure>
</p>
<p>As the day turned into night, the home stretch of the hackathon was beginning. Those with firm ideas were deeply focused on their projects. Others were taking their plans back to the drawing board to overcome unexpected difficulties. Things began settling down for the night. The same cycle repeated itself for both Friday and Saturday nights.</p>
<p>Around this time, we had waves of interested hackers in Fedora, open source software, and Linux approach the table. This time was great for personalized, one-on-one conversations with visitors. Many excellent connections happened during this time!</p>

<h2 id="mentoring">Mentoring&nbsp;<a class="hanchor" href="#mentoring" aria-label="Anchor link for: Mentoring">🔗</a></h2>
<p>
<figure>
  <img src="/blog/2016/04/mikedep333-at-table-e1461525437165.png" alt="Bitcamp 2016: Mike DePaulo (mikedep333) at the Fedora Bitcamp 2016 table" loading="lazy">
  <figcaption>Fedora Ambassador Mike DePaulo (<a href="https://fedoraproject.org/wiki/User:Mikedep333" class="bare">https://fedoraproject.org/wiki/User:Mikedep333</a>) (mikedep333) demonstrated his triple-boot MacBook with OS X, Windows, and Fedora at Bitcamp 2016.</figcaption>
</figure>
</p>
<p>During <a href="http://bitca.mp/">Bitcamp</a>, there were several opportunities and connections made between <a href="https://fedoraproject.org/wiki/Ambassadors">Fedora Ambassadors</a> and university students.</p>
<p>For most of one night, Corey worked with one student who was aiming to do a full dual-boot installation on his laptop with Windows 10 UEFI. For a mixed variety of issues, he was unable to get Fedora working properly on his system. With the help of Corey, he was able to install and use Fedora on his laptop. He was very excited to finally get it working and was hoping to use it for development work in both classwork and personal projects. He was also a repeat visitor from BrickHack and remembered some of the booth members from the last hackathon.</p>
<p>Chaoyi traveled around the hacker space and worked with students looking to get help on web development projects. Chaoyi was able to give advice and help for students working with HTML, JavaScript / NodeJS, and Python. He traveled around the room for most of both nights teaching and showing students how to work on their projects and promoting the benefits of doing their work open source.</p>
<p>
<figure>
  <img src="/blog/2016/04/table-closeup.png" alt="Bitcamp 2016: whatcanidoforfedora.org was a popular tool" loading="lazy">
  <figcaption>The whatcanidoforfedora.org (<a href="http://whatcanidoforfedora.org" class="bare">http://whatcanidoforfedora.org</a>) site proved a useful tool for students looking to contribute to open source.</figcaption>
</figure>
</p>
<p>Mike also helped several students at Bitcamp, and like at BrickHack, his triple-booted MacBook with OS X, Windows, and Fedora was a popular item. Students with Macs often came and asked him about his setup and how he got it working. Mike was also able to help answer questions about developing in Fedora and share his experience working with tools available in Fedora for working on his projects for work and for fun.</p>
<p>Many students were looking for help with how to better get experience working on software for their future careers. As a student familiar with open source, I enjoyed talking to these students about how open source was a great resource for them. I explained how open source is a great way to get real world experience without working an &ldquo;official&rdquo; job, showed how they could make an impact on the world and start doing things, and why we do open source. It was gratifying the see these students get something out of our discussions and build something awesome in the open by the end of hackathon.</p>
<p>
<figure>
  <img src="/blog/2016/04/badges.png" alt="Bitcamp 2016: 3D printed Fedora Badges" loading="lazy">
  <figcaption>We 3-D printed a few Fedora Badges (<a href="https://badges.fedoraproject.org/about" class="bare">https://badges.fedoraproject.org/about</a>) using STL files at another vendor’s table.</figcaption>
</figure>
</p>
<p>Overall, I feel like the Fedora Project&rsquo;s impact was notable and concentrated at the event. I am extremely thankful and fortunate to have been sponsored to attend Bitcamp as an Ambassador for the Fedora Project.</p>]]></description></item><item><title>The night I became a hacker</title><link>https://jwheel.org/blog/2016/04/night-i-became-hacker/</link><pubDate>Mon, 18 Apr 2016 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2016/04/night-i-became-hacker/</guid><description><![CDATA[<p>On the night of April 15th, 2016, I officially became a hacker.</p>
<p>
<figure>
  <img src="http://i.giphy.com/bW3QwqNXw07RK.gif" alt="Ever wonder what being a hacker is all about? Wonder no more." loading="lazy">
  <figcaption>Ever wonder what being a hacker is all about? Wonder no more.</figcaption>
</figure>
</p>

<h2 id="how-to-be-hacker">How to be hacker&nbsp;<a class="hanchor" href="#how-to-be-hacker" aria-label="Anchor link for: How to be hacker">🔗</a></h2>
<p>You may ask yourself, how does one become a hacker? How do you become 1337? The answer might be simpler than you think. Old traditions, cheesy &rsquo;90s movies, and the information era.</p>
<p>On April 17th, I joined up with hacker <a href="http://brendan-w.com/">Brendan Whitfield</a> (beWhitty) and wannabe hacker <a href="http://nolski.rocks/">Mike Nolan</a> (nolski) to enjoy in a traditional viewing of 1995&rsquo;s <em><a href="http://www.imdb.com/title/tt0113243/">Hackers</a></em>. The movie is described as the following.</p>
<blockquote>
<p>A young boy is arrested by the U.S. Secret Service for writing a computer virus and is banned from using a computer until his 18th birthday. Years later, he and his new-found friends discover a plot to unleash a dangerous computer virus, but they must use their computer skills to find the evidence while being pursued by the Secret Service and the evil computer genius behind the virus.</p>
</blockquote>
<p>Among the students of the <a href="http://foss.rit.edu/">FOSS@MAGIC</a> program, the movie is like a cult classic. Within my first semester with the group, I became familiar with many notorious quotes and lines from the movie. Other students, now alumni, also encouraged a viewing.</p>
<p>There was no better time than the present.</p>

<h2 id="why-be-hacker">Why be hacker&nbsp;<a class="hanchor" href="#why-be-hacker" aria-label="Anchor link for: Why be hacker">🔗</a></h2>
<p>
<figure>
  <img src="http://i.giphy.com/k8j9FutKtJeRa.gif" alt="We only dreamed of having hacker skills like Crash Override and Acid Burn." loading="lazy">
  <figcaption>We only dreamed of having hacker skills like Crash Override and Acid Burn.</figcaption>
</figure>
</p>
<p>The cultural influence of the &rsquo;90s is clearly present in the movie. When we were viewing it, the movie was clearly written by a <a href="http://www.imdb.com/name/nm0604360/">writer</a> with as much experience with computers as the actors playing the parts. The stereotypes were laid thicker than molasses with the crossing of the &ldquo;high school troublemaker&rdquo; and the &ldquo;tough punk&rdquo; to define the hacker &ldquo;mentality&rdquo; of the characters. The <a href="http://www.imdb.com/name/nm0812200/">director</a> probably used a nephew, niece, or other cousin who &ldquo;sat in front of a computer all day&rdquo; as the inspiration for driving the characters and plot forward. It would be surprising if anyone who had ever used a computer or knew anything more than just using them for text documents and spreadsheets was involved in the creative process.</p>
<p>So, why bother seeing the movie at all? For all of the reasons mentioned above. Anyone in the technology or a digitally-oriented field would cringe at how the movie portrays the hacker mentality. And that&rsquo;s why it&rsquo;s so great. It is hard to imagine a viewing of the movie taken seriously. For our viewing, there were severe outbreaks of laughter and countless moments of cringe-worthy comedic relief, all wrapped up in a good time for a Friday night.</p>

<h2 id="now-we-are-hackers">Now we are hackers&nbsp;<a class="hanchor" href="#now-we-are-hackers" aria-label="Anchor link for: Now we are hackers">🔗</a></h2>
<p>After listening to many references of this movie during the past year and wondering what it meant exactly when &ldquo;the pool is on the roof&rdquo;, I have graduated to the status of full hacker along with fellow FOSSboxer nolski.</p>
<p>To demonstrate our understanding of the movie, we had a brief showing of our own in the <a href="https://webchat.freenode.net/?channels=rit-foss"><code>#rit-foss</code></a> channel on the freenode IRC network.</p>
<pre tabindex="0"><code>[23:00:52] &lt;nolski&gt; jflory7: beWhitty and I have decided that we are dropping out of college and starting a bar themed after the movie hackers
[23:45:26] &lt;nolski&gt; jflory7 and I are now official hackers.
[23:45:39] &lt;nolski&gt; We have experienced the movie Hackers
[23:46:17] &lt;CrashOverride&gt; nolski, beWhitty: Mess with the best
[23:46:20] &lt;CrashOverride&gt; Die like the rest
[23:47:28] &lt;Guest81889&gt; u on my turf CrashOverride?
[23:47:47] &lt;CrashOverride&gt; Guest81889: you are not 1337 enuf
[23:49:56] &lt;Nikon&gt; You&#39;re in the butter zone now, baby.
[23:50:11] &lt;ThePlague&gt; Never fear
[23:50:15] &lt;ThePlague&gt; I is here
[23:51:21] &lt;Acid-Burn&gt; Never send a boy to do a woman&#39;s job.
[23:51:25] &lt;CrashOverride&gt; I don&#39;t play well with others.
[23:52:12] &lt;CrashOverride&gt; Hack the planet! Hack the planet, nolski!
[23:52:23] &lt;nolski&gt; Hack the planet CrashOverride!
[23:52:46] * nolski is finally 1337 enuf
[23:54:50] &lt;nolski&gt; scp god@gibson:/.workspace/.garbage. ~/1337h4x0rsfilez/
[23:54:53] &lt;ThePlague&gt; THEY GOT THE GARBAGE FILE!
[23:55:50] &lt;nolski&gt; beWhitty++
[23:55:56] &lt;nolski&gt; jflory7++
[23:56:02] &lt;nolski&gt; hackers++
[23:56:09] &lt;ThePlague&gt; nolski: Type &#34;cookie&#34;, you idiot.
[23:56:17] &lt;nolski&gt; cookie
[23:57:14] &lt;CrashOverride&gt; HACK THE GIBSON
[23:57:16] &lt;CrashOverride&gt; ThePlague--
[00:02:41] &lt;CrashOverride&gt; My crime is that of curiosity. I am a hacker, and this is my manifesto.
</code></pre><p>I am submitting this blog post as my Meetup #3 for the <a href="https://hfoss-ritjoe.rhcloud.com/">Humanitarian Free and Open Source Software Development</a> course at the <a href="https://www.rit.edu/">Rochester Institute of Technology</a>. I hope to help spread the hacker culture perpetuated by this film by possibly planning a late night screening of <em>Hackers</em> at the <a href="https://2016.spaceappschallenge.org/locations/rochester-ny-usa">NASA Space Apps Challenge 2016</a> at RIT, if possible.</p>
<p>
<figure>
  <img src="http://i.giphy.com/Q2W4hziDOyzu0.gif" alt="&ldquo;Hack the planet! Hack the planet!&rdquo;" loading="lazy">
  <figcaption>\&#34;Hack the planet! Hack the planet!\&#34;</figcaption>
</figure>
</p>]]></description></item><item><title>BrickHack 2016</title><link>https://jwheel.org/blog/2016/04/brickhack-2016/</link><pubDate>Fri, 15 Apr 2016 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2016/04/brickhack-2016/</guid><description><![CDATA[<p>Last month at the <a href="https://www.rit.edu/">Rochester Institute of Technology</a>, <a href="https://brickhack.io/">BrickHack 2016</a> came to a close. BrickHack is an annual hackathon organized by students at RIT. Close to 300 people attend every year. This year was BrickHack&rsquo;s second event.</p>

<h2 id="brickhack-2016-and-fedora">BrickHack 2016 and Fedora&nbsp;<a class="hanchor" href="#brickhack-2016-and-fedora" aria-label="Anchor link for: BrickHack 2016 and Fedora">🔗</a></h2>
<p>This year, I attended with the Fedora Project team, which included people like <a href="http://decausemaker.org/">Remy DeCausemaker</a>, <a href="https://fedoraproject.org/wiki/User:Mikedep333">Mike DePaulo</a>, <a href="https://fedoraproject.org/wiki/User:Cprofitt">Charles Profitt</a>, <a href="http://threebean.org/">Ralph Bean</a>, and <a href="http://rsb.io/">Ryan Scott Brown</a>. In addition to the Fedora crew, many of my friends and fellow students were there, like <a href="http://nolski.rocks/">Mike Nolan</a> and <a href="http://brendan-w.com/">Brendan Whitfield</a>. There were countless others that made the weekend awesome and incredible.</p>
<p>For pictures and more details, read my full report on the Fedora Community Blog.</p>
<p><a href="https://communityblog.fedoraproject.org/brickhack-2016-event-report/">https://communityblog.fedoraproject.org/brickhack-2016-event-report/</a></p>
]]></description></item><item><title>HFOSS: Quiz #2</title><link>https://jwheel.org/blog/2016/04/hfoss-quiz-2/</link><pubDate>Wed, 06 Apr 2016 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2016/04/hfoss-quiz-2/</guid><description><![CDATA[<p>In the <a href="https://hfoss-ritjoe.rhcloud.com/">Humanitarian Free and Open Source Software Development (HFOSS)</a> course at the <a href="https://www.rit.edu/">Rochester Institute of Technology</a>, quizzes are in the form of blog posts submitted during the class period. The room stays quiet, but it is an open IRC quiz, so many of the students collaborated with each other in <a href="https://webchat.freenode.net/?channels=rit-foss">#rit-foss</a> on freenode for the quiz.</p>
<p>This post is my quiz submission for the Spring 2016 semester <a href="https://hfoss-ritjoe.rhcloud.com/quiz/quiz2">Quiz #2</a>.</p>

<h2 id="hfoss-spring-2016-quiz-2">HFOSS Spring 2016, Quiz #2&nbsp;<a class="hanchor" href="#hfoss-spring-2016-quiz-2" aria-label="Anchor link for: HFOSS Spring 2016, Quiz #2">🔗</a></h2>

<h4 id="expand-each-of-the-following-acronyms">Expand each of the following acronyms.&nbsp;<a class="hanchor" href="#expand-each-of-the-following-acronyms" aria-label="Anchor link for: Expand each of the following acronyms.">🔗</a></h4>
<ol>
<li>IRC: <strong><a href="https://en.wikipedia.org/wiki/Internet_Relay_Chat">Internet Relay Chat</a></strong></li>
<li>FOSS: <strong><a href="https://en.wikipedia.org/wiki/Free_and_open-source_software">Free and Open Source Software</a></strong></li>
<li>OLPC: <strong><a href="https://en.wikipedia.org/wiki/One_Laptop_per_Child">One Laptop per Child</a></strong></li>
<li>DVCS: <strong><a href="https://en.wikipedia.org/wiki/Distributed_version_control">Distributed version control system</a></strong></li>
<li>FSF: <strong><a href="https://en.wikipedia.org/wiki/Free_Software_Foundation">Free Software Foundation</a></strong></li>
<li>PR: <strong><a href="https://en.wikipedia.org/wiki/Distributed_version_control#Pull_requests">Pull Request</a></strong></li>
</ol>

<h4 id="what-is-the-short-two-letter-name-for-the-olpc-computers-used-in-the-final-project-for-this-class">What is the short, two-letter name for the OLPC computers used in the final project for this class?&nbsp;<a class="hanchor" href="#what-is-the-short-two-letter-name-for-the-olpc-computers-used-in-the-final-project-for-this-class" aria-label="Anchor link for: What is the short, two-letter name for the OLPC computers used in the final project for this class?">🔗</a></h4>
<ul>
<li><a href="https://en.wikipedia.org/wiki/OLPC_XO">XO laptops</a></li>
</ul>

<h4 id="what-is-the-one-word-name-for-the-interface-used-in-the-olpc-computers">What is the one-word name for the interface used in the OLPC computers?&nbsp;<a class="hanchor" href="#what-is-the-one-word-name-for-the-interface-used-in-the-olpc-computers" aria-label="Anchor link for: What is the one-word name for the interface used in the OLPC computers?">🔗</a></h4>
<ul>
<li><a href="https://en.wikipedia.org/wiki/Sugar_%28software%29">Sugar</a> (SoaS)</li>
</ul>

<h4 id="what-is-the-grade-level-we-are-targeting-our-olpc-applications-for">What is the grade level we are targeting our OLPC applications for?&nbsp;<a class="hanchor" href="#what-is-the-grade-level-we-are-targeting-our-olpc-applications-for" aria-label="Anchor link for: What is the grade level we are targeting our OLPC applications for?">🔗</a></h4>
<ul>
<li><a href="https://hfoss-ritjoe.rhcloud.com/static/decks/nysp12cclsmath-grade4only.pdf">4th grade students</a></li>
</ul>

<h4 id="briefly-define-the-following-instructional-theories-giving-the-role-of-the-instructor-in-each">Briefly define the following instructional theories, giving the role of the instructor in each.&nbsp;<a class="hanchor" href="#briefly-define-the-following-instructional-theories-giving-the-role-of-the-instructor-in-each" aria-label="Anchor link for: Briefly define the following instructional theories, giving the role of the instructor in each.">🔗</a></h4>
<ul>
<li>Didactic: <strong>Lecturing; instructor speaks to class about topic</strong></li>
<li>Dialectic: <strong>Similar to the Socratic seminar; discussion-based instructional teaching with interactions between the instructor and the class</strong></li>
<li>Constructivist: <strong>Teaching style that combines experiences with teaching to create a learning experience that lends power to the learner; the instructor acts as a facilitator rather than a traditional lecturer</strong></li>
</ul>

<h4 id="several-elements-are-combined-in-different-ways-to-form-the-creative-commons-licenses-match-each-shorthand-given-in-the-list-with-the-description-of-that-license-element-below">Several elements are combined in different ways to form the Creative Commons licenses. Match each shorthand given in the list with the description of that license element below.&nbsp;<a class="hanchor" href="#several-elements-are-combined-in-different-ways-to-form-the-creative-commons-licenses-match-each-shorthand-given-in-the-list-with-the-description-of-that-license-element-below" aria-label="Anchor link for: Several elements are combined in different ways to form the Creative Commons licenses. Match each shorthand given in the list with the description of that license element below.">🔗</a></h4>
<ol>
<li><strong>NC</strong>: <a href="https://creativecommons.org/licenses/by-nc/4.0">Non-Commercial</a>; You may not use the work for commercial purposes.</li>
<li><strong>SA</strong>: <a href="https://creativecommons.org/licenses/by-sa/4.0">Share-alike</a>; You must convey the same rights &ldquo;downstream&rdquo; that were conveyed to you by &ldquo;upstream&rdquo;.</li>
<li><strong>ND</strong>: <a href="https://creativecommons.org/licenses/by-nd/4.0">No Derivatives</a>; You may not make changes to the work.</li>
<li><strong>BY</strong>: <a href="https://creativecommons.org/licenses/by/4.0">Attribution</a>; You must attribute the contributions of the original or upstream creators of the work.</li>
</ol>

<h4 id="the-presence-of-which-license-elements-make-a-license-non-free-according-to-the-fsf">The presence of which license elements make a license &ldquo;non-free&rdquo; according to the FSF?&nbsp;<a class="hanchor" href="#the-presence-of-which-license-elements-make-a-license-non-free-according-to-the-fsf" aria-label="Anchor link for: The presence of which license elements make a license &ldquo;non-free&rdquo; according to the FSF?">🔗</a></h4>
<ul>
<li>(1) <a href="https://creativecommons.org/licenses/by-nc/4.0">Non-Commercial</a>; You may not use the work for commercial purposes.</li>
<li>(3) <a href="https://creativecommons.org/licenses/by-nd/4.0">No Derivatives</a>; You may not make changes to the work.</li>
</ul>

<h4 id="which-license-element-is-a-copyleft-give-the-letter-1-pt">Which license element is a copyleft? (give the letter, 1 pt)&nbsp;<a class="hanchor" href="#which-license-element-is-a-copyleft-give-the-letter-1-pt" aria-label="Anchor link for: Which license element is a copyleft? (give the letter, 1 pt)">🔗</a></h4>
<ul>
<li>(2) <a href="https://creativecommons.org/licenses/by-sa/4.0">Share-alike</a>; You must convey the same rights &ldquo;downstream&rdquo; that were conveyed to you by &ldquo;upstream&rdquo;.</li>
</ul>

<h4 id="name-two-projects-that-distribute-a-body-of-non-software-free-culture-data-and-briefly-name-or-describe-the-kind-of-data">Name two projects that distribute a body of non-software, free culture data, and briefly name or describe the kind of data.&nbsp;<a class="hanchor" href="#name-two-projects-that-distribute-a-body-of-non-software-free-culture-data-and-briefly-name-or-describe-the-kind-of-data" aria-label="Anchor link for: Name two projects that distribute a body of non-software, free culture data, and briefly name or describe the kind of data.">🔗</a></h4>
<ol>
<li><a href="https://docs.fedoraproject.org/en-US/index.html">Fedora Project Documentation</a> (CC-BY-SA 3.0): Provides documentation and instructions on using the Fedora operating system and how to achieve certain tasks using it</li>
<li><a href="http://manybooks.net/categories/CCL">ManyBooks</a> (mixed variety of CC licensed works): Provides downloads of freely licensed literature, novels, and books</li>
</ol>

<h4 id="list-or-describe-the-four-rs-as-a-shorthand-for-the-freedoms-attached-to-software-for-it-to-be-considered-free-and-open-source">List or describe “<a href="http://opencontent.org/blog/archives/1123">the four R’s</a>” as a shorthand for the freedoms attached to software for it to be considered “free and open source”.&nbsp;<a class="hanchor" href="#list-or-describe-the-four-rs-as-a-shorthand-for-the-freedoms-attached-to-software-for-it-to-be-considered-free-and-open-source" aria-label="Anchor link for: List or describe “the four R’s” as a shorthand for the freedoms attached to software for it to be considered “free and open source”.">🔗</a></h4>
<ol>
<li>Read</li>
<li>Run</li>
<li>Revise</li>
<li>Redistribute</li>
</ol>

<h2 id="bonus-questions">Bonus Questions&nbsp;<a class="hanchor" href="#bonus-questions" aria-label="Anchor link for: Bonus Questions">🔗</a></h2>

<h4 id="true-or-false-you-cannot-sell-gpld-software">True or False: You cannot sell GPL&rsquo;d software.&nbsp;<a class="hanchor" href="#true-or-false-you-cannot-sell-gpld-software" aria-label="Anchor link for: True or False: You cannot sell GPL&rsquo;d software.">🔗</a></h4>
<ul>
<li>False</li>
</ul>

<h4 id="true-or-false-you-can-fork-a-gpl-licensed-project-and-release-it-under-an-mit-license">True or False: You can fork a GPL licensed Project and release it under an MIT license?&nbsp;<a class="hanchor" href="#true-or-false-you-can-fork-a-gpl-licensed-project-and-release-it-under-an-mit-license" aria-label="Anchor link for: True or False: You can fork a GPL licensed Project and release it under an MIT license?">🔗</a></h4>
<ul>
<li>False</li>
</ul>

<h4 id="true-or-false-you-can-fork-a-mit-licensed-project-and-release-it-under-an-gpl-license">True or False: You can fork a MIT licensed Project and release it under an GPL license?&nbsp;<a class="hanchor" href="#true-or-false-you-can-fork-a-mit-licensed-project-and-release-it-under-an-gpl-license" aria-label="Anchor link for: True or False: You can fork a MIT licensed Project and release it under an GPL license?">🔗</a></h4>
<ul>
<li>True</li>
</ul>

<h4 id="when-does-a-work-become-copyrighted-by-an-author">When does a work become &ldquo;copyrighted&rdquo; by an author?&nbsp;<a class="hanchor" href="#when-does-a-work-become-copyrighted-by-an-author" aria-label="Anchor link for: When does a work become &ldquo;copyrighted&rdquo; by an author?">🔗</a></h4>
<ul>
<li>When it is created</li>
</ul>]]></description></item><item><title>HFOSS: Final Project Proposal</title><link>https://jwheel.org/blog/2016/04/hfoss-final-project-proposal/</link><pubDate>Mon, 04 Apr 2016 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2016/04/hfoss-final-project-proposal/</guid><description><![CDATA[<h2 id="what-is-this">What is this?&nbsp;<a class="hanchor" href="#what-is-this" aria-label="Anchor link for: What is this?">🔗</a></h2>
<p>This post serves as the project proposal for me and my team&rsquo;s <a href="https://hfoss-ritjoe.rhcloud.com/">Humanitarian Free and Open Source Software Development</a> &ldquo;<a href="https://hfoss-ritjoe.rhcloud.com/static/hw/final">Final Project</a>&rdquo;.</p>
<p>In this project proposal, we take a look at the game idea we are looking at completing for this project, based on the New York <a href="https://hfoss-ritjoe.rhcloud.com/static/decks/nysp12cclsmath-grade4only.pdf">4th grade math curriculum</a>. Our game idea is based off of a minigame from <a href="https://en.wikipedia.org/wiki/Zoombinis"><em>Logical Journey of the Zoombinis</em></a>, a puzzle-solving educational game.</p>
<p>
<figure>
  <img src="/blog/2016/04/Zoombinis-Pizza-Maker.jpg" alt="HFOSS Final Project: Zoombinis Pizza Pass minigame" loading="lazy">
  <figcaption>Screenshot from 1996’s \&#34;Logical Journey of the Zoombinis\&#34; Pizza Pass level.</figcaption>
</figure>
</p>

<h2 id="team-members">Team Members&nbsp;<a class="hanchor" href="#team-members" aria-label="Anchor link for: Team Members">🔗</a></h2>
<table>
  <thead>
      <tr>
          <th><strong>Name</strong></th>
          <th><strong>Email</strong></th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td><a href="http://blog.wilfriede.me/">Wilfried Hounyo</a></td>
          <td>*******.******@gmail.com</td>
      </tr>
      <tr>
          <td><a href="https://spg1502igme582.wordpress.com/">Stephen Garabedian</a></td>
          <td>*******@rit.edu</td>
      </tr>
      <tr>
          <td>Justin Wheeler</td>
          <td>*******@gmail.com</td>
      </tr>
  </tbody>
</table>

<h2 id="project">Project&nbsp;<a class="hanchor" href="#project" aria-label="Anchor link for: Project">🔗</a></h2>
<p><a href="https://github.com/jflory7/PyCut"><em>PyCut</em></a>, a pizza-making puzzle game</p>

<h2 id="description">Description&nbsp;<a class="hanchor" href="#description" aria-label="Anchor link for: Description">🔗</a></h2>
<p><em>PyCut</em> will be a simple puzzle game to teach children basic units of measurement and guiding them to think creatively to solve a problem. Our game is inspired by the Pizza Pass level of <em><a href="https://en.wikipedia.org/wiki/Zoombinis#Logical_Journey_of_the_Zoombinis_.281996.29">Logical Journey of the Zoombinis</a></em> (1996). The purpose of the game is to use pizza creation as the activity to teach these skills.</p>

<h2 id="team-member-roles">Team Member Roles&nbsp;<a class="hanchor" href="#team-member-roles" aria-label="Anchor link for: Team Member Roles">🔗</a></h2>

<h4 id="stephen-justin-and-wilfried">Stephen, Justin, and Wilfried&nbsp;<a class="hanchor" href="#stephen-justin-and-wilfried" aria-label="Anchor link for: Stephen, Justin, and Wilfried">🔗</a></h4>
<p>All team members will be responsible for contributing to the code via pull requests on GitHub. Testing, refactoring, and refining the code is also everyone&rsquo;s responsibility.</p>
<p>We are currently working on the details of which team members are responsible for the specific aspects of our project. We will have a better idea of this after completing the development plan later this week.</p>

<h2 id="source-code-repository-url">Source Code Repository URL&nbsp;<a class="hanchor" href="#source-code-repository-url" aria-label="Anchor link for: Source Code Repository URL">🔗</a></h2>
<p><a href="https://github.com/jflory7/PyCut">jflory7/PyCut</a></p>

<h2 id="communication-methods">Communication Methods&nbsp;<a class="hanchor" href="#communication-methods" aria-label="Anchor link for: Communication Methods">🔗</a></h2>
<p>The following methods of communication are ordered in the most preferred way to the least. These are the tools we will use internally while working on the project.</p>
<ol>
<li><strong>Our Slack team</strong> (IGME582)</li>
<li><strong>Issue tracker</strong> on <a href="https://github.com/jflory7/PyCut/issues">GitHub</a></li>
<li><strong>In-person communication</strong> for when we meet up as a team (FOSShours have been designated for in-person collaboration)</li>
</ol>

<h2 id="what-are-the-easy-parts">What are the easy parts?&nbsp;<a class="hanchor" href="#what-are-the-easy-parts" aria-label="Anchor link for: What are the easy parts?">🔗</a></h2>
<ul>
<li>Project seems pretty easily scoped. We have a curriculum to work with and we have inspiration from the original Zoombinis minigame.</li>
<li>We have a lot of resources to reach out to for help when needed. <a href="https://webchat.freenode.net/?channels=rit-foss">#rit-foss</a> on freenode, past developers for the HFOSS project, and more.</li>
<li>Two experienced Python developers (Wilfried, Stephen), two members familiar with open source project collaboration (Justin, Wilfried) on the team.</li>
<li>We have multiple previous projects to use as examples (see: <a href="https://github.com/FOSSRIT/">FOSSRIT</a>).</li>
</ul>

<h2 id="what-are-the-hard-parts">What are the hard parts?&nbsp;<a class="hanchor" href="#what-are-the-hard-parts" aria-label="Anchor link for: What are the hard parts?">🔗</a></h2>
<ul>
<li>None of us ever created a game for Sugar on a Stick before. We aren&rsquo;t sure of the scope of this task, so it will be difficult to estimate a time frame for completion.</li>
<li>Ensuring that our activity meets the learning objectives of 4th graders. As college students, it may be very easy for us to assume that some elements of the game are easy, but may actually be difficult for 4th grade students. Keeping it within that scope will be a challenge.</li>
</ul>

<h2 id="how-will-you-overcome-both">How will you overcome both?&nbsp;<a class="hanchor" href="#how-will-you-overcome-both" aria-label="Anchor link for: How will you overcome both?">🔗</a></h2>
<ul>
<li><strong>Communication and setting milestones</strong>
<ul>
<li>We are confident that we can pace out our project effectively and get it done on time.</li>
</ul>
</li>
<li><strong>Past resources and inspiration</strong>
<ul>
<li>Again, we have countless resources to refer to and get help from. As we run into problems, we have plenty of options for resolving them.</li>
</ul>
</li>
</ul>]]></description></item><item><title>Achievement get: Pizzelle!</title><link>https://jwheel.org/blog/2016/03/achievement-get-pizzelle/</link><pubDate>Thu, 31 Mar 2016 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2016/03/achievement-get-pizzelle/</guid><description><![CDATA[<p>
<figure>
  <img src="/blog/2016/03/Pizzelle-cookie.png" alt="Pizzelle badge: You got 50 karma cookies!" loading="lazy">
  <figcaption>The <em>Pizzelle</em> badge (<a href="https://badges.fedoraproject.org/badge/pizzelle-cookie-iv" class="bare">https://badges.fedoraproject.org/badge/pizzelle-cookie-iv</a>), in all of its crumbly, delicious awesomeness</figcaption>
</figure>
</p>
<p>Today, I received the <a href="https://badges.fedoraproject.org/badge/pizzelle-cookie-iv"><em>Pizzelle</em> badge</a> in <a href="https://badges.fedoraproject.org/about">Fedora Badges</a>. I was awarded with <em>Pizzelle</em> after a short &ldquo;karma storm&rdquo; in the <a href="https://meetbot.fedoraproject.org/fedora-meeting/2016-03-30/emea_ambassadors.2016-03-30-21.00.log.html">EMEA Ambassadors meeting</a>. After finding out I was awarded the badge, I had a light bulb sort of moment. As of this month, it has been a year since I first found myself wanting to get involved with the Fedora Project. I remember seeing the announcement for <a href="https://flocktofedora.org/">Flock 2015</a> and how that was right next to my soon-to-be university, the <a href="https://www.rit.edu/">Rochester Institute of Technology</a>. I remember lazily dismissing the idea of taking any further steps into Fedora until after Flock 2015. And now, a year later, I&rsquo;m reflecting back on crazy of a past few months it has been.</p>

<h2 id="what-is-a-pizzelle">What is a pizzelle?&nbsp;<a class="hanchor" href="#what-is-a-pizzelle" aria-label="Anchor link for: What is a pizzelle?">🔗</a></h2>
<p>If you&rsquo;re not aware already, Fedora has a unique system of rewarding positive contributions in the community through karma.</p>
<p>Karma is a unique way of rewarding positive interactions and actions in Fedora with a friendly, quantifiable number. In any official Fedora IRC channel, Fedora contributors can give any other contributor Karma by adding ‘<code>++</code>’ after their nick (i.e. <code>jflory7++</code>).</p>
<p>This “positive” karma is distributed by zodbot in the form of “cookies”. A contributor can give another contributor a “karma cookie” once a release cycle before they are able to give another one. For reaching certain milestones of <a href="https://badges.fedoraproject.org/tags/cookie/any">karma cookies</a>, contributors are awarded badges via Fedora Badges. Fedora uses this as a method to promote positive behavior in the community as well as help support and build community in Fedora. This reflects upon the “Friends” part of the Four Foundations of Fedora.</p>
<p>The Pizzelle badge is awarded to a user after received 50 cookies from other users in Fedora.</p>

<h2 id="thank-you">Thank you!&nbsp;<a class="hanchor" href="#thank-you" aria-label="Anchor link for: Thank you!">🔗</a></h2>
<p>A special thanks goes out to all of those who have helped mentor and guide me towards contributing to Fedora. There&rsquo;s really too many names to list, and everyone has impacted me in their own unique way. I hope that through my contributions, I can return the kindness and support that so many others have shown me.</p>
<p>I think karma is cool because it&rsquo;s a simple way users can show their appreciation for others. The more karma you receive, the more you realize that it really is like karma – the more you give, the more you get back out of it. If you put forth the effort and willingness to help others, those same others will return the favor to you in one form or another.</p>
<p>Special shout-out to the <a href="https://fedoraproject.org/wiki/CommOps">CommOps</a> team for working on some awesome tasks in Fedora! I don&rsquo;t know if I&rsquo;d be as deep in Fedora if it weren&rsquo;t for the folks behind CommOps.</p>]]></description></item><item><title>HFOSS: Community Architecture Team Project Report</title><link>https://jwheel.org/blog/2016/03/community-architecture-project-report/</link><pubDate>Mon, 14 Mar 2016 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2016/03/community-architecture-project-report/</guid><description><![CDATA[<p>For the <a href="https://hfoss-ritjoe.rhcloud.com/">Humanitarian Free and Open Source Software Development</a> (HFOSS) course at the <a href="https://www.rit.edu/">Rochester Institute of Technology</a>, we were tasked with the <a href="https://hfoss-ritjoe.rhcloud.com/static/hw/commarch.txt">Community Architecture (CommArch) project</a>. For this project, we were tasked with analyzing an open source project&rsquo;s community and the general details surrounding the project. This blog post serves as the analysis our team prepared for the project.</p>

<h2 id="a-describe-software-project-its-purpose-and-goals">A. Describe software project, its purpose and goals.&nbsp;<a class="hanchor" href="#a-describe-software-project-its-purpose-and-goals" aria-label="Anchor link for: A. Describe software project, its purpose and goals.">🔗</a></h2>
<p><a href="https://github.com/fedora-infra/tahrir">Tahrir</a> is a project that allows its users to create their own <a href="http://openbadges.org/">Open Badges</a> – graphical icons that show that a user has attended a particular event, completed a specific challenge, or any number of other accomplishments.</p>

<h2 id="b-give-brief-history-of-the-project-when-was-the-initial-commit-the-latest-commit">B. Give brief history of the project. When was the Initial Commit? The latest commit?&nbsp;<a class="hanchor" href="#b-give-brief-history-of-the-project-when-was-the-initial-commit-the-latest-commit" aria-label="Anchor link for: B. Give brief history of the project. When was the Initial Commit? The latest commit?">🔗</a></h2>
<p>The <a href="http://openbadges.org/">Mozilla OpenBadges</a> project’s wiki page was created in November of 2010, mentioning a few other projects that used a <a href="https://marksurman.commons.ca/2010/08/12/badges-identity-and-you/">badge system</a> and encouraging people to contribute to that project. Once Mozilla’s OpenBadges project was established, Fedora Infrastructure team member and Red Hat employee <a href="https://github.com/ralphbean">Ralph Bean</a> created the first commit for the Tahrir project in April of 2012. Since then, twenty-two contributors have worked on the project, with commits as recently as March 2nd, 2016.</p>

<h2 id="c-who-approves-patches-how-many-people">C. Who approves patches? How many people?&nbsp;<a class="hanchor" href="#c-who-approves-patches-how-many-people" aria-label="Anchor link for: C. Who approves patches? How many people?">🔗</a></h2>
<p>There did not seem to be an established, formal process for who has the privileges or authority to approve patches, but based on the most recent pull requests, the following users have been actively responsible in the past year for approving patches.</p>
<ul>
<li>Chaoyi Zha (<a href="https://github.com/cydrobolt">cydrobolt</a>)</li>
<li>Ralph Bean (<a href="https://github.com/ralphbean">ralphbean</a>)</li>
<li>Patrick Uiterwijk (<a href="https://github.com/puiterwijk">puiterwijk</a>)</li>
<li>Trishna Guha (<a href="https://github.com/trishnaguha">trishnaguha</a>)</li>
<li>Remy DeCausemaker (<a href="https://github.com/decause/">decause</a>)</li>
<li>Pierre-Yves Chibon (<a href="https://github.com/pypingou/">pypingou</a>)</li>
</ul>

<h2 id="d-who-has-commit-access-or-has-had-patches-accepted-how-many-total">D. Who has commit access, or has had patches accepted? How many total?&nbsp;<a class="hanchor" href="#d-who-has-commit-access-or-has-had-patches-accepted-how-many-total" aria-label="Anchor link for: D. Who has commit access, or has had patches accepted? How many total?">🔗</a></h2>
<p>Based on total contributions, Ralph Bean and former contributor David Gay (<a href="https://github.com/oddshocks">oddshocks</a>) made more contributions to the project than any other users. However, the list of users listed above (being able to approve patches) also seem to have commit access as well. From the outside, it is difficult to determine user permissions, but the contextual evidence provided from issues and pull requests seems to support this conclusion.</p>
<p>In total, the project has had twenty-two contributors.</p>

<h2 id="e-who-has-the-highest-amounts-of-unique-knowledge">E. Who has the highest amounts of &ldquo;Unique Knowledge?&rdquo;&nbsp;<a class="hanchor" href="#e-who-has-the-highest-amounts-of-unique-knowledge" aria-label="Anchor link for: E. Who has the highest amounts of &ldquo;Unique Knowledge?&rdquo;">🔗</a></h2>
<p>Based on the diversity of commits and git_by_a_bus results (at the bottom of this post), <a href="https://github.com/ralphbean">Ralph Bean</a> appears to have the highest amounts of unique knowledge for Tahrir.</p>

<h2 id="f-what-is-your-projects-calloway-coefficient-of-fail">F. What is your project&rsquo;s &ldquo;Calloway Coefficient of Fail?&rdquo;&nbsp;<a class="hanchor" href="#f-what-is-your-projects-calloway-coefficient-of-fail" aria-label="Anchor link for: F. What is your project&rsquo;s &ldquo;Calloway Coefficient of Fail?&rdquo;">🔗</a></h2>
<p><em>Your source is configured by editing flat text config files.</em> +20</p>
<p><strong>Score</strong>: 20 points of fail</p>

<h2 id="g-has-there-been-any-turnover-in-the-core-team">G. Has there been any turnover in the Core Team?&nbsp;<a class="hanchor" href="#g-has-there-been-any-turnover-in-the-core-team" aria-label="Anchor link for: G. Has there been any turnover in the Core Team?">🔗</a></h2>

<h5 id="has-the-same-top-20-of-contributors-stayed-the-same-over-time-if-not-how-has-it-changed">Has the same top 20% of contributors stayed the same over time? If not, how has it changed?&nbsp;<a class="hanchor" href="#has-the-same-top-20-of-contributors-stayed-the-same-over-time-if-not-how-has-it-changed" aria-label="Anchor link for: Has the same top 20% of contributors stayed the same over time? If not, how has it changed?">🔗</a></h5>
<p>In the first two years of the project, David Gay (<a href="https://github.com/oddshocks">oddshocks</a>) had a greater number of lines of code contributed to the project, and had some huge activity spikes in July of 2013. Since then, Bean and Uiterwijk have taken up a lot more of the work, and Gay hasn’t contributed since October of 2014.</p>
<p>Overall, Bean has been the greatest (and most consistent) contributor to the project.</p>

<h2 id="h-does-the-project-have-a-bdfl-or-lead-developer">H. Does the project have a <a href="https://en.wikipedia.org/wiki/Benevolent_dictator_for_life">BDFL</a>, or Lead Developer?&nbsp;<a class="hanchor" href="#h-does-the-project-have-a-bdfl-or-lead-developer" aria-label="Anchor link for: H. Does the project have a BDFL, or Lead Developer?">🔗</a></h2>
<p>Bean would be the closest thing to that. He guides the development of the project. After the project stabilized and all the core functionality was implemented, any further contributions seem to be minor bug fixes for the overall QOL of the project.</p>
<p>As a team, we could not necessarily speak to Bean’s role as a BDFL during the development process, especially without any chat logs from relevant IRC channels or email lists.</p>
<p>At the project’s current state, he seems to be keeping the project going along in a healthy direction and fixing the minor bugs that come up as they’re reported or patched.</p>

<h2 id="i-are-the-front--and-back-end-developers-the-same-people-what-is-the-proportion-of-each">I. Are the front- and back-end developers the same people? What is the proportion of each?&nbsp;<a class="hanchor" href="#i-are-the-front--and-back-end-developers-the-same-people-what-is-the-proportion-of-each" aria-label="Anchor link for: I. Are the front- and back-end developers the same people? What is the proportion of each?">🔗</a></h2>
<p>Tahrir is created under the GitHub organization of the <a href="https://github.com/fedora-infra/">Fedora Infrastructure</a> team. As a result, even though there is a core group of developers working on Tahrir, it wouldn&rsquo;t be an invalid assumption to say someone else in Fedora Infrastructure could take the code, change it for something that arose in production, and deploy it back into production.</p>
<p>As a result of the &ldquo;DevOps&rdquo; sort of relationship between the Fedora Infrastructure team and most of the projects on their GitHub, it is difficult to draw a firm conclusion about which developers work on the front end and which developers work on the back end. The unique circumstances of being an &ldquo;open source project inside of an open source project&rdquo; skews the answer to this question.</p>

<h2 id="j-what-have-been-some-of-the-major-bugs-problems-andor-issues-that-have-arisen-during-development-who-is-responsible-for-quality-control-and-bug-repair">J. What have been some of the major bugs, problems, and/or issues that have arisen during development? Who is responsible for quality control and bug repair?&nbsp;<a class="hanchor" href="#j-what-have-been-some-of-the-major-bugs-problems-andor-issues-that-have-arisen-during-development-who-is-responsible-for-quality-control-and-bug-repair" aria-label="Anchor link for: J. What have been some of the major bugs, problems, and/or issues that have arisen during development? Who is responsible for quality control and bug repair?">🔗</a></h2>
<p>To categorize the issues reported against during Tahrir&rsquo;s lifetime, we categorized the issues into three categories: <em>Concerning</em> (15 or more comments on issues), <em>Eyebrow raising</em> (10 - 14 comments on issues), and <em>Intriguing</em> (5- 9 comments on issues). These three categories are intended to be representative of the issues that caused the most conversation and interest by many developers or other members of the community.</p>

<h4 id="concerning">Concerning&nbsp;<a class="hanchor" href="#concerning" aria-label="Anchor link for: Concerning">🔗</a></h4>
<ul>
<li><a href="https://github.com/fedora-infra/tahrir/issues/152">#152: Tried to get undefined file at undefined and got an HTTP undefined</a> (18 comments)</li>
<li><a href="https://github.com/fedora-infra/tahrir/issues/168">#168: Link to 3d-printer spec files</a> (22 comments; you can 3D print badges… whoa!)</li>
</ul>

<h4 id="eyebrow-raising">Eyebrow Raising&nbsp;<a class="hanchor" href="#eyebrow-raising" aria-label="Anchor link for: Eyebrow Raising">🔗</a></h4>
<ul>
<li><a href="https://github.com/fedora-infra/tahrir/issues/117">#117: Match_all not working on tags view just yet.</a> (12 comments)</li>
<li><a href="https://github.com/fedora-infra/tahrir/issues/141">#141: Emit a fedmsg when a new leader is crowned!</a> (11 comments)</li>
<li><a href="https://github.com/fedora-infra/tahrir/issues/244">#244 : Stuck on a white page after OpenID login</a> (11 comments)</li>
</ul>

<h4 id="intriguing">Intriguing&nbsp;<a class="hanchor" href="#intriguing" aria-label="Anchor link for: Intriguing">🔗</a></h4>
<ul>
<li><a href="https://github.com/fedora-infra/tahrir/issues/21">#21: Admin view not properly escaped</a> (8 comments)</li>
<li><a href="https://github.com/fedora-infra/tahrir/issues/69">#69: Render badge descriptions from .rst to html</a> (6 comments)</li>
<li><a href="https://github.com/fedora-infra/tahrir/issues/70">#70: Fix error code images</a> (5 comments)</li>
<li><a href="https://github.com/fedora-infra/tahrir/issues/101">#101: Fallback avatar looks bad on user view (too small).</a> (5 comments)</li>
<li><a href="https://github.com/fedora-infra/tahrir/issues/108">#108: Export badges is broken in staging</a> (9 comments)</li>
<li><a href="https://github.com/fedora-infra/tahrir/issues/112">#112: Implement opt-out mechanism</a> (7 comments)</li>
<li><a href="https://github.com/fedora-infra/tahrir/issues/176">#176: Ask badges relate to username, but that&rsquo;s not working</a> (5 comments)</li>
<li><a href="https://github.com/fedora-infra/tahrir/issues/319">#319: Libravatar badge not being awarded</a> (5 comments)</li>
<li><a href="https://github.com/fedora-infra/tahrir/issues/339">#339: Represented Fedora at event not awarded</a> (5 comments)</li>
</ul>

<h4 id="quality-control">Quality Control&nbsp;<a class="hanchor" href="#quality-control" aria-label="Anchor link for: Quality Control">🔗</a></h4>
<p>Looking through the <a href="https://github.com/fedora-infra/tahrir/pulls?q=is%3Apr&#43;is%3Aclosed">145 closed pull requests</a>, it&rsquo;s clear to see that once again, Bean is leading the quality control and testing on Tahrir pull requests. There are a <a href="https://github.com/fedora-infra/tahrir/pull/327">few pull requests</a> where Uiterwijk and <a href="https://github.com/pypingou">Chibon</a> either submit code and the other one reviews and approves it. In these edge cases, it seems to be the contributions of more experienced members of the Infrastructure submitting code and getting another experienced member to check the submitted code.</p>
<p>For new contributors or contributions from non-consistent contributors, Bean seems the be the defacto &ldquo;King of PRs&rdquo; for Tahrir.</p>

<h2 id="k-how-is-the-projects-participation-trending-and-why">K. How is the project&rsquo;s participation trending and why?&nbsp;<a class="hanchor" href="#k-how-is-the-projects-participation-trending-and-why" aria-label="Anchor link for: K. How is the project&rsquo;s participation trending and why?">🔗</a></h2>
<p>Based on <a href="https://github.com/fedora-infra/tahrir/graphs/contributors">activity graphs</a> of the lifetime of the project, the most participation and development of Tahrir occurred in the summer months of 2012 and 2013. This can likely be attributed that the heaviest development work was happening in these time periods while Tahrir was being built and shaped into what it is.</p>
<p>Once a stable point was reached and most issues were resolved, development greatly slowed, likely because the developers moved  on to new projects, while a subset of the original core developers remained active as maintainers after the stable point was reached.</p>

<h2 id="l-in-your-opinion-does-the-project-pass-the-raptor-test-why-or-why-not">L. In your opinion, does the project pass &ldquo;The Raptor Test?&rdquo; Why or why not?&nbsp;<a class="hanchor" href="#l-in-your-opinion-does-the-project-pass-the-raptor-test-why-or-why-not" aria-label="Anchor link for: L. In your opinion, does the project pass &ldquo;The Raptor Test?&rdquo; Why or why not?">🔗</a></h2>

<h5 id="would-the-project-survive-if-the-bdfl-or-most-active-contributor-were-eaten-by-a-velociraptor">Would the project survive if the BDFL, or most active contributor were eaten by a Velociraptor?&nbsp;<a class="hanchor" href="#would-the-project-survive-if-the-bdfl-or-most-active-contributor-were-eaten-by-a-velociraptor" aria-label="Anchor link for: Would the project survive if the BDFL, or most active contributor were eaten by a Velociraptor?">🔗</a></h5>
<p>For the purposes of this question, we will assume Bean is the lead contributor at the current point in the project&rsquo;s life cycle.</p>
<p>If he were eaten by a velociraptor, the project would still be able to survive even in his absence. Since the core development work has already been accomplished and the main development work now is resolving issues and maintaining the existing codebase (as compared to writing new features), it&rsquo;s safe to assume there are others in the Fedora Infrastructure team who would be able to keep up this project and make sure its longevity is guaranteed (although I am sure that the Infrastructure team would suffer a great loss without the wisdom and mad wizardry that Bean provides).</p>
<p>The fact that Tahrir is &ldquo;nested&rdquo; inside of another open source project (Fedora) likely attributes to the likelihood that Tahrir would survive the sudden absence of its most active developer.</p>

<h2 id="m-in-your-opinion-would-the-project-survive-if-the-core-team-or-most-active-20-of-contributors-were-hit-by-a-bus-why-or-why-not">M. In your opinion, would the project survive if the core team, or most active 20% of contributors, were hit by a bus? Why or why not?&nbsp;<a class="hanchor" href="#m-in-your-opinion-would-the-project-survive-if-the-core-team-or-most-active-20-of-contributors-were-hit-by-a-bus-why-or-why-not" aria-label="Anchor link for: M. In your opinion, would the project survive if the core team, or most active 20% of contributors, were hit by a bus? Why or why not?">🔗</a></h2>
<p>This question is more difficult to answer than the previous question because of the relationship the top 20% of the contributors have to Tahrir, Fedora, and other open source projects. The top 20% of contributors mostly consist of the core Fedora Infrastructure team members, who are also responsible for working on other projects within Fedora, maintaining the servers and services that power the infrastructure, and working on apps such as Tahrir.</p>
<p>In the event that the top 20% of Tahrir&rsquo;s contributors were all hit by a bus, it&rsquo;s difficult to know if Tahrir would be able to sustain. Because of the work the core developer circle does throughout the <a href="https://fedoraproject.org/wiki/Overview">Fedora Project</a>, it would be very difficult for others to pick up the cumulative amount of work that is shared among the Infrastructure team now. The documentation and stability of the code would be useful attributes for the prospect of someone new picking up maintaining the code, but in a broader view, the amount of work that would need to be picked up across the board creates new issues within itself.</p>
<p>For these reasons, if the top 20% of contributors to Tahrir were to disappear, it&rsquo;s difficult to forecast the future of Tahrir (and other projects managed by the Fedora Infrastructure team).</p>

<h2 id="n-does-the-project-have-an-official-on-boarding-process-in-place">N. Does the project have an official &ldquo;on-boarding&rdquo; process in place?&nbsp;<a class="hanchor" href="#n-does-the-project-have-an-official-on-boarding-process-in-place" aria-label="Anchor link for: N. Does the project have an official &ldquo;on-boarding&rdquo; process in place?">🔗</a></h2>

<h5 id="can-include-new-contributor-guides-quick-starts-communication-leads-who-focus-specifically-on-newbies-etc">Can include new contributor guides, quick starts, communication leads who focus specifically on newbies, etc…&nbsp;<a class="hanchor" href="#can-include-new-contributor-guides-quick-starts-communication-leads-who-focus-specifically-on-newbies-etc" aria-label="Anchor link for: Can include new contributor guides, quick starts, communication leads who focus specifically on newbies, etc…">🔗</a></h5>
<p>While there is no on-boarding process in place specific to Tahrir, there is a <a href="https://fedoraproject.org/wiki/Infrastructure/GettingStarted">process for the Fedora Infrastructure team</a>, which would in turn lend itself to Tahrir. Some of the advice given includes <a href="https://fedoraproject.org/wiki/How_to_be_a_successful_contributor">how to be a successful contributor</a> and introducing yourself on their <a href="https://lists.fedoraproject.org/admin/lists/infrastructure.lists.fedoraproject.org/">mailing list</a>.</p>

<h2 id="o-does-the-project-have-documentation-available-is-it-extensive-does-it-include-code-examples">O. Does the project have documentation available? Is it extensive? Does it include code examples?&nbsp;<a class="hanchor" href="#o-does-the-project-have-documentation-available-is-it-extensive-does-it-include-code-examples" aria-label="Anchor link for: O. Does the project have documentation available? Is it extensive? Does it include code examples?">🔗</a></h2>
<p>The project does have documentation in the <a href="https://github.com/fedora-infra/tahrir/blob/develop/README.rst">README file</a> for installing, running, and developing on Tahrir, but they are not an extensive set of &ldquo;documents&rdquo; or wiki pages that explain the entire process. The guide does seem to assume the person reading the documentation is capable enough to run a few commands in a command line or install Python dependencies with tools like <code>pip</code>.</p>
<p>For anyone who knows anything about Python, this documentation will be plenty, but if you are a new developer looking at getting started for the first time, you may have a learning curve with figuring out what all the commands you are instructed to do actually do on yourself.</p>
<p>There do not seem to be code examples for Tahrir (if there are, their presence is not clearly stated).</p>

<h2 id="p-if-you-were-going-to-contribute-to-this-project-but-ran-into-trouble-or-hit-blockers-who-would-you-contact-and-how">P. If you were going to contribute to this project, but ran into trouble or hit blockers, who would you contact, and how?&nbsp;<a class="hanchor" href="#p-if-you-were-going-to-contribute-to-this-project-but-ran-into-trouble-or-hit-blockers-who-would-you-contact-and-how" aria-label="Anchor link for: P. If you were going to contribute to this project, but ran into trouble or hit blockers, who would you contact, and how?">🔗</a></h2>
<p>If we wanted to contribute to Tahrir, it seems like the best points of contact are either the <a href="https://webchat.freenode.net/?channels=fedora-apps"><code>#fedora-apps</code></a> channel on <a href="https://freenode.net/">Freenode</a> or the <a href="https://lists.fedoraproject.org/archives/list/infrastructure@lists.fedoraproject.org/">Infrastructure mailing list</a>. IRC appears to be the preferential way of getting help.</p>

<h2 id="q-based-on-these-answers-how-would-you-describe-the-decision-making-structure--process-of-this-group">Q. Based on these answers, how would you describe the decision making structure / process of this group?&nbsp;<a class="hanchor" href="#q-based-on-these-answers-how-would-you-describe-the-decision-making-structure--process-of-this-group" aria-label="Anchor link for: Q. Based on these answers, how would you describe the decision making structure / process of this group?">🔗</a></h2>

<h5 id="is-it-hierarchical-consensus-building-ruled-by-a-small-group-barely-contained-chaos-or-ruled-by-a-single-or-pair-of-individuals">Is it hierarchical, consensus building, ruled by a small group, barely contained chaos, or ruled by a single or pair of individuals?&nbsp;<a class="hanchor" href="#is-it-hierarchical-consensus-building-ruled-by-a-small-group-barely-contained-chaos-or-ruled-by-a-single-or-pair-of-individuals" aria-label="Anchor link for: Is it hierarchical, consensus building, ruled by a small group, barely contained chaos, or ruled by a single or pair of individuals?">🔗</a></h5>
<p>In the current state of the group, decision making seems to favor the lazy consensus sort of voting; that is, if there are no objections or negative feedback on a feature addition or a bug fix, it is assumed there is not an issue and development presses forward. However, there seems to be an informal, undocumented precedent that every contributor must get their code signed off by at least one other member of the Fedora Infrastructure team (even if the contributor is an experienced, active member of the Infrastructure team).</p>
<p>In short, the development and community architecture of Tahrir seems to be greatly left to Bean and the rest of the Fedora Infrastructure team. In the event of new ideas or &ldquo;topics worth discussion&rdquo;, usually there is activity either in IRC or on the mailing list before heavy development goes forward.</p>

<h2 id="r-is-this-the-kind-of-structure-you-would-enjoy-working-in-why-or-why-not">R. Is this the kind of structure you would enjoy working in? Why, or why not?&nbsp;<a class="hanchor" href="#r-is-this-the-kind-of-structure-you-would-enjoy-working-in-why-or-why-not" aria-label="Anchor link for: R. Is this the kind of structure you would enjoy working in? Why, or why not?">🔗</a></h2>
<p>The system that the Fedora Infrastructure team appears to follow seems to be documented and regimented, so getting involved isn&rsquo;t difficult and the community appears supportive of new developers. For me, I believe the community architecture surrounding the Tahrir project is a friendly and welcoming environment for any level of contributor of open source to get involved with and hack on a cool project.</p>

<h2 id="community-architecture-git-by-a-bus-summary-results">Community Architecture: <a href="https://github.com/tomheon/git_by_a_bus">Git by a Bus</a> Summary Results&nbsp;<a class="hanchor" href="#community-architecture-git-by-a-bus-summary-results" aria-label="Anchor link for: Community Architecture: Git by a Bus Summary Results">🔗</a></h2>
<p>Note: values smaller than 10 have been truncated in the interest of space.</p>
<p>Note: the scale of the bars is relative only within, not across, tables.</p>

<h4 id="top-100-projects-by-highest-estimated-unique-knowledge">Top 100 Projects by highest estimated unique knowledge&nbsp;<a class="hanchor" href="#top-100-projects-by-highest-estimated-unique-knowledge" aria-label="Anchor link for: Top 100 Projects by highest estimated unique knowledge">🔗</a></h4>
<table>
  <thead>
      <tr>
          <th>Projects</th>
          <th>Total estimated unique knowledge</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td><a href="projects/tahrir.html">tahrir</a> (3217)</td>
          <td></td>
      </tr>
  </tbody>
</table>

<h4 id="top-100-projects-by-highest-estimated-shared-knowledge-devs-still-present">Top 100 Projects by highest estimated shared knowledge (devs still present)&nbsp;<a class="hanchor" href="#top-100-projects-by-highest-estimated-shared-knowledge-devs-still-present" aria-label="Anchor link for: Top 100 Projects by highest estimated shared knowledge (devs still present)">🔗</a></h4>
<table>
  <thead>
      <tr>
          <th>Projects</th>
          <th>Total estimated shared knowledge (devs still present)</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td><a href="projects/tahrir.html">tahrir</a> (414)</td>
          <td></td>
      </tr>
  </tbody>
</table>

<h4 id="top-100-projects-by-highest-estimated-risk">Top 100 Projects by highest estimated risk&nbsp;<a class="hanchor" href="#top-100-projects-by-highest-estimated-risk" aria-label="Anchor link for: Top 100 Projects by highest estimated risk">🔗</a></h4>
<table>
  <thead>
      <tr>
          <th>Projects</th>
          <th>Total estimated risk</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td><a href="projects/tahrir.html">tahrir</a> (290)</td>
          <td></td>
      </tr>
  </tbody>
</table>

<h4 id="top-100-devs-by-highest-estimated-unique-knowledge">Top 100 Devs by highest estimated unique knowledge&nbsp;<a class="hanchor" href="#top-100-devs-by-highest-estimated-unique-knowledge" aria-label="Anchor link for: Top 100 Devs by highest estimated unique knowledge">🔗</a></h4>
<table>
  <thead>
      <tr>
          <th>Devs</th>
          <th>Total estimated unique knowledge</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td><a href="devs/801ed96179d189c0b9e13aa4e7d16ac0.html">David Gay</a> (1233)</td>
          <td></td>
      </tr>
      <tr>
          <td><a href="devs/7b13ae0e56d868362bb10383cbb2ac14.html">Ralph Bean</a> (1163)</td>
          <td></td>
      </tr>
      <tr>
          <td><a href="devs/bc3f99a8563168f1a78d1f7c88184e39.html">Pierre-Yves Chibon</a> (260)</td>
          <td></td>
      </tr>
      <tr>
          <td><a href="devs/a9b149be06964ed6876c559b753112ca.html">Ricky Elrod</a> (171)</td>
          <td></td>
      </tr>
      <tr>
          <td><a href="devs/69febc7c4efd343f78a38a6c1d0aea7e.html">David Gay and Ralph Bean</a> (159)</td>
          <td></td>
      </tr>
      <tr>
          <td><a href="devs/81661e7e28bc3e84d4f3b8b6d5ff0430.html">David Gay and Ricky Elrod</a> (59)</td>
          <td></td>
      </tr>
      <tr>
          <td><a href="devs/e32b641738dd12f79c335854c5d13498.html">Ralph Bean and Ricky Elrod</a> (48)</td>
          <td></td>
      </tr>
      <tr>
          <td><a href="devs/3a4dd3cd06c97e5550f4121edc0db059.html">Ralph Bean and Ross Delinger</a> (18)</td>
          <td></td>
      </tr>
      <tr>
          <td><a href="devs/d7b9abadb07ce76a5e06b622905ecb9d.html">David Gay and Ralph Bean and Ricky Elrod</a> (16)</td>
          <td></td>
      </tr>
      <tr>
          <td><a href="devs/5e3a065db38507fca1f4d5892e667999.html">Patrick Uiterwijk</a> (13)</td>
          <td></td>
      </tr>
      <tr>
          <td><a href="devs/1864d619787d3894225528ae1bb14814.html">Ross Delinger</a> (11)</td>
          <td></td>
      </tr>
  </tbody>
</table>

<h4 id="top-100-devs-by-highest-estimated-shared-knowledge-devs-still-present">Top 100 Devs by highest estimated shared knowledge (devs still present)&nbsp;<a class="hanchor" href="#top-100-devs-by-highest-estimated-shared-knowledge-devs-still-present" aria-label="Anchor link for: Top 100 Devs by highest estimated shared knowledge (devs still present)">🔗</a></h4>
<table>
  <thead>
      <tr>
          <th>Devs</th>
          <th>Total estimated shared knowledge (devs still present)</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td><a href="devs/69febc7c4efd343f78a38a6c1d0aea7e.html">David Gay and Ralph Bean</a> (185)</td>
          <td></td>
      </tr>
      <tr>
          <td><a href="devs/81661e7e28bc3e84d4f3b8b6d5ff0430.html">David Gay and Ricky Elrod</a> (77)</td>
          <td></td>
      </tr>
      <tr>
          <td><a href="devs/e32b641738dd12f79c335854c5d13498.html">Ralph Bean and Ricky Elrod</a> (66)</td>
          <td></td>
      </tr>
      <tr>
          <td><a href="devs/3a4dd3cd06c97e5550f4121edc0db059.html">Ralph Bean and Ross Delinger</a> (28)</td>
          <td></td>
      </tr>
      <tr>
          <td><a href="devs/3dae24e44c5b1fa55228d1918b57bdac.html">David Gay and Ross Delinger</a> (12)</td>
          <td></td>
      </tr>
      <tr>
          <td><a href="devs/93b128844d0d40d16a5605cb17c37fd6.html">Pierre-Yves Chibon and Ralph Bean</a> (11)</td>
          <td></td>
      </tr>
  </tbody>
</table>

<h4 id="top-100-devs-by-highest-estimated-risk">Top 100 Devs by highest estimated risk&nbsp;<a class="hanchor" href="#top-100-devs-by-highest-estimated-risk" aria-label="Anchor link for: Top 100 Devs by highest estimated risk">🔗</a></h4>
<table>
  <thead>
      <tr>
          <th>Devs</th>
          <th>Total estimated risk</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td><a href="devs/801ed96179d189c0b9e13aa4e7d16ac0.html">David Gay</a> (123)</td>
          <td></td>
      </tr>
      <tr>
          <td><a href="devs/7b13ae0e56d868362bb10383cbb2ac14.html">Ralph Bean</a> (116)</td>
          <td></td>
      </tr>
      <tr>
          <td><a href="devs/bc3f99a8563168f1a78d1f7c88184e39.html">Pierre-Yves Chibon</a> (26)</td>
          <td></td>
      </tr>
      <tr>
          <td><a href="devs/a9b149be06964ed6876c559b753112ca.html">Ricky Elrod</a> (17)</td>
          <td></td>
      </tr>
  </tbody>
</table>

<h4 id="top-100-files-by-highest-estimated-unique-knowledge">Top 100 Files by highest estimated unique knowledge&nbsp;<a class="hanchor" href="#top-100-files-by-highest-estimated-unique-knowledge" aria-label="Anchor link for: Top 100 Files by highest estimated unique knowledge">🔗</a></h4>
<table>
  <thead>
      <tr>
          <th>Files</th>
          <th>Total estimated unique knowledge</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td><a href="files/tahrir__tahrir__views.py.html">tahrir:tahrir/views.py</a> (1914)</td>
          <td></td>
      </tr>
      <tr>
          <td><a href="files/tahrir__docs__conf.py.html">tahrir:docs/conf.py</a> (504)</td>
          <td></td>
      </tr>
      <tr>
          <td><a href="files/tahrir__tahrir__utils.py.html">tahrir:tahrir/utils.py</a> (220)</td>
          <td></td>
      </tr>
      <tr>
          <td><a href="files/tahrir__tahrir____init__.py.html">tahrir:tahrir/__init__.py</a> (217)</td>
          <td></td>
      </tr>
      <tr>
          <td><a href="files/tahrir__setup.py.html">tahrir:setup.py</a> (70)</td>
          <td></td>
      </tr>
      <tr>
          <td><a href="files/tahrir__tahrir__app.py.html">tahrir:tahrir/app.py</a> (68)</td>
          <td></td>
      </tr>
      <tr>
          <td><a href="files/tahrir__tahrir__events.py.html">tahrir:tahrir/events.py</a> (58)</td>
          <td></td>
      </tr>
      <tr>
          <td><a href="files/tahrir__tahrir__foafutils.py.html">tahrir:tahrir/foafutils.py</a> (42)</td>
          <td></td>
      </tr>
      <tr>
          <td><a href="files/tahrir__tahrir__custom_openid.py.html">tahrir:tahrir/custom_openid.py</a> (38)</td>
          <td></td>
      </tr>
      <tr>
          <td><a href="files/tahrir__tahrir__widgets.py.html">tahrir:tahrir/widgets.py</a> (36)</td>
          <td></td>
      </tr>
      <tr>
          <td><a href="files/tahrir__fedmsg.d__fedmsg-config.py.html">tahrir:fedmsg.d/fedmsg-config.py</a> (30)</td>
          <td></td>
      </tr>
      <tr>
          <td><a href="files/tahrir__tahrir__notifications.py.html">tahrir:tahrir/notifications.py</a> (20)</td>
          <td></td>
      </tr>
  </tbody>
</table>

<h4 id="top-100-files-by-highest-estimated-shared-knowledge-devs-still-present">Top 100 Files by highest estimated shared knowledge (devs still present)&nbsp;<a class="hanchor" href="#top-100-files-by-highest-estimated-shared-knowledge-devs-still-present" aria-label="Anchor link for: Top 100 Files by highest estimated shared knowledge (devs still present)">🔗</a></h4>
<table>
  <thead>
      <tr>
          <th>Files</th>
          <th>Total estimated shared knowledge (devs still present)</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td><a href="files/tahrir__tahrir__views.py.html">tahrir:tahrir/views.py</a> (349)</td>
          <td></td>
      </tr>
      <tr>
          <td><a href="files/tahrir__tahrir____init__.py.html">tahrir:tahrir/__init__.py</a> (26)</td>
          <td></td>
      </tr>
      <tr>
          <td><a href="files/tahrir__setup.py.html">tahrir:setup.py</a> (13)</td>
          <td></td>
      </tr>
      <tr>
          <td><a href="files/tahrir__tahrir__utils.py.html">tahrir:tahrir/utils.py</a> (12)</td>
          <td></td>
      </tr>
  </tbody>
</table>

<h4 id="top-100-files-by-highest-estimated-risk">Top 100 Files by highest estimated risk&nbsp;<a class="hanchor" href="#top-100-files-by-highest-estimated-risk" aria-label="Anchor link for: Top 100 Files by highest estimated risk">🔗</a></h4>
<table>
  <thead>
      <tr>
          <th>Files</th>
          <th>Total estimated risk</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td><a href="files/tahrir__tahrir__views.py.html">tahrir:tahrir/views.py</a> (165)</td>
          <td></td>
      </tr>
      <tr>
          <td><a href="files/tahrir__docs__conf.py.html">tahrir:docs/conf.py</a> (50)</td>
          <td></td>
      </tr>
      <tr>
          <td><a href="files/tahrir__tahrir__utils.py.html">tahrir:tahrir/utils.py</a> (21)</td>
          <td></td>
      </tr>
      <tr>
          <td><a href="files/tahrir__tahrir____init__.py.html">tahrir:tahrir/__init__.py</a> (20)</td>
          <td></td>
      </tr>
  </tbody>
</table>

<h2 id="community-architecture-git-by-a-lion-pie-chart-results">Community Architecture: <a href="https://github.com/liam-middlebrook/git_by_a_lion">Git by a Lion</a> Pie Chart Results&nbsp;<a class="hanchor" href="#community-architecture-git-by-a-lion-pie-chart-results" aria-label="Anchor link for: Community Architecture: Git by a Lion Pie Chart Results">🔗</a></h2>
<p><a href="/blog/2016/03/author_tot_knowledge.png">
<figure>
  <img src="/blog/2016/03/author_tot_knowledge.png" alt="Tahrir Community Architecture: Author Total Knowledge" loading="lazy">
</figure>
</a><a href="/blog/2016/03/author_tot_risk.png">
<figure>
  <img src="/blog/2016/03/author_tot_risk.png" alt="Tahrir Community Architecture: Author Total Risk" loading="lazy">
</figure>
</a><a href="/blog/2016/03/file_tot_knowledge.png">
<figure>
  <img src="/blog/2016/03/file_tot_knowledge.png" alt="Tahrir Community Architecture: File Total Knowledge" loading="lazy">
</figure>
</a><a href="/blog/2016/03/file_tot_risk.png">
<figure>
  <img src="/blog/2016/03/file_tot_risk.png" alt="Tahrir Community Architecture: File Total Risk" loading="lazy">
</figure>
</a></p>]]></description></item><item><title>Analyzing Fedora's impact at FOSDEM and beyond</title><link>https://jwheel.org/blog/2016/03/analyzing-fedoras-impact-fosdem-beyond/</link><pubDate>Wed, 09 Mar 2016 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2016/03/analyzing-fedoras-impact-fosdem-beyond/</guid><description><![CDATA[<p>
<figure>
  <img src="/blog/2016/03/FOSDEM-15.jpg" alt="FOSDEM conference goers in Brussels, Belgium" loading="lazy">
  <figcaption>Conference goers attend the FOSDEM conference in Brussels, Belgium.</figcaption>
</figure>
</p>
<p>Yesterday, Fedora contributor and <a href="https://fedoraproject.org/wiki/CommOps">CommOps</a> team member <a href="https://fedoraproject.org/wiki/User:Bee2502">Bee Padalkar</a> published an <a href="https://networksfordata.wordpress.com/2016/03/08/fedora-at-fosdem/">article on her blog</a> about measuring the impact of Fedora&rsquo;s participation at the <a href="https://fosdem.org/2016/">FOSDEM conference</a> in Europe.</p>

<h2 id="looking-at-fosdem">Looking at FOSDEM&nbsp;<a class="hanchor" href="#looking-at-fosdem" aria-label="Anchor link for: Looking at FOSDEM">🔗</a></h2>
<p>In her analysis, Bee looked at people who scanned the <a href="https://badges.fedoraproject.org/tags/fosdem/any">FOSDEM badges</a> for 2014, 2015, 2016. Leveraging tools like <a href="http://www.fedmsg.com/">fedmsg</a>, she was able to draw conclusive evidence of how people who scanned the badge began contributing for the first time or started contributing more than before the conference. The statistics are fascinating and the analysis is comprehensive in how it measures contributions. It&rsquo;s worth the full time to read how we&rsquo;re making an impact at conferences!</p>

<h2 id="looking-ahead">Looking ahead&nbsp;<a class="hanchor" href="#looking-ahead" aria-label="Anchor link for: Looking ahead">🔗</a></h2>
<p>The other awesome factor of this is that these kinds of reports are extendable to other events in the world of Fedora. Other Ambassadors can use tools like <a href="https://badges.fedoraproject.org/about">Fedora Badges</a> and track metrics of how they impact and affect the people they engage with at conferences and hackathons. I&rsquo;m hoping for us to be able to use these kinds of analytics for the past event at <a href="https://brickhack.io/">BrickHack 2016</a> that I helped organize as an <a href="https://fedoraproject.org/wiki/Ambassadors">Ambassador</a>. Stay tuned for an event report and plenty more on the <a href="https://communityblog.fedoraproject.org/">Community Blog</a> with details about BrickHack.</p>

<h2 id="read-all-about-it">Read all about it!&nbsp;<a class="hanchor" href="#read-all-about-it" aria-label="Anchor link for: Read all about it!">🔗</a></h2>
<p>Read the full analysis on <a href="https://networksfordata.wordpress.com/2016/03/08/fedora-at-fosdem/">her blog</a>!</p>
]]></description></item><item><title>Why I love WiCHacks</title><link>https://jwheel.org/blog/2016/03/why-i-love-wichacks/</link><pubDate>Mon, 07 Mar 2016 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2016/03/why-i-love-wichacks/</guid><description><![CDATA[<p>Two weekends ago, from February 27th to the 28th, the <a href="http://wic.rit.edu">Women in Computing</a> program at the <a href="https://www.rit.edu/">Rochester Institute of Technology</a> hosted their third annual <a href="http://wichacks.rit.edu/">WiCHacks</a> hackathon. WiCHacks is a women-only hackathon open to university students and high school juniors and seniors. WiCHacks is a collaborative event bringing women together from across RIT, the country, and even the world (including attendees from Germany). The participants are in a supportive and empowering environment to build something awesome and present it to everyone else in the span of one weekend.</p>
<p>So why am I writing about WiCHacks? I signed up as a volunteer for the event this year. I would help with the setup, running the event, and packing it up. During my experience as a volunteer, I met some other awesome people, saw some really cool projects, and discovered an inviting and inclusive community on campus.</p>

<h2 id="opening-the-doors-for-wichacks">Opening the doors for WiCHacks&nbsp;<a class="hanchor" href="#opening-the-doors-for-wichacks" aria-label="Anchor link for: Opening the doors for WiCHacks">🔗</a></h2>
<p>I was scheduled for the Saturday morning shift (8:00am - 1:30pm) and the Sunday morning shift (11:00am - 5:00pm). When I arrived on Saturday morning, the prep work was just beginning. The WiC team had breakfast pizza for all the volunteers, which was surprisingly delicious!</p>
<p>After grabbing a quick bite to eat, I began helping with setting up sponsor tables, moving equipment and tables around, and other miscellaneous tasks to prepare for the first influx of people, scheduled to arrive around 10:00am. After two hours of setting up, the hackers began streaming into the Golisano building and filling the atrium. As more and more people began to roll in, it was awesome to see how diverse and culturally unique the room was. There were people of all races, from all over the country and even the world, that had come here to join other women hackers in a weekend of creativity and fun. With such a wide palette of culture and ideas, I was anticipating to see some awesome creations in my time volunteering.</p>

<h2 id="wichacks-begins">WiCHacks begins&nbsp;<a class="hanchor" href="#wichacks-begins" aria-label="Anchor link for: WiCHacks begins">🔗</a></h2>
<p>After an opening keynote by the WiCHacks committee leader <a href="https://www.rit.edu/news/story.php?id=54739">Susan Heilman</a> kicking off the hackathon, the hackers were served a quick lunch before jumping into brainstorming and programming.</p>
<p>For those who had never programmed before, there was a special Newbie Track that aimed to help teach some of the basics. It helped give girls who didn&rsquo;t know anything about programming a booster to also create something during the weekend.</p>
<blockquote class="twitter-tweet" data-dnt="true"><p lang="en" dir="ltr">GO HACKERS GO! There are 117 people listed as apart of teams already make sure you register your team <a href="https://twitter.com/hashtag/wichacks?src=hash&amp;ref_src=twsrc%5Etfw">#wichacks</a> <a href="https://twitter.com/hashtag/soundoff?src=hash&amp;ref_src=twsrc%5Etfw">#soundoff</a></p>&mdash; WiCHacks @ RIT (@wichacks) <a href="https://twitter.com/wichacks/status/703695663289278464?ref_src=twsrc%5Etfw">February 27, 2016</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>


<p>After lunch, the hacking began! Teams could go into a room and have access to whiteboards, plenty of chairs, and outlets to charge devices. If needed, Major League Hacking also had a hardware lab where people could rent out laptops and other accessories during WiCHacks.</p>

<h2 id="accidentally-discovering-something-awesome">Accidentally discovering something awesome&nbsp;<a class="hanchor" href="#accidentally-discovering-something-awesome" aria-label="Anchor link for: Accidentally discovering something awesome">🔗</a></h2>
<p>After my volunteering shift ended, I had a homework assignment for one of my classes due at midnight. I had made plans many months ago after 7:00pm that night, so I had to work on the assignment that day to submit in time. I went up to an empty IST department lab, fired up my laptop, and began working. Suddenly, a team of five girls walked into the lab and began setting up close to the whiteboard near me.</p>
<p>
<figure>
  <img src="/blog/2016/03/OpenCircle-Presentation-1.jpg" alt="WiCHacks 2016: The OpenCircle team presents" loading="lazy">
  <figcaption>The OpenCircle team presents their project to the auditorium.</figcaption>
</figure>
</p>
<p>I was curious after a while to hear what they were working on. I kept hearing the words &ldquo;open source&rdquo; and &ldquo;FOSS&rdquo; dropping, and it pulled my attention in. I learned that their idea was to make a social platform to help make it easier for girls to get involved with open source software. The plan was to collect an inventory of open source projects that need help and connect interested girls with project mentors to guide them in contributing.</p>
<p>There was overlap with some ideas I&rsquo;ve had while working with the <a href="https://jwfblog.wpenginepowered.com/2015/11/fedora-commops-im-working/">Fedora CommOps</a> team towards boosting <a href="https://communityblog.fedoraproject.org/women-in-computing-and-fedora/">#WomenInComputing</a> in Fedora&rsquo;s community. I was anticipating hearing out their idea and seeing what they would come up with!</p>
<p>Their project would be known as <a href="https://github.com/Open-Circle/WicHacks2016Demo">OpenCircle</a>. After 6:45pm rolled around, I started packing up my gear to head out for the evening. The OpenCircle team was busy hacking away on laptops or making slight alterations to the whiteboard mock designs they had drawn. It was clear that the creativity and motivation were running high when I left.</p>
<p>I was envious that I wasn&rsquo;t there for the rest of the evening. Later on that night, Insomnia Cookies delivered to the hackathon. There was also a spontaneous dance party in the atrium of Golisano. Next year, I&rsquo;ll have to make sure I&rsquo;m able to stay for the entire night!</p>
<blockquote class="twitter-tweet" data-dnt="true"><p lang="en" dir="ltr">What&#39;s better than an impromptu dance party at <a href="https://twitter.com/wichacks?ref_src=twsrc%5Etfw">@wichacks</a>? <a href="https://twitter.com/RITWIC?ref_src=twsrc%5Etfw">@RITWIC</a>  <a href="https://twitter.com/hashtag/wichacks16?src=hash&amp;ref_src=twsrc%5Etfw">#wichacks16</a> <a href="https://t.co/NvvTZC4scO">pic.twitter.com/NvvTZC4scO</a></p>&mdash; Major League Hacking (MLH) (@MLHacks) <a href="https://twitter.com/MLHacks/status/703783084957835264?ref_src=twsrc%5Etfw">February 28, 2016</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>


<p>Closing out WiCHacks 2016</p>
<p>After a final push by hackers throughout the night, hacking ended at 12:00pm the next day. After a lunch break, the hackers returned to the auditorium in time  to present their projects. Before the deadline, all the teams added their projects to the <a href="http://wichacks-2016.devpost.com/">WiCHacks DevPost</a>. You can also find the list of projects submitted over the weekend there.</p>
<p>
<figure>
  <img src="/blog/2016/03/OpenCircle-Presentation-2.jpg" alt="WiCHacks 2016: The OpenCircle team demos the product" loading="lazy">
  <figcaption>The OpenCircle team demos their project for all the participants.</figcaption>
</figure>
</p>
<p>After helping with some other closing work, I wanted to listen to some of the presentations given by the teams. Some people designed some really cool apps, like <a href="http://devpost.com/software/pink-planet">Pink Planet</a>, <a href="http://devpost.com/software/resumatch">Resumatch</a> (a play on Tinder but with resumes), and the ever creative <a href="http://devpost.com/software/loocator">Loocator</a>.</p>
<p>However, the <a href="http://devpost.com/software/open-circle">OpenCircle</a> team was the presentation I was looking forward to the most. While they noted that they hadn&rsquo;t had the time to demo it as completely as they wanted, the idea behind their product was there and it was pretty solid as a prototype.</p>
<p>After the weekend was over, I submitted a <a href="https://github.com/Open-Circle/WicHacks2016Demo/pull/1">simple pull request</a> and filed <a href="https://github.com/Open-Circle/WicHacks2016Demo/issues/2">two</a> <a href="https://github.com/Open-Circle/WicHacks2016Demo/issues/3">issues</a> against the project. I&rsquo;m anticipating any future development the OpenCircle team collaborates on and seeing where their idea goes!</p>

<h2 id="wichacks-2016-in-retrospect">WiCHacks 2016: In retrospect&nbsp;<a class="hanchor" href="#wichacks-2016-in-retrospect" aria-label="Anchor link for: WiCHacks 2016: In retrospect">🔗</a></h2>
<p>I was slightly nervous when registering as a WiCHacks volunteer as I had no idea what to expect or the type of community that it would attract. However, after spending time with the volunteers, hackers, organizers, and mentors, it was clear that the environment was inclusive, welcoming, and receptive to all people.</p>
<p>WiCHacks is a well-organized, powerfully motivating event and something more and more people should look into checking out on the RIT campus each year. WiCHacks empowers women interested in computer science to <em>do something awesome</em> in the presence of people who want to see you succeed. The mentorship and leadership at WiCHacks definitely supports this.</p>
<p>Great job to the WiC team for organizing this, and I look forward to participating as a volunteer again next year!</p>
<p>
<figure>
  <img src="/blog/2016/03/WiCHacks-Volunteers.jpg" alt="WiCHacks 2016 volunteers" loading="lazy">
  <figcaption>The WiCHacks 2016 volunteers!</figcaption>
</figure>
</p>]]></description></item><item><title>HFOSS: Community Architecture (CommArch) Project Proposal</title><link>https://jwheel.org/blog/2016/03/hfoss-commarch-project-proposal/</link><pubDate>Fri, 04 Mar 2016 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2016/03/hfoss-commarch-project-proposal/</guid><description><![CDATA[<h2 id="what-is-this">What is this?&nbsp;<a class="hanchor" href="#what-is-this" aria-label="Anchor link for: What is this?">🔗</a></h2>
<p>This post serves as the project proposal for me and my team&rsquo;s <a href="https://hfoss-ritjoe.rhcloud.com/">Humanitarian Free and Open Source Software Development</a> &ldquo;<a href="https://hfoss-ritjoe.rhcloud.com/static/hw/commarch.txt">Community Architecture</a>&rdquo; project (shortened to CommArch)!</p>
<p>In this project proposal, we take a preliminary look at the project we&rsquo;re looking at analyzing, <a href="https://github.com/fedora-infra/tahrir">Tahrir</a>, and the different criteria we are assigned to look at.</p>
<p>
<figure>
  <img src="/img/Full-Logo.png" alt="Fedora is a free and open-source Linux distribution." loading="lazy">
  <figcaption>Fedora is a free and open-source Linux distribution.</figcaption>
</figure>
</p>

<h2 id="team-members">Team Members&nbsp;<a class="hanchor" href="#team-members" aria-label="Anchor link for: Team Members">🔗</a></h2>
<table>
  <thead>
      <tr>
          <th><strong>Name</strong></th>
          <th><strong>Email</strong></th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td><a href="https://rdp1070.wordpress.com/">Bobby Pruden</a></td>
          <td>*******@rit.edu</td>
      </tr>
      <tr>
          <td><a href="http://blog.wilfriede.me/">Wilfried Hounyo</a></td>
          <td>********.******@gmail.com</td>
      </tr>
      <tr>
          <td><a href="https://spg1502igme582.wordpress.com/">Stephen Garabedian</a></td>
          <td>*******@rit.edu</td>
      </tr>
      <tr>
          <td>Justin Wheeler</td>
          <td>*******@gmail.com</td>
      </tr>
  </tbody>
</table>

<h2 id="project">Project&nbsp;<a class="hanchor" href="#project" aria-label="Anchor link for: Project">🔗</a></h2>
<p><em>Tahrir</em> by the <a href="https://fedoraproject.org/wiki/Overview">Fedora Project</a></p>

<h2 id="description">Description&nbsp;<a class="hanchor" href="#description" aria-label="Anchor link for: Description">🔗</a></h2>
<p>Tahrir is a <a href="http://www.pylonsproject.org/">Pyramid</a> app for distributing your own custom badges (based off of <a href="https://wiki.mozilla.org/Badges">Mozilla Open Badges</a>). The back-end is written in Python with an HTML/CSS and JavaScript front-end and the project is a smaller part of the <a href="https://fedoraproject.org/wiki/Overview">Fedora Project</a>.</p>

<h2 id="team-member-roles">Team Member Roles&nbsp;<a class="hanchor" href="#team-member-roles" aria-label="Anchor link for: Team Member Roles">🔗</a></h2>

<h4 id="justin-and-wilfried">Justin and Wilfried&nbsp;<a class="hanchor" href="#justin-and-wilfried" aria-label="Anchor link for: Justin and Wilfried">🔗</a></h4>
<ol>
<li>Project Report I-R</li>
<li>git_by_a_bus</li>
</ol>

<h4 id="stephen-and-bobby">Stephen and Bobby&nbsp;<a class="hanchor" href="#stephen-and-bobby" aria-label="Anchor link for: Stephen and Bobby">🔗</a></h4>
<ol>
<li>Project Report A-H</li>
<li>Calloway Coefficient of Fail</li>
</ol>

<h2 id="source-code-repository-url">Source Code Repository URL&nbsp;<a class="hanchor" href="#source-code-repository-url" aria-label="Anchor link for: Source Code Repository URL">🔗</a></h2>
<p><a href="https://github.com/fedora-infra/tahrir">fedora-infra/tahrir</a></p>

<h2 id="upstream-mentors">Upstream Mentors&nbsp;<a class="hanchor" href="#upstream-mentors" aria-label="Anchor link for: Upstream Mentors">🔗</a></h2>
<table>
  <thead>
      <tr>
          <th><strong>Name</strong></th>
          <th><strong>Email</strong></th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>Ralph Bean (threebean)</td>
          <td>*****@redhat.com</td>
      </tr>
      <tr>
          <td>Remy DeCausemaker (decause)</td>
          <td>*******@redhat.com</td>
      </tr>
      <tr>
          <td>Pierre-Yves Chibon (pypingou)</td>
          <td>******@pingoured.fr</td>
      </tr>
  </tbody>
</table>

<h2 id="communication-methods">Communication Methods&nbsp;<a class="hanchor" href="#communication-methods" aria-label="Anchor link for: Communication Methods">🔗</a></h2>
<p>The following methods of communication are ordered in the most preferred way to the least.</p>
<ol>
<li><strong>IRC channel</strong> on freenode (<a href="https://webchat.freenode.net/?channels=fedora-apps">#fedora-apps</a>)</li>
<li><strong>Issue tracker</strong> on <a href="https://github.com/fedora-infra/tahrir/issues">GitHub</a></li>
<li><strong>Mailing list</strong> via <a href="https://lists.fedoraproject.org/archives/list/infrastructure@lists.fedoraproject.org/">infrastructure@lists.fedoraproject.org</a></li>
</ol>

<h2 id="what-are-the-easy-parts">What are the easy parts?&nbsp;<a class="hanchor" href="#what-are-the-easy-parts" aria-label="Anchor link for: What are the easy parts?">🔗</a></h2>
<ul>
<li>Project is fairly small (even though it is part of a larger project)</li>
<li>People to ask for help when needed</li>
<li><a href="https://github.com/tomheon/git_by_a_bus">Git-by-a-bus</a> is going to make analytics of contributors super easy</li>
<li>Distribution of work will allow us to complete the project in a timely manner</li>
</ul>

<h2 id="what-are-the-hard-parts">What are the hard parts?&nbsp;<a class="hanchor" href="#what-are-the-hard-parts" aria-label="Anchor link for: What are the hard parts?">🔗</a></h2>
<ul>
<li>Lack of a frame of reference for some team members who have never worked with open source projects in the past (e.g. we are unable to compare activity or its community to other projects)</li>
<li>Since the project is a smaller project inside of a larger one (Fedora Project), it will be challenging to look at it in a modular sense</li>
<li>Separation of dependencies from project requirements (<a href="http://openbadges.org/">Open Badges</a> requirements and Tahrir requirements)</li>
</ul>

<h2 id="how-will-you-overcome-both">How will you overcome both?&nbsp;<a class="hanchor" href="#how-will-you-overcome-both" aria-label="Anchor link for: How will you overcome both?">🔗</a></h2>

<h4 id="hard-stuff">Hard Stuff&nbsp;<a class="hanchor" href="#hard-stuff" aria-label="Anchor link for: Hard Stuff">🔗</a></h4>
<ul>
<li>We have two people who are more advanced at hacking who can hopefully guide the two who aren&rsquo;t through the project, effectively eliminating the lack of reference point.</li>
<li>Three of our members are not people involved in the Fedora Project, and as such won&rsquo;t be distracted by its involvement with Fedora and will only look at the project itself.</li>
<li>Read up on the existing documentation and test the various endpoints of the project to identify what is needed with Open Badge and what the project is implementing itself.</li>
</ul>]]></description></item><item><title>HFOSS: Quiz #1</title><link>https://jwheel.org/blog/2016/03/hfoss-quiz-1/</link><pubDate>Fri, 04 Mar 2016 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2016/03/hfoss-quiz-1/</guid><description><![CDATA[<p>In the <a href="https://hfoss-ritjoe.rhcloud.com/">Humanitarian Free and Open Source Software Development (HFOSS)</a> course at the <a href="https://www.rit.edu/">Rochester Institute of Technology</a>, quizzes are in the form of blog posts submitted during the class period. The room stays quiet, but it is an open IRC quiz, so many of the students collaborated with each other in <a href="https://webchat.freenode.net/?channels=rit-foss">#rit-foss</a> on freenode for the quiz.</p>
<p>This post is my quiz submission for the Spring 2016 semester <a href="https://hfoss-ritjoe.rhcloud.com/static/hw/quiz1.txt">Quiz #1</a>.</p>

<h2 id="hfoss-spring-2016-quiz-1">HFOSS Spring 2016, Quiz #1&nbsp;<a class="hanchor" href="#hfoss-spring-2016-quiz-1" aria-label="Anchor link for: HFOSS Spring 2016, Quiz #1">🔗</a></h2>

<h4 id="what-is-the-name-of-the-version-control-system-we-use-in-this-course">What is the name of the version control system we use in this course?&nbsp;<a class="hanchor" href="#what-is-the-name-of-the-version-control-system-we-use-in-this-course" aria-label="Anchor link for: What is the name of the version control system we use in this course?">🔗</a></h4>
<ul>
<li><a href="https://git-scm.com/">Git</a></li>
</ul>

<h4 id="bonus-give-the-name-for-another-version-control-system">Bonus: Give the name for another version control system.&nbsp;<a class="hanchor" href="#bonus-give-the-name-for-another-version-control-system" aria-label="Anchor link for: Bonus: Give the name for another version control system.">🔗</a></h4>
<ul>
<li><a href="https://en.wikipedia.org/wiki/Mercurial">Mercurial</a></li>
</ul>

<h4 id="we-refer-to-sites-that-host-source-code-as-forges-what-is-the-name-of-the-primary-forge-used-in-this-course">We refer to sites that host source code as &ldquo;forges&rdquo;. What is the name of the primary forge used in this course?&nbsp;<a class="hanchor" href="#we-refer-to-sites-that-host-source-code-as-forges-what-is-the-name-of-the-primary-forge-used-in-this-course" aria-label="Anchor link for: We refer to sites that host source code as &ldquo;forges&rdquo;. What is the name of the primary forge used in this course?">🔗</a></h4>
<ul>
<li><a href="https://github.com/">GitHub</a></li>
</ul>

<h4 id="rearrange-the-following-to-make-the-best-matches">Rearrange the following to make the best matches.&nbsp;<a class="hanchor" href="#rearrange-the-following-to-make-the-best-matches" aria-label="Anchor link for: Rearrange the following to make the best matches.">🔗</a></h4>
<p>For the next several questions, rearrange the items in the column on the right, as necessary, so that they best match the names of key figures in the column on the left.</p>
<hr>
<p><em>For example</em>:</p>
<ol>
<li><a href="https://en.wikipedia.org/wiki/Randall_Munroe"><strong>Randall Munroe</strong></a>
<ol>
<li>Saturday Morning Breakfast Cereal</li>
</ol>
</li>
<li><a href="https://en.wikipedia.org/wiki/Zach_Weiner"><strong>Zach Weiner</strong></a>
<ol>
<li>XKCD</li>
</ol>
</li>
<li><a href="https://en.wikipedia.org/wiki/Walt_Disney"><strong>Walt Disney</strong></a>
<ol>
<li>Mickey Mouse</li>
</ol>
</li>
</ol>
<p>…becomes…</p>
<ol>
<li><strong>Randall Munroe</strong>
<ol>
<li>XKCD</li>
</ol>
</li>
<li><strong>Zach Weiner</strong>
<ol>
<li>Saturday Morning Breakfast Cereal</li>
</ol>
</li>
<li><strong>Walt Disney</strong>
<ol>
<li>Mickey Mouse</li>
</ol>
</li>
</ol>
<hr>
<ol>
<li><a href="https://en.wikipedia.org/wiki/Andrew_S._Tanenbaum"><strong>Andrew Tannenbaum</strong></a>
<ol>
<li><a href="https://en.wikipedia.org/wiki/MINIX">Minix</a></li>
</ol>
</li>
<li><a href="https://en.wikipedia.org/wiki/Linus_Torvalds"><strong>Linus Torvalds</strong></a>
<ol>
<li><a href="https://en.wikipedia.org/wiki/Linux">Linux</a></li>
</ol>
</li>
<li><a href="https://en.wikipedia.org/wiki/Bruce_Perens"><strong>Bruce Perens</strong></a>
<ol>
<li><a href="https://en.wikipedia.org/wiki/Debian_Free_Software_Guidelines">Debian Free Software Guidelines</a></li>
</ol>
</li>
<li><a href="https://en.wikipedia.org/wiki/Richard_Stallman"><strong>Richard Stallman</strong></a>
<ol>
<li><a href="https://en.wikipedia.org/wiki/Free_Software_Foundation">Free Software Foundation</a> / <a href="https://en.wikipedia.org/wiki/GNU_Project">GNU Project</a></li>
</ol>
</li>
</ol>

<h4 id="we-discussed-several-concepts-involving-rights-restrictions-and-licensing-match-the-term-on-the-left-with-the-most-appropriate-description-on-the-right">We discussed several concepts involving rights, restrictions, and licensing. Match the term on the left with the most appropriate description on the right.&nbsp;<a class="hanchor" href="#we-discussed-several-concepts-involving-rights-restrictions-and-licensing-match-the-term-on-the-left-with-the-most-appropriate-description-on-the-right" aria-label="Anchor link for: We discussed several concepts involving rights, restrictions, and licensing. Match the term on the left with the most appropriate description on the right.">🔗</a></h4>
<ol>
<li><strong><a href="https://en.wikipedia.org/wiki/Trademark">Trademark</a></strong>
<ol>
<li>Lasts as long as used &amp; defended</li>
</ol>
</li>
<li><strong><a href="https://en.wikipedia.org/wiki/Copyright">Copyright</a></strong>
<ol>
<li>Life of the author plus 70 years</li>
</ol>
</li>
<li><strong><a href="https://en.wikipedia.org/wiki/Patent">Patent</a></strong>
<ol>
<li>20 year term</li>
</ol>
</li>
</ol>
<hr>
<ol>
<li><strong>Trademark</strong>
<ol>
<li>Protects consumers from confusing one product with another</li>
</ol>
</li>
<li><strong>Copyright</strong>
<ol>
<li>Arises as soon as a work takes tangible form</li>
</ol>
</li>
<li><strong>Patent</strong>
<ol>
<li>Precedence is given to the first to file an application</li>
</ol>
</li>
</ol>

<h4 id="list-or-describe-the-four-r-as-a-shorthand-for-the-freedoms-attached-to-software-for-it-to-be-considered-free-and-open-source">List or describe &ldquo;<a href="http://opencontent.org/blog/archives/1123">the four R&rsquo;s</a>&rdquo; as a shorthand for the freedoms attached to software for it to be considered &ldquo;free and open source&rdquo;.&nbsp;<a class="hanchor" href="#list-or-describe-the-four-r-as-a-shorthand-for-the-freedoms-attached-to-software-for-it-to-be-considered-free-and-open-source" aria-label="Anchor link for: List or describe &ldquo;the four R&rsquo;s&rdquo; as a shorthand for the freedoms attached to software for it to be considered &ldquo;free and open source&rdquo;.">🔗</a></h4>
<ol>
<li>Read</li>
<li>Run</li>
<li>Revise</li>
<li>Redistribute</li>
</ol>]]></description></item><item><title>2015 - My Year in Review</title><link>https://jwheel.org/blog/2016/02/2015-year-review/</link><pubDate>Thu, 25 Feb 2016 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2016/02/2015-year-review/</guid><description><![CDATA[<p>I originally began drafting this post 900 miles away from my current location. It was an hour until the New Year and I was trying to put together a rough outline of the things that made 2015 such an incredible year for me. However, for reasons I don&rsquo;t really know, I never followed up on finishing this draft. So now, I&rsquo;d like to present my Year in Review post looking at my 2015.</p>

<h2 id="my-year-in-review">My Year in Review&nbsp;<a class="hanchor" href="#my-year-in-review" aria-label="Anchor link for: My Year in Review">🔗</a></h2>
<p>With an hour left until the New Year, there never seemed a better time to begin writing my Year in Review article. While it is a stereotypical kind of thing to do, I also think it&rsquo;s a great opportunity to reflect on the gifts, changes, and special occasions that this past year has presented to me. 2015 is special to me in many ways because it marks a significant milestone in my life of moving away from home and beginning my journey into full adulthood.</p>
<p>There are many important and special people in my life that have made this year incredible, and I want to reflect and make note of this.</p>

<h2 id="high-school-college"><code>&lt;/high school&gt;</code> <code>&lt;college&gt;</code>&nbsp;<a class="hanchor" href="#high-school-college" aria-label="Anchor link for: &lt;/high school&gt; &lt;college&gt;">🔗</a></h2>
<p>
<figure>
  <img src="/blog/2016/02/Optimized-Graduation.jpg" alt="Graduation with my family" loading="lazy">
  <figcaption>My high school graduation day.</figcaption>
</figure>
</p>
<p>This past May, I graduated from high school. Looking back, it&rsquo;s interesting to see how much has changed in my personal life and even in my own interests. Some friends have come and gone, but there are an important core of people who have always been present in my life, and I am privileged to have been one to know them deeply over the past four years.</p>
<p>Interestingly enough, it wasn&rsquo;t until my junior year when I realized that I wanted to spend my life working in computer science. I remember when I walked into the classroom of my AP Computer Science teacher asking how I could get going with only one year left. Now, here I am immersing myself in digital technology in countless different ways. I feel like I am where I am meant to be.</p>
<p>
<figure>
  <img src="/blog/2016/02/Software-Freedom-Day-at-RIT-Fedora.jpg" alt="Software Freedom Day at the Rochester Institute of Technology" loading="lazy">
  <figcaption>Software Freedom Day (<a href="https://fedoramagazine.org/celebrating-software-freedom-day-2015/" class="bare">https://fedoramagazine.org/celebrating-software-freedom-day-2015/</a>) at the Rochester Institute of Technology. I’m in the middle!</figcaption>
</figure>
</p>
<p>These four years haven&rsquo;t been easy either. I worked hard to get to the place I wanted to go. Despite quite a few personal challenges, I was fortunate enough to afford an education here at the <a href="https://www.rit.edu/">Rochester Institute of Technology</a>. Just in the semester and a half that I have been enrolled here, I&rsquo;ve met countless people who have affected my life and helped shape the direction of where I&rsquo;m going in the world. Special shout-out to the <a href="https://fossrit.github.io/">FOSSbox</a> and <a href="https://ritlug.com/">RITlug</a>, and everyone involved with both.</p>

<h2 id="coffee-and-doughnuts">Coffee and Doughnuts&nbsp;<a class="hanchor" href="#coffee-and-doughnuts" aria-label="Anchor link for: Coffee and Doughnuts">🔗</a></h2>
<p>
<figure>
  <img src="/blog/2016/02/Cinnamon-Roll-Queen.jpg" alt="Cinnamon Roll Queen" loading="lazy">
  <figcaption>On occasion, I might model for the Dutch Monkey Instagram (<a href="https://www.instagram.com/dutchmonkeydoughnuts/" class="bare">https://www.instagram.com/dutchmonkeydoughnuts/</a>) as the Cinnamon Roll Queen.</figcaption>
</figure>
</p>
<p>For most of 2015, I worked a not-so-typical job at <a href="http://www.dutchmonkeydoughnuts.com/">Dutch Monkey Doughnuts</a> in my hometown. Dutch Monkey is an important part of my town and they have helped create a name for people visiting the region. They&rsquo;re well-known for their homemade doughnuts and <a href="https://counterculturecoffee.com/">Counter Culture Coffee</a>, both of which are legendary within their own right.</p>
<p>During my time at Dutch Monkey, I was able to attend workshops and classes at the Counter Culture Coffee Training Center in Atlanta. Throughout the eight or nine classes I took, I was able to further my understanding and appreciation for an extremely complex and fascinating beverage. My appreciation and love for coffee has become a part of my being. The coffee industry is a wild and exciting place, and it is very much an ethical hotbed of all kinds of issues. I joke to myself that if sysadmin doesn&rsquo;t work out, the coffee industry could always make a good fallback…</p>
<p>I was also fortunate to have some awesome co-workers who helped make the 4am shifts a little more enjoyable. Special shout-out to Jordan Hughes for the long talks about music, the music industry, and so many other things. I learned a lot from you and you&rsquo;ve had a big impact on my own music tastes.</p>

<h2 id="minecon-and-spigotmc">MINECON and SpigotMC&nbsp;<a class="hanchor" href="#minecon-and-spigotmc" aria-label="Anchor link for: MINECON and SpigotMC">🔗</a></h2>
<p>This was single-handedly one of the most profound events of the year for me. If you weren&rsquo;t aware, I am a community moderator for the <a href="https://www.spigotmc.org/">SpigotMC</a> project. I have been a moderator since April 2014. Spigot is my true first open-source project, even though I wasn&rsquo;t a contributor of code, but a community builder (or so I like to think).</p>

<h4 id="minecon-announced">MINECON announced&nbsp;<a class="hanchor" href="#minecon-announced" aria-label="Anchor link for: MINECON announced">🔗</a></h4>
<p>In February of 2015, Mojang announced that <a href="http://mojang.com/2015/02/minecon-2015-announced/">MINECON 2015</a> would be happening in London, England. Instantly, I thought there would be no way I would ever be able to afford a trip overseas for a two-day convention. However, I found the <a href="http://mojang.com/2015/03/minecon-2015-tickets-announcement/">application</a> for a MINECON Agent, which is the small group of &ldquo;interns&rdquo; that volunteer to help set up and prepare MINECON for over 10,000 people with the Mojang team. The only benefit to being an Agent was a waived ticket cost (around $120 last year). I applied for the program, unsure of what would come of it, doubtful I would be able to go even if I were accepted.</p>
<p>April rolls around, and I finally hear back from Mojang! &ldquo;Congratulations, you are now a MINECON Agent!&rdquo; It was difficult to believe at first, but I wasn&rsquo;t sure I would be able to go regardless.</p>

<h4 id="getting-in-gear-for-minecon">Getting in gear for MINECON&nbsp;<a class="hanchor" href="#getting-in-gear-for-minecon" aria-label="Anchor link for: Getting in gear for MINECON">🔗</a></h4>
<p>
<figure>
  <img src="/blog/2016/02/Booth-Shot.jpg" alt="SpigotMC Booth Shot at MINECON 2015" loading="lazy">
  <figcaption>A photo of the SpigotMC booth at MINECON 2015.</figcaption>
</figure>
</p>
<p>I began talking with the rest of the team at SpigotMC. We were also <a href="https://www.spigotmc.org/forums/minecon-2015.77/">getting in gear</a> for MINECON 2015 and were planning to attend as an organization with our own booth. We had arranged to have a booth and most of the team knew who was going to be there. <a href="https://twitter.com/md__5/">Michael</a>, our project lead, would be in attendance, along with <a href="https://twitter.com/thinkofdeath">Matthew</a>, the other lead developer; <a href="https://twitter.com/jtaylor69">Jordan</a>, another community moderator like myself; <a href="https://twitter.com/cindykerns">Cindy</a>, our local wiki staff, IRC staff, and contributing developer, or also the official &ldquo;Spigot Mom&rdquo;; and Miguel, our witty Spigot volunteer who has an ambiguous position with Spigot. Cindy&rsquo;s son Alex was also going to be in attendance.</p>
<p>I didn&rsquo;t think I would be able to attend. However, a very unique set of events happened one after another, and suddenly, the possibility of me attending MINECON this year began to materialize. Thanks to awesome people behind Spigot, I was fortunate enough to make it out to this year&rsquo;s convention. When I figured out that I would be going to London, I was beyond stoked.</p>

<h4 id="going-to-london-and-minecon">Going to London and MINECON&nbsp;<a class="hanchor" href="#going-to-london-and-minecon" aria-label="Anchor link for: Going to London and MINECON">🔗</a></h4>
<p>I would be there from Saturday, July 4 to Wednesday, July 8, 2016. Saturday and Sunday were the days of MINECON. Together with the team, we helped represent the SpigotMC project among thousands of convention-goers. We had brochures, bracelets, and a <a href="https://www.youtube.com/watch?v=qiNScdSAQ8k">video</a> running in the booth for visitors to take and see. I met some incredible people from our community, and I am privileged and honored to have met some incredible people there.</p>
<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;">
      <iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube-nocookie.com/embed/qiNScdSAQ8k?autoplay=0&amp;controls=1&amp;end=0&amp;loop=0&amp;mute=0&amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"></iframe>
    </div>

<p>Thanks to Michael being the incredible individual he is, we went to a few dinners and meet-ups with others in the Minecraft community. I met two of the major Minecraft developers, Nathan (<a href="https://twitter.com/Dinnerbone">Dinnerbone</a>) and Erik (<a href="https://twitter.com/_grum">Grum</a>) and countless others in the YouTube and development community. It was almost unbelievable. The entire time I was in London, the experience felt surreal. Six months before this, I would never have believed any of this would ever have happened.</p>
<p>
<figure>
  <img src="/blog/2016/02/Table-with-Justin.jpg" alt="SpigotMC Lunch in London" loading="lazy">
  <figcaption>At the SpigotMC lunch on the Saturday of MINECON.</figcaption>
</figure>
</p>
<p>The Monday and Tuesday we were there, Cindy, Jordan, Alex, and I went around London doing our proper duty as tourists. We went to see Big Ben, Westminster Abbey, rode a double-decker bus, went to the Queen&rsquo;s castle, and indulged in what Jordan called a &ldquo;proper British meal&rdquo;. On Monday night, Jordan treated me to a short trip around London hopping between bars (although everything closed so early)! We ended up crashing in some late-night diner, had a meal, and headed back for the next round of sightseeing on Tuesday.</p>

<h4 id="thanks-to-the-team">Thanks to the team&nbsp;<a class="hanchor" href="#thanks-to-the-team" aria-label="Anchor link for: Thanks to the team">🔗</a></h4>
<p>This was truly a life-changing experience that was bestowed upon me. I was honored and privileged to have met the other members of the Spigot team that I&rsquo;ve been working with for the past two years. I wouldn&rsquo;t trade my time in London for anything else, and I&rsquo;m hoping that I&rsquo;ll be able to help host the crew this upcoming MINECON if it ends up in the northeast US.</p>
<p>
<figure>
  <img src="/img/Spigot-Team.jpg" alt="SpigotMC Team" loading="lazy">
  <figcaption>You guys all rock.</figcaption>
</figure>
</p>

<h2 id="open-source-and-fedora">Open Source and Fedora&nbsp;<a class="hanchor" href="#open-source-and-fedora" aria-label="Anchor link for: Open Source and Fedora">🔗</a></h2>
<p>I have used the <a href="https://getfedora.org/">Fedora</a> operating system on my laptop since December 2013. I began using it on my desktop I built in November 2014. I have used this operating system for almost two years and I never had thought too much about the community behind the <a href="https://fedoraproject.org/wiki/Overview">Fedora Project</a>. I knew that it was a large and complex community, but I was never sure where to take the first step. I had always wanted to be an <a href="https://fedoraproject.org/wiki/Ambassadors">Ambassador</a>, but questioned my usefulness or whether I was a right fit for the program.</p>

<h4 id="flock-to-fedora">Flock to Fedora!&nbsp;<a class="hanchor" href="#flock-to-fedora" aria-label="Anchor link for: Flock to Fedora!">🔗</a></h4>
<p>I learned that <a href="https://flocktofedora.org/">Flock</a>, Fedora&rsquo;s annual contributor&rsquo;s conference, was to be hosted in Rochester, NY in 2015 from August 5th to the 9th. I would be moving right next door to Flock just a week after the conference! After contacting a pair of people who seemed knowledgeable about the details back in February 2015, little did I know I was setting in motion an entirely new track of events in my life. The two gents I emailed, <a href="https://fedoraproject.org/wiki/User:Decause">Remy DeCausemaker</a> and Prof. <a href="https://www.rit.edu/gccis/stephen-jacobs">Stephen Jacobs</a> (SJ), helped give me advice on travel details and how I would get myself into Rochester in time for Flock.</p>
<p>Come August, I am back from MINECON, packing my bags for Rochester, and ending my last few days at Dutch Monkey. When I arrived in Rochester with my mother, it was an exciting and new experience, something I had looked forward to for a long time. Once Flock rolled around, I was almost instantaneously immersed in the Fedora community, and over the course of the week, I would begin to feel a part of a Project that I had questioned how to enter for almost a year.</p>
<p>
<figure>
  <img src="/blog/2016/02/Matt-and-Remy.jpg" alt="Remy DeCausemaker (decause) and Matthew Miller (mattdm), Fedora partners in crime" loading="lazy">
  <figcaption>Remy DeCausemaker (decause) and Matthew Miller (mattdm), Fedora partners in crime.</figcaption>
</figure>
</p>
<p>The talks were fantastic, the speakers were passionate, and the community was welcoming. I was jump started into Fedora at Flock 2015, despite walking in a stranger. At first, I questioned whether coming was such a grand idea. It was obvious everyone knew someone already and I was only an excited Fedora user and fan. These were the people who did all the heavy-lifting to make this operating system and its community run. What was I doing here?</p>
<p>I distinctly remember <a href="https://fedoraproject.org/wiki/User:Immanetize">Pete Travis</a> (randomuser in IRC) coming up to me, introducing himself and asking me a few questions. In retrospect, I probably looked like I was feeling a bit out-of-place. He and I began talking a bit about his role in Fedora and some of my little experience in open source. After he spoke to me, I began to feel a little more attached to the conference. After a while, I began speaking up at some of the talks I attended, or trying to share some of my perspective or thoughts as an outsider. These were the stepping-stones that got me involved with the project.</p>
<p>One thing about all else stands out to me about the conference. I remember Remy saying to me towards the end (with minor paraphrasing), &ldquo;You should check out this Community Operations thing that&rsquo;s coming up soon. It&rsquo;s going to be awesome.&rdquo;</p>

<h4 id="fedora-magazine">Fedora Magazine&nbsp;<a class="hanchor" href="#fedora-magazine" aria-label="Anchor link for: Fedora Magazine">🔗</a></h4>
<p>Over the course of the next few months at RIT, I started working with <a href="https://fedoraproject.org/wiki/User:Pfrields">Paul Frields</a>, <a href="https://fedoraproject.org/wiki/User:Ryanlerch">Ryan Lerch</a>, and a few others on the Fedora Magazine. I began contributing as a writer, with my first article about using <a href="https://fedoramagazine.org/run-a-minecraft-server-using-spigot/">Spigot on Fedora</a>. As time went on, I began helping as an editor, revising and reviewing other people&rsquo;s articles to help get them published for the Magazine. By the end of 2015, I believe I would come to establish myself as a <a href="https://fedoramagazine.org/author/jflory7/">permanent member</a> of the editorial team behind the Magazine.</p>

<h4 id="commops">CommOps&nbsp;<a class="hanchor" href="#commops" aria-label="Anchor link for: CommOps">🔗</a></h4>
<p>Additionally, during the months after Flock, I would follow up on what Remy told me, and I checked out this whole <a href="https://fedoraproject.org/wiki/CommOps">Community Operations</a> (shortened to <em>CommOps</em>) thing. It was in the early formation stages, but the core idea behind CommOps was that they were the supporting team to offer support to all the other sub-projects in Fedora. Or in my eyes, a team focused on building and supporting the community with resources and assistance. This was something I thought I could contribute to. My programming skills were not at a level where I&rsquo;d feel comfortable hacking on to Fedora either on the <a href="https://fedoraproject.org/wiki/Infrastructure">Infrastructure</a> or as a <a href="https://fedoraproject.org/wiki/Category:Package_Maintainers">Packager</a>. But CommOps was that kind of thing that hooked me from the start. I wanted to help build Fedora up, and I could see what exactly CommOps was trying to target and how it was wanting to fix the long-term issues.</p>
<p>
<figure>
  <img src="/blog/2016/02/CommOps-Trac-banner.png" alt="Fedora Community Operations (CommOps) logo" loading="lazy">
  <figcaption>The Community Operations (CommOps) logo.</figcaption>
</figure>
</p>
<p>Now, months later, my involvement with CommOps has resulted with <a href="https://fedorahosted.org/fedora-commops/">many tickets filed and many tickets closed</a>. It has been a productive time while I have been with CommOps, and I never feel like there is too little to do. Our horizon is vast and there is much work to be done… 2016 offers great promise to the success of our sub-project, which in turn offers great promise to the Fedora Project. I am looking forward to seeing where this year takes us. I am also happy to work with such an awesome and dedicated group of people as those behind the CommOps team. There are too many to name, but I&rsquo;m thankful for the leadership of Remy to keep us all together, focused, and driven.</p>

<h2 id="2016">2016&nbsp;<a class="hanchor" href="#2016" aria-label="Anchor link for: 2016">🔗</a></h2>
<p>2016 will have a lot of ground to cover over 2015, but there is a large potential for this to be done. My own personal story with open source continues to grow, and I am beyond excited for what the future may bring. I am exposed to a unique group of people and minds here at RIT, and I am actively pursuing the <a href="http://magic.rit.edu/foss/minor.html">Free and Open Source Software (FOSS) minor</a>.</p>
<p>This self-reflection has turned into a much longer post than I anticipated, but I think this reflection is necessary and useful for my own purposes. Taking a moment to reflect on the events of the past year helps remind me what it&rsquo;s all about and why I&rsquo;m doing what I&rsquo;m doing, especially at the times where everything seems confusing and I begin to question what I&rsquo;m doing. But the path is illuminated and I am driven to succeed. There are a lot of things at stake for me and my family, and I hope to be able to meet many personal goals and better support the people closest to me in my life.</p>
<p>I would also like to give a special thanks to all the people who have made this year so incredible for me, and for those who have ridden the ride with me. There are so many names to list, and it&rsquo;s hard to come up with this list in the dark hours of the morning when I know I should be sleeping. But to all of those who play a special and important role in my life, I want you all to know that none of what has happened to me would be possible without your support. Your continued guidance, counsel, and companionship teaches me much and inspires me greatly. My only wish is that I will someday be able to repay all the good deeds that others have bestowed upon me. If not to the original giver, I hope to someday inspire others and help others in the same way you all have shown and taught me. Maybe this is less of a 2016 thing and more of a &ldquo;crystal ball into the future&rdquo; moment… but I think it&rsquo;s worth mentioning regardless.</p>
<p>Thanks for a fantastic 2015. I&rsquo;m looking forward to seeing where 2016 takes us next.</p>
<p>
<figure>
  <img src="/blog/2016/02/January-Photo-Shoot.jpg" alt="Year in Review - Justin Wheeler" loading="lazy">
  <figcaption>Looking forward to 2016 and all that it brings.</figcaption>
</figure>
</p>
]]></description></item><item><title>HFOSS: Smoke test an XO laptop</title><link>https://jwheel.org/blog/2016/02/smoke-test-xo-laptop/</link><pubDate>Mon, 22 Feb 2016 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2016/02/smoke-test-xo-laptop/</guid><description><![CDATA[<p>
<figure>
  <img src="https://upload.wikimedia.org/wikipedia/commons/4/42/XO-Beta1-mikemcgregor-2.jpg" alt="XO laptop used by the One Laptop Per Child (OLPC) program" loading="lazy">
  <figcaption>The XO laptop deployed by the One Laptop Per Child (OLPC) program</figcaption>
</figure>
</p>
<p>For the next homework assignment in my <a href="https://hfoss-ritjoe.rhcloud.com/">Humanitarian Free and Open Source Software Development</a> (HFOSS) course, we were tasked with running a <a href="http://wiki.laptop.org/go/Smoke_test/11.2.x/1_hour_smoke_test">smoke test</a> of the <a href="https://en.wikipedia.org/wiki/OLPC_XO">XO laptops</a> we are assigned for class. Some of the laptops are notoriously more broken than others. Seeing as how some of these date to around ten years ago, it&rsquo;s easy to understand how they have been become more defunct over the years.</p>
<p>Part of my assignment was to run some basic tests and practices on my XO laptop to make sure it would be capable for most core functionalities. This article will serve as my step-by-step smoke test report on my XO laptop, which I have affectionately named <a href="https://youtu.be/InwMS4J7f-8">Hedron</a>.</p>

<h2 id="beginning-the-smoke-test-start-up">Beginning the smoke test: Start up&nbsp;<a class="hanchor" href="#beginning-the-smoke-test-start-up" aria-label="Anchor link for: Beginning the smoke test: Start up">🔗</a></h2>
<p>The first part of the one hour smoke test guide is to make sure the laptop starts up as expected and functions correctly while starting up. This part of the smoke test took the shortest amount of time.</p>
<ul>
<li>Does the XO start up? <strong>Yes</strong></li>
<li>Do the power LED and backlight work? <strong>Yes</strong></li>
<li>Does the activity ring show after booting? <strong>Yes</strong></li>
<li>Does it automatically connect to a known WiFi network? <strong>Yes</strong></li>
</ul>
<p>In short, the bare minimum requirement (i.e. &ldquo;does it work?&rdquo;) was met.</p>

<h2 id="running-activities-in-the-smoke-test">Running activities in the smoke test&nbsp;<a class="hanchor" href="#running-activities-in-the-smoke-test" aria-label="Anchor link for: Running activities in the smoke test">🔗</a></h2>
<p>For the most part, every activity I ran had the expected behavior that the smoke test walk-through gave. Since there were more things working than there was not, I have a short list of the things that weren&rsquo;t working below.</p>
<ul>
<li><strong>eToys Activity</strong>: Not installed</li>
<li><strong>Read Activity</strong>:
<ul>
<li>Cannot scroll through PDFs (scroll bar non-responsive)</li>
<li>Cannot close and open a new document</li>
<li><em>Terminal Activity</em> doesn&rsquo;t parse anywhere near readable</li>
</ul>
</li>
<li><strong>TurtleArt Activity</strong>: Not installed</li>
<li><strong>Wikipedia Activity</strong>: Cannot search for articles</li>
</ul>

<h2 id="transfer-files-to-usb">Transfer files to USB&nbsp;<a class="hanchor" href="#transfer-files-to-usb" aria-label="Anchor link for: Transfer files to USB">🔗</a></h2>
<p>Transferring files between the XO and a USB drive worked well. However, I didn&rsquo;t actually do this from the SoaS interface, but I switched over to the GNOME2 environment to accomplish this. Perhaps this was cheating, but it was the most effective way to easily move media between flash media and the XO.</p>
<p>My use case was trying to put a <code>yum-utils</code> RPM file on the machine. Oddly enough, the XO doesn&rsquo;t come with <code>yum-utils</code> prepackaged, which makes it difficult to navigate when it comes to updating the XOs to new repository locations.</p>

<h2 id="smoke-test-collaboration">Smoke Test Collaboration&nbsp;<a class="hanchor" href="#smoke-test-collaboration" aria-label="Anchor link for: Smoke Test Collaboration">🔗</a></h2>
<p>On Friday, a group of us met in the Simone Center lobby to work on testing some of the group activities on the XOs. We hit three different activities, and the process we used is documented below.</p>
<p>To begin, we all connected to the same WiFi network (<code>rit</code>) since the WPA2 Enterprise network on RIT&rsquo;s campus didn&rsquo;t play nicely with some of the XOs. There were four of us, so we split into pairs to try the activities since they didn&rsquo;t work well with more than one other person.</p>
<p>The four of us that met were:</p>
<ul>
<li><a href="https://spg1502igme582.wordpress.com/">Stephen</a></li>
<li><a href="http://blog.wilfriede.me/">Wilfried</a></li>
<li><a href="https://rdp1070.wordpress.com/">Bobby</a></li>
</ul>

<h4 id="chat">Chat&nbsp;<a class="hanchor" href="#chat" aria-label="Anchor link for: Chat">🔗</a></h4>
<p>We were able to successfully open a chat room and talk with each other on our local connection. There were a few inconsistencies like messages being delivered late and other minor mishaps, but overall, the functionality behaved as expected.</p>

<h4 id="distance">Distance&nbsp;<a class="hanchor" href="#distance" aria-label="Anchor link for: Distance">🔗</a></h4>
<p>Wilfried and Stephen were able to successfully get the Distance activity to work between their XOs. However, Bobby and I were unable to get them to initiate with each other in the time that we were working on this. We weren&rsquo;t sure if this was a network hiccup or an actual deficiency on the XO.</p>

<h4 id="write">Write&nbsp;<a class="hanchor" href="#write" aria-label="Anchor link for: Write">🔗</a></h4>
<p>We were able to use the Write activity to write in the same notepad as another user. Despite being slow and lackadaisical, it did actually work as expected.</p>

<h2 id="suspension">Suspension&nbsp;<a class="hanchor" href="#suspension" aria-label="Anchor link for: Suspension">🔗</a></h2>
<p>The final test I ran on the XO was shutting the laptop and seeing if it would resume from its former point when I reopened the XO. It was able to do this as expected.</p>
<hr>
<p>In short, I think I lucked out and received one of the most functional devices in the class. After comparing the class inventory to mine, it seems like Hedron the XO is in pretty good shape.</p>]]></description></item><item><title>HFOSS: Double bugfix</title><link>https://jwheel.org/blog/2016/02/hfoss-double-bugfix/</link><pubDate>Mon, 15 Feb 2016 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2016/02/hfoss-double-bugfix/</guid><description><![CDATA[<p>This article is a further addition to the series of blog posts for my <a href="https://hfoss-ritjoe.rhcloud.com/">Humanitarian Free and Open Source Software Development</a> course at <a href="https://www.rit.edu/">RIT</a>. For this week&rsquo;s homework, we are tasked with finding an open source project, looking at known bugs or finding new ones, and <a href="https://hfoss-ritjoe.rhcloud.com/hw/bugfix">submitting a bugfix</a>. I focused on two projects to begin with: <a href="https://github.com/fedora-infra/mote">møte</a> and <a href="https://github.com/FOSSRIT/FOSSProfiles">FOSSProfiles</a>.</p>

<h2 id="step-1-identifying-the-bugfix">Step 1: Identifying the bugfix&nbsp;<a class="hanchor" href="#step-1-identifying-the-bugfix" aria-label="Anchor link for: Step 1: Identifying the bugfix">🔗</a></h2>

<h4 id="møte">møte&nbsp;<a class="hanchor" href="#m%c3%b8te" aria-label="Anchor link for: møte">🔗</a></h4>
<p><a href="/blog/2016/02/Fedora-Booth-Wide.jpg">
<figure>
  <img src="/blog/2016/02/Fedora-Booth-Wide.jpg" alt="HFOSS bugfix: Looking at møte" loading="lazy">
</figure>
</a></p>
<p>When I started this homework assignment, there was originally one project I had in mind. As a non-code contributor to the Fedora Project, I frequently interact with Fedora&rsquo;s own implementation of Meetbot. <a href="https://wiki.debian.org/MeetBot">Meetbot</a> is an IRC bot that adds meeting functionality to IRC channels. It makes it easy to highlight important info and summarize the meeting into a tidy HTML summary afterwards.</p>
<p>Fedora has a custom front-end for the Meetbot bot. This project is called <a href="https://github.com/fedora-infra/mote">møte</a> and is developed by Fedora contributors <a href="https://github.com/cydrobolt">Chaoyi Zha</a>, <a href="https://github.com/ralphbean">Ralph Bean</a>, and <a href="https://github.com/fedora-infra/mote/graphs/contributors">many others</a>. One of its features is clustering Fedora sub-projects into teams and sorting their meetings together with JSON mappings.</p>
<p>Some Fedora sub-projects do not have their alias or meeting names set in these JSON files, making it difficult for their own team members or the general public from finding the records of their meetings. This inadvertently reduces transparency. Seeing as Fedora is an open project not only in code, but also in action, it made sense to try to clarify these mappings in a better way.</p>

<h4 id="fossprofiles">FOSSProfiles&nbsp;<a class="hanchor" href="#fossprofiles" aria-label="Anchor link for: FOSSProfiles">🔗</a></h4>
<p>More recently than møte, I am working with <a href="https://www.rit.edu/gccis/stephen-jacobs">Prof. Stephen Jacobs</a> this semester with <a href="http://magic.rit.edu/foss/">FOSS@MAGIC</a>. I am on an independent study on Open Source Journalism to help assist with marketing and growing additional exposure for the program. The website for the program is dated in its current form, and one of the goals this semester is to get it rewritten with a more modern, up-to-date layout and information.</p>
<p>One thing we want to have on the site is profiles of our students, alumni, mentors, and faculty. A Jinja-powered HTML generator for student profiles was made over a year ago, titled <a href="https://github.com/FOSSRIT/FOSSProfiles">FOSSProfiles</a>. In this project, students add their information to the repo in the form of YAML files. A user runs a Python script, and the program generates a raw HTML template with all of the students&rsquo; information in the repository. Wow! Useful.</p>
<p>When I went to try running it, I immediately ran into an issue and the program spat out a stacktrace at me. After troubleshooting the program and reading logs, I found two issues:</p>
<ol>
<li>Student biography lines could not be over 140 characters</li>
<li>Python script did not support Python3</li>
</ol>

<h2 id="step-2-doing-the-bugfix">Step 2: Doing the bugfix&nbsp;<a class="hanchor" href="#step-2-doing-the-bugfix" aria-label="Anchor link for: Step 2: Doing the bugfix">🔗</a></h2>

<h4 id="møte-1">møte&nbsp;<a class="hanchor" href="#m%c3%b8te-1" aria-label="Anchor link for: møte">🔗</a></h4>
<p>My commits ranged throughout the month of January and I tried to accomplish a number of things. Before I cloned the repo and started making changes, I crawled around møte for a while to find any teams or meetings that may not have been added.</p>
<p>Thanks to the power of <a href="http://www.fedmsg.com">fedmsg</a>, I was able to make a week of observations about teams that were frequently meeting in Fedora. As I observed for a week about what teams were active or inactive, I made bookmarks to their meeting pages to revisit later on.</p>
<p>After comparing the teams that were present in møte to the meetings I observed in a week, I began adding aliases and mappings for the teams that were lacking in the <a href="https://github.com/fedora-infra/mote/blob/master/name_mappings.json"><code>name_mappings.json</code></a> file. I also added a new category to the <a href="https://github.com/fedora-infra/mote/blob/master/category_mappings.json"><code>category_mappings.json</code></a> file for the <a href="https://fedoraproject.org/wiki/CommOps">Fedora Community Operations</a> team (where I spend a lot of my own time in Fedora).</p>
<p>The Fedora teams I helped identify and add to møte are as follows.</p>
<ul>
<li>CommOps</li>
<li>EMEA (Europe, Middle East, Africa) Ambassadors</li>
<li>Fedora Council (formerly known as Fedora Board)</li>
<li>LATAM (Latin America) Ambassadors</li>
<li>Fedora Magazine editorial board meetings</li>
</ul>
<p>During my time of my bugfix, I made <a href="https://github.com/fedora-infra/mote/commits?author=jflory7">13 commits</a> to the repository. I&rsquo;m not planning to stop there, either – there&rsquo;s a few more teams I hope to try adding to møte in the near future, like the Fedora Workstation, Server, and Cloud special interest groups.</p>
<p>Also in the process of contributing, I discovered a handful of problems and reported them in the issue tracker (see: <a href="https://github.com/fedora-infra/mote/issues/75">#75</a> and <a href="https://github.com/fedora-infra/mote/issues/83">#83</a>).</p>
<p>You can see my bugfix changes live in møte <a href="https://meetbot.fedoraproject.org/browse/">here</a>! Thanks Chaoyi for helping mentor me along in contributing.</p>

<h4 id="fossprofiles-1">FOSSProfiles&nbsp;<a class="hanchor" href="#fossprofiles-1" aria-label="Anchor link for: FOSSProfiles">🔗</a></h4>

<h6 id="140-char-maximum">140 char maximum&nbsp;<a class="hanchor" href="#140-char-maximum" aria-label="Anchor link for: 140 char maximum">🔗</a></h6>
<p>My first step with this bugfix was in troubleshooting the stacktrace I was given running the program in Python2. The stacktrace confirmed the error was that a profile biography was over 140 characters long, and I began sorting through all existing profiles to find any that were over the limit. After a little bit of searching, I found that <a href="https://github.com/FOSSRIT/FOSSProfiles/blob/4b680e03e0a113e874687403b0de797b7f8a5d62/profiles/student/wilfriedE.yaml"><code>wilfriedE.yaml</code></a> was the one over the 140 character limit. This was an easy correction and after making changes, I was able to run the program with Python2.</p>

<h6 id="python3-support">Python3 support&nbsp;<a class="hanchor" href="#python3-support" aria-label="Anchor link for: Python3 support">🔗</a></h6>
<p>Lastly, I wanted to add support for Python3 to this program so it would run in a modern and current workstation. This in particular required a lot of research for me to look into as I had never programmed in Python before.</p>
<p>My first problem with running the script in Python3 was an ImportError for a specific module, <a href="https://docs.python.org/2/library/itertools.html#itertools.ifilter"><code>ifilter</code></a>. After searching for an answer, I found an easy fix. It was supported by default in Python3! To fix this error was as simple as removing the line.</p>
<p>Secondly, after fixing the ImportError, I found a certain string was required to be encoded as <a href="https://en.wikipedia.org/wiki/UTF-8">UTF-8</a> before Python3 was able to handle it. After looking up the <a href="http://pythoncentral.io/encoding-and-decoding-strings-in-python-3-x/">encode() method</a> and figuring out how it worked, I simply encoded the string to UTF-8. That wasn&rsquo;t so bad…</p>

<h2 id="step-3-post-bugfix-analysis">Step 3: Post-bugfix analysis&nbsp;<a class="hanchor" href="#step-3-post-bugfix-analysis" aria-label="Anchor link for: Step 3: Post-bugfix analysis">🔗</a></h2>
<p>For me, the most fun part was the optional part of the assignment to the end. As part of the assignment, we could add our projects to OpenHub. <a href="https://www.openhub.net/">OpenHub</a> is an aggregator of open source projects that makes it easy to discover, track, and compare open source projects across the web.</p>
<p>I added a project page for <a href="https://www.openhub.net/p/mote-meetbot">møte</a> and <a href="https://www.openhub.net/p/FOSSatMAGIC-FOSSProfiles">FOSSProfiles</a> and claimed my contributions as a contributor.</p>
<p>I&rsquo;m also playing around with other projects in OpenHub… you can find my profile <a href="https://www.openhub.net/accounts/jflory7">here</a>.</p>]]></description></item><item><title>The most important part of your project might not even be a line of code</title><link>https://jwheel.org/blog/2016/02/licensing-most-important-part-of-project-not-code/</link><pubDate>Wed, 10 Feb 2016 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2016/02/licensing-most-important-part-of-project-not-code/</guid><description><![CDATA[<p>
<figure>
  <img src="https://upload.wikimedia.org/wikipedia/commons/thumb/4/4b/Puzzly_sharing_%28from_licensing_tutorial%29.svg/327px-Puzzly_sharing_%28from_licensing_tutorial%29.svg.png" alt="Open-source licensing: how does it affect your work?" loading="lazy">
  <figcaption>Open-source licensing: how does it affect your work?</figcaption>
</figure>
</p>
<p>Today&rsquo;s entry to the blog is sourced from a thread that I posted on the <a href="https://www.spigotmc.org/threads/the-most-important-part-of-your-project-might-not-even-be-a-line-of-code.121682/">SpigotMC Forums</a>. If you wish to join in the discussion about this, feel free to chime in on the thread or leave a comment on my blog. In this post, I covered licensing, licenses, and why your open-source software project should have a license. You can read my original post in this blog entry.</p>
<hr>
<p>I&rsquo;d like to share some personal and real-word advice to many of you contributing open-source resources to Spigot, but also to other open-source software projects you may work on even outside of just Minecraft or Spigot.</p>

<h2 id="licensing">Licensing&nbsp;<a class="hanchor" href="#licensing" aria-label="Anchor link for: Licensing">🔗</a></h2>
<p>What is licensing? Why does it matter? Why should you care? There are many reasons that licensing is an important part of a project you are working on. You are taking the time to write code and share it with the world in an open way, such as publishing it on GitHub, Bitbucket, or any number of other code-hosting services. Anyone might stumble across your code and find it useful.</p>
<p>Licensing is the way that you can control exactly how someone who finds your code can use it and in what ways.</p>

<h2 id="okay-why-does-it-really-matter">Okay, why does it <em>really</em> matter?&nbsp;<a class="hanchor" href="#okay-why-does-it-really-matter" aria-label="Anchor link for: Okay, why does it really matter?">🔗</a></h2>
<p>Maybe you&rsquo;ve been writing code for a really long time and you&rsquo;ve never bothered with licenses and don&rsquo;t feel the need to. I&rsquo;d like to present two hypothetical situations that I see pop up all the time, one in Spigot and one in the greater open-source community.</p>

<h4 id="your-plugin">Your Plugin&nbsp;<a class="hanchor" href="#your-plugin" aria-label="Anchor link for: Your Plugin">🔗</a></h4>
<p>You have spent a lot of time writing an awesome resource and you pushed all of your code on GitHub! Woohoo, project complete! You package it up as a JAR and submit out to the open. Skip ahead a few months, and maybe you no longer have the time to contribute to your project. Or maybe someone has an awesome idea for a totally different plugin that uses similar functionality to what you have written.</p>
<p>A new person finds your code on GitHub and discovers that it has the perfect method or algorithm for his own project. Or maybe they want to continue your project with new, fresh energy! But you have no license for your code. By default, this means <a href="http://choosealicense.com/no-license/">default copyright laws</a> will apply to your code. <strong>This is an extremely limiting type of copyright enforcement and almost defeats the entire purpose of even open-sourcing your code.</strong> A law-abiding programmer might just give up on the project and look elsewhere, or maybe a not-so-law-abiding programmer will secretly copy and paste your code without attributing your work back to you. This helps neither you or the friendly programmer looking at continuing or forking your work.</p>
<p>In many cases, the SpigotMC Staff receive reports about people &ldquo;copying&rdquo; other peoples&rsquo; code. <strong>Having a licensed project makes reviewing these reports 10x easier</strong>. People without licenses or with ambiguous sources makes it extremely difficult to review and make decisions about whether projects are copies.</p>
<p>By licensing your code, you are protecting your own work and writing the rules to how people can use your code. If you are open-sourcing your code, usually the point is to have collaboration with others and give back to the community by allowing others to tinker, modify, or play with what you have created. Make it easier for others to contribute, help, or build new awesome things by choosing a license!</p>

<h4 id="your-project">Your Project&nbsp;<a class="hanchor" href="#your-project" aria-label="Anchor link for: Your Project">🔗</a></h4>
<p>For any open-source software project on the Internet, having a license is very, very important. For example, let&rsquo;s say you write an important library or utility that can be used to make a developer&rsquo;s life easier for making a user interface more friendly. Your program is well-designed and has usefulness outside of what even you intended to write it for.</p>
<p>Perhaps a large company stumbles across your code and also thinks it&rsquo;s very useful for their own project. Maybe their project is proprietary or closed-source. Having a license in a situation like this suddenly becomes very important. Some licenses would permit this company to take the plugin or library, modify it to their own needs, and include it in their own product, while only leaving a small mention to you in the &ldquo;Legal&rdquo; section of their app. Maybe you&rsquo;re okay with that! Maybe you&rsquo;re not.</p>
<p>If you&rsquo;re not, there are licenses that let you define how the code is used in a case like this. With some licenses, if the company decides to modify and use your code, they will have to open-source their changes that made as well. If they don&rsquo;t modify anything, they just have to link back to your original source code. In some more extreme licenses, anything that touches your code also by extension has to be open source.</p>
<p>For a Minecraft example of this, let&rsquo;s say you have a &ldquo;Super Craft Bros.&rdquo; plugin open-sourced on your GitHub. Hypixel stumbles across your code and decides they want to use it for their own servers. Let&rsquo;s say your code is licensed under the <a href="https://www.mozilla.org/en-US/MPL/2.0/">Mozilla Public License 2.0</a>. For this license, if they take your code and make no changes, they only have to give credit back to you. If they take your code and change it, they also have to open-source all of the changes they make to your code.</p>
<p>Now, the changes made by the bigger company can benefit many others instead of just the one company!</p>

<h2 id="what-licenses-are-there">What licenses are there?&nbsp;<a class="hanchor" href="#what-licenses-are-there" aria-label="Anchor link for: What licenses are there?">🔗</a></h2>
<p>If you Google &ldquo;open source licenses&rdquo;, you may be overwhelmed. There are maybe close to the hundreds of different licenses for you to choose from. How can you pick one to settle on?! Fortunately, there are websites that do a great job of summarizing licenses to exactly what others can or cannot do with your code. A very popular site is <a href="https://tldrlegal.com/">tldrlegal.com</a>, which provides bullet-point summaries of different licenses.</p>

<h6 id="tldrlegalcom"><a href="https://tldrlegal.com/">tldrlegal.com</a>&nbsp;<a class="hanchor" href="#tldrlegalcom" aria-label="Anchor link for: tldrlegal.com">🔗</a></h6>
<p>Exploring that site is a great reference for picking a license. However, in this thread, I&rsquo;m going to do a very quick summary of four of the most popular open-source licenses that exist. However, it is important to preface this with a statement: I am not a lawyer and this does not constitute legal advice. It is important for you to look more into a license that feels right for how you want to share your code and determine what others can do with it.</p>

<h4 id="mit-license">MIT License&nbsp;<a class="hanchor" href="#mit-license" aria-label="Anchor link for: MIT License">🔗</a></h4>
<p>
<figure>
  <img src="https://upload.wikimedia.org/wikipedia/commons/c/c3/License_icon-mit.svg" alt="Open-sourcing licensing: the MIT License is the most relaxed" loading="lazy">
  <figcaption>The MIT License may be the most relaxed open-source license available today</figcaption>
</figure>
</p>
<p>The MIT License is almost universally regarded as one of the least strict licenses in open source. You can read more about it <a href="https://tldrlegal.com/license/mit-license">here</a>.</p>
<p>You can:</p>
<ul>
<li>Use the work commercially (think of the big company example said earlier)</li>
<li>Modify the original code</li>
<li>Distribute the original code or distribute your modifications</li>
<li>Sublicense the code (in other words, use it with code that has a different license)</li>
<li>Use the code for private use</li>
</ul>
<p>You cannot:</p>
<ul>
<li>Hold the original author liable for damages
<ul>
<li>So this can&rsquo;t happen: &ldquo;Oh noes! I accidentally exploded my entire server with your code! You must pay me monies to fix this nao!!!&rdquo;</li>
</ul>
</li>
</ul>
<p>You must:</p>
<ul>
<li>Include a copyright notice in all copies or other uses of the work</li>
<li>Include an original copy of the license with the original or modified code
<ul>
<li>You will always be credited for your work!</li>
</ul>
</li>
</ul>

<h4 id="apache-license-20">Apache License 2.0&nbsp;<a class="hanchor" href="#apache-license-20" aria-label="Anchor link for: Apache License 2.0">🔗</a></h4>
<p>
<figure>
  <img src="http://www.apache.org/img/asf_logo.png" alt="Open-source licensing: the Apache License 2.0 offers more than MIT License" loading="lazy">
  <figcaption>Slightly stricter than the MIT License, the Apache License 2.0 offers more protection to the author</figcaption>
</figure>
</p>
<p>The Apache License 2.0 is only slightly more restrictive than the MIT License, but it defines a few more rules than the MIT License. This can be useful if you want to make sure your work is given proper credit back to you and you care a little more about how it&rsquo;s used. You can read more <a href="https://tldrlegal.com/license/apache-license-2.0-%28apache-2.0%29">here</a>.</p>
<p>You can and cannot do the same things mentioned above for the MIT License. So we will just highlight the changes!</p>
<p>You can:</p>
<ul>
<li>Same as MIT License</li>
<li><strong>Use patent claims</strong> (might be advanced for most of you, but can be useful for bigger projects)</li>
<li><strong>Place a warranty</strong> (lets you have a warranty on your code, if desired)</li>
</ul>
<p>You cannot:</p>
<ul>
<li>Same as MIT License</li>
</ul>
<p>You must:</p>
<ul>
<li>Same as MIT License</li>
<li><strong>Openly state changes you make from the original project</strong></li>
<li><strong>Include the NOTICE</strong> (if the project has a NOTICE file, you have to keep it in copies / modified works)</li>
</ul>

<h4 id="mozilla-public-license-20">Mozilla Public License 2.0&nbsp;<a class="hanchor" href="#mozilla-public-license-20" aria-label="Anchor link for: Mozilla Public License 2.0">🔗</a></h4>
<p>
<figure>
  <img src="https://opensource.com/sites/default/files/styles/image-full-size/public/images/law/OSCD_MPL_520x292_FINAL.png?itok=ELAkrGpF" alt="Open-source licensing: Introducing the Mozilla Public License 2.0" loading="lazy">
  <figcaption>Introducing the Mozilla Public License 2.0</figcaption>
</figure>
</p>
<p>The next step up from the Apache License 2.0 is the Mozilla Public License 2.0. This license has the same basic rights as the Apache License 2.0, but it goes a little more in-depth about how the code can be re-used. This is my personal favorite license! You can read more <a href="https://tldrlegal.com/license/mozilla-public-license-2.0-%28mpl-2%29">here</a>.</p>
<p>Most of the things for what you can and cannot do are the same as the Apache License (and thereby, the MIT License). So again, we&rsquo;ll just highlight the changes.</p>
<p>You can:</p>
<ul>
<li>Same as Apache License 2.0</li>
</ul>
<p>You cannot:</p>
<ul>
<li>Same as Apache License 2.0</li>
</ul>
<p>You must:</p>
<ul>
<li>Same as Apache License 2.0</li>
<li><strong>Disclose the source</strong> (any changes made using MPL&rsquo;d code must also be made open under the MPL!)</li>
<li><strong>Include the original</strong> (either the source code or instructions to get the original code must be provided)</li>
</ul>

<h4 id="gnu-public-license-v3">GNU Public License v3&nbsp;<a class="hanchor" href="#gnu-public-license-v3" aria-label="Anchor link for: GNU Public License v3">🔗</a></h4>
<p>
<figure>
  <img src="https://upload.wikimedia.org/wikipedia/commons/9/93/GPLv3_Logo.svg" alt="Open-source licensing: the GNU Public License v3" loading="lazy">
  <figcaption>Open-source licensing: the GNU Public License v3</figcaption>
</figure>
</p>
<p>The GNU Public License v3, also known as the GPLv3, is one of the most well-known and strict licenses in open-source. It has very specific rules for how the code can be used and shared, and leaves a lot of control over to the author. In a sense, it&rsquo;s &ldquo;after&rdquo; the MPL 2.0, but it also has some key differences. You can read more about it <a href="https://tldrlegal.com/license/gnu-general-public-license-v3-%28gpl-3%29">here</a>.</p>
<p>Again, we will highlight the changes from the Mozilla Public License 2.0.</p>
<p>You can:</p>
<ul>
<li>Same as Mozilla Public License 2.0 (<strong>except sublicensing</strong>)</li>
</ul>
<p>You cannot:</p>
<ul>
<li>Same as Mozilla Public License 2.0</li>
<li><strong>Sublicense the code</strong> (this is a big concept worth understanding if you use the GPLv3)</li>
</ul>
<p>You must:</p>
<ul>
<li>Same as Mozilla Public License 2.0</li>
<li><strong>Include original copyright</strong> (must be retained in all copies or modified works)</li>
<li><strong>Include install instructions</strong> (you must document how to install the software)</li>
</ul>

<h2 id="go-forth-and-conquer">Go forth and conquer!&nbsp;<a class="hanchor" href="#go-forth-and-conquer" aria-label="Anchor link for: Go forth and conquer!">🔗</a></h2>
<p>Congratulations! You now know a little bit more about licensing, open-source licenses, and how to use them. Hopefully this will help emphasize why and how licenses are important in open-source software. In many ways, the license you choose to use can even be more important than any lines of code you write. That might sound absurd, but when it comes to deciding how your code can be reused, modified, or distributed, it&rsquo;s something that can be vitally important to your project.</p>
<p>Those of you without a license, please consider choosing one, or talk to other teammates of your projects about what license you all want to use. If you code in the open, make sure you are protecting yourself and paying attention to how you want other people to use your code.</p>]]></description></item><item><title>HFOSS: Reviewing "What is Open Source?", Steve Weber</title><link>https://jwheel.org/blog/2016/02/reviewing-what-is-open-source-steve-weber/</link><pubDate>Mon, 08 Feb 2016 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2016/02/reviewing-what-is-open-source-steve-weber/</guid><description><![CDATA[<p>
<figure>
  <img src="http://steveweber.typepad.com/.a/6a00d83423046e53ef00e55004c30a8833-150wi" alt="What is Open Source? - Steve Weber" loading="lazy">
  <figcaption>Steve Weber</figcaption>
</figure>
</p>
<p>This blog post is part of an assignment for my <a href="https://hfoss-ritjoe.rhcloud.com/">Humanitarian Free and Open Source Software Development</a> course at the <a href="https://www.rit.edu/">Rochester Institute of Technology</a>. For this assignment, we are tasked with reading Chapter 3 of Steve Weber&rsquo;s &ldquo;<em><a href="https://hfoss-ritjoe.rhcloud.com/static/books/Weber-SuccessofOpenSource-Chap3.pdf">The Success of Open Source</a></em>&rdquo;. The summary of the reading is found below.</p>

<h2 id="who">Who&nbsp;<a class="hanchor" href="#who" aria-label="Anchor link for: Who">🔗</a></h2>
<ul>
<li><a href="https://en.wikipedia.org/wiki/Steven_Weber_%28professor%29">Steve Weber</a>, professor at the University of California, Berkeley</li>
</ul>

<h2 id="what">What&nbsp;<a class="hanchor" href="#what" aria-label="Anchor link for: What">🔗</a></h2>
<ul>
<li>&ldquo;<em>The Success of Open Source</em>&rdquo;</li>
</ul>

<h2 id="where">Where&nbsp;<a class="hanchor" href="#where" aria-label="Anchor link for: Where">🔗</a></h2>
<ul>
<li>Excerpt of reading found in the HFOSS <a href="https://hfoss-ritjoe.rhcloud.com/static/books/Weber-SuccessofOpenSource-Chap3.pdf">ofCourse resources</a> or available for purchase on <a href="http://www.amazon.com/Success-Open-Source-Steven-Weber/dp/0674018583">Amazon</a></li>
</ul>

<h2 id="when">When&nbsp;<a class="hanchor" href="#when" aria-label="Anchor link for: When">🔗</a></h2>
<ul>
<li>August 22nd, 2005</li>
</ul>

<h2 id="the-gist">The Gist&nbsp;<a class="hanchor" href="#the-gist" aria-label="Anchor link for: The Gist">🔗</a></h2>
<p><em>You&rsquo;re in a social setting. Someone says &ldquo;Hey, did you ever read X?&rdquo; You quickly respond &ldquo;Oh heck yeah! X was {awesome,terrible}!&rdquo; The person next to you in the circle says &ldquo;Oh snap, I didn&rsquo;t read X. What was it about&hellip;?&rdquo; You have exactly 3 lines, MAX, to prove you are not a hipster—and &ldquo;The Gist&rdquo; is those 3 lines.</em></p>
<p>Chapter 3 of &ldquo;<em>What is Open Source?</em>&rdquo; essentially aims to define what open source development is as a &ldquo;thing&rdquo;, describe the process in which it works, the problems it tries to solve, and how it does them. He lightly touches on many core concepts of open source, such as licensing, who is a contributor and what makes someone a contributor in open source, and how the new method of collaboration has positives and negatives—something that reflects human nature.</p>

<h2 id="the-good">The Good&nbsp;<a class="hanchor" href="#the-good" aria-label="Anchor link for: The Good">🔗</a></h2>
<p>The three best things I took out of this excerpt were:</p>
<ul>
<li>The eight general principles of what people do in the open source process (starting on pg. 73)
<ul>
<li>I thought this was a good analysis and breakdown of how things tend to work in open source, and is something I think I will end up referring to even in the future.</li>
</ul>
</li>
<li>Analyzing Linus Torvalds&rsquo; role as the &ldquo;<a href="https://en.wikipedia.org/wiki/Benevolent_dictator_for_life">Benevolent Dictator for Life</a>&rdquo; in the Linux project and how that is reflective of some open source communities</li>
<li>How exactly open source licensing tries to build a positive and open social structure beneficial to the user (pg. 85)
<ul>
<li>Licensing is something I&rsquo;m passionate about in particular with open source, and the author&rsquo;s words resounded with my own thoughts about licensing. It&rsquo;s leaving me wanting to develop my own thoughts and opinions on open source licensing further.</li>
</ul>
</li>
</ul>

<h2 id="the-bad">The Bad&nbsp;<a class="hanchor" href="#the-bad" aria-label="Anchor link for: The Bad">🔗</a></h2>
<p>My least favorite things from this excerpt were:</p>
<ul>
<li>BSD-style licenses are prohibitive to real collaboration (pg. 63)
<ul>
<li>I disagree with this, especially as it seems to have a particular favoring towards the GPL. While I may also represent the opposite bias, I don&rsquo;t think these licenses necessarily make a project &ldquo;not vitally collaborative on a very large scale&rdquo; as the author states.</li>
</ul>
</li>
<li>Principle #8 of the open source process: &ldquo;Talk a lot&rdquo; (pg. 81-82)
<ul>
<li>I agree, talking happens a <em>lot</em> in open source… on hot topic, controversial topics. Usually this happens on the development lists more than other things. But what are &ldquo;other things&rdquo;? For larger projects, there are more areas that are important, such as Marketing, Translations / Globalization, on-boarding new contributors, and more. <strong>There are not enough people talking in these groups</strong>. I think that strictly from a code perspective, topics are many and discussion is much. But on other areas of a project? Unless you have people being paid full-time to work on it, volunteers are far and few in between.</li>
<li>I also partly disagree with the vehemence of open source discussion. I do not think we can disagree lists like the Linux Kernel Mailing Lists are not the most friendly of places. But there are projects that have clearly defined codes of conduct and how to behave. In my experience in Fedora, the community was beyond welcoming to me when I began contributing, and I never experienced any of the harshness or close-mindedness that is sometimes associated with open-source development. I think the example the author used then may have been the norm, but over the years, I think others have seen that the harshness is not sustainable and closes the door on adding new, valuable insight from potential contributors, and they try to reflect this in their own projects.</li>
</ul>
</li>
<li>Lastly, I hope <a href="https://hfoss-ritjoe.rhcloud.com/instructor">dzho</a> will let me pass on the third &ldquo;bad&rdquo; thing for the list, as the above two topics were the only things that distinctly stuck out to me.</li>
</ul>

<h2 id="the-questions">The Questions&nbsp;<a class="hanchor" href="#the-questions" aria-label="Anchor link for: The Questions">🔗</a></h2>
<p>Three questions I had after reading the chapter were:</p>
<ul>
<li>Eleven years have passed since the book was published. What does the author think of the open source scene in 2016?</li>
<li>In particular, are open source communities largely as harsh as he originally described or does he feel like a new era is beginning or begun in terms of the inclusiveness of open source projects?</li>
<li>What made you believe that BSD-style licenses are contradictory to real collaboration in open source?</li>
</ul>

<h2 id="your-review">Your Review&nbsp;<a class="hanchor" href="#your-review" aria-label="Anchor link for: Your Review">🔗</a></h2>
<p><em>Imagine you are on Yelp, Amazon, eBay, Netflix, or any other online community that has customer reviews. This is the message that you want to leave behind, to represent yourself, and inform (or warn) others. You should add a quick rating system of your choosing (X/Y stars, X thumbs up) as part of the review.</em></p>
<p>★ ★ ★ ★ ☆</p>
<p>Overall, I rate this article four out of five stars. I think it did a fairly effective job of analyzing open source in the twenty-first century. While some small sections of the book may have changed in the eleven years since original publication, most of the content is still very much relevant and very much important. I would share this chapter with a friend or another student who was seriously considering getting involved with open source. That goes without saying, I might explicitly add a few extra comments of my own to the small subset of the chapter that I disagreed with.</p>]]></description></item><item><title>HFOSS: The First Flight</title><link>https://jwheel.org/blog/2016/01/hfoss-first-flight/</link><pubDate>Thu, 28 Jan 2016 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2016/01/hfoss-first-flight/</guid><description><![CDATA[<p>
<figure>
  <img src="/blog/2016/01/FOSS-@-MAGIC.png" alt="HFOSS: The FOSS @ MAGIC logo" loading="lazy">
  <figcaption>FOSS @ MAGIC (<a href="http://magic.rit.edu/foss/" class="bare">http://magic.rit.edu/foss/</a>), the program that hosts the FOSS minor</figcaption>
</figure>
</p>
<p>This past year, I enrolled as a student at the <a href="http://www.rit.edu/">Rochester Institute of Technology</a> in Rochester, NY. For me, this is quite a distance from my hometown just outside of Atlanta, GA. Part of the motivation that led me to choose RIT as my university of choice was its participation in <a href="https://en.wikipedia.org/wiki/Free_and_open-source_software">Free and Open Source Software</a> education and communities. RIT is one of the few schools in the United States to offer a <a href="http://magic.rit.edu/foss/minor.html">minor</a> in Free and Open Source Software.</p>
<p>As part of my time here at RIT, I plan to take on the minor. This semester marks the first milestone of this specific track for me. I am taking the <a href="http://hfoss-ritjoe.rhcloud.com/">Humanitarian Free and Open Source Software</a> (HFOSS) course, and the first assignment for our class was writing a blog post about getting introduced into the class.</p>

<h2 id="hfoss-my-expectations">HFOSS: My expectations&nbsp;<a class="hanchor" href="#hfoss-my-expectations" aria-label="Anchor link for: HFOSS: My expectations">🔗</a></h2>
<p>Going into the HFOSS course, I was reluctant because of my inexperience with programming as a whole. The course is definitely strongly focused towards a programming aspect, but it is not strictly dedicated to firing out open source code.</p>
<p>On the contrary, this course is an introduction to &ldquo;FOSS&rdquo; as a whole. What is it? What tools are used in open source? How do people communicate and contribute? Why work in the open? These are all questions that the course seems targeted towards answering. In order to answer these questions, many methods will be used, some ancillary to the programming that is necessary for many free and open source projects.</p>
<p>I expect this course to be a challenge because I know that I can&rsquo;t escape working on a large project or two this semester that will push my abilities and require me to adapt to meet the requirements. I am not as worried about learning the tooling, culture, or common practices that go along with open source because I am moderately familiar with them already. That goes without saying, I am not a master of it all. In the big picture for this class, I feel like I will have a head-start in some areas, while in others I will have to double up to keep up.</p>

<h2 id="hfoss-what-i-plan-to-contribute">HFOSS: What I plan to contribute&nbsp;<a class="hanchor" href="#hfoss-what-i-plan-to-contribute" aria-label="Anchor link for: HFOSS: What I plan to contribute">🔗</a></h2>
<p>This semester, I&rsquo;m also hoping to contribute back to the class as well as take something out of it. With some of my experience with open source tooling and understanding of how other projects work, I hope to share my own experiences when and where needed. Additionally, I am paying extra attention for open source communities or projects where I might be able to contribute especially closer to the end of the semester, to fulfill the humanitarian aspect of the course.</p>
<p>By default, the course is targeted towards the <a href="https://en.wikipedia.org/wiki/One_Laptop_per_Child">One Laptop Per Child</a> (OLPC) program. Towards the end of the semester, the final project is creating a game on the hardware used on these machines with a spin towards 4th grade math curriculum in New York State. Another project I am a contributor of, the <a href="https://fedoraproject.org/wiki/Overview">Fedora Project</a>, has close ties to the OLPC program and helps develop the desktop environment used on the machines, <a href="https://spins.fedoraproject.org/en/soas/">Sugar on a Stick</a>.</p>
<p>However, there is flexibility about what the final project could be on a per-student basis. Therefore, I am looking out for a particular project that I might feel a personal connection or passion towards where I feel I could help make an impact.</p>
<p>This sets the course and itinerary for the trip… we&rsquo;ll see where I land as the semester progresses.</p>]]></description></item><item><title>Gotta Badge 'Em All: Speak Up!</title><link>https://jwheel.org/blog/2016/01/gotta-badge-em-all-speak-up/</link><pubDate>Mon, 04 Jan 2016 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2016/01/gotta-badge-em-all-speak-up/</guid><description><![CDATA[<p><em>This article is part of an ongoing series about <a href="https://jwfblog.wpenginepowered.com/2015/11/gotta-badge-em-introduction-fedora-badges/">how to earn specific Fedora badges</a>. Learn more about the Speak Up! badge!</em></p>

<h2 id="speak-up-what-is-it">&ldquo;Speak Up!&rdquo;: What is it?&nbsp;<a class="hanchor" href="#speak-up-what-is-it" aria-label="Anchor link for: &ldquo;Speak Up!&rdquo;: What is it?">🔗</a></h2>
<p>
<figure>
  <img src="/blog/2016/01/Fedora-Badges-Speak-Up.png" alt="Speak Up! badge, awarded to any participant in a Fedora IRC meeting" loading="lazy">
  <figcaption>\&#34;Participated in an IRC meeting.\&#34;</figcaption>
</figure>
</p>
<p>The <a href="https://badges.fedoraproject.org/badge/speak-up!"><em>Speak Up!</em> badge</a> is categorized as a &ldquo;Community Badge&rdquo; and is defined in this <a href="https://github.com/oddshocks/badges/blob/master/docs/badges.rst">Trac ticket</a>. But what&rsquo;s the real scoop behind the <em>Speak Up!</em> badge?</p>
<p>In short, the <em>Speak Up!</em> badge is awarded to anyone who says something in an official Fedora IRC meeting. A lot of important conversations and work in Fedora all happen in IRC, and meetings are the best time to get the pulse of a particular subgroup or team. It&rsquo;s also a great time to introduce yourself to other contributors and begin moving towards becoming an active contributor. This badge is a great gateway towards earning many others!</p>

<h2 id="how-do-i-earn-speak-up">How do I earn &ldquo;Speak Up!&rdquo;?&nbsp;<a class="hanchor" href="#how-do-i-earn-speak-up" aria-label="Anchor link for: How do I earn &ldquo;Speak Up!&rdquo;?">🔗</a></h2>
<p>Earning <em>Speak Up!</em> requires you to be somewhat familiar with the <a href="https://en.wikipedia.org/wiki/Internet_Relay_Chat">Internet Relay Chat</a> protocol (a.k.a. IRC). If you&rsquo;ve never used IRC before, it&rsquo;s like a large chat network. You connect to a particular IRC network, and you can join any number of chat rooms (called channels). The <a href="http://freenode.net/">Freenode IRC network</a> is a favorite of many open source projects and organizations. This includes Fedora! Fedora has several different IRC channels for all kinds of purposes. General support is in the #fedora channel, the Design Team is in <em><a href="http://webchat.freenode.net/?channels=fedora-design">#fedora-design</a></em>, the Marketing team is in <a href="http://webchat.freenode.net/?channels=fedora-mktg"><em>#fedora-mktg</em></a>, the Fedora developers are in <em><a href="http://webchat.freenode.net/?channels=fedora-devel">#fedora-devel</a></em>, and the list goes on!</p>
<p>Usually on a regular basis, most of the Fedora subgroups have meetings where they discuss the tasks on their agendas, look at what needs doing, and welcome any newcomers! Introducing yourself in a Fedora IRC meeting is one of the best ways to begin the journey of becoming a contributor and meeting other contributors who are willing to help you get started.</p>
<p>You can check the <a href="https://apps.fedoraproject.org/calendar/">Fedora Calendar app</a> to see when a particular subgroup or team meets. For example, the Fedora Community Operations team meets on Tuesdays at 17:00 UTC in <a href="http://webchat.freenode.net/?channels=fedora-meeting-2"><em>#fedora-meeting-2</em></a>. Find the meeting time for a team you&rsquo;re looking at contributing to and see if you can make yourself available for that time slot. When the meeting begins, introduce yourself towards the beginning. It doesn&rsquo;t have to be complex! Just say hello, who you are, and maybe a few words on why or how you want to contribute. And that&rsquo;s all it takes!</p>
<p>One thing to keep in mind is that to be awarded this badge, your IRC nickname must be the same as your Fedora Account System username, or you must specify your IRC nickname in your account. In Fedora IRC meetings, everything is logged, so the Meetbot will know if your username said anything in the meeting.</p>
<p>Congratulations, you have now earned the <em>Speak Up!</em> badge!</p>

<h2 id="the-speak-up-tldr">The &ldquo;Speak Up!&rdquo; tl;dr&nbsp;<a class="hanchor" href="#the-speak-up-tldr" aria-label="Anchor link for: The &ldquo;Speak Up!&rdquo; tl;dr">🔗</a></h2>
<ol>
<li>Make sure your IRC nickname is the same as your Fedora Account System username, or you have your IRC nickname specified in your account</li>
<li>Find out when a subgroup or team that interests you is meeting on the <a href="https://apps.fedoraproject.org/calendar/">Fedora Calendar app</a></li>
<li>Find time to attend meeting, speak up and say hello! We don&rsquo;t bite. :)</li>
</ol>]]></description></item><item><title>Gotta Badge 'Em All: Vacation</title><link>https://jwheel.org/blog/2015/12/gotta-badge-em-all-vacation/</link><pubDate>Mon, 21 Dec 2015 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2015/12/gotta-badge-em-all-vacation/</guid><description><![CDATA[<p><em>This article is part of an ongoing series about <a href="https://jwfblog.wpenginepowered.com/2015/11/gotta-badge-em-introduction-fedora-badges/">how to earn specific Fedora badges</a>. Learn more about the Vacation badge!</em></p>

<h2 id="vacation-what-is-it">&ldquo;Vacation&rdquo;: What is it?&nbsp;<a class="hanchor" href="#vacation-what-is-it" aria-label="Anchor link for: &ldquo;Vacation&rdquo;: What is it?">🔗</a></h2>
<p>
<figure>
  <img src="/blog/2015/12/Vacation-badge.png" alt="Vacation badge, given to contributors who mark when they&rsquo;re away in a calendar" loading="lazy">
  <figcaption>\&#34;Sip the lemonade away (You deserve it for remembering your responsibility)!\&#34;</figcaption>
</figure>
</p>
<p>The <a href="https://badges.fedoraproject.org/badge/vacation"><em>Vacation</em> badge</a> is categorized as a &ldquo;Community Badge&rdquo; and is defined in this <a href="https://fedorahosted.org/fedora-badges/ticket/245">Trac ticket</a>. But what&rsquo;s the real scoop behind the <em>Science</em> badge?</p>
<p>With the December holiday season right around the corner, this seemed like the perfect badge to feature this week. In short, the <em>Vacation</em> badge is awarded to contributors who mark when they will be unavailable in the Fedora <a href="https://apps.fedoraproject.org/calendar/">Calendar app</a>. Marking when you are helps others know when you will be away and know where to pick up the slack. If you an active contributor to any subgroup, team, or other entity in Fedora, this is especially important so people know when you will be away! Everyone needs a vacation every once in a while, so let others know when &ldquo;the doctor is in&rdquo; becomes the &ldquo;the doctor is out&rdquo;.</p>

<h2 id="how-do-i-earn-vacation">How do I earn &ldquo;Vacation&rdquo;?&nbsp;<a class="hanchor" href="#how-do-i-earn-vacation" aria-label="Anchor link for: How do I earn &ldquo;Vacation&rdquo;?">🔗</a></h2>
<p>Earning the <em>Vacation</em> badge is simple. To earn it, you will need an active account in the Fedora Account System, and it is only recommended you do this if you are an active contributor in some aspect of the Project.</p>
<p>To earn it, first navigate to the Fedora <a href="https://apps.fedoraproject.org/calendar/">Calendar app</a> and sign in at the top with your FAS information. Once you do so, go to the <a href="https://apps.fedoraproject.org/calendar/vacation/">Vacations calendar</a> and create a new entry by clicking the &ldquo;+&rdquo; button in the side bar. For <em>Meeting name</em>, just fill in your username. Choose the start and end dates for when you will be away (and times, if necessary). If you wish, you can include some extra information or comments about your availability in <em>Information</em> box.</p>
<p>Once everything looks good to you, hit the &ldquo;Add&rdquo; button at the bottom, and viola! You have now added when you will be away to the calendar and Fedora contributors will be able to quickly see when you are away and when you will be around after your vacation ends. You will be automatically awarded the badge.</p>

<h2 id="the-vacation-tldr">The &ldquo;Vacation&rdquo; tl;dr&nbsp;<a class="hanchor" href="#the-vacation-tldr" aria-label="Anchor link for: The &ldquo;Vacation&rdquo; tl;dr">🔗</a></h2>
<ol>
<li>Sign into the Fedora <a href="https://apps.fedoraproject.org/calendar/">Calendars app</a> and visit the <a href="https://apps.fedoraproject.org/calendar/vacation/">Vacations calendar</a></li>
<li>Share when you will be unavailable by creating a new event and adding it to the calendar</li>
<li>Get badge!</li>
</ol>]]></description></item><item><title>WordPress Cron, CloudFlare, and SSL</title><link>https://jwheel.org/blog/2015/12/wordpress-cron-cloudflare-ssl/</link><pubDate>Wed, 16 Dec 2015 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2015/12/wordpress-cron-cloudflare-ssl/</guid><description><![CDATA[<p><em>Edit</em>: I haven&rsquo;t tried this in a while, but this is one of my most popular blog posts. If you try this and it works, please consider leaving a comment and let me know if anything can be improved. Thanks!</p>
<hr>
<p>Thanks to the power of <a href="https://letsencrypt.org/">LetsEncrypt</a>, I recently moved most of my sites over to using HTTPS, or in other words, SSL. I also use <a href="https://www.cloudflare.com/">CloudFlare</a> for managing most of my sites as well. What I wasn&rsquo;t fully aware of was that CloudFlare also limits scripts to increase performance (among other things). This broke WordPress cron, without my knowledge! How does one fix this issue?</p>
<p>
<figure>
  <img src="/blog/2015/12/cloudflare-banner.png" alt="WordPress cron, CloudFlare, and SSL are not always friends" loading="lazy">
  <figcaption>CloudFlare is a service that aims to make websites faster and more secure.</figcaption>
</figure>
</p>

<h2 id="wordpress-cron-scheduling-breaks">WordPress cron scheduling breaks&nbsp;<a class="hanchor" href="#wordpress-cron-scheduling-breaks" aria-label="Anchor link for: WordPress cron scheduling breaks">🔗</a></h2>
<p>Shortly after I transitioned from HTTP to HTTPS, I began noticing that many of my posts began missing their originally scheduled time. This was frustrating, as I often schedule my posts for hours when I am away or asleep, to best reach international audiences. I would wake up the following day to see that my posts failed to go out.</p>
<p>Using the <a href="http://wp-cli.org/">wp-cli utility</a>, I was able to find that my WordPress site&rsquo;s cron functionality was effectively broken. Using <code>wp-cli cron test</code> resulted in the following output:</p>
<pre tabindex="0"><code>Error: WP-Cron spawn failed with error: Cannot communicate securely with peer: no common encryption algorithm(s).
</code></pre><p>Aha! So now I knew what the issue was. Unfortunately, finding hits on Google with similarly worded searches were unsuccessful. I remembered that this was a problem that was recently encountered on the <a href="https://fedoramagazine.org/">Fedora Magazine</a>, so I asked puiterwijk, member of the Fedora Infrastructure team, about what his experience was when he fixed the same issue for the Magazine. However, his answer was completely different than what I thought the problem might be.</p>

<h2 id="fixing-wordpress-cron">Fixing WordPress cron&nbsp;<a class="hanchor" href="#fixing-wordpress-cron" aria-label="Anchor link for: Fixing WordPress cron">🔗</a></h2>
<p>The way to resolve this issue is simple. You need to map your blog&rsquo;s domain or sub-domain on your machine to the loopback address in order for your site to communicate securely with CloudFlare without the script being blocked. To do this, open your favorite text editing utility and edit <code>/etc/hosts</code> on your machine. The file should look something like this.</p>
<pre tabindex="0"><code>127.0.0.1 localhost
127.0.0.1 blog.example.com
</code></pre><p>Once you make this change, it&rsquo;s time to test. You can test whether all is functioning by either using the wp-cli test or using <code>curl</code> to verify the file is not being blocked.</p>
<pre tabindex="0"><code>$ curl -i https://jwfblog.wpenginepowered.com/wp-cron.php
HTTP/1.1 200 OK
Server: nginx/1.6.3
Date: Tue, 08 Dec 2015 01:12:47 GMT
Content-Type: text/html
Transfer-Encoding: chunked
Connection: keep-alive
X-Powered-By: PHP/5.4.16
</code></pre><p>Alternatively, if you chose to use the wp-cli utility, you should try running the cron test command. Your output should be similar.</p>
<pre tabindex="0"><code>$ wp cron test
Success: WP-Cron spawning is working as expected.
</code></pre><p>Congratulations! Your WordPress cron scheduling is back to normal.</p>

<h6 id="credit">Credit&nbsp;<a class="hanchor" href="#credit" aria-label="Anchor link for: Credit">🔗</a></h6>
<p>All credit for the findings behind this article are thanks to <a href="http://fedoraproject.org/wiki/User:Puiterwijk">puiterwijk</a> from the Fedora Infrastructure team! It would have taken me a longer time to figure this out on my own. If you&rsquo;re in a Fedora IRC channel, you should give Patrick a cookie (<code>puiterwijk++</code>). This guy does so much for Fedora and his dedication is astounding!</p>]]></description></item><item><title>Gotta Badge 'Em All: Science</title><link>https://jwheel.org/blog/2015/12/gotta-badge-em-all-science-kernel-tester/</link><pubDate>Mon, 14 Dec 2015 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2015/12/gotta-badge-em-all-science-kernel-tester/</guid><description><![CDATA[<p><em>This article is part of an ongoing series about <a href="https://jwfblog.wpenginepowered.com/2015/11/gotta-badge-em-introduction-fedora-badges/">how to earn specific Fedora badges</a>. Learn more about the Science badge!</em></p>

<h2 id="science-what-is-it">&ldquo;Science&rdquo;: What is it?&nbsp;<a class="hanchor" href="#science-what-is-it" aria-label="Anchor link for: &ldquo;Science&rdquo;: What is it?">🔗</a></h2>
<p>
<figure>
  <img src="/blog/2015/12/Science-Kernel-Tester-badge.png" alt="Science badge, given to Fedora kernel testers" loading="lazy">
  <figcaption>\&#34;You completed a run of the kernel regression test suite\&#34;</figcaption>
</figure>
</p>
<p>The <a href="https://badges.fedoraproject.org/badge/science-kernel-tester-i"><em>Science</em> badge</a> is categorized as a &ldquo;Quality [Assurance] Badge&rdquo; and is defined in this <a href="https://fedorahosted.org/fedora-badges/ticket/155">Trac ticket</a>. But what&rsquo;s the real scoop behind the <em>Science</em> badge?</p>
<p>In short, the <em>Science</em> badge is part of a <a href="https://badges.fedoraproject.org/tags/kernel/any">larger series</a> of badges given to anyone who helps test the Fedora kernel using a set of Python scripts to test for important functionalities of the kernel in your system. Running these tests and uploading the logs to the Kernel Development Team helps improve the kernel by providing useful insight and feedback for the kernel team to analyze. All it takes is running a few scripts, uploading logs, and boom - a new badge!</p>

<h2 id="how-do-i-earn-science">How do I earn &ldquo;Science&rdquo;?&nbsp;<a class="hanchor" href="#how-do-i-earn-science" aria-label="Anchor link for: How do I earn &ldquo;Science&rdquo;?">🔗</a></h2>
<p>Earning <em>Science</em> requires you to clone a git repository, run a few scripts to test the Fedora kernel on your system, and upload the logs generated by the tests to the log tracker. This began with the <a href="https://fedoraproject.org/wiki/KernelTestingInitiative">Kernel Testing Initiative</a>, pioneered by Fedora contributor <a href="https://fedoraproject.org/wiki/User:Jforbes">Justin Forbes</a> in early 2012.</p>
<p>The purpose of this initiative is to allow you, a user of Fedora, to run regression tests of the kernel in Fedora on your own system and provide an analytical report of the tests to the Fedora Kernel Team. These logs help act as &ldquo;milestones&rdquo; and &ldquo;pointers&rdquo; for how the Fedora kernel is running out in the real world. There are a lot of different architectures and environments, and this option allows users with all kinds of hardware to easily submit this info (and get a few badges for doing it)!</p>

<h4 id="clone-the-git-repository">Clone the git repository&nbsp;<a class="hanchor" href="#clone-the-git-repository" aria-label="Anchor link for: Clone the git repository">🔗</a></h4>
<p>The first step you will need to do is clone the git repository where the kernel test scripts are hosted. To do that, open a terminal and run the following command (this requires that you have <code>git</code> already installed).</p>
<pre tabindex="0"><code>$ git clone https://pagure.io/kernel-tests.git
</code></pre><p>Once you do this, the scripts will be in a new folder in whatever your present working directory is.</p>

<h4 id="run-the-scripts">Run the scripts&nbsp;<a class="hanchor" href="#run-the-scripts" aria-label="Anchor link for: Run the scripts">🔗</a></h4>
<p>Now that the scripts are on your system, you can now get started running your regression tests! In the terminal, you can run the default test by executing the script with no arguments.</p>
<pre tabindex="0"><code>$ ./runtests.sh
</code></pre><p>You can follow the progress of the tests as the script executes. Once it finishes, a log file will automatically be generated in the <code>logs/</code> folder. This is the file you will need to get your badge.</p>
<p>If you&rsquo;re feeling like being adventurous, there are a few other tests you can run.</p>
<ul>
<li>Stress</li>
<li>Performance</li>
<li>Destructive</li>
</ul>
<p>The stress and performance tests execute a few additional tests in addition to the default tests to help provide more detailed information about your system and how it works with the kernel. Whenever I run kernel tests, I usually run the default set, the stress set, and the performance set. Be warned, the first two tests can take a long time to execute, so if you are planning to do work while the tests are running, you may want to make a cup of coffee instead.</p>
<p>To run the specific tests, you can use the <code>-t</code> flag followed by the name of the test. For example, let&rsquo;s say I want to run a performance test.</p>
<pre tabindex="0"><code>$ ./runtests.sh -t performance
</code></pre><p>Note that there is also a destructive test suite. As the name implies, this set of tests does contain some functions and tests that can potentially have devastating effects on your system. In an ideal case, this would not happen, but if the odds are not in your favor, this set of tests can leave you with a broken machine.</p>
<p>If you are running a system with Rawhide or have a spare computer that you don&rsquo;t care for much, it can help to run the destructive tests on those machines. But it is not advised to run them on a system you depend on or actively use!</p>

<h4 id="upload-your-results">Upload your results&nbsp;<a class="hanchor" href="#upload-your-results" aria-label="Anchor link for: Upload your results">🔗</a></h4>
<p>Once you finish running tests, it&rsquo;s time to upload your logs. You can do so via the <a href="https://apps.fedoraproject.org/kerneltest/">Kernel Logs app</a>. Uploading the logs will require you to log into the site using your Fedora Account System username and password. After you log in, you will find the page that prompts you to upload new log files.</p>
<p>Upload any logs that were generated from the test or tests that you ran. As soon as you submit the log files, it will be registered in the system, and you will be awarded the badge automatically afterwards.</p>
<p>Congratulations, you have now earned the <em>Science</em> badge!</p>

<h2 id="the-science-tldr">The &ldquo;Science&rdquo; tl;dr&nbsp;<a class="hanchor" href="#the-science-tldr" aria-label="Anchor link for: The &ldquo;Science&rdquo; tl;dr">🔗</a></h2>
<ol>
<li>Get the test scripts by cloning their <a href="https://git.fedorahosted.org/git/kernel-tests.git">git repo</a> (<code>git clone https://git.fedorahosted.org/git/kernel-tests.git</code>)</li>
<li>Run the test scripts by executing the runtests.sh file (try the stress and performance tests too!)</li>
<li>Upload the logs to the <a href="https://apps.fedoraproject.org/kerneltest/">Kernel Logs app</a></li>
<li>Get badge!</li>
</ol>]]></description></item><item><title>Thirteen Year Legacy: Last.fm Downfall?</title><link>https://jwheel.org/blog/2015/12/thirteen-year-legacy-last-fm-downfall/</link><pubDate>Fri, 11 Dec 2015 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2015/12/thirteen-year-legacy-last-fm-downfall/</guid><description><![CDATA[<p>
<figure>
  <img src="/blog/2015/11/Lastfm-Logo.png" alt="Last.fm logo" loading="lazy">
  <figcaption>The Last.fm logo. Source: Xfdr (<a href="http://www.xfdrmag.net/ive-had-the-last-of-this-why-the-new-last-fm-layout-sucks/" class="bare">http://www.xfdrmag.net/ive-had-the-last-of-this-why-the-new-last-fm-layout-sucks/</a>)</figcaption>
</figure>
</p>
<p><a href="http://www.last.fm/">Last.fm</a> is a web service for users to track and share their music tastes with friends in an easy, simple way. A single play of a song is known as a &ldquo;Scrobble&rdquo;. Listening to music and recording the listen with Last.fm is known as &ldquo;Scrobbling&rdquo;. This is a service that has existed since 2002, originally under the name of Audioscrobbler. In 2015, Last.fm rolled out their <a href="http://www.digitalspy.com/tech/news/a664005/lastfm-unveils-brand-new-site-design-and-most-users-are-really-upset-about-it/">new website beta</a>, originally optional, but later forced upon all users.</p>
<p>Last.fm&rsquo;s site redesign is criticized widely by users, but nobody seems to be listening on the other side in CBS Interactive London offices. What went wrong with the redesign and what can be learned going forward?</p>

<h2 id="lastfm-wasnt-listening">Last.fm wasn&rsquo;t listening&nbsp;<a class="hanchor" href="#lastfm-wasnt-listening" aria-label="Anchor link for: Last.fm wasn&rsquo;t listening">🔗</a></h2>
<p>Perhaps the greatest, singular point of failure with the new Last.fm redesign (and the many months leading up to the redesign) was lack of communication and transparency with users. As someone who signed up in 2009 but only started really using the service in 2013, I never saw major interaction between employees of CBS Interactive and users of Last.fm. Usually, it has always been community volunteers speaking the voice of Last.fm and appearing as the public face of the site. The employees may have commented from time to time, but they were otherwise invisible to most users.</p>
<p>The new site redesign was the epitome of this continued state of &ldquo;non-listening&rdquo;. Without warning, the optional beta that had been available for months was forcibly rolled out, forever replacing the old layout that had existed for many years. While the new appearance certainly could be defined as &ldquo;modern&rdquo; and mobile-friendly, it was missing many of the key features users had come to know, like groups and friends. Navigating was difficult and at times buggy. The redesign felt like it was still in beta testing, but now forced as the default. There is an <a href="https://www.change.org/p/cbs-interactive-bring-old-last-fm-back">online petition</a> that has attracted over 11,000 signers to go back to the original user interface.</p>
<p>Even with 11,000 voices of protest, word from CBS Interactive is minimal. Not many people seem to know what&rsquo;s going on, if anything. This is never a good sign for any website or service. Are the doors closing soon for this thirteen year old service? Is a buyout in the cards? Nobody knows. Nobody will likely ever know until the day of an announcement, because nothing is transparent or open about Last.fm or its management.</p>

<h2 id="lastfms-small-staff">Last.fm&rsquo;s small staff&nbsp;<a class="hanchor" href="#lastfms-small-staff" aria-label="Anchor link for: Last.fm&rsquo;s small staff">🔗</a></h2>
<p>Another issue with this service (and perhaps an issue for a longer time) is that the Last.fm staff is a very small team. Even now, they&rsquo;re hiring for new web developers and Java developers - if you live in the UK, you could even <a href="http://www.last.fm/about/jobs">work for CBS Interactive today</a> (although I don&rsquo;t know if this is a job with a good outlook).</p>
<p>So what would the solution be? If the development team behind Last.fm is small, then there are better ways to create a more productive environment. Perhaps the software development model employed by the company needs reconsideration. Maybe Last.fm needs to make a larger <a href="https://github.com/lastfm">foray into open source</a>. In either case, from the outside, there it looks like a major disconnect between corporate management and the Last.fm team. Because of how opaque Last.fm is managed, it&rsquo;s impossible to know what happens behind closed doors, but something isn&rsquo;t working with their team size - that much is clear.</p>

<h2 id="now-what">Now what?&nbsp;<a class="hanchor" href="#now-what" aria-label="Anchor link for: Now what?">🔗</a></h2>
<p>Because of these decisions made over the past few months, the future of Last.fm is unclear. Many dedicated users are just Scrobbling and using <a href="http://nicholast.fm">other services</a> to use their data in a meaningful way, according to <a href="https://www.reddit.com/r/lastfm/comments/3u2ic3/lastfm_any_hope_left/cxbegwl">Reddit</a>.</p>

<h4 id="librefm">Libre.fm&nbsp;<a class="hanchor" href="#librefm" aria-label="Anchor link for: Libre.fm">🔗</a></h4>
<p>As for myself, I&rsquo;m preparing for a move to a new service. The future for Last.fm is bleak. I want to stay on the boat for as long as possible, but I don&rsquo;t know if this is a sustainable idea for any longer, and I have invested too much time, music, and data into Last.fm to willingly part with it. I was recently made aware to an awesome, open source <a href="https://github.com/kabniel/last2libre">Python toolset</a> that lets users back up any user&rsquo;s Scrobbles to a text file and export it to a service such as <a href="https://libre.fm/">Libre.fm</a>. Libre.fm isn&rsquo;t the most aesthetically pleasing or the most powerful site, but it&rsquo;s stable and open. Anyone who wants to hack on a new feature has access to the source code to do whatever they&rsquo;d like. A platform such as this is much more collaborative and allows for a more positive future than what Last.fm has now.</p>
<p>If you&rsquo;re a developer, you can have a hand in building the future by contributing to <a href="https://git.gnu.io/gnu/gnu-fm">GNU FM</a>, the platform powering Libre.fm. If there&rsquo;s a feature you want, you can add a request on their <a href="https://git.gnu.io/gnu/gnu-fm/issues">issue tracker</a>. Or if you&rsquo;re a system administrator, you can even <a href="https://git.gnu.io/gnu/gnu-fm/blob/master/gnufm_install.txt">install GNU FM yourself</a> and run your own &ldquo;private Last.fm&rdquo; site.</p>
<p>Hopefully there is something to be learned about everything that went wrong with Last.fm and we can look forward to a more open future with the availability of options such as Libre.fm.</p>]]></description></item><item><title>Fedora Elections 2015: Be informed!</title><link>https://jwheel.org/blog/2015/12/fedora-2015-elections-be-informed/</link><pubDate>Tue, 08 Dec 2015 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2015/12/fedora-2015-elections-be-informed/</guid><description><![CDATA[<p>
<figure>
  <img src="/blog/2015/12/Fedora-I-Voted-badge.png" alt="Fedora Elections are the time to impact the Project" loading="lazy">
  <figcaption>Fedora Elections are the time to impact the Project. <em>Source</em>: christoph-wickert.de (<a href="http://www.christoph-wickert.de/blog/2012/12/07/fedora-elections-dont-forget-to-vote/" class="bare">http://www.christoph-wickert.de/blog/2012/12/07/fedora-elections-dont-forget-to-vote/</a>)</figcaption>
</figure>
</p>
<p>Today, the Fedora Elections for December 2015 officially began at 00:00 UTC. The voting period will be open from now until December 14th, 2015, at 23:59 UTC. Fedora is a community-driven project, and voting is one of the greatest ways you can have an impact in how Fedora runs, either as a user or a contributor. Your vote is powerful, and you should be informed before casting your vote!</p>

<h2 id="fedora-elections-for-famsco">Fedora Elections for FAmSCo&nbsp;<a class="hanchor" href="#fedora-elections-for-famsco" aria-label="Anchor link for: Fedora Elections for FAmSCo">🔗</a></h2>
<p>This Election is especially interesting because of the open seats for the <strong>Fedora Ambassador Steering Committee</strong> (FAmSCo). The plan is to phase out FAmSCo in order of the Fedora Outreach Steering Committee (FOSCo). However, this plan is still one that is in progress and there are many details being hammered out. Because of the plans to transition, the current board sitting in the Fedora Ambassador Steering Committee have been elected for the past year, something that normally has new elections every six months. In the interim period while FOSCo is expanded, FAmSCo is running an Election to bring new, fresh blood into the board.</p>

<h2 id="inform-yourself">Inform yourself&nbsp;<a class="hanchor" href="#inform-yourself" aria-label="Anchor link for: Inform yourself">🔗</a></h2>
<p>There are a lot of things happening across Fedora right now, so it is important that you inform yourself for the Fedora Elections. I have had the unique perspective of reading, reviewing, and proofreading many of the candidate interviews. As a result, I have had the advantage of reading every candidate&rsquo;s platform and what their vision for the Project is. <strong>It&rsquo;s important that you vote with an informed opinion about whose platforms you agree with most</strong>. There are a lot of important topics on the table for this Election cycle, and an informed vote is the best way to make a vote. Please take the time to read the candidate interviews!</p>

<h4 id="fedora-elections-december-2015-interviews">Fedora Elections, December 2015 Interviews&nbsp;<a class="hanchor" href="#fedora-elections-december-2015-interviews" aria-label="Anchor link for: Fedora Elections, December 2015 Interviews">🔗</a></h4>
<ul>
<li><a href="https://communityblog.fedoraproject.org/tag/famsco/">Fedora Ambassador Steering Committee interviews</a></li>
<li><a href="https://communityblog.fedoraproject.org/tag/fesco/">Fedora Engineering Steering Committee interviews</a></li>
<li><a href="https://communityblog.fedoraproject.org/tag/council/">Fedora Council interviews</a></li>
</ul>]]></description></item><item><title>Gotta Badge 'Em All: Extra! Extra!</title><link>https://jwheel.org/blog/2015/12/gotta-badge-em-all-extra-extra/</link><pubDate>Mon, 07 Dec 2015 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2015/12/gotta-badge-em-all-extra-extra/</guid><description><![CDATA[<h2 id="extra-extra-what-is-it">&ldquo;Extra! Extra!&rdquo;: What is it?&nbsp;<a class="hanchor" href="#extra-extra-what-is-it" aria-label="Anchor link for: &ldquo;Extra! Extra!&rdquo;: What is it?">🔗</a></h2>
<p>
<figure>
  <img src="/blog/2015/11/Extra-Extra.png" alt="Extra! Extra! badge, given to Fedora Magazine contributors" loading="lazy">
  <figcaption>You contributed to Fedora Magazine (fedoramagazine.org (<a href="https://fedoramagazine.org/" class="bare">https://fedoramagazine.org/</a>))</figcaption>
</figure>
</p>
<p>The <a href="https://badges.fedoraproject.org/badge/extra!--extra!"><em>Extra! Extra!</em> badge</a> is categorized as a &ldquo;Content Badge&rdquo; and is defined in this <a href="https://fedorahosted.org/fedora-badges/ticket/51">Trac ticket</a>. But what&rsquo;s the real scoop behind the <em>Extra! Extra!</em> badge?</p>
<p>In short, the <em>Extra! Extra!</em> badge is awarded to Fedora contributors that write an article for the <a href="https://fedoramagazine.org/">Fedora Magazine</a>, the premiere publication offered by the Fedora Project. The Fedora Magazine offers user-oriented content relating to the Fedora Project, whether it&rsquo;s a <a href="https://fedoramagazine.org/never-leave-irc-znc/">how-to</a> on using some awesome software, a major <a href="https://fedoramagazine.org/in-summary-flock-to-fedora-2015/">event report</a>, or other <a href="https://fedoramagazine.org/linux-foundation-launches-new-video-series-world-without-linux/">cool things</a> happening in the Linux world.</p>

<h2 id="how-do-i-earn-extra-extra">How do I earn &ldquo;Extra! Extra!&rdquo;?&nbsp;<a class="hanchor" href="#how-do-i-earn-extra-extra" aria-label="Anchor link for: How do I earn &ldquo;Extra! Extra!&rdquo;?">🔗</a></h2>
<p>Earning <em>Extra! Extra!</em> requires a good idea and a willingness to write about it! To write your own article for the Fedora Magazine, you should start by shooting a brief introduction to the <a href="https://lists.fedoraproject.org/pipermail/marketing/">Marketing mailing list</a>.  Tell a little bit about yourself, what you&rsquo;re interested in, and maybe why you want to write for the Magazine. After you introduce yourself, you will be granted contributor privileges on the Magazine!</p>
<p>You can learn more about the process for writing for the Fedora Magazine on their <a href="http://fedoramagazine.org/writing-an-article-for-the-fedora-magazine/">walkthrough page</a>.</p>
<p>The first step to getting your article published and syndicated is by proposing a pitch for your idea. A pitch is a short, brief summary of what you want to write about and how you want to go about it. This helps make it easier to approve articles and prevent you from wasting your time writing an article if there is a reason that your idea isn&rsquo;t suitable for the Magazine. Get started by learning how to <a href="https://fedoramagazine.org/writing-a-new-pitch/">write a good pitch</a>!</p>
<p>After your pitch is ready, send a link to your article to the Marketing mailing list announcing that it is ready for review. All pitches and drafts are reviewed weekly at the Magazine editorial board meetings.</p>
<p>Once your article is given the &ldquo;OK&rdquo;, you are free to begin drafting your article and move towards publication. After your article goes live, you will be manually awarded the badge!</p>

<h2 id="the-extra-extra-tldr">The &ldquo;Extra! Extra!&rdquo; tl;dr&nbsp;<a class="hanchor" href="#the-extra-extra-tldr" aria-label="Anchor link for: The &ldquo;Extra! Extra!&rdquo; tl;dr">🔗</a></h2>
<ol>
<li>Introduce yourself on the <a href="https://lists.fedoraproject.org/pipermail/marketing/">Marketing mailing list</a>, explaining why you want to write for the Magazine and what your idea for an article is</li>
<li>Once you are promoted, <a href="https://fedoramagazine.org/writing-a-new-pitch/">start a pitch</a> to be reviewed by the editorial board, email to list when done</li>
<li>When your pitch is approved, begin drafting and move towards publishing</li>
<li>After publishing, badge is manually awarded by Magazine editors</li>
</ol>
<p>This information is also on the Magazine &ldquo;<a href="http://fedoramagazine.org/writing-an-article-for-the-fedora-magazine/">How to write an article</a>&rdquo; page.</p>]]></description></item><item><title>Mumble ready for testing</title><link>https://jwheel.org/blog/2015/12/mumble/</link><pubDate>Thu, 03 Dec 2015 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2015/12/mumble/</guid><description><![CDATA[<h2 id="mumble-is-back-in-fedora">Mumble is back in Fedora&nbsp;<a class="hanchor" href="#mumble-is-back-in-fedora" aria-label="Anchor link for: Mumble is back in Fedora">🔗</a></h2>
<p>
<figure>
  <img src="https://communityblog.fedoraproject.org/wp-content/uploads/2015/12/Mumble.png" alt="Mumble, a free and open-source VoIP program" loading="lazy">
  <figcaption>Mumble, a free and open-source VoIP program</figcaption>
</figure>
</p>
<p>The popular Voice Over IP (VoIP) program, <a href="http://wiki.mumble.info/wiki/Main_Page">Mumble</a>, is being repackaged again for Fedora 22 and 23. Fedora contributor <a href="https://bodhi.fedoraproject.org/users/fedpop">fedpop</a> unretired the package from the Fedora Package Database and is working on getting it added to the stable repositories.</p>
<p>Mumble is available for testing for Fedora 22 and 23 users. Once enough positive feedback is received, it will be added back to the stable repositories for all users. Testers are welcome, especially for Fedora 22!</p>

<h2 id="how-to-test-mumble">How to test Mumble&nbsp;<a class="hanchor" href="#how-to-test-mumble" aria-label="Anchor link for: How to test Mumble">🔗</a></h2>
<p>To test, open a command line and run the following command.</p>
<pre tabindex="0"><code>$ sudo dnf install mumble --enablerepo=updates-testing
</code></pre><p>Confirm the installation and the application will appear on your system. Give it a run and make sure everything works as expected! If it all checks out, leave feedback for the build in Bodhi so the package. This helps move it closer to being packaged for the stable repositories (links are below).</p>
<p>For help enabling the testing repository, see the <a href="https://fedoraproject.org/wiki/QA:Updates_Testing">QA Testing wiki article</a>.</p>

<h2 id="why-i-love-mumble">Why I love Mumble&nbsp;<a class="hanchor" href="#why-i-love-mumble" aria-label="Anchor link for: Why I love Mumble">🔗</a></h2>
<p>Mumble is a package I originally installed when I first began using Fedora in Fedora 20. It is one of the few major VoIP clients that can be classified as &ldquo;FOSS&rdquo; (Free and Open Source) and is available on multiple platforms. It&rsquo;s fairly simple to get a server (Murmur) up and running, and it&rsquo;s a great way for communicating over voice with friends, family, or communities. I used to use it often when I was active in various Minecraft server communities, and for a short time, I used it for my own Minecraft community as well.</p>
<p>When it originally disappeared in Fedora 21, I was disappointed since Mumble is an important piece of software that I think is important in any modern Linux distribution. Finally, Fedora users will once again be able to seamlessly install it without having to manually compile the software.</p>
<p>Big hat tip to fedpop for repackaging this awesome piece of software! This also seems to be his first experience as a Fedora packager, so a big welcome goes out to him as well. I can&rsquo;t wait to start recommending Mumble again for Fedora users.</p>

<h2 id="find-it-in-bodhi">Find it in Bodhi&nbsp;<a class="hanchor" href="#find-it-in-bodhi" aria-label="Anchor link for: Find it in Bodhi">🔗</a></h2>
<p><strong><a href="https://bodhi.fedoraproject.org/updates/FEDORA-2015-789c21d8a6">Fedora 22</a></strong></p>
<p><strong><a href="https://bodhi.fedoraproject.org/updates/FEDORA-2015-934a0702cf">Fedora 23</a></strong></p>]]></description></item><item><title>Netflix and Linux: The First 60 Seconds</title><link>https://jwheel.org/blog/2015/12/netflix-and-linux-the-first-60-seconds/</link><pubDate>Wed, 02 Dec 2015 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2015/12/netflix-and-linux-the-first-60-seconds/</guid><description><![CDATA[<p>
<figure>
  <img src="/blog/2015/12/Linux-and-Netflix.jpg" alt="Netflix and Linux, friends at last" loading="lazy">
  <figcaption>Netflix and Linux may not agree on the desktop, but they do in the cloud. <em>Source</em>: blockless.com (<a href="https://blog.blockless.com/how-to-switch-to-linux-without-losing-your-netflix-access/" class="bare">https://blog.blockless.com/how-to-switch-to-linux-without-losing-your-netflix-access/</a>)</figcaption>
</figure>
</p>

<h2 id="netflix-linux-and-60-seconds">Netflix, Linux, and 60 seconds&nbsp;<a class="hanchor" href="#netflix-linux-and-60-seconds" aria-label="Anchor link for: Netflix, Linux, and 60 seconds">🔗</a></h2>
<p>While they have their differences on the desktop, there is one place where Netflix and Linux get along beautifully: the cloud. Netflix system administrator <a href="https://plus.google.com/112610724469645265130">Brendan Gregg</a> recently published an article on the <a href="http://techblog.netflix.com/2015/11/linux-performance-analysis-in-60s.html">Netflix blog</a> about what their administrators do in the first 60 seconds when analyzing performance. You should <a href="http://techblog.netflix.com/2015/11/linux-performance-analysis-in-60s.html">give it a read</a>!</p>
]]></description></item><item><title>Gotta Badge 'Em All: Telegraphist</title><link>https://jwheel.org/blog/2015/11/gotta-badge-em-all-telegraphist/</link><pubDate>Mon, 30 Nov 2015 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2015/11/gotta-badge-em-all-telegraphist/</guid><description><![CDATA[<h2 id="telegraphist-what-is-it">Telegraphist: What is it?&nbsp;<a class="hanchor" href="#telegraphist-what-is-it" aria-label="Anchor link for: Telegraphist: What is it?">🔗</a></h2>
<p>
<figure>
  <img src="/blog/2015/11/Telegraphist.png" alt="Telegraphist badge, for mapping names to packages" loading="lazy">
  <figcaption>You mapped an upstream project to a Fedora package on release-monitoring.org (<a href="https://release-monitoring.org/" class="bare">https://release-monitoring.org/</a>)</figcaption>
</figure>
</p>
<p>The <a href="https://badges.fedoraproject.org/badge/telegraphist-upstream-release-monitoring-i"><em>Telegraphist</em> badge</a> is categorized as a &ldquo;Quality [Assurance] Badge&rdquo; and is defined in this <a href="https://fedorahosted.org/fedora-badges/ticket/357">Trac ticket</a>. But what&rsquo;s the real scoop behind the <em>Telegraphist</em> badge?</p>
<p>In short, <em>Telegraphist</em> is awarded to Fedora contributors and users who map the names of their favorite upstream projects to packages available in Fedora. This makes it easier for developers and users to monitor updates on their favorite packages, and to make sure that new versions of upstream software are packaged and made available in Fedora. The software backing this site is called <a href="https://fedorahosted.org/anitya/">Anitya</a>, and you can use it now on <a href="https://release-monitoring.org/">release-monitoring.org</a>! The <a href="https://lists.fedoraproject.org/archives/list/devel-announce%40lists.fedoraproject.org/message/MD4DI7M3ZNIT4B4M4TKXQ3WLGM3YZYBE/">original announcement</a> for this site was made by Ralph Bean on the developers mailing list in February 2015.</p>

<h2 id="how-do-i-earn-telegraphist">How do I earn Telegraphist?&nbsp;<a class="hanchor" href="#how-do-i-earn-telegraphist" aria-label="Anchor link for: How do I earn Telegraphist?">🔗</a></h2>
<p>Earning <em>Telegraphist</em> is easy! First, you should look through the list of software you have installed on your system. What are some of your favorite apps? What do you use all the time and think you couldn&rsquo;t live without? Try searching for it on Anitya. Does it exist?</p>
<p>It may be that the package you search for is already mapped. In that case, take a look through it and see if the information is still correct and relevant. Sometimes a project&rsquo;s homepage may change, or they might switch the locations of where they host their code. If something&rsquo;s wrong, edit it and correct the info.</p>
<p>
<figure>
  <img src="/blog/2015/11/1-Anitya-Add-project.png" alt="Telegraphist: Add a project to Anitya" loading="lazy">
  <figcaption>Add a project to Anitya using info like this, except for your favorite project.</figcaption>
</figure>
</p>
<p>On the other hand, it may be that the package you want to add doesn&rsquo;t exist. Viola, a badge opportunity has presented itself! You can help Fedora developers by providing the relevant info for a project. Click on &ldquo;<a href="https://release-monitoring.org/project/new">Add project</a>&rdquo; on the top bar and begin entering all the relevant info. For an example, see my mapping of the <code>yubikey-personalization-gui</code> in the screenshot.</p>

<h2 id="the-telegraphist-tldr">The Telegraphist tl;dr&nbsp;<a class="hanchor" href="#the-telegraphist-tldr" aria-label="Anchor link for: The Telegraphist tl;dr">🔗</a></h2>
<ol>
<li>Awarded to contributors who map upstream project info to specific packages in Fedora</li>
<li>Automatically awarded when you map a project on <a href="https://release-monitoring.org/">release-monitoring.org</a></li>
<li>Find project info for your favorite software, and if it doesn&rsquo;t exist, add it to the database</li>
</ol>]]></description></item><item><title>Gotta Badge 'Em All: Introduction to Fedora Badges</title><link>https://jwheel.org/blog/2015/11/gotta-badge-em-introduction-fedora-badges/</link><pubDate>Mon, 23 Nov 2015 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2015/11/gotta-badge-em-introduction-fedora-badges/</guid><description><![CDATA[
<h2 id="what-is-this">What is this?!&nbsp;<a class="hanchor" href="#what-is-this" aria-label="Anchor link for: What is this?!">🔗</a></h2>
<p>What is this? What is <strong>this</strong>?! Introducing a new series being published weekly on my blog - &ldquo;<em>Gotta Badge &lsquo;Em All!</em>&rdquo; This series aims to introduce readers to the <a href="https://badges.fedoraproject.org/">hundreds of Fedora badges</a> that members of the Fedora community can earn. Maybe you&rsquo;re a newcomer looking at becoming more involved by earning more badges, or maybe you have been around for a while and just want to grow your badge numbers.</p>
<p>No matter who you are, this series aims to educate and teach readers about how to earn some of the less obvious Fedora badges available. Not all the badges are obvious, and I want to bring more light to the &ldquo;how-to&rdquo; process to picking up some of these badges.</p>

<h2 id="publishing-schedule">Publishing Schedule&nbsp;<a class="hanchor" href="#publishing-schedule" aria-label="Anchor link for: Publishing Schedule">🔗</a></h2>
<p>The schedule I intend to follow aims for a new article in the series <strong>every Monday</strong> at <strong>3:30 UTC</strong>. If you&rsquo;re from the US East Coast, like me, this translates to Sunday evenings at 22:30 (10:30pm).</p>

<h2 id="read-more">Read more&nbsp;<a class="hanchor" href="#read-more" aria-label="Anchor link for: Read more">🔗</a></h2>
<p>Wanting to keep up with the series? Just follow the tag &ldquo;<em><a href="https://jwfblog.wpenginepowered.com/tag/gotta-badge-em-all/">Gotta Badge &lsquo;Em All</a></em>&rdquo; on my blog (if you&rsquo;re an RSS person, use <a href="https://jwfblog.wpenginepowered.com/tag/gotta-badge-em-all/feed/">this</a>)!</p>
<p>Stay tuned for the first article in the series coming <em>very</em> soon, explaining the <a href="https://badges.fedoraproject.org/badge/parselmouth"><strong>Parselmouth</strong></a> badge!</p>
]]></description></item><item><title>Gotta Badge 'Em All: Parselmouth</title><link>https://jwheel.org/blog/2015/11/gotta-badge-em-parselmouth/</link><pubDate>Mon, 23 Nov 2015 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2015/11/gotta-badge-em-parselmouth/</guid><description><![CDATA[<h2 id="parselmouth-what-is-it">Parselmouth: What is it?&nbsp;<a class="hanchor" href="#parselmouth-what-is-it" aria-label="Anchor link for: Parselmouth: What is it?">🔗</a></h2>
<p>
<figure>
  <img src="/blog/2015/11/Parselmouth.png" alt="Parselmouth Badge, for Python 3 porting" loading="lazy">
  <figcaption>\&#34;You can speak Python and helped with porting stuff to Python 3.\&#34;</figcaption>
</figure>
</p>
<p>The <a href="https://badges.fedoraproject.org/badge/parselmouth"><em>Parselmouth</em> badge</a> is categorized as a &ldquo;Miscellaneous Badge&rdquo; and was defined in this <a href="https://fedorahosted.org/fedora-badges/ticket/386">Trac ticket</a>. But what&rsquo;s the real scoop behind the <em>Parselmouth</em> badge?</p>
<p>In short, <em>Parselmouth</em> is awarded to Fedora contributors who assist in porting Python 2 packages in Fedora to Python 3. As of present date, the current version of Fedora (Fedora 23) defaults to using Python 3 for new installs. While Python 2 is easily installed, there are still a large number of packages that are not up to date to using the latest version of the language. As recognized by the developers of the programming language and the countless that use it, Python 3 is the future, and it is important that Fedora helps lead the way towards making Python 3 the standard.</p>

<h2 id="how-do-i-earn-parselmouth">How do I earn Parselmouth?&nbsp;<a class="hanchor" href="#how-do-i-earn-parselmouth" aria-label="Anchor link for: How do I earn Parselmouth?">🔗</a></h2>
<p><em>Parselmouth</em> is a manually-awarded badge by some of the Python maintainers in Fedora. In order to earn the <em>Parselmouth</em> badge, you will need to help port packages and be noticed by the maintainers.</p>

<h4 id="but-how-can-i-do-that">&ldquo;But how can I do that?!&rdquo;&nbsp;<a class="hanchor" href="#but-how-can-i-do-that" aria-label="Anchor link for: &ldquo;But how can I do that?!&rdquo;">🔗</a></h4>
<p>There are a number of ways you can earn the badge. Periodically, there are <em>Fedora Activity Days</em> (FAD) which are dedicated days or sometimes weekends where contributors work together during coordinated times over IRC to help make progress on porting packages. Just recently, there was a <a href="https://communityblog.fedoraproject.org/help-port-python-packages-to-python-3/">Python 3 Porting FAD</a> that successfully helped port many more packages to Python 3. One way to earn this badge in the future is by watching for any more announcements of a Python 3 Porting FAD on the <a href="https://communityblog.fedoraproject.org/">Community Blog</a>.</p>
<p>Alternatively, jump into the #fedora-python IRC channel on Freenode and introduce yourself to the channel. Explain that you want to help port packages, and someone will be able to help guide and direct you to where you can get started.</p>

<h2 id="the-parselmouth-tldr">The Parselmouth tl;dr&nbsp;<a class="hanchor" href="#the-parselmouth-tldr" aria-label="Anchor link for: The Parselmouth tl;dr">🔗</a></h2>
<ol>
<li>Awarded to contributors who help port Python 2 packages in Fedora to Python 3</li>
<li>Typically awarded during <a href="https://communityblog.fedoraproject.org/help-port-python-packages-to-python-3/">Fedora Activity Days</a> for Python porting</li>
<li>Can be earned by helping <a href="http://portingdb-encukou.rhcloud.com/">port packages</a> any time year-round</li>
</ol>]]></description></item><item><title>Fedora CommOps - What I'm working on</title><link>https://jwheel.org/blog/2015/11/fedora-commops-im-working/</link><pubDate>Wed, 18 Nov 2015 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2015/11/fedora-commops-im-working/</guid><description><![CDATA[<p>I&rsquo;m trying to get into better habits about blogging on a semi-regular basis, as it&rsquo;s a good way for me to recap about everything going on around me and to help remember how I&rsquo;m spending my time.</p>

<h2 id="commops-in-retrospect">CommOps in Retrospect&nbsp;<a class="hanchor" href="#commops-in-retrospect" aria-label="Anchor link for: CommOps in Retrospect">🔗</a></h2>
<p>Over the past few months, I have worked closely with the Fedora <a href="https://fedoraproject.org/wiki/CommOps"><em>Community Operations</em> (CommOps) team</a> on a variety of tasks and goals as part of our mission to improve community infrastructure within the Fedora Project. This is certainly a broad and demanding goal, but broken into smaller duties, it is much easier to take on and slowly work towards. Several members of the team specialize in different areas, such as Ralph and Bee who work more on numerical-oriented tasks (i.e. metrics and improving software evaluating our community), Remy who (more or less) does it all, and then me focusing on improving areas of communication and messaging across the Project. Everything is still in early stages of progress, but it&rsquo;s exciting and moving quickly, and I hope to share a bit more about what I&rsquo;ve been working on.</p>

<h2 id="community-blog">Community Blog&nbsp;<a class="hanchor" href="#community-blog" aria-label="Anchor link for: Community Blog">🔗</a></h2>
<p>As of now, this is where most of my time is going in terms of working on the CommOps team. Just last week, we officially <a href="https://communityblog.fedoraproject.org/introducing-fedora-community-blog/">unveiled the Community Blog</a> (affectionately nicknamed the &ldquo;<em>CommBlog</em>&rdquo;) with the rest of the Project via an article on the Fedora Magazine. The CommBlog is an ongoing effort to centralize Fedora news in a single, specific place. The problem the CommBlog intends to resolve is that of disparity in where &ldquo;Fedora stuff&rdquo; gets shared. With a project as large as Fedora, there are all kinds of things happening every day in the different subgroups and teams, so it&rsquo;s hard for any person to know everything going on all at once.</p>
<p>
<figure>
  <img src="/blog/2015/11/python-vfad.jpg" alt="Featured image for the Python 3 Porting Fedora Activity Day." loading="lazy">
  <figcaption>Featured image for the Python 3 Porting Fedora Activity Day. <em>Credit</em>: Paul W. Frields (<a href="http://paul.frields.org/" class="bare">http://paul.frields.org/</a>)</figcaption>
</figure>
</p>
<p>My role in the Community Blog is primarily as a content contributor and partly as an administrator of the WordPress panel. The most recent pieces I contributed to the CommBlog were things like an <a href="https://communityblog.fedoraproject.org/help-port-python-packages-to-python-3/">interview with Python maintainer Matej Stuchlik</a> about the Python 3 Fedora Activity Day, news about the <a href="https://communityblog.fedoraproject.org/fedora-magazine-breaks-records-yet/">Fedora Magazine breaking view records</a>, an <a href="https://communityblog.fedoraproject.org/announcing-fedora-developer-portal/">announcement</a> about the Fedora Developer Portal, and the <a href="https://communityblog.fedoraproject.org/introducing-fedora-community-blog/">introductory article</a> to the CommBlog. I also helped establish basic guidelines for contributors looking into <a href="https://communityblog.fedoraproject.org/writing-community-blog-article/">writing an article</a>. Nonetheless, this is fully a group effort between members of the CommOps team, and these are created with collaboration and guidance of others in the team.</p>

<h2 id="5tftw">5tFTW&nbsp;<a class="hanchor" href="#5tftw" aria-label="Anchor link for: 5tFTW">🔗</a></h2>
<p>In addition to the happenings at the Community Blog, another <a href="https://fedoraproject.org/wiki/CommOps#Things_that_the_Fedora_Community_Operations_.28CommOps.29_Team_helps_with:">goal</a> of the CommOps team is to help bring more &ldquo;heat and light&rdquo; to the different areas of the Project, which then makes it easier to cherry-pick any number of news for other purposes. Already in existence is Fedora Project Leader Matthew Miller&rsquo;s (<a href="https://fedoraproject.org/wiki/User:Mattdm">mattdm</a>) series called &ldquo;5 Things in Fedora This Week&rdquo;, otherwise known as &ldquo;5tFTW&rdquo;. The CommOps team aims to make it easier for Matt to find the hot topics to write about. In the long run, the Community Blog will help carry this out, but for now, we are helping compile lists and summaries of topics to cover for each week&rsquo;s &ldquo;hot topic&rdquo; list.</p>
<p>When I&rsquo;m trying to find news about events in the Fedora Community, I will also have 5tFTW in the back of my mind, since they have intersecting interests. I helped compile the list of topics for <a href="https://fedoramagazine.org/5tftw-2015-11-06/">2015 11 06</a> and I am in progress of finding more topics along with the rest of the team. This upcoming week, some of the things we have on the list so far are the migration of the Fedora mailing lists to <a href="http://fedoraproject.org/wiki/Mailman3_Migration">HyperKitty</a>, announcing the <a href="https://fedoraproject.org/wiki/Elections">Fedora Elections</a> cycle, the <a href="https://fedoraproject.org/wiki/FAD_Python_3_Porting_2015">Fedora Python 3 Activity Day</a>, and Wayland being the <a href="https://lists.fedoraproject.org/pipermail/devel/2015-November/216690.html">default in Rawhide</a>.</p>

<h2 id="other-things">Other things&nbsp;<a class="hanchor" href="#other-things" aria-label="Anchor link for: Other things">🔗</a></h2>
<p>In addition to the tasks I&rsquo;ve been working on with the CommOps group, I have also been continuing my work with the <a href="https://fedoraproject.org/wiki/Magazine">Fedora Magazine</a> as part of the <a href="https://fedoraproject.org/wiki/Marketing">Marketing</a> subgroup. These past few weeks were active publication weeks, including my &ldquo;<em><a href="https://fedoramagazine.org/upgrading-from-fedora-22-to-fedora-23/">Upgrading from Fedora 22 to Fedora 23</a></em>&rdquo; article (viewed over 25,000 times as of present day) and &ldquo;<a href="https://fedoramagazine.org/never-leave-irc-znc/"><em>Never Leave IRC Again with ZNC</em></a>&rdquo;, a beginner&rsquo;s article focused on explaining how to get started with ZNC (viewed over 5,000 times as of present day).</p>
<p>
<figure>
  <img src="/blog/2015/11/znc.jpg" alt="Featured image for my article about using ZNC. Credit: Fedora Magazine" loading="lazy">
  <figcaption>Featured image for my article about using ZNC. <em>Credit</em>: Fedora Magazine (<a href="https://fedoramagazine.org/never-leave-irc-znc/" class="bare">https://fedoramagazine.org/never-leave-irc-znc/</a>)</figcaption>
</figure>
</p>
<p>I&rsquo;m also in the process of becoming a <a href="https://fedoraproject.org/wiki/Ambassadors">Fedora Ambassador</a>, and I am now in the review period of my mentorship. This has been a personal goal of mine for close to two years, and I&rsquo;m happy to finally be moving forward with this to (officially) become a representative of freedom and choice through Fedora.</p>
<p>I&rsquo;m going to try to get in a better habit of quick, short blog updates to help document my progress and work in the FOSS community. And maybe I might even write about my time at my university at some time… hmmmm…</p>]]></description></item><item><title>Three reasons I love open source</title><link>https://jwheel.org/blog/2015/11/three-reasons-love-open-source/</link><pubDate>Mon, 16 Nov 2015 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2015/11/three-reasons-love-open-source/</guid><description><![CDATA[<h2 id="open-source-user">Open Source User&nbsp;<a class="hanchor" href="#open-source-user" aria-label="Anchor link for: Open Source User">🔗</a></h2>
<p>I am a user of open source software. My earliest experiences with open source software was with the Minecraft server software <a href="http://bukkit.org/">Bukkit</a> as a kid, when I was attempting to make a cool game server for friends. I started using Fedora in December 2013 with my first laptop, ending a lifetime of using Apple devices. I like to believe that I am familiar and experienced with open source software as an everyday user.</p>
<p>
<figure>
  <img src="/blog/2015/11/osi-logo-horizontal.png" alt="The Open Source Initiative" loading="lazy">
  <figcaption>The Open Source Initiative. Source: opensource.org (<a href="https://opensource.org/" class="bare">https://opensource.org/</a>)</figcaption>
</figure>
</p>

<h2 id="open-source-contributor">Open Source Contributor&nbsp;<a class="hanchor" href="#open-source-contributor" aria-label="Anchor link for: Open Source Contributor">🔗</a></h2>
<p>I am a contributor of open source software. Despite using it so often, I am still new to contributing and I am learning new things every day about free and open-source software communities. These past three months have passed by seemingly faster than light. And yet, despite being new as a contributor, I am passionate about what I am doing and what others around me are doing. I believe that open source goes beyond just software - it is a culture, a way of thinking, maybe even a way of life. There are reasons why I love open source as much as I do, and while it was challenging, I narrowed it down to three of my favorite things.</p>

<h2 id="freedom">Freedom&nbsp;<a class="hanchor" href="#freedom" aria-label="Anchor link for: Freedom">🔗</a></h2>
<p>Since I started using free and open source software, I gradually became educated about what software freedom is and what makes it so important. An open source project is one thing on its own. But is it free? And this not the traditional meaning of free, as in &ldquo;no cost&rdquo;. But does it protect your freedom? Do you control the software or does it control you?</p>
<p>This is something that is probably one of the most discussed parts of Free and Open Source Software (FOSS), yet it is without a doubt one of the most important. At the end of the day, the people who work behind major FOSS projects such as Linux distributions (like Fedora), major software programs and languages, and even <a href="https://www.spigotmc.org/">Minecraft server software</a> share a core set of beliefs: the software you and I use needs to place value in freedom to manipulate and distribute as we see fit. It is within our right to do with our software as we wish. This is something that I sincerely believe will help bring the world to a better place.</p>
<p>Seeing as this <em>is</em> one of the most discussed elements of FOSS, I will not spend as much time on this. But it is important to realize that it is part of the foundation that everything else builds from.</p>

<h2 id="fun">Fun&nbsp;<a class="hanchor" href="#fun" aria-label="Anchor link for: Fun">🔗</a></h2>
<p>There&rsquo;s hardly a better way to put it. Working in open source communities is fun! Whether you&rsquo;re the programmer or the writer, the designer or the maintainer, it&rsquo;s incredibly engaging and rewarding to take part in an open source community that understands the value in community.</p>
<p>For developers, it&rsquo;s a greatly satisfying feeling to write software and see it being used across several devices or systems, and then to get feedback about your software from users who think what you worked on is awesome. Does that mean all the feedback is always fun? No, but I believe the overall positive experiences always outweigh the few negative cases. As a FOSS developer, you can readily see your software&rsquo;s impact on the world.</p>
<p>There is more that goes on for open source communities than just writing code too, so even if you&rsquo;re someone like me who loves to write, there are ample opportunities to help in a fun and meaningful way. The articles I publish on the <a href="https://fedoramagazine.org/author/jflory7/">Fedora Magazine</a> and <a href="https://communityblog.fedoraproject.org/author/jflory7/">Fedora Community Blog</a> are enjoyable for me to write, and every thankful comment received makes it just the more worth it. For instance, I recently <a href="https://fedoramagazine.org/never-leave-irc-znc/">published an article</a> about using an IRC bouncer software called ZNC and shared it across multiple channels of communication. Shortly after doing so, a user messaged me and asked questions about using the software I described in the article, and shortly after our discussion, he successfully tested and started using ZNC for his own IRC communication. How awesome is that?! Even just by contributing writing, I can readily see my impact on users.</p>
<p>At the end of the day, many of the people involved with FOSS do it out of their own time and effort. Most people aren&rsquo;t paid or have the convenience of having their jobs allow them to work on their own projects. So why do it if there&rsquo;s &ldquo;no benefit&rdquo; to doing it? To continue the previous point, it&rsquo;s because software freedom is important, but it&rsquo;s also because it&rsquo;s <strong>fun</strong>. Usually, it&rsquo;s not about the money or personal fame… it&rsquo;s about making a difference doing the things that make us happy. Whether that is software development, writing about the software being developed, making awesome graphics for the community around the software, or any other aspect, we do it because we like doing it. There&rsquo;s not much else of a way to put it.</p>

<h2 id="community">Community&nbsp;<a class="hanchor" href="#community" aria-label="Anchor link for: Community">🔗</a></h2>
<p>Finally, the third thing I love about free and open source software is community. This is my favorite thing of all, truthfully. In my experiences working and interacting with members of open source communities, I am always met with welcoming and accepting attitudes and people who want me to succeed in contributing. I have discovered this especially in the Fedora Project community, more than any other project I&rsquo;ve contributed to.</p>
<p>When I first introduced myself to the Fedora Marketing mailing list as an interested contributor to the Fedora Magazine, I was warmly received and provided with the resources I needed to set up my toolbox for success. Quickly after drafting my first articles, the Magazine team happily reviewed and revised my work and set it on track for publication. Seeing my first article go out on the Magazine was extremely rewarding, and I felt awesome that I had helped write something that readers would find interesting and be able to learn something new.</p>
<p>
<figure>
  <img src="https://fedoramagazine.org/wp-content/uploads/2015/11/sfd2015-945x400.jpg" alt="Software Freedom Day, celebrating free and open source software" loading="lazy">
  <figcaption>Software Freedom Day is an event held annually to celebrate the values of free and open source software. Source: Fedora Magazine (<a href="https://fedoramagazine.org/celebrating-software-freedom-day-2015/" class="bare">https://fedoramagazine.org/celebrating-software-freedom-day-2015/</a>)</figcaption>
</figure>
</p>
<p>Another experience I had this past week was entirely unexpected. Fedora Community Lead Remy DeCausemaker recently published an article on Fedora Magazine about <a href="https://fedoramagazine.org/celebrating-software-freedom-day-2015/">Software Freedom Day at RIT</a>, an event on my university campus that I attended and participated in. Part of the article talked about some of the tasks I worked on and included a short interview with me. Later that evening, the same day the article went out, I received an unexpected message from a Fedora contributor in Panama who had happened to read the article. In summary, she left me some encouraging words about what I did at Software Freedom Day and said it was good to have people like me in the project. It caught me off-guard and I wasn&rsquo;t expecting that - and from someone who I had never talked with before! This only reaffirmed the thoughts I have had for a long time about FOSS communities, in particular Fedora. The community behind these projects is incredible and the friendships that are founded here make everything all the more worth it.</p>
<p>It&rsquo;s hard to see a future for me now without open source being an integral part along the way.</p>

<h6 id="special-thanks">Special Thanks&nbsp;<a class="hanchor" href="#special-thanks" aria-label="Anchor link for: Special Thanks">🔗</a></h6>
<p>Special thanks to Michael, Cindy, Jordan, Remy, Paul, Ryan, Patrick, and Kiara for helping make my experiences in open source as amazing as it has been - I am looking forward to more experiences to come.</p>]]></description></item><item><title>Telegram: 21st century communication</title><link>https://jwheel.org/blog/2015/11/telegram-21st-century-communication/</link><pubDate>Thu, 12 Nov 2015 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2015/11/telegram-21st-century-communication/</guid><description><![CDATA[<p>Communication is a pivotal aspect of our everyday lives, both in the workplace and in our personal lives. In the twenty-first century, there are more ways available to communicate than ever before thanks to the Internet. Although, as hard as it is to believe, the Internet is still a young invention and the products designed for it are literally evolutionary in the sense that they change and adapt constantly to new trends and discoveries. As a result, there are hundreds, thousands of services and applications we can use to communicate with each other.</p>
<p>I have stumbled across a single communication platform that exceeds the standards of any other application I&rsquo;ve used before: <a href="https://telegram.org/"><strong>Telegram</strong></a>. And guess what? I&rsquo;m about to tell you why it&rsquo;s a useful way to communicate over other traditional means.</p>

<h2 id="the-case-against-sms">The case against SMS&nbsp;<a class="hanchor" href="#the-case-against-sms" aria-label="Anchor link for: The case against SMS">🔗</a></h2>
<p>In terms of traditional communication, SMS, MMS, or text messaging (whatever you might prefer to call it) is obviously one of the most dominant forms of instant communication. However, in terms of a modern communication platform, it has several flaws that make it difficult to use effectively for effective communication. So, why not SMS?</p>

<h4 id="domestic-and-international-costs">Domestic and international costs&nbsp;<a class="hanchor" href="#domestic-and-international-costs" aria-label="Anchor link for: Domestic and international costs">🔗</a></h4>
<p>This one simply speaks for itself. Text messaging has long been an expensive form of communication in terms of paying per message or having a cap to work around. While this is beginning to change for domestic messaging, it is certainly not the case for international messaging. As a result, most domestic communication is likely using another form of messaging (even if it&rsquo;s disguised to look like regular SMS, such as iMessage), and international communication rarely, if ever, considers using traditional SMS. In terms of either saving your wallet or preventing paranoia from going over a cap, SMS is not a cost-effective solution for communication.</p>

<h4 id="may-your-carrier-have-mercy">May your carrier have mercy&nbsp;<a class="hanchor" href="#may-your-carrier-have-mercy" aria-label="Anchor link for: May your carrier have mercy">🔗</a></h4>
<p>Mileage may vary with this, but often times, how reliable your carrier is leaves you subject to the stability of their network and whether or not your hardware is compatible. In my case, I am a proud owner of an <a href="http://www.htc.com/us/smartphones/htc-one-m8/">HTC One M8</a> running <a href="http://www.cyanogenmod.org/">CyanogenMod</a> 12.1, but Sprint has granted me the privilege of having a nearly dysfunctional networking capability on their cellular network. A challenge I have had to face my entire time on Sprint is traveling through an area that <em>clearly has coverage</em>, such as New York City, without being able to use any networking capabilities on my phone. I have had to quietly enter a coffee shop just for free WiFi when traveling far… far too many times.</p>
<p>This is an issue I intend to resolve next upgrade… or maybe next carrier… but point and case being, using SMS / MMS for communication is only as reliable as your carrier allows. There&rsquo;s no guaranteed way to make sure receipt of your messages, and now I can never be sure if an unreturned message is from lack of interest or lack of receipt.</p>

<h2 id="why-telegram">Why Telegram?&nbsp;<a class="hanchor" href="#why-telegram" aria-label="Anchor link for: Why Telegram?">🔗</a></h2>
<p>
<figure>
  <img src="https://telegram.org/img/t_logo.png" alt="Telegram logo" loading="lazy">
</figure>
</p>
<p>With that out-of-the-way, I can focus on the main argument I want to present. So of all the different communication platforms available, why use Telegram? What makes it different from everything else and how is it better?</p>

<h4 id="multi-platform">Multi-platform&nbsp;<a class="hanchor" href="#multi-platform" aria-label="Anchor link for: Multi-platform">🔗</a></h4>
<p>This is always the first thing that I notice is that Telegram supports just about everything… literally. From <a href="https://telegram.org/dl/ios">iOS</a> to <a href="https://telegram.org/dl/android">Android</a> to <a href="https://telegram.org/dl/wp">Windows Phone</a> to <a href="https://telegram.org/dl/tdesktop">Windows desktop app</a> to <a href="https://telegram.org/dl/osx">OS X desktop app</a> to <a href="https://telegram.org/dl/tdesktop">Linux desktop app</a> to <em><a href="https://marketplace.firefox.com/app/telegram">Firefox OS</a></em> to a <a href="https://telegram.org/dl/webogram">web platform</a> and <a href="https://telegram.org/apps">more</a>, it&rsquo;s hard to think of something you can&rsquo;t use Telegram on… except maybe a brick phone from the early 2000s.</p>
<p>The benefits of Telegram&rsquo;s multi-platform availability is that it makes it easy for your friends or co-workers to get it running quickly and easily on whatever it is they use. As a Linux user, I was particularly pleased to see the beautiful design of the desktop app, something that is sometimes a rare sight when using software outside of your distribution&rsquo;s packages. Additionally, since I use a computer far more often than my Android (maybe for the reasons mentioned earlier), having a desktop app is a great convenience for me and makes it easier for me to keep in touch with my friends, family, and other contacts without having to keep my phone out next to my laptop too. That might sound silly, but it&rsquo;s the way I work personally - which only goes to show that whether you&rsquo;re someone like me who uses a computer more than a phone, or if you use a phone more than a computer, Telegram will fit your own habits.</p>
<p>Try to find a device made in the past two years that can&rsquo;t use Telegram one way or another!</p>

<h4 id="fast-and-reliable">Fast and reliable&nbsp;<a class="hanchor" href="#fast-and-reliable" aria-label="Anchor link for: Fast and reliable">🔗</a></h4>
<p>Speed is always nice when it comes to instant messaging, and if you&rsquo;re having a back-and-forth conversation with someone, you want your messages to send quickly and reliably. The overall speed of Telegram is near flawless, and it honestly is right on-par for speed expectations for any messaging platform available in 2015.</p>
<p>Not only is it fast, but it&rsquo;s also reliable. You&rsquo;ll know instantly if your message delivered successfully by a check mark next to your message once you send it. If the person you are talking with hasn&rsquo;t disabled them, you will also receive read receipts for when they have read your message. This makes communication consistent and reliable, and whether or not your message is received by your contact isn&rsquo;t something you&rsquo;ll have to worry about.</p>

<h4 id="secure">Secure&nbsp;<a class="hanchor" href="#secure" aria-label="Anchor link for: Secure">🔗</a></h4>
<p>Finally, Telegram is also a platform you can trust. On the Electronic Frontier Foundation&rsquo;s <a href="https://www.eff.org/secure-messaging-scorecard">Secure Messaging Scorecard</a>, the platform as a whole receives a 4/7 and the secret messaging feature receives a perfect score of 7/7. It&rsquo;s a non-commercial product that has <a href="https://telegram.org/faq#q-what-are-your-thoughts-on-internet-privacy">high value in privacy</a>, something that is respectable and admirable in the current day and age.</p>

<h2 id="get-telegram-today">Get Telegram today&nbsp;<a class="hanchor" href="#get-telegram-today" aria-label="Anchor link for: Get Telegram today">🔗</a></h2>
<p>It actually feels super cheesy to use that action line, but I honestly love Telegram. Ever since I originally installed it from the recommendation of one of my own friends, I am always amazed by the quality and availability of Telegram as a messaging platform. It makes it easier to keep in touch with family, friends, co-workers, fellow students, and all of my contacts. It has definitely become a staple of my everyday communication, and I sincerely recommend it not as trying to hook you on it, but as a fellow member of the sometimes overwhelming digital world in which we live.</p>
<p>Hopefully you will find Telegram as useful as find it.</p>]]></description></item><item><title>Year of the Linux Desktop: Flock 2015 Summary</title><link>https://jwheel.org/blog/2015/10/year-linux-desktop-flock-2015-summary/</link><pubDate>Mon, 26 Oct 2015 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2015/10/year-linux-desktop-flock-2015-summary/</guid><description><![CDATA[<p><a href="http://www.flocktofedora.org/">Flock to Fedora 2015</a> was a conference full of incredible people with incredible ideas, and it was a tough decision to decide which sessions to attend of all the good options. One that caught my eye was the &ldquo;<a href="http://flock2015.sched.org/event/638be2718b9c6bc1d87bc670dd67f175">When is the year of the Linux desktop?</a>&rdquo; talk by Red Hat software engineering intern <a href="https://github.com/levex">Levente Kurusa</a>. Some of the key talking points of his session were evaluating why this statement always seems to be &ldquo;next year&rdquo; and why this awesome idea never seems to gain much ground. Are we doing something wrong? Can we improve somewhere? All of this, and more, Levente aimed to cover in his talk. I was fortunate enough to be in attendance of this talk!</p>
<p>
<figure>
  <img src="http://cdn.meme.am/instances/500x/57403630.jpg" alt="This is the year of the desktop, guys… this time… I promise…" loading="lazy">
  <figcaption>This is the year of the desktop, guys… this time… I promise…</figcaption>
</figure>
</p>

<h1 id="the-negatives">The Negatives&nbsp;<a class="hanchor" href="#the-negatives" aria-label="Anchor link for: The Negatives">🔗</a></h1>

<h2 id="the-desktop-is-broken">The desktop is broken&nbsp;<a class="hanchor" href="#the-desktop-is-broken" aria-label="Anchor link for: The desktop is broken">🔗</a></h2>
<p>Without a moment&rsquo;s delay, the bold statement was offered by Levente: as of right now, the Linux desktop is <em>broken</em>.</p>
<p>56.26% of the desktop market share is Windows 7. 18.26% is Windows XP, 13.52% is Windows 8, 5.26% is OS X, 1.34% is Linux. Of the Linux distros out there, Mint, Ubuntu, Debian, OpenSUSE, and Fedora are the top five. Yet this doesn&rsquo;t seem that impressive considering how small of a position Linux as a whole takes in the desktop realm.</p>
<p>In terms of mobile-oriented operating systems, it&rsquo;s almost spectacularly reverse: 84.04% Android, 11.07% iOS, 2.09% Windows Phone, 2.80% is others. As many already know, Android is based off of the Linux kernel. So it&rsquo;s clear that we&rsquo;re doing something right with the mobile market. What can we take away from this and apply to the universe of the desktop?</p>
<p><strong>Answer</strong>: We must be doing something wrong on the desktop!</p>

<h2 id="the-masses">The masses&nbsp;<a class="hanchor" href="#the-masses" aria-label="Anchor link for: The masses">🔗</a></h2>

<h4 id="choice">Choice&nbsp;<a class="hanchor" href="#choice" aria-label="Anchor link for: Choice">🔗</a></h4>
<p>One reason why Linux doesn&rsquo;t appeal to the masses is the plethora of desktop environments; or in other words, <em>choice</em>! There are several different environments which provide different user interfaces… and they&rsquo;re all different. An end user can get lost in this as they&rsquo;re not going to care about how it runs under the hood – they just want it to be easy to use and have it be the same every time they use it. Android has about the same UI and  looks every year and every update. On the other hand, the controversial transition from <a href="http://www.datamation.com/open-source/gnome-2-vs.-gnome-3-1.html">GNOME 2 to GNOME 3</a> completed changed the UI of the Linux desktop, subsequently not offering much consistency for users who avoid having to &ldquo;learn something new&rdquo;.</p>
<p>In the big picture, they&rsquo;re all different. For developers and daily Linux users, this is good and awesome because they like choice and decision! But for the regular end user, this isn&rsquo;t good because they want consistency in how they use their computer. For the masses, the difference is bad.</p>
<p>Perhaps the answer is to never upgrade the computer, but that&rsquo;s bad from a security standpoint. Not to mention, it&rsquo;s certainly not very &ldquo;cool&rdquo; either. More often than that, having the latest and greatest in software is in the interest of users.</p>

<h4 id="configuration">Configuration&nbsp;<a class="hanchor" href="#configuration" aria-label="Anchor link for: Configuration">🔗</a></h4>
<p>The next big complaint is configuration. There&rsquo;s countless configuration applications, all with different settings, and then sometimes they all don&rsquo;t share the same settings. Again, we see the sad but true pattern of no consistency. Compare between KDE and MATE: you might configure something like printers in one desktop environment, but then you move to a different environment and they&rsquo;re all lost to the oblivion. You have to go through a painful workaround to reconfigure the same thing twice. This is probably why people love OS X computers because they promise to &ldquo;just work&rdquo;, which they usually deliver on, at the expense of losing the freedom that a Linux distribution would offer.</p>

<h4 id="distributions">Distributions&nbsp;<a class="hanchor" href="#distributions" aria-label="Anchor link for: Distributions">🔗</a></h4>
<p>The next complaint, and possibly most controversial, is distributions themselves… we all love choice and variety, but for end users, with so many different distributions, it&rsquo;s another mess. Take installing Firefox. If you&rsquo;re running Fedora and want to install Firefox, but you found a .deb file, you&rsquo;re not going to have success because it&rsquo;s a Debian package, not an RPM package. If you&rsquo;re a computer newbie, you&rsquo;re likely not going to know (or care, for that matter) about the distribution that you&rsquo;re running. It&rsquo;ll just end in frustration and confusion for a non-technical end user. They don&rsquo;t want to figure out why it doesn&rsquo;t work or how to fix it – <strong>they just want it to work</strong>.</p>
<p>Examples of the above being <code>yum install</code> on Ubuntu, development packages in Fedora repositories, and… how do I set up my printers? These are reasons why people will switch from Linux back to Windows or OS X.</p>
<blockquote>
<p>&ldquo;The efforts to standardize on a kernel and a set of core libraries were undermined by the Distro of the Day that held the position of power.&rdquo; - Miguel de Icaza</p>
</blockquote>

<h2 id="graphics">Graphics&nbsp;<a class="hanchor" href="#graphics" aria-label="Anchor link for: Graphics">🔗</a></h2>
<p>Another frustrating aspect of Linux is that the kernel can fully support a <em>4096-processor supercomputer</em>, but a laptop can have difficulties waking up from sleep.</p>
<p>This brings us into the next reason why the year isn&rsquo;t coming soon: <strong>VGA and graphics</strong>. We miss the &ldquo;<em>it just works</em>&rdquo; moments, and sometimes the issues with graphics drivers can be more frustrating and challenging than anything near enjoyable. In the kernel, it was suggested and subsequently dismissed to support graphics via VGA, but for reasons buried in the mailing lists, it&rsquo;s not in the interest of the kernel to support graphics. It&rsquo;s more of the desktop developers that do this.</p>
<p>But part of the issue is also with hardware manufacturers. If hardware manufacturers made their software utilities for Linux, it would allow for more powerful troubleshooting and debugging.</p>

<h2 id="reverse-compatibility">Reverse Compatibility&nbsp;<a class="hanchor" href="#reverse-compatibility" aria-label="Anchor link for: Reverse Compatibility">🔗</a></h2>
<p>Then we can look at reverse compatibility on the Linux desktop. Before looking at Linux, it&rsquo;s important to consider the number one adversary, Windows. Take  Win32k… Windows 98 apps can still run on Windows 8. That&rsquo;s 19 years of reverse compatibility. As much as we all love to hate on Microsoft, that&rsquo;s pretty incredible. Take GTK and Qt – neither are backwards compatible with older versions.</p>
<p>This goes hand in hand with the next point, rate of change. Windows updates its major version every two to three years, sometimes longer. There&rsquo;s usually no big changes in the interim period between major releases. You could be on XP and upgrade service packs and you won&rsquo;t notice anything significant. On the other hand, Linux distributions release far more frequently and sometimes introduce major changes, such as GNOME 2 to GNOME 3.</p>
<p>So these are the negatives of the Linux desktop. <em><strong>But!</strong></em> There are positives…</p>

<h1 id="the-positives">The Positives&nbsp;<a class="hanchor" href="#the-positives" aria-label="Anchor link for: The Positives">🔗</a></h1>

<h2 id="gaming">Gaming&nbsp;<a class="hanchor" href="#gaming" aria-label="Anchor link for: Gaming">🔗</a></h2>
<p>Probably didn&rsquo;t expect to see this as a positive, did you? The gaming side of Linux is making leaps and bounds, and it&rsquo;s worth noting. Perhaps the most notable example is <a href="http://distrowatch.com/table.php?distribution=steamos">SteamOS</a>, which is completely based off of Linux. CryTek Engine, Unreal Engine 4.1, all of these major game design engines are turning to Linux and are encouraging more support for Linux platforms. This is a <em>major</em> pull factor for users.</p>
<p>For gaming hardware, there are also positives. Nvidia is now compatible with bumblebee (which developers more familiar with this are praising), and there are many improvements to GPU drivers, such as performance, stability, and so much more. Some of the things that make us love Linux as a desktop.</p>

<h1 id="when-is-our-year">When is our year?&nbsp;<a class="hanchor" href="#when-is-our-year" aria-label="Anchor link for: When is our year?">🔗</a></h1>
<p>So… when is our year?! It&rsquo;s going to come… one day. Just not soon. There&rsquo;s too many issues in terms of appealing to the masses and making the Linux experience easier for end users.</p>
<p>Some people believe that the time has come and gone for the desktop, but the mobile market shines a light of a positive future for us. Is Android a better idea of the future than a Linux desktop environment? Only time will tell.</p>

<h6 id="sources">Sources&nbsp;<a class="hanchor" href="#sources" aria-label="Anchor link for: Sources">🔗</a></h6>
<p>This talk was given by Levente Kurusa. Levente is a Linux enthusiast focusing mostly on kernel development. He is also a frequent speaker at various Linux events, where he talks about the various way an individual can join the kernel development community. He participated in an annual open source competition called Google Code-In, where he was a finalist for KDE and became a KDE developer in the process. He currently works for Red Hat on the Virtualization Team.</p>
<p>The majority of the content of this article was taken by my own notes I took during his talk – if you want a less pretty version, you can still read my <a href="http://pastebin.com/jC91SNdh">Pastebin summary</a>.</p>]]></description></item><item><title>My journey into Fedora</title><link>https://jwheel.org/blog/2015/10/my-journey-into-fedora/</link><pubDate>Wed, 21 Oct 2015 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2015/10/my-journey-into-fedora/</guid><description><![CDATA[<p>These past few weeks have been particularly exciting for me as I become more involved in the world of free and open-source software. For a long time, I&rsquo;ve sat and idled in the various realms of the Fedora community, and I&rsquo;ve sat on the sidelines thinking that I would be unable to contribute anything significant because of my inability to write fancy code or design super slick images or write documentation for the fancy code. However, I have gladly been proven wrong.</p>
<p>
<figure>
  <img src="/img/Full-Logo.png" alt="Fedora is a free and open-source Linux distribution." loading="lazy">
  <figcaption>Fedora is a free and open-source Linux distribution.</figcaption>
</figure>
</p>

<h2 id="flock-to-fedora">Flock to Fedora&nbsp;<a class="hanchor" href="#flock-to-fedora" aria-label="Anchor link for: Flock to Fedora">🔗</a></h2>
<p>My first major interaction and experience with the Fedora community was at <a href="http://www.flocktofedora.org/">Flock 2015</a>, the annual contributor&rsquo;s conference where people from around the world come together to work on the project. I had been looking forward to this conference for months, and after finding out that it would be hosted in the same city I would be moved to for college in a few months, I knew I had no choice but to go. I moved up early just to make sure I could attend!</p>
<p>When I arrived, I was almost overwhelmed by the incredible people and companies that were here. I went to all kinds of workshops and sessions, such as &ldquo;<a href="http://fedoramagazine.org/state-fedora-2015-edition/">The State of Fedora</a>&rdquo;, a talk led by the Fedora Project Leader, improving Fedora&rsquo;s <a href="http://flock2015.sched.org/event/2cfc9bbc773861571ee264957d11e830">visibility in schools</a>, an overview of <a href="http://flock2015.sched.org/event/4c98dbee79c98ae988e0e210ff6a1648">gaming on Fedora</a> over the years, &ldquo;<a href="http://flock2015.sched.org/event/22bf72706a632f0802e4ac00edfcb5d8">Marketing is not a spectator sport</a>&rdquo;, and so much more. However, the thing that really stuck out to me was how this community of people weren&rsquo;t just here to <em>just</em> work on software, or <em>just</em> work on internal projects. The people there were a community of individuals all passionate and dedicated to working on a project that makes an impact on the real, everyday world. And that&rsquo;s something beautiful in itself. To say the least, I was hooked. Even though I was a complete and total newcomer, I felt welcomed and most definitely a part of the community.</p>

<h2 id="software-freedom-day">Software Freedom Day&nbsp;<a class="hanchor" href="#software-freedom-day" aria-label="Anchor link for: Software Freedom Day">🔗</a></h2>
<p>Not too long after Flock, on the weekend of September 19th to the 20th, my university, the Rochester Institute of Technology, hosted a Software Freedom Day event on campus. I knew this was something that interested me and I made plans to show up to the hackathon.</p>
<p>Fedora Community Lead <a href="https://fedoraproject.org/wiki/User:Decause">Remy DeCausemaker</a> was there representing Fedora by launching a Fedora Badge-athon event, which was a contest among participants to work towards gaining the most badges. I knew it might be a little hard for me since I had all of the &ldquo;really easy&rdquo; ones out of the way, like making an account, changing your password, and so on, so I decided I would put forth the effort into really earning some of the badges!</p>
<p>I started with checking out the <a href="https://lists.fedoraproject.org/archives/list/infrastructure@lists.fedoraproject.org/thread/YBJQEVGTOBHSK6KN3YK4532PXELTZDV2/">Fedora Package Tagger</a>, which is a fun organizational tool that anyone can use to contribute to the project by sorting through tags for the various packages in Fedora, and either upvoting or downvoting the existing ones or adding new, relevant ones. I spent a good amount of time doing this, and I earned a good number of badges for both voting on tags and adding my own to the packages of Fedora.</p>
<p>Afterwards, I set to work on helping with wiki gardening tasks for the <a href="https://fedoraproject.org/wiki/Fedora_Project_Wiki">Fedora Wiki</a>, as where we left with our wiki workshop from Flock. I sorted through a large number of outdated pages and attempted to update them with current information or I categorized them as old pages to be deleted or reviewed in the future. I also helped categorize the poor orphan pages without a category to call home.</p>
<p>Finally, the last task I did was the beginning of a longer-term commitment: I sent out an email to the Fedora Marketing mailing list inquiring to become an author for the Fedora Magazine.</p>

<h2 id="marketing-and-the-magazine">Marketing and the Magazine&nbsp;<a class="hanchor" href="#marketing-and-the-magazine" aria-label="Anchor link for: Marketing and the Magazine">🔗</a></h2>
<p>Most recently, I have been working closely with the Marketing team as a contributor to the Magazine. I have already published a <a href="http://fedoramagazine.org/author/jflory7/">couple of articles</a>, with my best pieces so far being <a href="http://fedoramagazine.org/run-a-minecraft-server-using-spigot/">Using Spigot to Run a Minecraft Server</a> and <a href="http://fedoramagazine.org/in-summary-flock-to-fedora-2015/">In Summary: Flock to Fedora 2015</a>. I already have a few more planned in the near future, including articles featuring using OpenVPN to protect your privacy and ZNC to make your IRC experience way more convenient. Watch for them in the near future!</p>

<h2 id="in-summary">In summary…&nbsp;<a class="hanchor" href="#in-summary" aria-label="Anchor link for: In summary…">🔗</a></h2>
<p>My adventures into Fedora and the magic of free and open-source are just beginning, and I eagerly anticipate the upcoming future as I become more involved and make my impact in the Fedora community!</p>]]></description></item></channel></rss>