From Fedora Project Wiki
(Project Proposal for Google Summer of Code 2015)
 
 
(14 intermediate revisions by the same user not shown)
Line 5: Line 5:
Organization: The Fedora Project
Organization: The Fedora Project


'''Mentors: Emily Dirsh, Sarup Banskota'''
'''Mentors: Emily Dirsh, Sarup Banskota, Rohit Paul Kuruvilla'''


Contact Details:
Contact Details:
Line 33: Line 33:
   
   
There is a lot of scope for improvement and creative ideas.
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 ==
== Goals ==


'''Public gallery of works''' -  A public gallery for all public projects can be used to browse and explore works without having to be logged in.  
'''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.


'''Rating/Starring feature for projec'''t – Stars/Rating 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 and stars.
'''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.  
'''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.


'''External issue tracking''' - Glitter Gallery has an integrated issue tracker, but it would be useful to also be able to integrate with external bug/issue trackers such as GitHub and Bugzilla.  
'''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.


Enhance and develop a '''new User Interface (UI)''' for the app – As the app is for designers, the UI should be much more interactive and structured. 
== Project Description ==


== 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: [http://plugins.krajee.com/star-rating/demo 1], [http://semantic-ui.com/modules/rating.html 2])


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


'''Public Gallery of works'''
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.


There are two kinds of projects in the app: Public and Private
Gems that can be used ([https://github.com/wazery/ratyrate ratyrate])


Building a gallery which will be public for all the projects that are public


Can be used to view public projects without logging in to the app


The projects can be sorted and arranged by terms of ratings and stars
'''Enhancing Public Gallery of works'''


'''Rating/Stars for public projects'''
There are two kinds of projects in the app: Public and Private


In public gallery, any project can be rated or starred
Enhancing the public gallery (“Inspire”) which will be public for all the public projects interface


The user must be logged in to rate or star a projects
The projects can be sorted and arranged by terms of ratings and stars


These stars and rating can be further used in multiple ways like sorting top projects, showing trending projects etc


'''Better Commenting'''
'''Better Commenting'''
Line 87: Line 117:
Basic text formatting
Basic text formatting


'''External Issue tracking'''
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


Currently the app features a basic integrated issue tracker
Solr


Integrating the external bugs/issue tracker like Bugzilla, GitHub etc.
Gems to be used Elasticsearch([https://github.com/elastic/elasticsearch-rails elasticsearch-rails] , elasticsearch-model) or Solr ([https://github.com/sunspot/sunspot sunspot])


Analysis of compatibility and availability of API


'''Enhance and develop a new User Interface (UI)'''
'''Enhance and develop a new User Interface (UI)'''


Current UI is good but it needs to be more interactive and smooth
Current UI is good but it needs to be more interactive and dynamic
 
Developing Javascript/Ajax query for updates and alerts (Ex. [http://vendroid.venmond.com/ui-alert-notifications.php vendroid])
 
Better Landing page with login and sign up alongwith trending projects (Similar to [https://twitter.com/ Twitter]) (Ex. [https://ghost.org/ Ghost], [http://placeport.net/ Placeport])
 
A features page layout explaining all the app features
 
== Final Deliverables ==
 
Rating/Stars and voting feature for projects


Development of new elements for UI
Enhanced Public gallery(“Inspire”) of works


Use of framework like Bootstrap, Foundation to enhance the UI
Better commenting alongwith thread support and WYSIWYG editor


Developing javascript query for updates and alerts
Searching feature for projects and users
 
Enhanced dynamic User Interface (UI) for the app with alerts, features and landing page


== TIMELINE ==
== TIMELINE ==
Line 143: Line 195:


== Work flow ==
== Work flow ==
'''
 
April 25st to April 30th'''
'''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 [https://github.com/libgit2/rugged rugged]
 
'''April 25th to April 30th -'''


Setup the app in local environment for development
Setup the app in local environment for development
Line 154: Line 219:
Bonding with other developers in the community
Bonding with other developers in the community


'''May 1st to May 15th'''
'''May 1st to May 15th -'''


Design the functionalities of public gallery
Prepare structure for the rating/star and voting system


Prepare the required use case diagrams and database models
Analysis of types of ratings needed and priority feed management


Generate the models, views and controllers
Move to stage 2 for actual implementation


Prepare the documentation and share with mentors
Prepare the test case and review the feature


Move to Stage 4 for testing and review


'''May 16th to May 31st'''
'''May 16th to May 31st -'''


Prepare structure for the rating and star system
Gather all the development done for public gallery and work on improvement


Analysis of types of ratings needed and priority management
Idealize the ratings,stars, voting and other factors for feed management


Move to stage 2 for actual implementation
Enhance the interface of public gallery (“Inspire”)


After code, prepare documentation and share with mentors
Move to Stage 4 for testing and review


Prepare the test case and review the feature


'''June 1st to June 20th'''
'''June 1st to June 20th -'''


Develop rough sketches for new User Interface
Discussion of Elasticsearch and solr with mentors and other developers


Discuss them with the mentors and other developers for using frameworks like Bootstrap, Foundation etc.
Analysis of user and projects model for integration


Design the actual elements to use in the UI
Setup all the required gems and packages


Implement the designed UI and integrate the elements
Modify user and projects models to implement search


Prepare the Javascript queries for dynamic alerts and updates
Create required models and controllers for search


Implement these queries and integration with the new UI
Test the searching functionality and fix performance if required
 
Prepare documentation and share with the mentors and other developers
 
Move to stage for testing, review and feedback


'''June 20th to July 15th'''
'''June 20th to July 15th -'''


Analysis of current commenting system of the app
Analysis of current commenting system of the app
Line 203: Line 264:


Prepare and update current models for thread support and project referencing feature
Prepare and update current models for thread support and project referencing feature
Documentation and Share the progress with mentors and discussion


Move to Stage 4 for testing and final review
Move to Stage 4 for testing and final review


'''July 16th to August 5th'''


Current app has an inbuilt issue tracker
'''July 16th to August 5th -'''


Analysis of external bug/issue trackers (Bugzilla,GitHub etc)
Discuss the enhancement with mentors and other developer


Compatibility with Ruby on Rails
Develop the Javascript/Ajax queries for dynamic alerts and updates


API and documentation availability
Developing better user feed (Userpage) and notifications


Available features and advantages
Design a better landing page (similar to Twitter) showcasing trending projects


Prepare the database for integrating the external trackers
Design the features page for the app (Ex. [http://placeport.net/features/ placeport])


Write the code and integrate the API
Implement these queries and integration with the new UI


Discuss the mentors and other developers
Move to stage for testing, review and feedback


Move for testing and final review


'''August 6th to August 15th - Finalization'''
'''August 6th to August 15th - Finalization'''


Integrating all the developed modules and features
Integrating all the developed modules and features
 
Manual and Documentation
Manual and Documentation
Discussion with the mentors and other developers


Testing and debugging
Testing and debugging
Line 255: Line 314:
I am very much familiar with UI frameworks like Bootstrap.
I am very much familiar with UI frameworks like Bootstrap.


Active Git user with projects hosted on GitHub.
I'm well versed with Git, and understand the importance of Version Control.


Completed Ruby, Rails and JQuery courses on Codecademy.
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 a intermediate Adobe Photoshop user.
I am also an intermediate Adobe Photoshop user.


I am using Linux since three years.
I am using Linux since three years.
Line 269: Line 328:
== Participation and Availability ==
== 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''' and '''Sarup Banskota''' to seek help whenever I am stuck and for discussing my work and progress.
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.

Latest revision as of 18:28, 27 March 2015

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.