This is the final demonstration of my work during Google Summer of Code 2018 with Systers Open Source organization. I share my work, my learnings, and the overall incredible experience.
Costa from Portugal Background? • Worked 2 years on Android and I’m a MSc Telecommunications and Informatics Engineering graduate Previous Experience with Open Source? • Almost none before GSoC • 1 PR in November ‘17 HacktoberFest, 1 PR for another org on GSoC and then started in March on Systers Open Source with more than PRs
→ @isabelcosta Mentors • Murad → @murad • Dilushi Piumwardane → @dil • Roopal Jain → @roopal Admin • May → @may • Code Code Code; Follow proposed timeline for the project; Communicate regularly with mentors and the community; Share project progress; ... • Guide on technical issues and doubts; Help me follow best practises; Review Pull Requests; ... • Bridge between the organization and the team; Helped me getting feedback from potential users; ...
• Mentorship System for women in tech to mentor and support each other • Target user/audience: Any Women in Tech, in any stage of the career, of any age, and any social/economic background Why did I propose this project? • I was a mentor before in college • I met some women transitioning careers that asked me for or I offered advice Why I think this important? • Help women who might be switching careers into Tech or are already on it • Provide a safe environment for women in tech to mentor each other on career development topics
API • Login API • Provide Swagger Documentation • Edit Profile API • List All Users API • See my and other Users’ profile API • Assign a User as an Admin API • Delete my User profile
Mentorship Relation API • Get all Mentorship Relation API • Email Verification API • Accept/Reject/Cancel mentorship relation API • Revoke Admin role to a User API • Delete Mentorship Request API • Cron job to complete a Mentorship Relation
• Register 2 new Users • Login the two users • List Users, to see IDs • Check my User profile • Update their profile to enable mentoring and be mentor features
from User 1 to User 2 • Send a Mentorship Request 2 from User 1 to User 2 • Send a Mentorship Request 3 from User 1 to User 2 • User 2 rejects Mentorship Relation 1 • User 1 deletes Mentorship Relation 2 • User 2 accepts Mentorship Relation 3
summarize … • More features … — Instant Messaging in the app — Schedule Meetings between Members — Report Code of Conduct violations — Relations 1 to many — Tutorial Screen — Slack and Social Media authentication — Shared Resources in a Relation — Gamification for a relation’s achievements and milestones • Build this app using a hybrid solution (e.g.: flutter) and embrace Android and iOS • Web version of the app !! • Integrate with Volunteer Management System (VMS)
Design to design a good UI and UX; • Created UI Prototype feedback Google Docs for potential users to ask questions; • Create a Quality Assurance Google Docs to educate members about the backend; • Hosted Ask Me Anything (AMA) sessions for new contributors; • Promoted the project through a blog post about the Mentorship System idea; • Shared frequent updates on #mentorship-system Slack channel to make the community aware of the state of the project.
Source ... • Share publicly User Interface (UI) screens and prototype (on issues, wiki, ...) • Initial Google Docs explaining the proposal for Backend and App features • Taking extensive notes on Meeting Minutes • Organize GitHub Wiki to link all public resources for new contributors • Wrote a blog post about the Mentorship System on Medium • Quality Assurance Google Docs to help members of the community test the backend
many ways! Let's summarize … • Test the backend and the Android application for Quality Assurance purposes and report bugs in issues (if any); • Give feedback on the project (UI prototype, suggesting new features), participate in discussions on Slack; • Suggest improvements on Frontend UI/UX; • Helping others understand the project on Slack or other media channels; • Help developing documentation; • Solving available issues or come up with new ones: — Implement new features; — Fix bugs; — Enhance the project; — Develop tests (improve tests quality and code coverage);
all with a Backend development, since I never implemented one of this extension from scratch • Learning a new framework from ZERO • Looking into Clean Architecture and making decision to go with MVVM • Starting GSoC while finishing thesis • Making the project welcoming for open source contributors • Being aware of my mentors’ timezone • User Interface design is not easy • Reflect every week and write blog posts about it • Balancing GSoC work and all the deadlines (Weekly meeting, Scrums, Blog Posts ...)
Source • Because of this experience I’m now an Open Source enthusiast • Being in a open source community helped me express myself in a community as more than a developer, and I loved it! • I really wanted to have the android application done by the end of GSoC but I learned that to building a good product from scratch takes time • To build a great and useful product, this will need several iterations and feedback • I got to train my blogging skills • Getting out of my comfort zone by learning a total new framework and development paradigm. Initially scary but rewarding!
never felt alone! • Never felt pressure by my team they were always very comprehensive and welcoming • Liked having the possibility to be part of the community and practising open source as a whole and not just coding • Really liked working on a project I was passionate about • Got liberty and flexibility to learn new things both on Backend and Mobile development • The organization was committed to help us grow personally and professionally • Met incredible students, mentors (not just from my project) and other members! • This was such a healthy environment to be in!