GitHub Inc. is a web-based hosting service for version control using Git. It is mostly used for computer code. It offers all of the distributed version control and source code management (SCM) functionality of Git as well as adding its own features. It provides access control and several collaboration features such as bug tracking, feature requests, task management, and wikis for every project.
GitHub offers plans for both private repositories and free accounts which are commonly used to host open-source software projects. As of June 2018, GitHub reports having over 28 million users and 57 million repositories (including 28 million public repositories), making it the largest host of source code in the world.
On June 4, 2018, Microsoft announced it had reached an agreement to acquire GitHub for US$7.5 billion. The purchase is expected to close by the end of the year.
GitHuba is also offered in a self-managed version called GitHub Enterprise (GHE).
Q: Is GHE is based on a closed VM
A: Yes - https://help.github.com/enterprise/2.13/admin/guides/installation/ “GitHub Enterprise is distributed as a virtual machine image that you install and manage within your existing infrastructure.”
Possible disadvantages of a closed VM:
Q: a closed environment (could be a trojan inside!)
A: Agree with assessment
Q: Installation is quite complicated
A: DISAGREE - single VM makes it easy to install, although less flexible
See installation instructions at https://help.github.com/enterprise/2.13/admin/guides/installation/setting-up-a-github-enterprise-instance/
Q: upgrades and patching is complicated
A: DISAGREE - VM appliance makes patching and upgrading relatively simple.
See upgrade instructions at https://help.github.com/enterprise/2.13/admin/guides/installation/upgrading-github-enterprise/
Q: bad thing off my head for using VM is I/O
A: Not clear - In general yes. But things can be tuned to improve it a lot
See https://academic.oup.com/comjnl/article/61/6/808/4259797 for general recent study on this.
Q: probably can't separate the installation to separated parts (in order to improve performance)
A: DISAGREE - Can have VM act as different parts to scale per requirements. See https://help.github.com/enterprise/2.13/admin/guides/clustering/about-cluster-nodes/#cluster-design-recommendations and https://help.github.com/enterprise/2.13/admin/guides/clustering/initializing-the-cluster/ for more details.