In AMAT5315, we choose a open-source stack
the Ubuntu distribution of the Linux operating system as the programming platform,
the Git as the version control software and the Github website as the place to store your code,
the Julia programming language as the programming language to implement algorithms,
the VSCode editor as the IDE to program Julia and
the Pluto notebooks as the tool for playing slides.
Except the Github website, all of the above mentioned software are open-source.
Open source software is software with source code that anyone can inspect, modify, and enhance. Ubuntu, Git (not the Github), Julia and Pluto are all open source software. Open source software are incresingly popular for many reasons, having better control, easier to train programmers, better data security, stability and collaborative community.
Reading: What Is a .DOCX File, and How Is It Different from a .DOC File in Microsoft Word?
Under pressure from the rising competition of the free and open-source Open Office and its competing Open Document Format (ODF), Microsoft pushed for the adoption of an even broader open standard in the early 2000s. This culminated in the development of the DOCX file format, along with its companions like XLSX for spreadsheets and PPTX for presentations.
Just like Windows, iOS, and Mac OS, Linux is an operating system. In fact, one of the most popular platforms on the planet, Android, is powered by the Linux operating system. It is free to use, open source, widely used on clusters and good at automating your works. The Ubuntu system is one of the most popular Linux distributions.
Citing linux statistics,
47% of professional developers use Linux-based operating systems. (Statista)
Linux powers 39.2% of websites whose operating system is known. (W3Techs)
Linux powers 85% of smartphones. (Hayden James)
Linux, the third most popular desktop OS, has a market share of 2.09%. (Statista)
The Linux market size worldwide will reach $15.64 billion by 2027. (Fortune Business Insights)
The world’s top 500 fastest supercomputers all run on Linux. (Blackdown)
96.3% of the top one million web servers are running Linux. (ZDNet)
Today, there are over 600 active Linux distros. (Tecmint)
Linux runs 90 percent of the public cloud workload
Just like Windows, IOS, and Mac OS, Linux is an operating system. In fact, one of the most popular platforms on the planet, Android, is powered by the Linux operating system. It is free to use, open source, widely used on clusters and good at automating your works. Linux kernel, Linux operating system and Linux distribution are different concepts. A Linux distribution is an operating system made from a software collection that includes the Linux kernel and, often, a package management system
1991, by Linus Torvalds
Linux is typically packaged as a Linux distribution
GNU's Not Unix! (GNU) (1983 by Richard Stallman)
Its goal is to give computer users freedom and control in their use of their computers and computing devices by collaboratively developing and publishing software that gives everyone the rights to freely run the software, copy and distribute it, study it, and modify it. GNU software grants these rights in its license.

The problem of GPL Lisense: The GPL and licenses modeled on it impose the restriction that source code must be distributed or made available for all works that are derivatives of the GNU copyrighted code.
Case study: Free Software fundation v.s. Cisco Systems
Tools are important.
| Documentation | Version control | Unit tests | Release | Collaboration | |
|---|---|---|---|---|---|
| Old days | txt file contained in a zip/iso | an office process that recorded the work and managed the versioning task | capture and replay testing tools | CD-ROM | in an office |
| Modern | Markdown + Github Pages | Git | test toolkit + continuous integration (with test coverage) built on top of cloud machines | Github | Github |
Version control, also known as source control, is the practice of tracking and managing changes to software code.
Unit tests are typically automated tests written and run by software developers to ensure that a section of an application (known as the "unit") meets its design and behaves as intended.