Google Summer of Code 2018 Final Report
I proposed a Mentorship System that helps women in tech mentor and support each other on career development topics, within 1:1 mentorship relations, during a certain period of time.
You can read more about the idea and motivations in this blog post, Mentorship System by Systers!
For this project I worked with two repositories on GitHub: systers/mentorship-backend for the Backend and systers/mentorship-android for the first version of the mobile application, targeted to Android platform.
Student: Isabel Costa
I worked mainly on the backend for Coding Phase I and II. Then I started working mainly on Android application and solving some minor issues on Backend. Since the start of the program I thought of the initial database design and the backend with the help of my mentors. We then choose the tech stack, and I started developing the backend on Coding Phase I. In the last phase, with the backend stable, we started thinking about the mobile app. I improved the initial UI Prototype, then we chose the tech stack and architecture for the Android application. Only then I started developing the application.
You can know more about each week tasks in my GitHub Wiki page.
State of the project
Here’s a collection of the PRs created by me during the GSoC period:
Tech Stack: Python, Flask, SQLAlchecmy, flask-jwt-extended, flask-sqlalchemy, flask-restplus
These are some of the PRs …
- Registration, Login, List all users, Edit user APIs.. | PR #14 - this features were furtherer developed in other pull requests
- Email Verification feature | PR #53
- Accept Mentorship Relation | PR #58
- Delete Mentorship Relation API | PR #73
- Reject Mentorship Relation API | PR #62
- Cancel Mentorship Relation API | PR #61
- Apply application Factory pattern | PR #57
- Cron job to complete a Mentorship Relation | PR #79
The backend is currently deployed on Amazon Web Services. Deployed server links are in the README file.
Tech Stack: Android, Kotlin, MVVM architecture, ViewModel, xml, LiveData, Retrofit, RxJava
These are some of the PRs …
- Register Screen | PR #17
- Login Screen | PR #17
- Members List Screen | PR #25
- Member Profile Screen | PR #25
- Requests List Screen | PR #28
- Request Detail Screen | PR #28
- Travis CI support on Android | PR #16
This project is far from finished, this was just the beginning. There are other screens left to do, that anyone can check in the issues. Work left to do includes Screen to see/edit a my profile, send a request, … All of these can be implemented integrating the Backend API developed during the GSoC.
Future development opportunities
- More features for the Backend and Frontend application:
- Instant Messaging in the app;
- Upload User photo to AWS;
- 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;
- Notifications (in app, email, platform native, ...);
- Focused groups of mentoring.
- 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) - other OS projects from Systers Open Source
You can learn more about the project through my initial proposal.
My GSoC Experience
I’ve been writing weekly reports and blog posts documenting my journey during GSoC.
- GSoC GitHub Wiki Page
- Project Link on Google Summer of Code official website
- Final Live Demo on YouTube
- Presentation Slides of final demo on Google Slides
- GSoC weekly blog posts on Medium
Challenges & Learnings
These are some of the challenges and learnings I faced during GSoC. These are just a few, this experience was so complete that I learn a lot of things that I can’t write them all in here.
Working remotely was a challenge and a great experience at the same time, having to adjust to my team’s different time zones. I loved having flexibility to work where I wanted and when I wanted, in terms of hours. I loved the challenge of working with a remote team and leave my comfort zone of talking in person to solve problems.
Being a non native English speaker, before when I was asked, I didn’t feel comfortable saying that I was good with English, and this experience totally changed my mind on that. I understood that if people understand me and I understand them, it's all good! So know I can confidently say I feel comfortable speaking in English, no issue!
I loved doing a lot of things in the context of the project and the open source community. Regarding the project I designed, defined initial project requirements, led weekly meetings with the team, developed, documented, tested and tried to be outspoken about the project on Slack and through blog posts to promote it. Regarding the community, I interacted with other team’s projects whenever I felt comfortable and could do so. I tried to engage with newcomers of the community and making them feel comfortable with the Systers Open Source workflow.
I never implement a full Backend project from scratch and didn’t know about flask. I was not in my comfort zone, so I learned a lot. I also had to study about architectures that I could use both on Backend and Android so that required a lot of trial and error from my side.
If I could I would repeat this again. The community was so welcoming and a healthy environment to try, fail and try again. This allowed me to learn a lot and feel comfortable with my inexperience in some aspects of the project’s implementation. This experience helped me and grow professionally and as a person, and helped me look in depth into an Open Source community.
A major thanks to my mentors and admin for supporting me during this program! Also my fellow GSoC students, other mentors and the whole community for providing a healthy environment for open source development and collaboration! Also my family that supported me during this journey!