Benevolent D***tator

This is a response to one of Week 3’s readings, about the creator of Linux stepping down.

I had no idea. For some reason in the back of my mind the Linux project was always associated with a grassroots, community-based, stick-it-to-the-man mindset. The few people I know who openly admit to being Linux power users are unconventional, and (to me) have a sense of what it feel like to not be part of the mainstream. As such, those people are some of the most considerate I know. It was a shock to have such a stark contrast revealed in the Linux leadership.

Further, the term “Benevolent Dictator” also has a strong identity in my mind. The government of the UAE is often thought of as a benevolent dictatorship. The power is almost absolute and unquestioned, but the ruling family very clearly has the nation and the citizen’s best interests in mind. The other ‘Benevolent Dictator’ that comes to mind is Ton Roosendaal from Blender. From what I’ve seen he also works hard to foster a welcoming and compassionate community around his software. To be fair I did not put much thought into it until now, but it did not occur to me that the leadership of a software that is based on community contributions could be so antagonistic towards the community.

The good news is that as of this week the Linux foundation has revised (read: implemented) its code of conduct, based on the contributor covenant. In itself this does not solve the problem of aggression and discrimination in tech, but hopefully – along with continued bottom-up pressure from the community – it helps, and acts as a precedent for the future.

Blender Website Accessibility Audit

For this weeks assignment I have reviewed the Blender website with regards to the Web Content Accessibility Guidelines. I used the Chrome extension WAVE.

The results of the WAVE test are not exactly outstanding. At first glance there are 22 errors and a number of alerts and notes thrown in to boot.

Screenshot of Blender webite frontpage with WCAG errors overlaid

The errors all have to do with missing metadata: all of the image on the page are missing alt text, and there are a few links which do nothing.

Screenshot of Blender website listing detailed accessibility errors

The alerts are also of concern, since they point to a number of structural flaws in the page. The most notable alert is that the page doesn’t have an h1 tag. Given that the WCAG  suggest a strict heirarchy of information, the fact that the page does not have a ‘top-level’ of information is a cause for concern. The second alert notes that there are two elements which seem like headings (the “About” and “Get Involved” sections), but they are not tagged as headings. These elements are definitely headings of their respective sections, and should be tagged as such. The final alerts note a number of redundant links and text elements, where the same links or metadata are repeated twice or more. This creates unnecessary repetition for screen readers navigating the page.

Screenshot of Blender website with alerts overlaid

Finally, the additional notes on structure of the page point to further areas of potential difficulty for screen readers. WAVE points out three heading level 3s next to each other, although from the look of the page that structure makes sense since they are similarly-important sections. The system also points out that ordered lists should be used in cases where order of information in the list matters.

Screenshot of Blender website with structural notes

The real indictment of the website, however, happened when I actually tried to use a screen reader on the site, Windows 10’s built in Narrator. In comparison to the Microsoft Help page, the blender page is a lot more difficult to navigate. Without clearly defined ‘Landmarks’ it is difficult to navigate to the particular section that you would like, whereas on the Microsoft page clearly defined sections allow quicker and clearer navigation across the whole page. In addition, the lack of link descriptions becomes more apparent, when the narrator reads out “Link” with no more information. Finally, on the Microsoft help page is it relatively easy to navigate across the body of the page using the header tags (h1, h3, etc), but on the Blender site the only three header tags are arbitrarily in the middle of the page, so there is no way to use the headings scan function to quickly scan the content. Here is a screen capture of me trying to use various scan functions of the Windows 10 Narrator on the Blender website, occasionally switching to the Microsoft Help page for comparison.

2018-10-16 10-48-21

Overall, navigation on the Blender page with a screen reader is possible, in that you could search through every single item to find the one you want, or listen to the full url description for every link. However, the Microsoft Help page, although not perfect, makes it clear how important thoughtful structure and WCAG guidelines are. With clear sections, links that have helpful names, and without redundancies in title and link names, it is a lot less tedious to navigate the Microsoft page than the Blender page.

The Most Useless Dataset

The prompt was simple: create an open-source data set and publish it to GitHub.

In an effort to make the world a less serious place the dataset that I’ve tried to create is an entirely useless one: it is a dataset of the people who have viewed the dataset.

That was the intention, at least. In it’s current state it’s barely a proof-of-concept, although I think I have carved most of the foundations for the project out at this stage.

The code lives here, and the (currently broken) resulting website lives here.

This project is a total experiment in the workings of git, GitHub, and servers. I’m running a node server on Heroku, which uses a GitHub repo of your server files to build your server.

The server is also running a node-based wrapper for git, so it sees itself as a git repo, a branch of the original. The server fetches data from the GitHub repo that it is built off (the original) and updates its local files based on that, while on the client side the raw.txt data is rendered on screen.

Finally, once a user navigates to the site, the server makes a change to its local raw.txt based on user information, commits it to its local branch, and pushes that to the remote branch (main branch/origin/master?). I have hidden my credentials in the environment variables of the server to allow  for authorised pushing.

The problem is it doesn’t really work that well. Partly because the way I’m updating files is a bit slow, and there seem to be chunks of data missing out, but mostly because I think something is going wrong with Heroku, node.js, git, and their interactions. The process works fine when I run it locally, but once I push to Heroku, although I receive no errors or crashes, the GitHub files do not update.

I’ve learned a lot about navigating git in the command line, so I don’t consider this a complete failure, but I’m a little disappointed that the final step in the process was the one that broke everything…

Open Source Responsibility

The uniting theme that I noticed among this week’s many readings is the idea of responsibility.

The Joreen piece speaks of the responsibility of a movement or group to structure itself in a manner most beneficial to the movement itself, not just the elite within the movement.

The Turner interview spans many varieties of responsibility, from the responsibility of engineers to consider the ethics inherent in the tools they design, through the responsibility of society to recognise tech institutions such as Facebook as potentially huge threats to political power distribution, to the responsibility of art and artists to provide a cultural compass in times of political turmoil, and many more examples.

The Choi article covers the short term responsibilities of creator communities to consider the networks and institutions they build, as well as the longer term responsibilities of the same to act as “cultural stewards” for future generations.

In contrast to the vast sweeping nature of the other articles, the Kulkarni guide lays out the specific responsibilities of submitting code to a project.

That’s a lot of responsibility to put on one person. How can one individual both consider what specific emoji to use that will convey polite dissent, as well as contemplate how their pull request will be interpreted by an Ethics of 21st Century Code high school class in year 2318.

The answer is that they can’t, really. All these pieces, even the relatively straightforward code submission guide, read to me in the spirit of ‘best intention.’ There’s no one way to build ethical institutions, there’s no one way rage against the evil machine. It’s as if they collectively say “at least give it a shot, with humanity’s best intentions in mind, and you’ll be on the right track.”

Of course each author has a different way to go about this ‘best intention’; a different contribution so to speak. By publishing their considered thoughts on accessible media, they are each contributing to a growing resource on responsible use of technology.

I see these four vastly different articles as submissions to an Open Source Responsibility project. By no means are these the only submissions; I’m sure we could find many more different considered opinions on the ethical use of technology. Perhaps this project in its current state would be considered unstructured by Joreen. Or, perhaps Choi might say the project has a very organic distribution. That is not the point. 

The point is, however indefinite the bounds, there seems to be a call across the open source world to truly reflect on how the ideology and practice of open source can and will change current institutions, and shape future ones.

What will your contribution be?


The Three Tenets of Open Source

I am historically a user of open source software far more than a contributor. While I hope that this will change over the coming semester, this reflection is written with that in mind.

I have far from a holistic view of the open source software world. I am predominantly a user of Processing, p5.js, Blender 3D, and a scattering of javascript and python libraries here and there. In the years that I have been using these softwares, I have noticed three… trends or perhaps tenets among the communities, trends that I admire and respect.

Open access

This is not so much a trend as it is an obvious core component of open source software. The idea of open access for me, however, extends beyond merely being freely distributable. It’s an ethos rather than a (lack of) price tag, an ethos that facilitates building community and education.  More on that below.

Fostering a low barrier to entry

By this I do not mean that open source projects are easy to get the hang of, or easy to learn. Rather, the ‘cost’ of experimentation and play is far less than on closed source software.

For example, Blender is a software that is entirely free, because of its open source nature. An aspiring artist merely needs to put in the time and effort to start learning 3D creation on Blender, though that journey may be long and difficult.

In the case of proprietary software, however, the artist must consider whether the thousands of dollars to simply start learning is worth the potential future rewards (a job, artistic fulfilment, etc). Even if the software comes with an educational license, those are usually restrictive in functionality, in what the resulting work can be used for (e.g. non-commercial licenses), or both.

Open source software, from the potential user’s point of view, and especially when compared to proprietary software, fosters an environment conducive to low-cost, low-barrier experimentation, learning, and play. This is very important in engaging users of many different backgrounds who, for whatever reasons, cannot pay to simply learn to use a tool.

Sense of Community

From my little experience in the open source communities of Blender, Processing, p5, and the like, there seems to be far less user gatekeeping than the average software user community.

What I mean by this is the communities are more open to complete beginners, both in the sense of how people interact, as well as inherent structures within the institutions.

The user communities of the projects I’ve mentioned above do not look down beginners, they do not dismiss a lack of qualifications, they do not (generally) brush aside questions as obvious or trivial. This is in contrast to the communities of some similar proprietary software (here’s looking at you, Maya). This type of openness definitely also contributes to the sense of low barriers to entry I described above.

In addition to generally open and friendly user communities, all three projects I mentioned above have very clear ‘getting started’ docs, FAQs, and resources for beginners. Perhaps it is because proprietary software expects certain qualifications, or proprietary software is generally built by people who assume an already-extant user base, but my experience as a user of closed source artistic software is far less beginner friendly, and the communities can be a little more snooty. The open source projects I have experience with inherently foster friendly, accessible user communities, which then leads to a much friendlier and more supportive user environment in general.

Final thoughts

These three trends of my open source experience are by no means all-encapsulating, and of course I am sure there are open source projects that are less beginner friendly or have different barriers to entry. I consider these idealistic tenets, things to keep in mind as I begin my own contribution journey, guidelines to bring into my own open source projects, contributions, and interactions.