Skip to content

Instantly share code, notes, and snippets.

@mtreacy002
Last active December 19, 2020 18:22
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 2 You must be signed in to fork a gist
  • Save mtreacy002/0e6968595f4b0aa6df8538c6c1155642 to your computer and use it in GitHub Desktop.
Save mtreacy002/0e6968595f4b0aa6df8538c6c1155642 to your computer and use it in GitHub Desktop.
Maya Treacy - Google Summer of Code 2020 Final Report

Google Summer of Code 2020 Final Report

The team

Student: Maya Treacy

Mentors:

Admin: Isabel Costa

About the project

BridgeInTech (BIT) is an original idea project I proposed to AnitaB.Org for Google Summer of Code 2020.

This project was inspired by the existing AnitaB.org Mentorship System (MS) which helps women in tech mentor and supporting each other. BIT extends this collaboration by allowing organizations to be involved through hosting the Mentoring Programs where the mentor and mentee can apply and work on.

If you are interested to read more about the idea and motivations behind BridgeInTech, go to my blog post: BridgeInTech by AnitaB.Org

This project has two repository on Github. AnitaB/bridge-in-tech-backend for the backend system which is a RESTful API that can be accessed using the Swagger UI interface. AnitaB/bridge-in-tech-web is the frontend repository for the BIT ReactJS web application.

The mockups for this project can be found below:

Tech Stack

Backend Frontend Database
Python, Flask, SQLAlchemy ReactJs PostgreSQL

State of the project

Throughout GSoC coding phases, the following PRs have been submitted to the repositories:

Major PRs are:

Backend PR# API endpoints Functionalities Frontend PR#
26 POST /register User Registration 18
60 POST /login User Login 26
71 GET /user/personal_details Get user's personal details 38
74 PUT /user/personal_details Update user's personal details 54
77 POST and GET /user/additional_info Create and Get user's additional info View: 40
81 PUT /user/additional_info Update user's additional info
83 POST and GET /user/personal_background Create and get user's personal background View: 46
87 PUT user/personal_background Update user's personal background Create and Update: 61
99 GET/users and GET /users/{user_id} Get list of users and another user's personal details View users list: 59; View other user's details: 62
101 PUT /user/additional_info (refactored) Refactor POST and PUT /user/additional_info to one endpoint (PUT only) Create and Update: 57
103 PUT and GET /organization Create, Get and Update user's organization 69
107 GET /organizations; GET /organizations/{organization_id} Get list of organizations; Get another organization 70
114 POST /organizations/{organization_id}/programs/program; GET and PUT /organizations/{organization_id}/programs/{program_id}; GET /programs Create, Get and Update a program and Get list of programs View list of programs and a program: 76; Create and Update a program: 79

Work left to do:

On Target MVP

Out of the list of features targeted to be on the Minimum Viable Product, there are few things still pending. These are:

  • Send Request functionality (Backend API endpoints and Frontend UI):

    • From User to Organization:

      Allow a User to apply to a Program either as a Mentor or Mentee.

    • From Organization to User:

      Allow Organization to request for a User to work on their Program.

  • See the list of Programs that a User had/has been involved in (aka Mentor/Mentee Portfolio).

  • See Progress Summary of a Program.

on Test Cases

  • on Backend:

    • tests for POST/GET/PUT programs list and program
  • on Frontend:

    • tests for user's additional info functionalities
    • tests for user's personal background functionalities
    • tests for viewing list of members and another user's personal details functionalities
    • tests for organization functionalities
    • tests for viewing list of organizations and other organization functionalities
    • tests for program functionalities
    • tests for viewing list of programs and other program functionalities

on Blockers

  • Authentication mechanism

As raised in the Spike issue#109 and my Medium blog post, keeping a secure and reliable authentication mechanism in BIT project has its own challenge. In fact, poses as one of the blockers to a smooth run in a remote environment where multiple users are expected.

  • Deployment to a remote environment

Another blocker with deploying BridgeInTech application to a remote environment is caused by the fact that BIT needs multiple servers to run concurrently for the application to work. Unfortunately, the only option available to the project at the moment is to deploy the application on Heroku servers using its free dynos option. However, BridgeInTech architecture is a bit more complex for Heroku free dynos to handle. The details on the issue with Heroku as the option for BridgeInTech host servers is discussed in this blog post and in Spike issue#109.

BridgeInTech project is still in its initial stage and has a long way to go before it can reach the production stage. Anyone is welcome to participate to the project as there are still plenty of rooms for improvement. To contribute, check the available issues on the Backend and Frontend repositories. You can also join the project stream on the AnitaB zulip channel.

Github Repositories:

Future development opportunities

  • UI Design improvement
  • Calendar events
  • Industry and organizations demographic
  • Award board
  • Blogs space
  • Feedback highlights
  • Maps - members/organizations location
  • Comments box on Program profile page
  • Analytics
  • Extend frontend to other platform (IOS, Android, etc)

To learn more about the project, you can check out the initial proposal I submitted to GSoC.

My GSoC experience

I’ve been writing weekly reports and blog posts documenting my journey during GSoC.

Challenges and Learnings

GSoC journey has been valuable. Below are some of the highlights I would like to share with you.

Learnings

* On the Team level

Although in a smaller scale, working on BridgeInTech project in GSoC has helped me experience a developer's life in an organization settings. I have learned about:

  • how to maintain communication and collaboration through a remote settings
  • how to resolve conflict respectfully and productively
  • how to keep productivity going regardless facing a blocker in the project

* On the Project level

I have learned many new technical skills through working on BridgeInTech. Here are some of them:

Challenges

* On the Personal level

  • I am a total noob in the IT fields. This is a career change from my previous backgrounds in Accounting and Teaching
  • I am a mature age student who also has family commitments beside study and GSoC
  • I have limited knowledge of the frameworks used in the Tech Stack as I've never officially learned them in depth as part of my university degree. My prior knowledge of the frameworks came from self-learning through online tutorials and a mini project
  • I am also a noob to Open Source as I only had made minor contributions to Microsoft/VSCode-Wiki and AnitaB.Org Mentorship-System prior to working on BridgeInTech project.

* on the Team level

On this level, challenges come from:

  • Timezone differences, with team members coming from around the globe (India, US, UK, Australia)
  • Team availabilities, with mentors have own work and family commitments outside GSoC

To overcome the challenges above, the team members implement the following approaches:

  • shared each other's availabilities on WhenIsGood for scheduling meetings and catch-up sessions
  • maintain communications using BridgeInTech stream on AnitaB.Org Zulip channel

* on the Project level

BridgeInTech is a project with inherent complexity from its important system integration with AnitaB.Org Mentorship System. From its initial Planning stage during the Community Bonding period till the end of the Coding phase, the team have faced few challenges in the following areas:

* on Time management

As part of GSoC requirements, student is required to do the followings:

  • Maintaining daily Scrum check-ins
  • Keeping documentations:
    • planning docs
    • technical decisions
    • wiki

The requirements above are necessary not only to any project development, but in particular, as part of learning about contributing to an Open Source project. However, this adds to the time constraints that all students of GSoC need to carefully managed during our GSoC journey.


This has been an awesome journey. I have learned so much from this GSoC, not only about the frameworks and tech tools (Git, Travis, etc), but also about Open Source, team work, and project workflow. I’m grateful to the mentors and admin that have supported me throughout this journey. I especially love how the mentors always give me the chance to learn new technical skills whenever the opportunity arises. I'm also thankful that they are very patience and always keep an open mind in all our discussions, which makes conflicts resolution a piece of cake :P. Finally, I would like to thank AnitaB.Org that allows me to learn about Open Source through this GSoC. I look forward to continue contributing to AnitaB.Org Open Source and am proud of being part of this wonderful community.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment