The last few GSoC commits (Pencils down)

So, the official last week of GSoC has begun.
The previous week involved working on the documentation aspect and packaging a box for quick start.
This is the documentation work that I did last week (Installation Documentation) I also packaged a Vagrant box, but faced a small problem while trying to put the CPAN mapping. I shall continue working on it in the coming weeks.
Oh! and I managed to resolve the merge conflicts on my outstanding branches for Stargazers. That was one heck of a learning! LOL

Apart from this, I worked on my final commits to the Web of Trust version 1. I had to add the trust data to the news feed. I’ll be pushing this work in this week before the final deadline. That would conclude Web of Trust Version 1. There’s definitely a long way to go.

I would say participating in the Google Summer of Code definitely helped me in various ways. The most important one being me contributing to MetaCPAN. I got a great amount of exposure to the MetaCPAN codebase. I learned not only about the front end work but could hack on the API too. And the experience was amazing. 🙂
I got the feel of working on a real-time project, where meeting deadlines and solving blockers was made easy with the help from my mentors. Infact, communication was the key here. The Monday Google Hangouts with my mentors, the discussions on the irc channel and the daily report mails made it much easier for me to advance.
Unfortunately, I won’t be a student next year. So this was my last time with GSoC.
Although, I’ll definitely be a part of MetaCPAN and would obviously continue contributing.🙂

My plan for the next few weeks will be, to get my work merged into MetaCPAN and probably help out other budding students planning to be a part of MetaCPAN.

That’s me… signing off!

GSoC Week 11: Improving Documentation for MetaCPAN.

Last week, I wrapped up my work on the Stargazers pull request ( metacpan-webcpan-api ). Also, I pushed a few commits to the “Web of Trust” pull request. So far, I’ve implemented most of it except for one feature, where I need to highlight the recent activity for the trusted authors. My fellow colleague Oiami, an OPW intern is currently working on the news feed. Once her request gets merged I shall add the Web of Trust functionality to the feed. This should complete the 1st phase of Web of Trust.
After a discussion with my mentors (Olaf & Randy), we decided to work on the Documentation for MetaCPAN; specifically for the installations and the complete setup of all the repositories. I will list down all the steps required for setting up the box from scratch. I will also formulate a quick start guide for the developer to download another box which is pre-indexed with the authors and latest CPAN releases data. Most of the documentation on the wiki shall now be moved to the main repositories for easy reference.

This week will be a revisit to my initial stage, when I first got started with MetaCPAN. I’m looking forward to this week, as it’ll definitely help newbies to contribute to MetaCPAN without any trivial blockers in their way.

Past few weeks with MetaCPAN.

The past few weeks involved fixing my work on “Starring of Modules” and exploring more with “Web of Trust”.
I’m almost done with implementing the first version of the “Web of Trust”.
So far, I have been able to add the trust data to the API and add a “trust” button to the author’s page. Also, I have used the autocomplete feature to search for authors by their names and, included a separate page that lists the trusted authors’ details.
The modules that will be recommended by these trusted authors will be displayed on the author’s page in the form of a news feed.
My plan for the next week is to work on enhancing this feed and making sure that the right data is highlighted.
That’s all for now!🙂

Web of Trust: Initial thoughts.

So, my next iteration for the GSoC project has begun🙂
I will be mainly focusing on the implementation of the “Web of Trust” model for MetaCPAN.

For the initial Web of Trust plan, every author on metacpan.org will be able to list down his/her own set of “trusted” authors.

On the front end, this can be done by searching for the PAUSE id of the author with the help of an auto-complete box. And, this information will be stored in the API in the ‘author’ endpoint as an array which contains the PAUSE id of the trusted authors. As of now, my mentors and I are thinking of simplifying the implementation by modifying the author endpoint though, later stages may call for an implementation of a separate endpoint.

So, these trusted contacts can be displayed on a page for quick reference and each time the author updates his contacts, this page can display it accordingly. This is obviously personalized for every user. So, here we will have to retrieve the gravatar images of the trusted authors for the display and a separate HTML page will be created. After the author lists down his trusted contacts, all the distributions favorited by them will be highlighted in the author’s feed. Here, the recent ++ers can be queried to retrieve only the dists favorited by the trusted PAUSE user and can be displayed. These feeds will be highlighted on the search page.

A few future insights:
1. We could have a “Leaderboard” page which will tell us who appears in most of the trusted lists.
2. Hence, the authors will have a rank/trust value which can be displayed on the author’s page like the coderwall endorsements.
3. Also, a button can be added on the author’s page which lets you add him/her to the trusted list. This will work alongside the autocomplete search box.

The discussion for this initial implementation can be viewed here: Web of Trust for MetaCPAN

So, my work for this week will be to,

1. Get the autocomplete search feature working for saving the “trusted” authors list.

2. Displaying the LeaderBoard page.

A new API endpoint in MetaCPAN: Stargazer

A somewhat delayed report on my work for the past two weeks, but here it goes.

MetaCPAN has a feature where the users can recommend a module by clicking ++ button.
On similar terms, there was a request for having a feature where the user can simply “bookmark” or “star” a module for later reference. The ++ feature helps recommend a distribution as a whole, while starring works on modules. So a user can star say Moose::Cookbook as a separate bookmark from Moose.

So, the last few weeks went in setting up the backend of my VM. I had to familiarize with the creation of a new endpoint. The front end involved, displaying the button and saving the data for the user in the API.
To test my code, I required a PAUSE id. So, I obtained one just last week and could test the feature in a better way.
This particular task helped me figure out many details of the API and gave me a better understanding of the logic.

I will soon be sending a pull request in the following week.
That’s all for today.

Improved display of Plussers.

So, for the last few weeks I worked on improving the display of the authors who have ++ed a distribution on MetaCPAN.
So I now created a separate page to display the gravatar images of the authors.
This way the UI was much improved.

Apart from the ++ers, I worked on updating the metacpan-example codes. As ElasticSearch is now deprecated, MetaCPAN will soon have to use Search::Elasticsearch. Also, I used MetaCPAN::Client for making requests to the api.

These were the two improvements I implemented  in the week after the Community bonding period.

Summary Report: Community Bonding.

So, the community bonding period of Google Summer of Code went on from the 22nd of April and got over today. This is the summary of my work done so far.

In this duration, I acquainted myself with Catalyst and Elasticsearch. Read a few docs and worked on two issues.

1. Including the gravatar images of the authors who like a particular distribution.  As a part of my initial release of this feature, I worked on retrieving the images of the PAUSE users, and simply displayed them as a list.
You can check my pull request here: https://github.com/CPAN-API/metacpan-web/pull/1176

Then, I made two small changes to the same code: Rounded the corners and added a title tag for display of author’s name on hover. It was something like this:  https://github.com/CPAN-API/metacpan-web/pull/1181

2. Porting MetaCPAN-Examples to use MetaCPAN::Client instead of MetaCPAN::API, and Search::Elasticsearch instead of ElasticSearch.

My timeline for the Community Bonding was roughly as follows:

26th April-3 May : Read the Catalyst and Elasticsearch documentation. Understood the scope of the ++ers feature to be implemented and drafted a rough algorithm for the same.

6-12 May: As ElasticSearch is now deprecated and does not support asynchronous processing, I changed my code to use the existing model classes to invoke calls to the MetaCPAN API.

13th May: The initial pull request was merged.

13-18th May : Started working on my 2nd issue. Porting all scripts in https://github.com/CPAN-API/metacpan-examples to use MetaCPAN::Client and Search::Elasticsearch.

Sent an initial pull request for feedback from my mentors: Olaf and Randy.

19-25th May: University exams are on! So, no such schedule for this week. Though later, I plan to improve the ++ers feature and complete metacpan-examples.

That’s all in this report.🙂

Until later!