<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Rochester-Institute-of-Technology</title><link>https://jwheel.org/tags/rochester-institute-of-technology/</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, 06 Jul 2021 00:00:00 +0000</lastBuildDate><atom:link href="https://jwheel.org/rss/tags/rochester-institute-of-technology/index.xml" rel="self" type="application/rss+xml"/><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="/blog/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>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="/tags/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="/blog/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="/blog/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>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="/blog/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="/blog/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="/blog/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>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="/blog/2020/04/copyleftconf-2020-quick-rewind/">copyleft licensing conference</a> I went to <a href="/tags/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="/blog/2020/02/sustain-oss-2020-quick-rewind/">Sustain OSS 2020</a> and <a href="/blog/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="/tags/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="/blog/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="/blog/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="/blog/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="/blog/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="/blog/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>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="/blog/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="/tags/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="/blog/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: 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="/blog/2016/07/czesc-poland-back-europe/">my earliest trips abroad</a> to Kraków, Poland. My <a href="/blog/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="/blog/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>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>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>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>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="/tags/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="/blog/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="/blog/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="/tags/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>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="/tags/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>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="/tags/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>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="/blog/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="/blog/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="/blog/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="/blog/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="/blog/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="/blog/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="/blog/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="/blog/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="/blog/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="/blog/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>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>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>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>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>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>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>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="/blog/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>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>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></channel></rss>