New Volunteer Onboarding - saayam-for-all/docs GitHub Wiki
Thank you very much for volunteering for Saayam For All. Welcome aboard!
Please watch this YouTube video about our organization - Saayam For All
Look at our slides here - Saayam For All Proposal
Watch this YouTube video to understand about AWS services - https://www.youtube.com/watch?v=Z3SYDTMP3ME
Here are a few things that you need to understand before you start contributing to our organization:
- Saayam For All is a 501(c)(3) Non-Profit Organization SaayamForAll.org EIN: 93-2798273 3046 Rosato Ct., San Jose, California 95135. Email: [email protected]
- We offer interning/volunteering offer letters. Please let us know what roles/tasks you want to do at our org - Developement(Java, Python, Reaact, React Native, Go), Front end web and mobile app development, backend work Lambda functions, micro services in Java/Python/Go etc, Database work on RDBMS (Aurora DB with Postgres flavor), Product Management, Program/Project Management, QA, DevSecOps roles with Github Actions and Pulumi (Infrastructure as Code - IaC).
- Once after joining our Saayam Community/groups, you let us know whether you are interested in volunteering/interning for us. Then, you will be given the official offer letters. Contact Rajeshwary Jaldu for these letters.
- Saayam For All products are totally developed by volunteers. Every task/issue is generally developed by two people together following the principle of pair programming. This practice is also good when one of these two needs to be absent for a genuine reason. You should never abscond from your work with OUT informing your pair programmer and/or your team/me and leave your task incomplete. We need sincere commitment to your tasks.
- First you need to introduce yourself to our team in our main software group by giving these details: 1. your full name - first & last, 2. Your qualifications 3. Name of your school 4. Where you come from - native place/location etc 5. Your hobbies/interests etc. All these play a good role in finding friends in the new place.
- Our volunteers are from all over the world, from different countries, from different cultures, from different time zones. You should keep this fact in mind during communications. Never ever call another member directly with OUT checking with them. We highly respect their professional and family times. First check their permission and availability via WhatsApp. Even a direct text message might cost a lot in a few countries.
- We use all FREE tools/services, as far as possible e.g. WhatsApp, Zoom, Calendly, Github etc. You are free to use these services as a member of our organization. But, if you are signing up for any paid service, you need to get permission from the relevant authorities. Otherwise, you end up paying for those services.
- We need your sincere contribution for the hours you claim to work. All hours need to be logged by filling a google sheet. As a volunteer you are required to submit your timesheet by the end of the day on Monday each week. Make sure to include the hours worked, your team name, and a brief description of the tasks you completed. All entries must be finalized and submitted by Tuesday to ensure smooth processing. The submission window will close on Wednesday at 12:00 AM EST, and late submissions will not be accepted.
- Daily we have scrum/standup meetings with zoom call at 10am PDT. The time and zoom link will be posted on the organization group in the morning on all weekdays. This is an opportunity for you to talk about what you did since the last scrum meeting, what you plan to do today and also let the team know whether you are running into any issues or need help. If you have received a volunteering offer letter, attending this daily stand up is a MUST for you. If you can't attend this meeting for any reason on any day, you should send a notification to your OPT Volunteers group and to your project specific group.
- We encourage all members who join our zoom calls to show their faces. So, please come ready to show your face to these scrum/zoom calls.
- Please join this zoom call promptly. Generally this meeting starts 2 min before the scheduled time and will have 2 minutes grace period. These 4 minutes are used for ice breaking. If there is no quorum in the meeting, meeting will be wrapped by after 10 min.
- If you can't join the scrum call for any reason, please send your status to your team group or to the software group.
- All our zoom meetings are recorded. All our WhatsApp communications are preserved. In the event that a volunteer who received a volunteering offer letter does NOT attend our daily scrum meetings and/or who does NOT send a daily status update for one week with OUT a prior notice will be considered as NOT a volunteer at Saayam For All and his offer letter will be deemed as NULL and VOID.
- Communication guidelines - Whenever you need help, first you need to post a message in your product specific WhatsApp group or Github group/team. Since all our members are volunteers and also they are in different time zones, getting a response generally takes more time. If you do NOT get a response within 24 hours, you can escalate to our Software group where all our software team members are present. Finally you can escalate to Rao Bhethanabotla (408-390-1725).
- We encourage open communications in our organization. Any candid and constructive feedback is welcome. As long as your communication does NOT hurt others, you are free to discuss any issues openly in the appropriate WhatsApp groups.
- We have a few non software related WhatsApp groups which you can optionally join based on your interest.
- Be Wise & Wealthy group for investments in stocks, ETFs, options, real estate, crypto currencies, precious metals and venture funding etc. You need to take the posts and advices on this group with a grain of salt. We are NOT responsible for any of your personal losses. If you are NOT an active contributor to our Saayam Community, you need to pay $5+/pm to this group. All other groups are free for our members.
- Health & Fun - All kinds of games & sports discussions and any fun related activities will be posted here.
- Saayam Gardening - If you are interested in gardening activities, you can join this group.
- Saayam - This group is exclusively reserved for asking "saayam" i.e. help. When we release our Saayam apps - web app and mobile app, this group will be removed. It's a temporary measure to request for help. Though we provide secrecy of your messages in our apps, Saayam WhatsApp group does NOT have any secrecy - all members can see your post and respond if they can help you.
- If you want to start any other fun/non-software/software related WhatsApp in our Saayam Community, please let Rao Bhethanabotla know about this.
- Each volunteer is responsible for setting up their own GitHub account. We do not create GitHub IDs for you. If you're unfamiliar with the process, please refer to GitHub’s guide on signing up. It provides step-by-step instructions.
- We need your Github id so that you will be added to our Github project - https://github.com/saayam-for-all. Please contact Rajeshwary Jaldu for getting access to our Github project.
- Please make sure that your github id is intuitive, your profile details are complete with your first name, last name and also a profile picture. These are important for assigning github tasks with out any mistakes.
- Please make sure that your github id is intuitive i.e. either it should clearly indicate your name or your github profile should have your full name. If you can upload your image, that would be great too.
- Though all our code is open source protected under general license, you need to be our Github member to contribute to our code.
- Our code has to be secure and meet standard guidelines - 90% code coverage coming from both unit test cases and automated test cases.
- All new development and bug fixes need to be done in a separate branch from main branch. Only after two thorough code reviews and after having proper unit test cases giving code coverage about 50%, this change can be pushed to the main branch.
- Please refer to our architecture here - https://github.com/saayam-for-all/docs/wiki/Architecture
- Our product consists well designed modules. Each module is owned by a small two pizza team that is responsible from inception to the production. This team is empowered to take all types of decisions about its design, implementation, documentation etc.
- Each module goes to a repository on Github. This repo has many tabs like Issues, Wiki, Project etc. Your team should be able to manage your product with all the features that Github offers under these various tabs.
- Code - this is where your code goes
- Issues - Using this your program manager or team lead assigns you specific tasks. These are similar to JIRA tasks/issues
- Pull Requests -
- Projects - controlled by your team lead or program manager
- Wiki - this is where all the documentation goes. All requirement specifications, functional specifictions, design docs etc, design decisions will go here. We need proper documentation for every module.
- Security
- Insights
- Settings - only Github admin will have access to this tab/feature.
- The "main" branch in each repo is reserved for production ready code. "test" branch is for the integration testing.
- Each developer needs to work in their individual branch named in this format - <issue#>.
- Frontend Development
- Web App team needs to follow these guidelines.
- main branch is used for production release code. Code from dev branch is pushed to main branch carefully once in a while. This code will be copied to AWS S3 for production.
- dev branch is used for the main development. For any new feature/bug fix, you need to take the latest code from the dev branch.
- All new development for features and bug fixes need to be done in your own branch, push the changes to the test branch for testing your changes on netlify site and finally merge your changes back to dev branch.
- There is an automatic CI/CD pipeline that moves the code from test branch to netlify. You DO NOT have to do any thing for this process. If you run into any issues here, please post a message on your frontend group.
- Web App team needs to follow these guidelines.
-
Repository Setup:
- To begin working with the repository, first, clone the dev branch (not the production branch) onto your local machine using the command:
git clone -b dev <repository_url>
- To begin working with the repository, first, clone the dev branch (not the production branch) onto your local machine using the command:
-
Branch Creation:
-
Create a new branch on your local machine for the task at hand. Follow the naming convention:
<github_username>_<task_description>
-
For instance, if your GitHub username is "abc09" and your task is to "add navigation bar on the landing page," your branch name could be "abc09_added_navbar" OR "abc09_navbar_landingpage". This naming convention helps identify the owner of the branch and the task it pertains to.
-
-
Keeping changes up-to-date:
- It's advisable to fetch the latest changes from the remote repository to your local machine if you've been working on the same branch for more than one day. Use the command:
git pull
- It's advisable to fetch the latest changes from the remote repository to your local machine if you've been working on the same branch for more than one day. Use the command:
-
Committing Changes:
- After completing your task, add and commit the changes using the following commands:
git add .
git commit -m "Brief description of changes"
- After completing your task, add and commit the changes using the following commands:
-
Pushing Changes:
- Push your committed changes from your local machine to the remote repository with:
git push origin <branch_name>
- Push your committed changes from your local machine to the remote repository with:
-
Pull Request Creation:
- After pushing your branch, create a pull request (PR) from your branch to the designated testing branch. Ensure the PR is directed towards the testing branch and not the production branch. Additionally, assign reviewers for code review.
-
Code Review:
- Reviewers will provide feedback on your changes through comments on the PR. Make necessary adjustments based on feedback.
-
Merge and Deployment:
- After approval, a designated person with merge access will merge your changes into the testing branch. Once successfully deployed on the dev branch, consider deleting your branch since it's no longer needed for any other task.
-
Repeat:
- Follow this workflow for each task, maintaining a clean and organized repository structure. This structured GitHub workflow ensures effective collaboration, version control, and task management within the development team.
- There are many sub groups under Saayam Community. Some are software development specific and others are non-software specific.
- You can join in any of these by sending a joining request.
- If you want to start a new group based on your interest, conact Rao Bhethanabotla.