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.