# Grey Software Onboarding Brainstorming ###### tags: `Brainstorming` | Staff | University Apprentices | Board of Directors | Advisory Board | Volunteer | | ----- | ---------------------- | ------------------ | -------------- | --- | | | | | | | | [Staff](https://gitlab.com/grey-software/org/-/blob/master/content/en/Team/staff.md) | [University Apprentices](https://gitlab.com/grey-software/org/-/blob/master/content/en/university-apprentice/uet-mardan.md) | [Board of Directors](https://gitlab.com/grey-software/org/-/blob/master/content/en/Team/board-of-directors.md) | [Advisory Board](https://gitlab.com/grey-software/org/-/blob/master/content/en/Team/advisory-board.md) | [Volunteer](https://gitlab.com/grey-software/org/-/blob/master/content/en/Team/volunteers.md) | ## Final Content ## Welcome Welcome to the **Grey Software Onboarding Process**. We are delighted to have you join our mission to empower people, to create and use open-source software (OSS). If you are new to the world of OSS development, this will be a great opportunity for you to get your first contribution. If you know your way around Github, Gitlab, and other OSS tools, this will be a straightforward guide for registering yourself as part of the Grey Software organization. We hope that the development tools and configuration settings we recommend enhance your OSS journey. [Let's get started!](/Account%20Setup/AccountSetup) ----- Overview ----- By the end of your onboarding process, we hope to equip you with the essential open source knowledge we think would best prepare you to collaborate with us. This preparation is made up of: - Setting you up with essential accounts - Providing guidance and resources to help you learn core concepts and tools that facilitate distributed software development - Walking you through an example development workflow that will give you a plied experience with our process ### How can software developers from different parts of the world collaborate When you were working with software developers from around the world on a project, you need to know: * What changes were made since your last collaboration * Who made those changes * When were those changes made * Why were those changes needed Messaging your teammates about which file you're changing and telling them to keep their fingers off is not the optimal workflow. Neither is storing .zip snapshots of your code on a shared online drive. To get around this issue, we use a version control system, or a VCS. A VCS allows multiple people to work on the same set of files in structured harmony. Team members can work on any project file on their local version and merge their changes into a shared version. The latest version of a file or the whole project is always in a shared location managed by the VCS. ## What is a Version Control System A version control system (VCS), tracks the history of changes as people and teams collaborate on projects together. As the project evolves, teams can run tests, fix bugs, and contribute new code with the confidence that any version can be recovered at any time. Developers can review project history to find out: * Which changes were made * Who made the changes * When were the changes made * Why were changes needed ## What is Distributed Version control System A distributed version control system (DVCS) is a type of version control where the complete codebase — including its full version history — is mirrored on every developer's computer. ## What is Git? Git is a source distributed version control system which means that you can track your changes in computer files and coordinating work on those files among multiple people. So, that’s why Git is called a distributed version control system. For example, At any point, you are working on a project and your project hit with a fatal error and you don’t know what causes it so with the help of Git you can also revert to the stable state of the project.<br></br> Git also helps you to synchronize your project between the different people remotely. For example, you are working with your team members on a project and whenever you make changes in the file, git takes those changes and merge them into a repository actually Git stores information about the project’s progress on a repository So you don’t need to worry about mailing your files each time with your team and this is how collaborating remotely can be done easily using git. ## Why Git? According to the latest Stack Overflow developer survey, more than 70 percent of developers use Git, making it the most-used VCS in the world. Git is a free and open-source distributed version control system. Git is commonly used for both open source and commercial software development, with significant benefits for individuals, teams, and businesses. * Git lets developers see the entire timeline of their changes, decisions, and progression of any project in one place. From the moment they access the history of a project, the developer has all the context they need to understand it and start contributing. * Developers work in every time zone. With a DVCS like Git, collaboration can happen any time while maintaining source code integrity. Using branches, developers can safely propose changes to production code. * Businesses using Git can break down communication barriers between teams and keep them focused on doing their best work. Plus, Git makes it possible to align experts across a business to collaborate on major projects ## What are GitHub and GitLab and why we use both? GitLab and GitHub are version control systems for managing source code in software development. When working in a team, developers can use these two platforms to edit source code, make changes, and perhaps most importantly, keep track of all changes they have made. Every single change can be precisely tracked and undone if necessary. That's why here at Grey Software we preferred to have a GitLab and GitHub Account to get started with the Software Development Journey. ----- By the end of our onboarding process, new students and staff will: ### 1. Have created the necessary accounts for the following ## Onboarding Welcome to the **Grey Software Onboarding Process**. We are delighted to have you join our mission to empower people, to create and use open-source software. If you are new to the world of open-source software development, this will be a great opportunity for you to get your first contribution. If you're a somewhat seasoned software developer, this will be a straightforward guide for how to register yourself as part of the Grey Software organization. We hope that the development tools and configurations we recommend ease your open-source development. [Let's get started!](/Account%20Setup/AccountSetup)data model ``` name: Arsala avatar: https://gitlab.com/uploads/-/system/user/avatar/2274539/avatar.png github: https://github.com/ArsalaBangash gitlab: https://gitlab.com/ArsalaBangash linkedin: https://linkedin.com/in/ArsalaBangash ``` ### 2. Have gone through the issue to merge request flow on Gitlab - Create an issue on the onboarding repository (We should limit issue creation to people we have specifically invited to the repository) *We can explain this decision as well to give more background in our guide* - When submitting a merge request for their data model to the org repo, they should link the issue from the onboarding repo ### 3. Have understood how their yaml data got converted to HTML - Inspect the code and explain line by line how elements in the markdown map to the screen **Useful Documentation** https://content.nuxtjs.org/themes/docs/ https://content.nuxtjs.org/ - **Code Flow** *content/en/Team.md* ![](https://i.imgur.com/ex4BxRr.png) ![](https://i.imgur.com/R1f3rjw.png) *components/TeamProfile.vue* ![](https://i.imgur.com/K51G8nN.png) *components/ProfileCard.vue* ![](https://i.imgur.com/Kf2LK9D.png)