From Fedora Project Wiki

Project Proposal for Google Summer of Code 2015

Title: Glitter Gallery Improvements

Organization: The Fedora Project

Mentors: Emily Dirsh, Sarup Banskota, Rohit Paul Kuruvilla

Contact Details:

Full name: Nikunj Gupta

Email: nikunjboss@gmail.com || nikunj.lnmiit@gmail.com

IRC nick: mecyborg at irc.freenode.net || Skype ID: nikunjboss

Contact: +91-9413801201

Location: Jaipur, India, GMT +5:30

Link: LinkedIn

Synopsis

GlitterGallery is GitHub for designers - being developed by and for the Fedora design team, but hoping to be useful to all designers. It's a web app based on Ruby on Rails that allows designers and artists to create, share, and collaborate, backed by Git for version control, and intended to be part of a FLOSS design suite that includes

Sparkleshare - a git-backed, Dropbox like system that will automatically check in and push files in project directly to a shared git repo.

Magic Mockup - a javascript library you can insert into an SVG of mockups to enable interactive, click-through mockups

Inkscape

There is a lot of scope for improvement and creative ideas.


Why Fedora Project ?

I'm a FOSS fan and Fedora is a large and diverse organization with projects in multiple fields.

As being new to open source community, I am looking forward in getting involved with the organization which has an exciting culture and community. My aim is to stick with the community for long term.

Alongside, the project Glitter Gallery is very innovative as it brings the designers closer and helps in collaboration more effectively. It is based on Ruby on Rails which is the technology I intend to work on.


Do you have any past involvement with the Fedora project or with any another open source project as a contributor (if possible please add some references as well)?

I've been contributing to GlitterGallery. I have done some bug fixes and minor improvements to codebase. I am studying and understanding the codebase of GlitterGallery. I am in regular contact with other developers and mentors.

Besides Fedora, I have done some PHP code implementation for Mozilla Hacks. Also, improved design suggestions were done.


Did you participate with the past GSoC programs, if so which years, which organizations?

No.


Will you continue contributing/ supporting the Fedora project after the GSoC 2014 program?

Yes. I've been contributing before and I will continue the same.


Goals

Rating/Star and voting feature for project – Rating and voting of projects that are public. Public projects will appear in the public gallery of works, and the stars rating will be displayed along with it. These public projects can be sorted following these ratings, votes.

Enhancing Public gallery(“Inspire”) of works - Enhance the implementation and interface of the public gallery along with ratings and votes.

Better commenting – Enhance the commenting system of the app by including thread support, pingback support, the ability to reference a specific region of a design in a comment.

Searching for projects and users – Integrating searching through projects and users using elastic search/solr. It will increase the usability of the app and will help in finding different users and projects.

Enhance and develop dynamic User Interface (UI) for the app – As the app is for designers, the UI should be much more interactive and dynamic. Implementation dynamic responses like alerts, messages etc. Better landing page with login and sign up alongwith trending projects. A features page with overview all the functions that the app provides.

Project Description

Rating/Stars and voting for public projects

In public gallery(“Inspire”), any project can be rated, starred and voted

The user must be logged in to rate,star and vote a projects(UI examples: 1, 2)

These stars and rating can be further be used in managing feed for “Inspire” like sorting top projects, showing trending projects etc

In Public Gallery, the stars rating will be displayed along with it. Projects will be sortable by various factors such as stars, ratings, creation date etc.

Gems that can be used (ratyrate)


Enhancing Public Gallery of works

There are two kinds of projects in the app: Public and Private

Enhancing the public gallery (“Inspire”) which will be public for all the public projects interface

The projects can be sorted and arranged by terms of ratings and stars


Better Commenting

Current commenting system is very basic

Enhance the commenting system by involving

Thread support

Pingback Support

Referencing any specific area in project in comments

Addition of WYSIWYG text editor for comments

Ability to add links

Upload images

Basic text formatting

Gems to be used (Sir Trevor Rails, ckeditor or bootsy)


Searching for projects and users

Users will be able to search any other user and projects

There are two ways to implement searching in RoR app

Elastic Search

Solr

Gems to be used Elasticsearch(elasticsearch-rails , elasticsearch-model) or Solr (sunspot)


Enhance and develop a new User Interface (UI)

Current UI is good but it needs to be more interactive and dynamic

Developing Javascript/Ajax query for updates and alerts (Ex. vendroid)

Better Landing page with login and sign up alongwith trending projects (Similar to Twitter) (Ex. Ghost, Placeport)

A features page layout explaining all the app features

Final Deliverables

Rating/Stars and voting feature for projects

Enhanced Public gallery(“Inspire”) of works

Better commenting alongwith thread support and WYSIWYG editor

Searching feature for projects and users

Enhanced dynamic User Interface (UI) for the app with alerts, features and landing page

TIMELINE

The time line would be iterative following various stages of development so that each feature can be integrated and enhanced by giving proper time. Stages for iteration

Stage 1: Analysis

Development of use case diagrams and data models

Communication with mentor

Analysis and design the process of implementations

Stage 2: Development

Create the required models

Add views and controllers for the models

Write the actual code and make it concise and optimized

Stage 3: Feedback and Documentation

Share updates with mentor and analysis on any feedback

Patch the issues if there are any

Prepare the proper documentation of the work

Stage 4: Testing and review

Perform the tests developed and check for issues

Take a review of the iteration. How did the iteration work?

Note down the possible improvements that can be done

Work flow

Before coding period -

Fixing small bugs and issues already on Git repository (already working)

Addressing and improving suggestions by others

Discuss with mentors about the implementation details and suggested improvements

Working on the followers/following structure of the app

Study Elasticsearch, solr and rugged


April 25th to April 30th -

Setup the app in local environment for development

Prepare a blog to post regular updates regarding the progress

Discussion with the mentors of the plan for implementation

Bonding with other developers in the community


May 1st to May 15th -

Prepare structure for the rating/star and voting system

Analysis of types of ratings needed and priority feed management

Move to stage 2 for actual implementation

Prepare the test case and review the feature


May 16th to May 31st -

Gather all the development done for public gallery and work on improvement

Idealize the ratings,stars, voting and other factors for feed management

Enhance the interface of public gallery (“Inspire”)

Move to Stage 4 for testing and review


June 1st to June 20th -

Discussion of Elasticsearch and solr with mentors and other developers

Analysis of user and projects model for integration

Setup all the required gems and packages

Modify user and projects models to implement search

Create required models and controllers for search

Test the searching functionality and fix performance if required


June 20th to July 15th -

Analysis of current commenting system of the app

Develop new models to enhance current commenting system

Prepare and update current models for thread support and project referencing feature

Move to Stage 4 for testing and final review


July 16th to August 5th -

Discuss the enhancement with mentors and other developer

Develop the Javascript/Ajax queries for dynamic alerts and updates

Developing better user feed (Userpage) and notifications

Design a better landing page (similar to Twitter) showcasing trending projects

Design the features page for the app (Ex. placeport)

Implement these queries and integration with the new UI

Move to stage for testing, review and feedback


August 6th to August 15th - Finalization

Integrating all the developed modules and features

Manual and Documentation

Discussion with the mentors and other developers

Testing and debugging

Finalization


NOTE: The workflow scheme is tentative and is subject to change.

Experience

I have submitted and merged commits to GitHub repository of the app. I am familiar with the codebase of the app.

I am a Computer Science student and I have done all the relevant courses including data structures, DBMS, Object Oriented Programming, Computer Networks, Operating Systems.

I am managing two websites based on WordPress/PHP

Gizmantra(since May 2013)

Movierdo (Since May 2014)

I am very much familiar with UI frameworks like Bootstrap.

I'm well versed with Git, and understand the importance of Version Control.

Completed Ruby, Rails and JQuery courses on Codecademy. Completed Ruby on Rails Essential Training, Up and running with Bootstrap on lynda.com. Followed all the Rails tutorials on Railscasts (free only).Followed all the basic tutorials for CodeIgniter (MVC framework for PHP) on phpacademy. Completed basic git training on codeschool. Currently,I am following AngularJS on codeschool.

I am also an intermediate Adobe Photoshop user.

I am using Linux since three years.

I am new to open-source community contribution although I am involved in Mozilla and WordPress communities. But I am looking forward to contribute more to the open-source world and be a helping hand for the communities.

Beside all this, I love to watch movies (I am picky about that) and I am big fan of music especially rock and retro era. I also love to play multiplayer games in my free time with my friends.

Participation and Availability

By the end of April 2015 I will be having my summer vacation which will last till July. So, I can assure 30-35 hours of work per week for this project and try to complete it in time. I will start maintaining a blog to communicate about my progress. I will stay in regular contact with my mentors, Emily Dirsh, Sarup Banskota and Rohit Paul Kuruvilla to seek help whenever I am stuck and for discussing my work and progress.

During the project, I will be stationed at Jaipur, India (GMT+5:30).

Internet Connectivity

There are no evidence of long term disruption of Internet connectivity in the past (living here for more than four years). But, in the rare case of Internet failures, I have access to alternate Internet connections and I can continue my work.

Laptop Availability

I have Dell Inspiron N5110 and I'll be working on that. In case something goes wrong, I have a spare laptop and a computer that I can work on. Besides, to be on the safe side I will push changes to my branch on Git repository of Glitter Gallery as well as on my fork repository.

If mentor(s) disappear for a couple of weeks

If my mentor missed meeting, then I'll firstly contact him/her via email. And if there isn't any reply, then I will try contacting my secondary mentor and if there is still no response, then I will contact the org admins.