Longg long ago (nine and a half years ago, to be precise), three lads by the name of Tom, Chris and PJ launched a web-based source code hosting and management service called GitHub. But three years before they did this, Linus Torvalds, the same guy who created the open source Linux operating system, developed a version control system called Git. What is GitHub, what is Git, how are they interconnected, what is a version control system, what does source code hosting and management mean, etc. – these are probably the questions nagging you as you read this bombastic beginning to a blog post. While the intent of this series of posts is not to individually take up all of these terms and extensively explicate them, I do believe that answering some of them to some extent from the get-go will be of use in bettering our basic understanding of everything else that will be going on shortly.
Git is a version control system, which means that it is primarily responsible for coordinating files being worked upon by a set of collaborators. It tracks changes happening to those files across systems, periodically synchronizes them, and makes virtual teamwork possible. While one can imagine a multiplicity of uses for such a tool, Git is popularly used by programmers for source code management (SCM) and software development. Taking Git one step further, those three lads I mentioned earlier came up with a website they named GitHub. GitHub retains all the version control and SCM features of Git, but enhances its overall usefulness by incorporating it into a web-based source code hosting service, and adding collaboration features like issue tracking, Wikis and task management to it.
In essence, GitHub becomes an ultimate package for any programmer hoping to develop an open source program, manage third party code contributions, and triage feature requests, bug reports and other issues that his users file. And this is very much the case – GitHub has a user base larger than the population of Romania, and with 57 million repositories, it is the largest host of source code in the world.
I am no programmer or software developer myself (though that is the exact position I would like to see myself in precisely a year from now), I have worked extensively with GitHub in recent times. Frankly, I have no clue about how to actually work with the command-line interface of Git, nor do I have any practical experience with repository forking, code merging or pull requests, some key benefits of SCM via GitHub. Yet, GitHub is a big deal for me. How and why?
I am a user of a free, open source and GitHub-hosted screen reading software project called NVDA (Non Visual Desktop Access). While I can sing praises about NVDA and how it is light years ahead of its competing products (joking, joking), even perfection has room for improvement (both serious and joking).
To illustrate this with an example, I felt the absence of number processing options (ability to read digits individually, in pairs, or in triplets) in NVDA to be a significant shortcoming. Also, it would have been an icing on the cake if NVDA were to automatically report when my laptop was on battery and when it was being charged, rather than the user being required to press NVDA+Shift+B to manually retrieve this information. The immensity of innovation and the coolness of ideas that a community-driven project like NVDA has the potential to witness is incredible, but where would I express these suggestions I had in mind?
GitHub is that bridge between an ordinary user and the software developers – the issue tracking system that GitHub projects like NVDA possess establishes the platform where the user community can file new “tickets” or “issues” pertaining to well-defined and substantiated feature requests, report bugs which can be reproduced with reasonable consistency in a certain manner, or request support for a new application, speech synthesizer, Braille display, etc. and hear comments from the developer community. Long story short, the relevant GitHub tickets for the above mentioned two improvements are #4273 and #4612.
The goal of this series of posts is not to delve into any technical aspects of GitHub relevant to coders, but simply to acquaint screen reader users with the working of the GitHub issue tracking system. In particular, this effort has been inspired by confusions that many have encountered and expressed on the NVDA Users International e-mail list, particularly in this thread. While I cannot commit to a fixed schedule, following is a rough roadmap of related topics I desire to cover as part of The GitHub Games series in the near-term, in random order:
- Creating a GitHub account
- Filing your first GitHub issue flawlessly
- Searching existing issues for duplicates and related tickets
- Helping out in triage (if and when time and circumstance permit)
The entirety of this multi-part series will be based on the usage of NVDA version 2017.3, Firefox version 56.0 or Google Chrome version 61.0, all on a Windows 8.1 system. Thus, get ready to have your say in open source, community-driven and GitHub-hosted software like NVDA!
“The GitHub Games” is a comically atypical title for a post series revolving around serious subjects like GitHub, issue tracking and triage help. The following set of elucidations may expound on the true etymology of “The GitHub Games”:
- In all honesty, GitHub is not something to be grappled and struggled with, but a medium through which you can optimally utilize your power and status as the consumer of a software product. It shall be my conscious effort to make this learning journey as pleasant, engaging and instructive as possible, so much so that GitHub becomes a fun game to play more than anything else.
- Alliteration is one of my favourite figures of speech, so “GitHub” and “games”, in accordance with their correlation as explained in my previous point, sound perfectly fluid. However, I must confess that “The Hunger Games”, the trilogy to which “The GitHub Games” makes a cheeky reference, isn’t a book I’ve read or a film I’ve watched. Let me know if you think this is a trilogy a Potterhead (that’s me) might want to advisably check out.
- I do acknowledge that I have not actually provided substantial content with regards to the usage of GitHub within the ambit of this blog post. Therefore, I believe terming this the 0th part of this series makes the fact that this is a prologue evident. Hence, please bear with me and my frenzied life as I attempt to juggle blogging with school examinations, IT and GK quizzes, debating and elocution events, and be rest assured that the promised material will be published in the coming weeks and months in comprehensive splits…