Skip to content

Instantly share code, notes, and snippets.

@MatheusRich
Created August 23, 2019 03:43
Show Gist options
  • Save MatheusRich/f5e4eeac3a7a405532ee38eb98cdd994 to your computer and use it in GitHub Desktop.
Save MatheusRich/f5e4eeac3a7a405532ee38eb98cdd994 to your computer and use it in GitHub Desktop.
Google Summer of Code 2019 Work Product Submission

Google Summer of Code 2019 Report

Integrate functionality from gem-web into RubyGems gem CLI

Gem-web is a tool that capable of providing an interface that allows opening documentation, source code and website of a ruby gem. My goal on GSoC was integrating it on RubyGems' CLI, which would make this feature available out of the box to all ruby users, improving their productivity, since there would have no need to search this information manually.

My Planning

I spent a good time in my proposal planning the work of every week in the GSoC period. So, basically I had, step-by-step, what to do and when to do it. The task list was this:

  • Rewrite gem-web's tests with Minitest (because they were in Rspec)
  • Move the code of gem-web to Rubygems
  • Make sure that the code worked in all platforms
  • Open a Pull Request for Rubygems and get feedback from the community
  • Adjust the code with the community recommendations
  • Write test for the (possible) changes the community asked for
  • Make sure that the build is passing
  • Write documentation about the changes I've made

My Work & Results

Community Bounding

As soon as I was accepted to GSoC I wrote an article on How I Got Accepted to GSoC, with some tips for the next possible GSoCers.

On the community bounding period I wanted to study a bit on how rubygems' commands work, so I dive into the code base and ended up writing a blog post about it.

Coding Period

The first thing I did on the coding period, and after forking Rubygems, was opening an issue to address my work on it, and to get some feedback of the community before starting any code too. A couple of contributors (@hsbt and @indirect commented on it, and I move on implementing the next steps.

All my work was done in my fork of Rubygems on the branch adds-web-command. I had to rewrite gem-web's tests with Minitest (I followed a TDD approach). Not only this, but I had to remove all the dependencies (development and runtime ones). And that's what I first did (I wrote a post about this on my personal blog too, so you can check this out in more details)

Remove all gem-web dependencies gem-web: https://github.com/bitboxer/gem-web

Goals:

The final release should contain:

  • Stable code
    • Build is passing
    • 100% test coverage on the gem-web features
  • Changes Documented
  • Pull Request opened targeting the master branch

What I Haven't Done & Future Work

  • Fiz td que tinha me proposto, mas só parte disso "pode" ser aceita

  • Não é do escopo, mas eu posso adaptar a gem-web pra se adequar ao novo estilo do rubygems

Thanks

  • Thanks

  • i wnat to keep contributin

Important Links

Pull Request for "Myself" MatheusRich/rubygems#1

Issue on Rubygems Github rubygems/rubygems#2784

Pull Request for Rubygems rubygems/rubygems#2835

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