diff --git a/.vscode/settings.json b/.vscode/settings.json index 0df883c06..7756f86c7 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -16,7 +16,9 @@ "Squarespace", "tauri", "tlsv", + "transformative", "webdev", "Yvetot" - ] + ], + "liveServer.settings.port": 5501 } diff --git a/public/image/github-mark/github-mark-white.png b/public/image/github-mark/github-mark-white.png new file mode 100644 index 000000000..50b817522 Binary files /dev/null and b/public/image/github-mark/github-mark-white.png differ diff --git a/public/image/github-mark/github-mark-white.svg b/public/image/github-mark/github-mark-white.svg new file mode 100644 index 000000000..d5e649185 --- /dev/null +++ b/public/image/github-mark/github-mark-white.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/image/github-mark/github-mark.svg b/public/image/github-mark/github-mark.svg new file mode 100644 index 000000000..37fa923df --- /dev/null +++ b/public/image/github-mark/github-mark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/Azure_devOps/Azure Devops.png b/src/assets/Azure_devOps/Azure Devops.png new file mode 100644 index 000000000..20a07d58c Binary files /dev/null and b/src/assets/Azure_devOps/Azure Devops.png differ diff --git a/src/assets/bitbucket/BitBucket.png b/src/assets/bitbucket/BitBucket.png new file mode 100644 index 000000000..b3bfe8b8d Binary files /dev/null and b/src/assets/bitbucket/BitBucket.png differ diff --git a/src/assets/github/Screenshot 2025-01-26 at 14.24.09.png b/src/assets/github/Screenshot 2025-01-26 at 14.24.09.png new file mode 100644 index 000000000..1e96e2b8b Binary files /dev/null and b/src/assets/github/Screenshot 2025-01-26 at 14.24.09.png differ diff --git a/src/assets/github/Screenshot deploy at 13.39.38.png b/src/assets/github/Screenshot deploy at 13.39.38.png new file mode 100644 index 000000000..0073f073c Binary files /dev/null and b/src/assets/github/Screenshot deploy at 13.39.38.png differ diff --git a/src/assets/github/Screenshot repo at 16.24.08.png b/src/assets/github/Screenshot repo at 16.24.08.png new file mode 100644 index 000000000..3cfd999b4 Binary files /dev/null and b/src/assets/github/Screenshot repo at 16.24.08.png differ diff --git a/src/assets/github/Screenshot workflow at 13.49.53.png b/src/assets/github/Screenshot workflow at 13.49.53.png new file mode 100644 index 000000000..7228c0c90 Binary files /dev/null and b/src/assets/github/Screenshot workflow at 13.49.53.png differ diff --git a/src/assets/github/image.png b/src/assets/github/image.png new file mode 100644 index 000000000..284766bad Binary files /dev/null and b/src/assets/github/image.png differ diff --git a/src/assets/github/microsoft.png b/src/assets/github/microsoft.png new file mode 100644 index 000000000..dcab36ef8 Binary files /dev/null and b/src/assets/github/microsoft.png differ diff --git a/src/assets/github/pullscreenshot.png b/src/assets/github/pullscreenshot.png new file mode 100644 index 000000000..f5008f752 Binary files /dev/null and b/src/assets/github/pullscreenshot.png differ diff --git a/src/content/docs/github/Actions/github-actions-case-study.md b/src/content/docs/github-case-study/Actions/github-actions-case-study.md similarity index 100% rename from src/content/docs/github/Actions/github-actions-case-study.md rename to src/content/docs/github-case-study/Actions/github-actions-case-study.md diff --git a/src/content/docs/github/Actions/github-actions-video-case-study.md b/src/content/docs/github-case-study/Actions/github-actions-video-case-study.md similarity index 100% rename from src/content/docs/github/Actions/github-actions-video-case-study.md rename to src/content/docs/github-case-study/Actions/github-actions-video-case-study.md diff --git a/src/content/docs/github/Copilot/GitHub-Copilot-case-study.md b/src/content/docs/github-case-study/Copilot/GitHub-Copilot-case-study.md similarity index 100% rename from src/content/docs/github/Copilot/GitHub-Copilot-case-study.md rename to src/content/docs/github-case-study/Copilot/GitHub-Copilot-case-study.md diff --git a/src/content/docs/github/Copilot/github-copilot-case-study-elise-bjorn.md b/src/content/docs/github-case-study/Copilot/github-copilot-case-study-elise-bjorn.md similarity index 100% rename from src/content/docs/github/Copilot/github-copilot-case-study-elise-bjorn.md rename to src/content/docs/github-case-study/Copilot/github-copilot-case-study-elise-bjorn.md diff --git a/src/content/docs/github-case-study/GitHub-case-study.md b/src/content/docs/github-case-study/GitHub-case-study.md new file mode 100644 index 000000000..cc97335c3 --- /dev/null +++ b/src/content/docs/github-case-study/GitHub-case-study.md @@ -0,0 +1,253 @@ +--- +title: GitHub +keywords: development platforms, github +tags: Development Platforms, github +--- + +## Introduction +![GitHub logomark in white](/src/assets/github/github-mark-white.png) + +GitHub is the world's leading platform for version control and collaboration, built around Git. It is designed to help developers work together on projects efficiently by managing code, tracking changes, and collaborating in real time. GitHub has grown from being just a version control system into a full-fledged development platform with automation, collaboration, and deployment features + +## Brief History + +GitHub was founded in 2008 by Tom Preston-Werner, Chris Wanstrath, P.J. Hyett, and Scott Chacon. GitHub has had an enormous growth since it was founded and today it is one of the most popular platforms for web hosting and code sharing. GitHub's headquarters is based in San Francisco in the state of California, in the united states of america. The CEO of GitHub is named Thomas Dohmke. GitHub currently has about 2500 employees and in 2018 it had about 200-300 million USD of revenue. + +What started as a tool for developers to host and collaborate on open-source projects has grown into the most popular code collaboration platform in the world. + + + +### From the beginning to the present time (2023) + +**Key Milestones:** + +- 2010: Two years after its launch, GitHub was hosting over 1 million repositories. +- 2011: In the period of January to May 2011 ReadWriteWeb reported that GitHub had surpassed SourceForge and Google Code in total number of commits. +- 2013: It was hosting 5 million repositories and had over 3 million users. Before this year ended the amount of repositories had doubled again and it was now hosting over 10 million repositories. + +**Finance** + +- In 2012 Andreessen Horowitz invested 100 million USD in GitHub with a valuation of 750 million USD. +- In 2015 GitHub raised another $250 million of venture capital in a series B round. Investors were Sequoia Capital, Andreessen Horowitz, Thrive Capital, and other venture capital funds. This round valued the company at about 2 billion USD + +**International Expansion** + +- In 2015 GitHub opened its first office outside of the United States of America. The office was opened in Japan. +- In 2016, GitHub was ranked No. 14 on the Forbes Cloud 100 list. It was not featured on the 2018, 2019, and 2020 lists. + +**major attack** +In 2018 GitHub fell victim to what was considered to be the third biggest DDoS (Distributed Denial of Service) attack in history. The attack's traffic peaked at about 1.35 terabits per second. As a respond to this GitHub expanded its GitHub Education by offering free education bundles to all schools. + +**Acquisition by Microsoft** +Microsoft has since 2012 been using github to host open-source projects and development tools such as .NET Core, Chakra Core, MSBuild, PowerShell, PowerToys, Visual Studio Code, Windows Calculator, Windows Terminal and most of its product documentation (now to be found on Microsoft Docs). Microsoft announced on June 4Th 2018 that it intended to acquire GitHub for 7.5 billion USD. Only months later on October 26, 2018. the deal was closed. Under Microsoft GitHub continued to operate independently as a community, platform and business. This acquisition was in line with Microsoft's business strategy under CEO Satya Nadella, which focused on cloud computing services, alongside the development of and contributions to open-source software. Concerns over the sale bolstered interest in competitors like: Bitbucket, GitLab and SourceForge. they reported that they had seen spikes in new users intending to switch from GitHub to their respective services. In 2019 GitHub acquired Semmle, a code analysis tool, and in 2020 GitHub launched in India under the name GitHub India Private Limited. In 2020 it also acquired npm (Node Package Manager) for an undisclosed sum. + +![Microsoft](/src/assets/github/microsoft.png) + +## Features + +This is GitHub key features: + +- **Version Control**: version control is also known as revision control, source control, or source code management. It allows developers to monitor changes to their code and they can revert to previous versions if needed. + +- **Team-Collaboration**: Users can work together on the same project, inspect each others code, raise issues and make plans for the project. + +- **Branches**: A user can start a new branch either from the main branch or a different branch. This allows the user to write new code for the project without adding it to the project itself. When new code is written on a new branch it can be merged into the main project. Usually users make a pull request before merging. +This system enables users to develop code on different versions of a project at the same time. + +- **Pull requests**: When a user have made changes to a project's code on a separate branch, he can make a pull request. This is an important step in quality control where other developers can inspect the changes in the code. They do this to make sure that the code is bug free and has no issues. When it is determined that the code is safe it can be merged from this branch to it's parent branch or to the main branch. + +![Pull Request Workflow Screenshot](/src/assets/github/pullscreenshot.png) + +- **Issues**: GitHub Issues can be used to track ideas, feedback, tasks, or bugs for work on GitHub. Issues can be an important part of development as bugs and problems with the code arises developers can raise an issue and also assign the issue to specific developers for fixing. + +![Issues](/src/assets/github/Screenshot deploy at 13.39.38.png) + +- **Merging**: Is adding new code to a project from a separate branch. usually this is done after a pull request. + +- **Integration**: GitHub allows for developers to use other programs in combination with github. examples are: continuous integration systems, tools for project management and several IDEs. + +- **GitHub Actions**: Is a feature where you can add automated tasks to a project. The automated tasks can either be run manually or be set to run at specific points of development such as when a pull request is made. GitHub actions is very flexible and allows for lots of different programming languages and tools to be used with it. +examples of GitHub actions usage: deploy to static pages, end to end testing and unit testing. + +![Github actions](/src/assets/github/image.png) + +- **GitHub Pages**: Can be used to host a web project directly from GitHub. It is an easy way for developers to host a project and/or share details for a project. + +![Github pages Screenshot](/src/assets/github/pullscreenshot.png) + + +## Strengths + +- **Web-based platform/ease of access**: Being web based can be seen as a plus. New users can easily create an account especially when they can sign in via google. + +- **Popularity**: Being one of the most popular development platforms do make it easy for people to choose github for their projects, as many developer already know how to use it. + And new users can easily be integrated in projects with help from more experienced users. + +- **GitHub Actions**: A powerful tool for automation in your own repositories. + +- **Security**: GitHub has many good safety features that keeps the projects safe. + +- **Mobile app**: GitHub has an app developers can use to manage their code trough their mobile phones. A good tool on when you are on the go and don't have a laptop or computer available. + +- **Desktop app**: Is superb for better workflow. + +- **Integrations**: The fact that github can be simply used together other products like IDEs, management tools etc. + +- **Easy to find resources**: It is easy to find resources for learning how to use github, both from GitHub itself and the large community of users. + +- **Free of charge up to a certain point**: GitHub is Free for personal accounts. GitHub enterprise is affordable for bigger enterprises. + +- **GitHub pages**: You can host your own website directly from github free of charge. + +## Weaknesses + +- **Limitations**: GitHub has its limitations, not everything can be done trough GitHub and some developers may look for other platforms if GitHub cannot provide for their needs. + +- **Overwhelming to new users**: It can be difficult for new users due to its complexity, i can personally relate to this. + +- **Performance on big repositories**: Free user accounts are limited to GitHub's servers, this can cause issues when there is a high amount of traffic on the servers. + +- **Storage capasity**: Storage capacity is limited for free accounts. at a certain point the user may have to pay for more storage capacity. + +- **Expensive enterprice**: Upgrading to enterprise may be costly, but it depends on the size of the enterprises and revenue. It is certainly something to consider before upgrading or choosing github at all. + +## Comparison + +There are other platforms similar to github: + +- **GitLab**: GitLab is open source and can be self hosted for free. It launched in 2014 and it is a web-based platform for collaboration and version control. gitlab has built-in continuous integration and testing capabilities. gitlab has about 200-500 thousand users and is owned by gitlab inc. it has a limit of 10 GB of repository storage, which is ten times greater than github. + +![Gitlab Logo](/src/assets/gitlab/gitlab-logo-200.svg) + +- **Azure DevOps**: Is owned by Microsoft and is a cloud based platform that focuses on enterprise customers, it is a good option if you use a lot of Microsoft products and services as it integrates well with many of their products. Azure devops is a fully integrated set of services that provide all the tools necessary for building and maintaining a backlog. + +![Azure DevOps logo](/src/assets/Azure_devOps/Azure%20Devops.png) + +- **Bitbucket**: launched in 2008 and is owned by atlassian. It is a web based platform for collaboration and version control. It has about 10 million users. It has a storage limit of 2 GB repository storage, which is twice the limit of github. It provides integration with other Atlassian tools. But it is much more limited in its capabilities than the other alternatives. + +![Bitbucket Logo](/src/assets/bitbucket/BitBucket.png) + +When considering development platforms, GitHub, GitLab, and Bitbucket each have unique strengths and focus areas, making them suitable for different kinds of projects. Here's a breakdown of their key differences: + +1.Focus +GitHub is primarily focused on open-source collaboration and version control. It has become the largest platform for hosting public repositories, making it ideal for developers who want their work to be visible and collaborative. +GitLab, on the other hand, emphasizes DevOps and continuous integration/continuous delivery (CI/CD). It provides built-in tools for automation and deployment, which are especially useful for teams focused on streamlined workflows. +Bitbucket is primarily geared toward teams working on private repositories. It integrates seamlessly with other Atlassian products like Jira, making it ideal for organizations that already use Atlassian's ecosystem. + +2.CI/CD +GitHub provides GitHub Actions, which is a powerful tool for automation and CI/CD, though it requires manual setup for each workflow. +GitLab offers built-in CI/CD tools that are free and easy to configure, making it a strong choice for teams with a DevOps focus. +Bitbucket also supports CI/CD through its Bitbucket Pipelines feature, but it is not as robust or widely adopted as GitHub Actions or GitLab's built-in tools. + +3.Self-Hosting +GitHub is primarily a cloud-based platform, with self-hosting available only through its enterprise plan, making it less accessible for smaller organizations. +GitLab, being open-source, allows anyone to self-host their own instance for free, giving organizations more control over their data. +Bitbucket does not support self-hosting, which might be a limitation for organizations that require on-premises solutions. + +4.Community and Ecosystem +GitHub boasts the largest developer community, with millions of users contributing to open-source projects. Its vast ecosystem of integrations and tools further enhances its capabilities. +GitLab has a smaller but dedicated audience, especially among teams focusing on DevOps. +Bitbucket is comparatively smaller and more niche, appealing to teams already using Atlassian products like Jira or Trello. + +5.Storage and Pricing +GitHub offers free plans with a storage limit of 500 MB per repository, making it sufficient for small to medium projects. +GitLab is more generous, offering up to 10 GB per repository for free, making it an attractive choice for larger projects. +Bitbucket offers 2 GB per repository, which is less than GitLab but more than GitHub's free plan. However, for larger storage needs, upgrading to paid plans is required on all platforms. + +6.Integration +GitHub has a vast ecosystem of integrations and third-party tools, making it highly flexible and customizable. +GitLab offers integrations as well, but its focus remains on its native all-in-one DevOps platform, which reduces the need for third-party tools. +Bitbucket excels in integrating with Atlassian tools like Jira, Trello, and Confluence, making it a strong choice for teams already using those services. + +GitHub is an excellent platform for public and open-source projects, with its large community, robust tools, and extensive integration options. For private repositories and seamless Atlassian integration, Bitbucket is a strong contender. Meanwhile, GitLab stands out for its DevOps-centric approach, offering built-in CI/CD tools and free self-hosting options. Ultimately, the best platform depends on your project's needs and your team's workflow preferences. + + +## Github in Education and Academia case study: + +GitHub has emerged as a transformative tool in education and academia, providing a practical platform for students, educators, and researchers to collaborate, manage projects, and engage in real-world development practices.As a second-year front-end development student at Noroff, i´ve realized how pivotal Github is in the education and learning process.It’s more than just a version control platform; it’s a tool that has helped me grow as a developer, gain real-world experience, and learn industry-relevant practices. + +When I started using GitHub in my first year, it felt overwhelming at first, with all the technical terms like branches, pull requests, and commits. However, over time, it became an essential part of my daily workflow, and now, I can confidently say that GitHub has transformed the way I approach projects and collaborate with others. + +Here are the key ways GitHub excels in this industry and how it helps me learn: + +In our courses at Noroff, GitHub plays a crucial role in both individual assignments and group projects. Here’s how it has been beneficial for me: + +1. Learning Version Control +Before starting at Noroff, I didn’t know much about version control. GitHub has taught me the importance of tracking changes in my code and managing different versions of a project. I now understand how to commit changes, work on branches, and roll back to previous versions if I make a mistake. + +2. Collaborating with Classmates +Group projects are a big part of the front-end development curriculum. GitHub allows my teammates and me to collaborate effectively. We can each work on our own branch, review each other’s code through pull requests, and merge changes without worrying about overwriting someone else’s work. + +For example, in one of our group assignments, we used GitHub Issues to track tasks like "style the homepage" or "add a contact form." This made it easy to know who was responsible for what and when tasks were completed. + +3. Building a Portfolio +GitHub is also where I host my projects. Every assignment or personal project I complete is saved as a repository on my GitHub profile. This not only keeps my work organized but also helps me showcase my skills to potential employers. + +One of the most satisfying moments was when I created my first public repository and shared it with classmates. + +4. Exploring Open Source +GitHub has opened the door to the world of open-source development. I’ve explored projects from developers worldwide, learned from their code, and even contributed to a small project. This gave me a sense of what it’s like to be part of the global development community. + +How GitHub Enhances Education: + +GitHub Classroom: +At Noroff, we’ve used GitHub Classroom for some of our assignments. It simplifies the process of receiving and submitting work. Teachers can provide feedback directly in our repositories using pull requests or comments. This is much more practical than sending files back and forth via email. + +Real-World Skills: +GitHub prepares us for the workplace. Employers expect developers to know how to use version control systems, and GitHub is one of the most popular platforms. By using it in my coursework, I feel more confident about entering the professional world. + +# Strengths of GitHub for Students Like Me: + +- Free to Use: As a student, the fact that GitHub is free is a big plus. GitHub’s Education Pack also offers free premium features, which is amazing for exploring advanced tools like GitHub Actions. +- Global Community: GitHub’s open-source community has helped me learn from others’ work and connect with like-minded developers. +Ease of Hosting: I’ve used GitHub Pages to host small projects, like my portfolio website and a simple JavaScript game. It’s quick, free, and very beginner-friendly. +- Learning Resources: GitHub’s own documentation and tutorials have been a lifesaver whenever I’ve been stuck. + +# Challenges I’ve Faced: + +-Steep Learning Curve: When I first started using GitHub, understanding concepts like branching and merging was intimidating. But with practice and guidance from my instructors, I’ve overcome these hurdles. +-Mistakes with Pull Requests: In one of my projects, I accidentally merged code before it was reviewed. This taught me the importance of reviewing pull requests carefully and learning how to resolve conflicts. + +# Why GitHub Excels in Education: +GitHub is a perfect fit for education because it mirrors real-world workflows. It allows us to: + +- Work in teams efficiently, just like we would in a professional setting. +- Build a portfolio of projects that demonstrates our skills to employers. +- Learn how to use tools like GitHub Actions, which automate tasks like deployment and testing. + +By incorporating GitHub into my studies, I feel more confident about my abilities and more prepared to enter the industry. For me, GitHub isn’t just a platform; it’s an essential part of my learning journey and professional growth. + + +## why i chose Github for my case study: + +As a front-end development student, I chose GitHub for my case study because it has played a pivotal role in my learning journey. Here’s why: + +- Practical Usage: I began using GitHub in my first year at Noroff to manage assignments and collaborate with classmates. This hands-on experience has given me a solid understanding of its features. +- Industry Relevance: GitHub is widely regarded as an essential tool for developers, making it crucial for my career development. +- Community Engagement: Through GitHub, I’ve been exposed to open-source projects and have learned from contributions made by other developers. +- Learning Opportunities: GitHub’s comprehensive documentation and active community have helped me overcome challenges and learn best practices. + + +## Summary + +GitHub is one of the best (if not the best) platforms for open-source projects, you can also use it for private repositories. It has a great community, is easy to use, great security and many features and tools for collaboration. But everything has it's limits. It can be scaled up but only up to a certain point where other alternatives might seem like a better option for enterprises, in that case azure devops might be a better alternative. +Purpose of GitHub: +The purpose of GitHub is to simplify code management and enable collaboration. Developers can host their code, track changes, and work with teammates efficiently. GitHub’s integration with Git provides powerful version control, and its collaborative tools, like pull requests and issues, streamline team workflows. + +GitHub has been a game-changer in my education as a front-end development student. It’s not just a tool for managing code—it’s a platform that has taught me how to collaborate, contribute to open source, and prepare for a career in tech. + +GitHub also empowers the open-source community by providing a centralized platform for sharing and contributing to projects. Its purpose extends beyond collaboration to include learning, automation, and professional growth. + +### Credits + +- Andreas Jakobsen (volvojakobsen) + +### References + +- [GitHub, gitlab and bitbucket comparison](https://www.youtube.com/watch?v=FQGXIIqziQg) +- [GitHub wiki](https://en.wikipedia.org/wiki/GitHub) +- [GitHub docs](https://docs.github.com/en) +- [GitHub's website](https://github.com) +- [Gitlab wiki](https://en.wikipedia.org/wiki/GitLab) +- [Chatggpt](https://chatgpt.com/) + diff --git a/src/content/docs/github/github-video-case-study.md b/src/content/docs/github-case-study/github-video-case-study.md similarity index 100% rename from src/content/docs/github/github-video-case-study.md rename to src/content/docs/github-case-study/github-video-case-study.md diff --git a/src/content/docs/github/GitHub-case-study.md b/src/content/docs/github/GitHub-case-study.md deleted file mode 100644 index 2420bf332..000000000 --- a/src/content/docs/github/GitHub-case-study.md +++ /dev/null @@ -1,127 +0,0 @@ ---- -title: GitHub -keywords: development platforms, github -tags: Development Platforms, github ---- - -![GitHub logomark in white](~/assets/github/github-mark-white.png) - -## Introduction - -GitHub is an Internet hosting service for software development and version control using Git. It is a web based platform where users can store their code and collaborate together on a coding project. GitHub has a lot of great tools/features like github desktop, actions, project management, teams, etc. - -## Brief History - -GitHub was founded in 2008 by Tom Preston-Werner, Chris Wanstrath, P.J. Hyett, and Scott Chacon. GitHub has had an enormous growth since it was founded and today it is one of the most popular platforms for web hosting and code sharing. GitHub's headquarters is based in San Francisco in the state of California, in the united states of america. The CEO of GitHub is named Thomas Dohmke. GitHub currently has about 2500 employees and in 2018 it had about 200-300 million USD of revenue. - -### From the beginning to the present time (2023) - -**github blooming** - -- (year 2010) Two years after its launch, GitHub was hosting over 1 million repositories. -- (year 2011) In the period of January to May 2011 ReadWriteWeb reported that GitHub had surpassed SourceForge and Google Code in total number of commits. -- (year 2013) It was hosting 5 million repositories and had over 3 million users. Before this year ended the amount of repositories had doubled again and it was now hosting over 10 million repositories. - -**Finance** - -- In 2012 Andreessen Horowitz invested 100 million USD in GitHub with a valuation of 750 million USD. -- In 2015 GitHub raised another $250 million of venture capital in a series B round. Investors were Sequoia Capital, Andreessen Horowitz, Thrive Capital, and other venture capital funds. This round valued the company at about 2 billion USD - -**International Expansion** - -- In 2015 GitHub opened its first office outside of the United States of America. The office was opened in Japan. -- In 2016, GitHub was ranked No. 14 on the Forbes Cloud 100 list. It was not featured on the 2018, 2019, and 2020 lists. - -**major attack** -In 2018 GitHub fell victim to what was considered to be the third biggest DDoS (Distributed Denial of Service) attack in history. The attack's traffic peaked at about 1.35 terabits per second. As a respond to this GitHub expanded its GitHub Education by offering free education bundles to all schools. - -**Acquisition by Microsoft** -Microsoft has since 2012 been using github to host open-source projects and development tools such as .NET Core, Chakra Core, MSBuild, PowerShell, PowerToys, Visual Studio Code, Windows Calculator, Windows Terminal and most of its product documentation (now to be found on Microsoft Docs). Microsoft announced on June 4Th 2018 that it intended to acquire GitHub for 7.5 billion USD. Only months later on October 26, 2018. the deal was closed. Under Microsoft GitHub continued to operate independently as a community, platform and business. This acquisition was in line with Microsoft's business strategy under CEO Satya Nadella, which focused on cloud computing services, alongside the development of and contributions to open-source software. Concerns over the sale bolstered interest in competitors like: Bitbucket, GitLab and SourceForge. they reported that they had seen spikes in new users intending to switch from GitHub to their respective services. In 2019 GitHub acquired Semmle, a code analysis tool, and in 2020 GitHub launched in India under the name GitHub India Private Limited. In 2020 it also acquired npm (Node Package Manager) for an undisclosed sum. - -## Features - -This is GitHub key features: - -- **Version Control**: version control is also known as revision control, source control, or source code management. It allows developers to monitor changes to their code and they can revert to previous versions if needed. - -- **Team-Collaboration**: Users can work together on the same project, inspect each others code, raise issues and make plans for the project. - -- **Branches**: A user can start a new branch either from the main branch or a different branch. This allows the user to write new code for the project without adding it to the project itself. When new code is written on a new branch it can be merged into the main project. Usually users make a pull request before merging. - This system enables users to develop code on different versions of a project at the same time. - -- **Pull requests**: When a user have made changes to a project's code on a separate branch, he can make a pull request. This is an important step in quality control where other developers can inspect the changes in the code. They do this to make sure that the code is bug free and has no issues. When it is determined that the code is safe it can be merged from this branch to it's parent branch or to the main branch. - -- **Issues**: GitHub Issues can be used to track ideas, feedback, tasks, or bugs for work on GitHub. Issues can be an important part of development as bugs and problems with the code arises developers can raise an issue and also assign the issue to specific developers for fixing. - -- **Merging**: Is adding new code to a project from a separate branch. usually this is done after a pull request. - -- **Integration**: GitHub allows for developers to use other programs in combination with github. examples are: continuous integration systems, tools for project management and several IDEs. - -- **GitHub Actions**: Is a feature where you can add automated tasks to a project. The automated tasks can either be run manually or be set to run at specific points of development such as when a pull request is made. GitHub actions is very flexible and allows for lots of different programming languages and tools to be used with it. - examples of GitHub actions usage: deploy to static pages, end to end testing and unit testing. - -- **GitHub Pages**: Can be used to host a web project directly from GitHub. It is an easy way for developers to host a project and/or share details for a project. - -- **GitHub Enterprise**: Allows businesses to run their github projects on their own servers with additional security and access to more features like GitHub Enterprise API. - -## Strengths - -- **Web-based platform/ease of access**: Being web based can be seen as a plus. New users can easily create an account especially when they can sign in via google. - -- **Popularity**: Being one of the most popular development platforms do make it easy for people to choose github for their projects, as many developer already know how to use it. - And new users can easily be integrated in projects with help from more experienced users. - -- **GitHub Actions**: A powerful tool for automation in your own repositories. - -- **Security**: GitHub has many good safety features that keeps the projects safe. - -- **Mobile app**: GitHub has an app developers can use to manage their code trough their mobile phones. A good tool on when you are on the go and don't have a laptop or computer available. - -- **Desktop app**: Is superb for better workflow. - -- **Integrations**: The fact that github can be simply used together other products like IDEs, management tools etc. - -- **Easy to find resources**: It is easy to find resources for learning how to use github, both from GitHub itself and the large community of users. - -- **Free of charge up to a certain point**: GitHub is Free for personal accounts. GitHub enterprise is affordable for bigger enterprises. - -- **GitHub pages**: You can host your own website directly from github free of charge. - -## Weaknesses - -- **Limitations**: GitHub has its limitations, not everything can be done trough GitHub and some developers may look for other platforms if GitHub cannot provide for their needs. - -- **Overwhelming to new users**: It can be difficult for new users due to its complexity, i can personally relate to this. - -- **Performance on big repositories**: Free user accounts are limited to GitHub's servers, this can cause issues when there is a high amount of traffic on the servers. - -- **Storage capasity**: Storage capacity is limited for free accounts. at a certain point the user may have to pay for more storage capacity. - -- **Expensive enterprice**: Upgrading to enterprise may be costly, but it depends on the size of the enterprises and revenue. It is certainly something to consider before upgrading or choosing github at all. - -## Comparison - -There are other platforms similar to github: - -- **GitLab**: GitLab is open source and can be self hosted for free. It launched in 2014 and it is a web-based platform for collaboration and version control. gitlab has built-in continuous integration and testing capabilities. gitlab has about 200-500 thousand users and is owned by gitlab inc. it has a limit of 10 GB of repository storage, which is ten times greater than github. - -- **Azure DevOps**: Is owned by Microsoft and is a cloud based platform that focuses on enterprise customers, it is a good option if you use a lot of Microsoft products and services as it integrates well with many of their products. Azure devops is a fully integrated set of services that provide all the tools necessary for building and maintaining a backlog. - -- **Bitbucket**: launched in 2008 and is owned by atlassian. It is a web based platform for collaboration and version control. It has about 10 million users. It has a storage limit of 2 GB repository storage, which is twice the limit of github. It provides integration with other Atlassian tools. But it is much more limited in its capabilities than the other alternatives. - -## Summary - -GitHub is one of the best (if not the best) platforms for open-source projects, you can also use it for private repositories. It has a great community, is easy to use, great security and many features and tools for collaboration. But everything has it's limits. It can be scaled up but only up to a certain point where other alternatives might seem like a better option for enterprises, in that case azure devops might be a better alternative. - -### Credits - -- Andreas Jakobsen (volvojakobsen) - -### References - -- [GitHub, gitlab and bitbucket comparison](https://www.youtube.com/watch?v=FQGXIIqziQg) -- [GitHub wiki](https://en.wikipedia.org/wiki/GitHub) -- [GitHub docs](https://docs.github.com/en) -- [GitHub's website](https://github.com) -- [Gitlab wiki](https://en.wikipedia.org/wiki/GitLab) -- [bitbucket wiki](https://en.wikipedia.org/wiki/Bitbucket)