The True Power of the Internet … Git
And, it was, in 2005, that Linus Torvalds wrote a program that freed developers from continually backing up all the source code files, and where we only recorded the updates between one version of source code and another. That program was the mighty Git, and now it is not just coding what can use Git, but virtually any content that needs some form of version control. And, so, I am getting my content ready for Semester 1, and I thank Git and not Moodle for keeping track of my content for the module.
GiHub and teaching
There’s a perception that GitHub is only for developers. This is not true. Personally, I think everyone should use GitHub. In fact, you could archive your own life in a private GitHub, and document every digital artefact you have created. When you finally leave the planet, you can leave your legacy. It would be a timeline of our digital footprint on this world, and people could see when we did things. And, so, if you invent things, a GitHub shows you a timeline of what you did and when. This can be useful in patent applications, where the person submitting an update can be defined as the owner of that update.
To me, Moodle is poor as a teaching tool. It is just so static in everything that it does, and where a proper educational infrastructure should use a git approach and where we can track different versions of our documents. It also allows for students to download the complete lesson plan and then update it as the teachers add and update material. And, it’s (mainly) always accessible, and does not put knowledge behind a firewall. One of the best methods of doing this is with GitHub.
From a startup to a global superstar
If you are a major player in the market, such as with Microsoft, Google and Facebook, it just seems obvious that you can throw money at an emerging market, and you’ll succeed. Few startups, thus, ever have a chance of muscling in, as they lack the market reach and sustained investment.
But sometimes, a start-up comes along and beats off the major players in the market, and it has happened in open-source code repositories (which some would argue now drive the world). From their humble background, GitHub started in 2008 in San Francisco and advocated that:
… everyone is a manager
and
“Build software better, together”
They even gave their employees the opportunity to work on whatever project they wanted. Github then received its first major investment of $100m in 2012, and then received $250m in a Series B investment round.
The first target to be knocked-down was Google, who, in 2015, shutdown Google Code (some would say that Google often move into areas and quickly move out if they have no significant impact). And recently Microsoft gave up on its CodePlex site, and submitted to the might of Github. CodePlex was started in 2006 as Microsoft saw the rise of open source software, and from the threat of Linux. But the world just loved Github.
Github now contains most of the major open source repositories and continues to dominate the market. In fact, Microsoft, to highlight how much the company now supports open source, has the largest footprint in depositing code there, closely followed by Facebook. Microsoft gave developers until December 2017 to port their code off the site, and move, possibly, to Github.
Some say the power of nations lies in their parliaments, but others might say, in this Cyber Age, that the power lies in “to fork or not to fork” within the developers in Github. With crypto currencies coming along and disrupting traditional currencies, which were controlled by nations, it is often in Github that the real choices are made.
Git
So, while the creation of Linux is possibly one of the greatest advancements in Computer Science. There is something even better … Git. With Git we have a version control system of code and documents. I use it every day, and it saves me so much time and effort. I use it in so many ways, including archiving my code and updating my Golang libraries. At its core is a smart way of keeping track of any version of a file and the difference between them.
Linus Torvalds wrote Git in 2005 for his Linux kernel but is now maintained by Junio Hamano. At its core, each host maintains a complete repository of all the files it has archived and how they have been modified. This differs from the client-server-based approach of code repositories, as the tracking can be done independently from a server.
With Git, you end up with some commands that are hard-wired into your memory. We use “git add .” to add new files, then “git commit -m ‘New update’” to search for changes in the files, and then finally a “git push” to upload the new versions. Then a “git pull” to get things back. Anyone who has ever lost their code or created a bad version will know the power of using Git to recover things. Three basic commands are thus:
git add .
git commit -m "My new update"
git push
But, it’s not just code it can archive; it can archive many different document types, and it particularly likes mark-up documents such as LaTeX. Overall, Microsoft Word is terrible for version control, as the file is encapsulated in a Zip file. Many developers thus use LaTex and archive with Git. The great advantage of this is — just like Wiki’s — we can trace the updates through text. It also allows us to easily share documents and allow collaborative work (as Git can keep a track of the update). And, for large files which are more than GBs in size there is Git Large File Storage (LFS) — git-lfs.
And, so, if we were to start the Internet again, possibly LaTeX and Git would be used to create our documents, and we would have no Microsoft Word. In fact, we would probably not need Microsoft Windows, as our world would be open-sourced with the use of Linux. While Linux has always struggled to compete with Microsoft Windows and Mac OSX, it is open and free. The code for Linux, too, is open to all to examine and update. People often maintain open-source software as they have a real belief in its power and in how it frees us from the dominance of large and powerful companies.
And, this made me smile:
Not just for source code
There are so many use cases of using Git that are not just versioning code. For my own teaching, I use Git to push my PowerPoint slides, source code and labs. Students can easily download the whole module at the start of the course and thus just to a “git pull” for any updates. Students, too, can mark typos in the material. You can find this at:
Another interesting example is with the District of Columbia and which publishes its laws through Git. This allows everyone involved to keep track of changes in the law and also spot errors and typos. If you are interested, the laws are marked up with XML and available at:
This, though is the definitive source of the law, and not a copy from another system, and where a “pull request” allows someone to update a document, and then for the maintaner to review and change, if required.
Conclusions
Everyone should use GitHub. In fact, you could achieve your own life in GitHub, and document every digital artefact you have created. Go git …