Week 6

Atom: Getting Started in FOSS

The time has come in our course to focus on getting our feet wet and making real contributions to the world of Free and Open Source Software (FOSS). To this end the class has been partitioned into groups of 3-4 members, and I count myself extremely lucky to have been teamed up with Boubacar and Jessica. The blogs they maintain (click their names!) give only a taste of the fun collaboration and serious know-how they bring to the table. The following is the daily logs of efforts to jump into a project of our choosing.

Monday, March 2

The beginning of the week found the three of us debating the merits - from language familiarity and activity to the offering, or lack thereof, of points of entry for a beginner contributor - of a long list of projects. After what felt like a lightning review round, we found ourselves torn over three projects: Atom, Visual Studio Code, and Django. All seemed to be of a similar viability for us: they are all quite active, have a friendly and welcoming community, grabbed our attention, and had no obvious red flags in terms of technologies involved. While I am certainly the weakest of us three when it comes to JavaScript, I cannot say that my strength in Python convinced me that Django was going to be an excellent choice for us either, as none of us have experience in developing web frameworks. We resolved to give the projects some further thought over the next couple of days. That said, I was pretty soon turned off to the idea of Visual Studio Code, when I discovered that same day that contributing to the project would involve us signing a Microsoft Contributor Licensing Agreement (CLA).

Wednesday, March 4

A bit more discussion took place via text with Boubacar making another project solid suggestion: Electron. Atom is, after all, written in Electron so we weren’t really going far off the mark!

Thursday, March 5

D-Day (“Decision Day”)…except we again left class rather undecided! Thankfully this didn’t last too long as Boubacar and I had an extensive discussion about how Atom or Visual Studio Code had the benefit of being an app that we could “easily” work on and test, as opposed to the Django or Electron frameworks, upon which apps will ultimately be based. With some further discussion and all three of us agreed, we turned our attention to our final project decision: Atom.

Saturday, March 7

For better or for worse, I am a sort of a sit down and just hammer out one task kind of guy. I fully realize that it is most likely for the worse: stepping away from a task sometimes yields remarkable insight, and the fabled bolt of inspiration when doing something else is quite real in my experience. That said, time constraints and semester workload being what they are, I sat down to hammer out learning more about Atom and setting up a development environment. The ongoing result of the former - a joint effort - can be found here. Following up on this is going to be my primary task over the next couple of days; I plan to devour knowledge on Atom’s organization and philosophy by reading through the friendly…though * ahem * slightly vague…“flight manual”. This brings me to the topic of a multiple hour experience of throwing enough Node at the wall and hoping some of it sticks!

Granted, I am a complete beginner with it comes to working with the Node JavaScript runtime environment, so any course of errors I was likely to run into would have been really problematic for me. In particular, I ran face first into the classic case of multiple hidden problems when the general running assumption is that there is one primary problem (such as a missing dependency or incorrect version) when I tried to run the scripts/bootstrap script to install needed dependencies. To be quite reductionist, I learned three critical things in this experience:

  • Do NOT put spaces in your folder names. Why this horrible habit lingers, I know not, but I was lucky to catch that one key hangup in the install process was that some files could not be found…past a folder of mine that had a space in the name. Friends don’t let friends use spaces in their folder names.
  • While the Atom Flight Manual states that any version of Node greater than version 6 should be fine, this is absolutely not the case. Versions 13 (newest) and 12 (newest LTS) will not cooperate, whereas version 10 inexplicably does. Removing the “inexplicably” from the previous sentence is another goal of the coming few days.
  • Unfortunately not that many people have reported issues with setting up a development version of Atom: it is unclear if that is because not many try, or because they had a much easier time of it than me.

Ultimately, I was able to set up and run a development version of Atom based on the cloned repository, but how stable this will be is unclear. The bootstrapping process, while ultimately completed, resulted in a number of warnings of which I do not know the consequence. My plan is to share experiences with Boubacar and Jessica, before moving on to what may very well prove to be test and build processes equally littered with errors.

Sunday, March 8

The last note for the week was the small relief gained by knowing that I was not alone in dependency issues with Node. Diagnosing this process is going to have to become a proper group effort this week, before we can really move on to what issues are of interest to the group.

Other Course-Related Activity:

This week I proposed edits to and opened an issue on Keisuke’s blog. Continuing on my recent streak of adding nearby restaurants I enjoy and would like to support to OSM, I added a local Italian restaurant.

Written before or on March 8, 2020