Public Lab Research note


RGSoC: v2 API development

by milaaraujo , stefannibrasil | February 23, 2018 05:34 23 Feb 05:34 | #15805 | #15805

About us

Names: Camila Araújo and Stefanni Brasil

Location: Vancouver, Canada

We are the Rails Girls Summer of Code team Brazilian housewives coding: https://teams.railsgirlssummerofcode.org/teams/740

Github: https://github.com/stefannibrasil and https://github.com/milaaraujo

We are Brazilians and we are housewives who love to coding.


Project description

Abstract/summary (<20 words):

Work on the release of the v2 of Public Lab API to support the new Swagger interface, covered with tests and documentation. Also add the documentation to the new token system.

Problem

The Public Lab API is extensive and there are some endpoints who need to be updated to the Swagger interface. Also, it does not have a full documentation and tests coverage. We aim to work on that to prevent bugs in the future and to make it easier to retrieve data to be used on the stats page.

Timeline/milestones

We are planning on doing weekly small releases, following the modularity methodology. All steps below includes writing tests and docs while we work on the week task:

Week Days Tasks
1-2 02/July-13/July Study Grape Entities and Swagger code and docs
3-4 16/July-27/July Refactor SearchService and Search endpoints
5 30/July-03/Aug Import Author endpoint to Swagger interface
6 06/Aug-10/Aug Import Tagged notes to Swagger interface
7 13/Aug-17/Aug Test moved endpoints on Swagger interface
8 20/Aug-24/Aug Refactor SearchService and Search endpoints to improve/standardize the web search function
9 27/Aug-31/Aug Ensure multiple format access: JSON, RSS, etc., for legacy endpoints that have these formats
10 03/Sep-07/Sep Write unit tests for the back-end to various APIs by writing Services like TypeAheadService
11 10/Sep-14/Sep Write unit tests for the back-end to various APIs by writing Services like SearchService
12 17/Sep-21/Sep Ensure that v2 of Public Lab is fully working and solve possible bugs
13 24/Sep-28/Sep Finish our contribution by reviewing the docs and help planning the next steps for future contributors

Needs

Documentation, literature, sample data, mentors and coaches.


First-time contribution

We have already done some contributions to Public Lab:

https://github.com/publiclab/plots2/commits?author=milaaraujo

https://github.com/publiclab/plots2/commits?author=stefannibrasil

And we intend to work on more complicated Issues together before July to get more familiar with Public Lab docs and code guides.


Experience

We have some experience using Python, Java, C and academic research.

Camila: I finished my Computer Science Master's degree last year. I've been working with academic research since my first year as a undergrad student. I have learned to program using C. After that, in most of the courses I attended at university I used C or C++. Also at the beginning of my graduation I worked for a short period as a PHP Web Developer. Then I was in different research projects and for each of them I had to learn a different language/technology. For example Python, Django, Perl, Matlab and R. I'm a beginner in the open-source world, so my first contribution was to the Public Lab project. Here in Canada I have signed up to be a mentor on the Ladies Learning Code program.

Stefanni: Me, Stefanni, have experience with Ruby on Rails, Docker, Kubernetes, Agile and Continuous Integration, Pair Programming and Code Review. I have a blog and there I share my learning path. On my Github, I also started a Ruby Farm project and a tutorial following Agile Web Development with Rails - 4th edition. I also did a Game using PyGame and Arduino for children to learn basic mathematics concepts.

I also was a Coach on Rails Girls Sao Paulo 2017. I talked on RubyConf Sao Paulo 2017 about being a beginner in code and giving tips for those who want to change their careers to tech.


Teamwork

Camila: As a researcher I worked on different projects, with different teams and also on my own, with the guidance of a teacher. In my first projects I worked directly with a PhD student and performed simpler implementation tasks with other undergraduate students. Over time, I gained autonomy until I was able to work on my own projects alone. I think when you work alone in your own project it is very important to be self-motivated and self-sufficient because anybody will get your project off the ground for you.

Stefanni: I did an internship in a fintech and working with a team of 13 remote developers was a great experience. I have great communication skills, so working in a team is something that I like. Sharing tips and helping others is something that I enjoy.


Passion

Camila: First, as a a beginner in the open-source world, I really like Public Lab project because its concern on being beginner-friendly. One thing I am passionate about is understanding how sociological aspects are reflected in current technologies. In my master's degree thesis I demonstrated the existence of racial bias/stereotypes in search engines, and what is the role of the algorithms on the propagation of these bias/stereotypes. I chose this topic because I believe it is something that impacts society in some way. Just as I believe that investigating environmental concerns, as Public Lab does, is something that can positively impact society and help the environment.

Stefanni: Yes, we are interested in Public Lab mission because we believe that providing resources for researchers can improve Education. I changed my career to Software because I wanted to help other people and helping a project like Public Lab is a great opportunity to do that. Also, DIY science rocks!


Audience

Everyone who wants to share knowledge


Commitment

We'll meet everyday to work together. We are applying for the 40h per week internship, so we are excited for coding this summer! We plan to use Trello to break the tasks into smaller tasks and share them with our mentors and coaches.


11 Comments

Hello @warren We were able to create this proposal for the Rails Girls Summer of Code after looking into the existing API and the docs on the repository. We would love to have some feedback, so we can improve our proposal. Thanks!

Reply to this comment...


Oh, great! I had hoped to review proposals today but I think i may have to on Monday or Tuesday. But please take some time to look at others' proposals and leave comments -- thank you!

Reply to this comment...


No problem, take your time! We will, thanks :)

Reply to this comment...


Hi! Do you think you could flesh out (in smaller pieces) exactly what you'd be working on in a checklist of sorts? You could copy in stuff from the relevant Github issues, and link to them -- that'd be really helpful!

Remember: https://publiclab.org/notes/warren/01-18-2018/software-outreach-modularity-is-great-for-collaboration

Thanks!!

Is this a question? Click here to post it to the Questions page.

Reply to this comment...


Hi, @warren!

We tried to be as thorough as possible, but we may be missing something. Let us know if there is any other endpoint or feature missing. ;)

Reply to this comment...


Hi, this is super. Sorry for responding slowly but your timeline is really great. One suggestion:

Start writing integration tests for the new features

You could also potentially write unit tests for the back-end to various APIs by writing Services, like these: https://github.com/publiclab/plots2/blob/master/app/services/typeahead_service.rb

Unit testing is less computationally "expensive" and more targeted, but with, not /instead/ of, fuller testing like integration or functional. And these services can be used throughout the application.

I've made a new tag for API-related proposals: #soc-2018-api as @Raounak @rishabh07 @sukhbir have all submitted API-related proposals as well. Awesome, thanks all!

If you're interested you can try coordinating with the other proposers; it's possible we'd do multiple API projects, so let's think collaboratively! If projects are broken up in to self-contained parts well enough, two or more people could in theory tackle this together, although there is also an option to reorganize proposals after they're accepted to reduce redundancy.

Thanks a lot!

Reply to this comment...


I also think some other tasks to consider might be:

Thanks!!

Reply to this comment...


@warren has marked stefannibrasil as a co-author.

Reply to this comment...


Thanks @warren ! I made some changes to the timeline proposed. I am gonna try to articulate a collaboration to work on the API.

Reply to this comment...


@warren Hi, just to let you know, we are updating our Timeline because we changed our team application to be part-time instead of full-time.

Reply to this comment...


Sounds good -- thank you!

Reply to this comment...


Login to comment.