From Fedora Project Wiki
mNo edit summary
mNo edit summary
Line 1: Line 1:
'''Contact:'''
 
== Contact: ==
 


* Your name: Aditya Prakash
* Your name: Aditya Prakash
Line 34: Line 36:




== The need I believe the project fulfills ==
=== The need I believe the project fulfills ===


With rise of internet, developers were hugely benefited. Tool like disturbed version control made is dead easy for programmers to collaborate. But such tool doesn't meet the requirement of designers and leaves them with huge disadvantage. Designers need visual tool to see the progress through their development.
With rise of internet, developers were hugely benefited. Tool like disturbed version control made is dead easy for programmers to collaborate. But such tool doesn't meet the requirement of designers and leaves them with huge disadvantage. Designers need visual tool to see the progress through their development.
Line 43: Line 45:
* You can fork any existing public project, make changes to it and propose the changes to original repo. If they like your work, they will accept it and merge it in their existing work and when they finally release it, millions of people will use your work. Isn't it awesome? It would not only allow new designers to enter the field with ease but also allow them to work and learn with other professionals right from beginning.
* You can fork any existing public project, make changes to it and propose the changes to original repo. If they like your work, they will accept it and merge it in their existing work and when they finally release it, millions of people will use your work. Isn't it awesome? It would not only allow new designers to enter the field with ease but also allow them to work and learn with other professionals right from beginning.


== Ideas list ==
=== Ideas list ===




Line 72: Line 74:


== '''Timeline''' ==
== '''Timeline''' ==
 
=== Before coding period ===
 
(before 25 May)
My final exams start at 21st of April and ends on 1st of May. My contribution would be virtually dead for two weeks around that time period. Still it leaves me with a lot of days in before coding period. I am already familiar with code base so I am going to skip that, although I do need to study about rugged
My final exams start at 21st of April and ends on 1st of May. My contribution would be virtually dead for two weeks around that time period. Still it leaves me with a lot of days in before coding period. I am already familiar with code base so I am going to skip that, although I do need to study about rugged
'''Before coding period''' (before 25 May)


* Read the Pro Git book, Sarup had pointed me to. I am comfortable with git and with time I got comfortable collaborating too. I think my mentors must have never see anything like my PR #247 :D But they helped me and I think I am doing okay. I do need to learn every single detail git has to offer.
* Read the Pro Git book, Sarup had pointed me to. I am comfortable with git and with time I got comfortable collaborating too. I think my mentors must have never see anything like my PR #247 :D But they helped me and I think I am doing okay. I do need to learn every single detail git has to offer.
Line 87: Line 87:


'''1/4 time''' - Discussing idea with mentors, tell them what I have in mind and how I plan on implementing it. I would use this time also to the read docs of gem/rails relevant to functionality I am going to implement to that I use best practices. If some other website has implements the same functionality then I would like to look into their code.
'''1/4 time''' - Discussing idea with mentors, tell them what I have in mind and how I plan on implementing it. I would use this time also to the read docs of gem/rails relevant to functionality I am going to implement to that I use best practices. If some other website has implements the same functionality then I would like to look into their code.
'''1/2 time''' - Implementing the feature and write relevant tests
'''1/2 time''' - Implementing the feature and write relevant tests
'''1/4 time''' - Get feedback from mentors, make suggested improvements, rector my code and update wiki about it if needed. This time would also act as buffer if I was not able to implement the feature in time.  
'''1/4 time''' - Get feedback from mentors, make suggested improvements, rector my code and update wiki about it if needed. This time would also act as buffer if I was not able to implement the feature in time.  


'''Iteration 1 - Exploration Page''' (May25 - June 10)
=== Iteration 1 - Exploration Page ===
(May25 - June 10)


Besides follow option which we already have, I am going to add one more button to projects. It work like star botton of github, I don't have a name yet but glitter, outglitter and gallop comes to mind :D
Besides follow option which we already have, I am going to add one more button to projects. It work like star botton of github, I don't have a name yet but glitter, outglitter and gallop comes to mind :D
Line 97: Line 100:
Since this would be our landing page, I think it would be nice if give some time to style it to build our reputation.  
Since this would be our landing page, I think it would be nice if give some time to style it to build our reputation.  


'''Iteration 2 - Project Page''' (June 11 - June 20)
=== Iteration 2 - Project Page ===
(June 11 - June 20)


Adding things like project description, stats of number of forks, number of files, activity, comments, followers etc and link to any relevant blog posts is easy. It shouldn't take more than 2 days.  
Adding things like project description, stats of number of forks, number of files, activity, comments, followers etc and link to any relevant blog posts is easy. It shouldn't take more than 2 days.  
Line 104: Line 108:
Discuss the ideas presented in Another Design Hub mockup with mentors, whether we need implantation of things like timeline, stats related to collaborators and designers.
Discuss the ideas presented in Another Design Hub mockup with mentors, whether we need implantation of things like timeline, stats related to collaborators and designers.


'''Iteration 3 - Taggable issues and projects''' (June 21 - June 26)
=== Iteration 3 - Taggable issues and projects ===
(June 21 - June 26)


Use acts-as-taggable-on to make issues and projects taggable.
Use acts-as-taggable-on to make issues and projects taggable.
Line 113: Line 118:
I would use this time a buffer to finish up things and give them a final touch so that everything I have added is production ready
I would use this time a buffer to finish up things and give them a final touch so that everything I have added is production ready


'''Iteration 4 -  Sparkleshare and Inkscape''' (4 July - 24 July)
=== Iteration 4 -  Sparkleshare and Inkscape ===
(4 July - 24 July)


This is something I am least familiar with. I am hoping my mentors will point me to resources from which I can use to implement
This is something I am least familiar with. I am hoping my mentors will point me to resources from which I can use to implement
Line 119: Line 125:
I was thinking may be we would make the link of github available on project's page, so that other users can clone it as and add it to their sparkleshare app so that sparkleshare keeps the folders in sync.
I was thinking may be we would make the link of github available on project's page, so that other users can clone it as and add it to their sparkleshare app so that sparkleshare keeps the folders in sync.
Using The case for SVG, Inkscape and Git, we should be able to integrate inkscape but I am afraid there is more to it.
Using The case for SVG, Inkscape and Git, we should be able to integrate inkscape but I am afraid there is more to it.
# TODO : Improve this section  
#TODO : Improve this section  


'''Iteration 5 -  History Page''' (25 July - 5 August)  
=== Iteration 5 -  History Page ===
(25 July - 5 August)  


Use design-with-git to improve the way we present files and add tools to compare different versions
Use design-with-git to improve the way we present files and add tools to compare different versions
Implement ideas from #187. I think we already have what we need, we just need to add a little bit of style to achieve what we require
Implement ideas from #187. I think we already have what we need, we just need to add a little bit of style to achieve what we require
Animated History is something we can  
Animated History is something we can  
# TODO : Improve this section
#TODO : Improve this section


'''Iteration 6 -  Network Graph''' (6 August - 11 August)
=== Iteration 6 -  Network Graph ===
(6 August - 11 August)


Make changes to project page so that it displays numbers of forks
Make changes to project page so that it displays numbers of forks
Line 143: Line 151:
* I have worked with rails projects (ANK and catforum) for club I am part of and they probably aren't best rails app you have seen but they helped me learn the basics of rails. # TODO add link to repo of catforum
* I have worked with rails projects (ANK and catforum) for club I am part of and they probably aren't best rails app you have seen but they helped me learn the basics of rails. # TODO add link to repo of catforum
* I have done multiple course related to rails and web development: Ruby on Rails 4 Essential Training, RSpec Testing Framework with Ruby, Ruby Essential Training, Git Essential Training and Up and Running with Bootstrap 3 on lynda.com, Web Application Architectures on coursera.com. I can't wait until I get to use things I have learned. I have done many more ;) I love learning new things that much.. other relevant courses which might be useful in this project would be Machine Learning (which I plan on using to give smart suggestion to users) and Cryptography I
* I have done multiple course related to rails and web development: Ruby on Rails 4 Essential Training, RSpec Testing Framework with Ruby, Ruby Essential Training, Git Essential Training and Up and Running with Bootstrap 3 on lynda.com, Web Application Architectures on coursera.com. I can't wait until I get to use things I have learned. I have done many more ;) I love learning new things that much.. other relevant courses which might be useful in this project would be Machine Learning (which I plan on using to give smart suggestion to users) and Cryptography I
# TODO Improve this section and try to sound less lame :P
#TODO Improve this section and try to sound less lame :P

Revision as of 12:27, 23 March 2015

Contact:

  • Your name: Aditya Prakash
  • FAS Account: sonalkr132
  • Fedora userpage: sonalkr132
  • Email: aditya.prakash132@gmail.com
  • Freenode IRC Nick: sonalkr132

Why do you want to work with the Fedora Project?

Fedora is as open as it gets. "Freedom. Friends. Features. First." pretty much explains what Fedora is. I am a newbie and I haven't contributed a lot, but collaborators of Fedora project I am interested in were really friendly and encouraging, I wish I could say the same about others. I have used linux since I own a laptop, now I have installed Fedora too and I am on phase of transition to using Fedora only.

I look forward of having a lifetime relationship with Fedora community.


Do you have any past involvement with the Fedora project or any other open source project as a contributor?

I have been contributing actively on GG and with support of other contributors we have created the biggest contribution hype GG had ever see ;) I hope we will be able to continue this streak. I have contributed on other projects like osem of openSUSE and rails website. They aren't major contributions but I look forward to building a strong lasting relationship with many more.


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

No, this would be first year of my participation.

Will you continue contributing/ supporting the Fedora project after the GSoC 2014 program, if yes, which team(s), you are interested with?

Yes, of course! GG is always going to be my pet project. There are so many ideas which we need to implement on GG, it can never be completed in one summer. I want to help GG work its way to production. Web apps needs constant updates, maintenance and addition of new features even after it is in production.. I don't think my association with would ever have an end.

I may be aiming too high but I want to be part of Fedora Infrastructure team, particularly web developers team.


Proposal

The need I believe the project fulfills

With rise of internet, developers were hugely benefited. Tool like disturbed version control made is dead easy for programmers to collaborate. But such tool doesn't meet the requirement of designers and leaves them with huge disadvantage. Designers need visual tool to see the progress through their development.

  • Very few tool which designers use to collaborate are really ineffective and tedious. Right now they have to ask for suggestions on mailing list and share work with proprietary software like dropbox. Other tools like ifolder, ubuntu one and yahoo groups don't exactly fulfill the needs of a designers. I am sure none of us like closed solution and losing control over our data.
  • GlitterGallery with integration of sparkleshare, inkscape and git is exactly what you need. You can work locally on your laptop and leave the task of updating others about your progress on us.
  • GG allows you to share your work, see what others are working on and get inspired from looking at works of your role models. You can get instant feedback on your work from other collaborators and developers. It would add to the transparency and professionalism of the work of designers.
  • Having not to worry about sending files to everyone on mailing list and waiting for feedback, designers can focus on what is more important ad deliver quality work.
  • You can fork any existing public project, make changes to it and propose the changes to original repo. If they like your work, they will accept it and merge it in their existing work and when they finally release it, millions of people will use your work. Isn't it awesome? It would not only allow new designers to enter the field with ease but also allow them to work and learn with other professionals right from beginning.

Ideas list

GG is quite young and possibilities are immense. Probably that is the one thing which really excites me. I will try to mention only the idea which I think are important and we need to implement them as soon as possible. I have made this list after talking to possible mentors, going through issue page and reading blogs related to it.

  • Landing page need to be changes to exploration page which showcases a mix of most loved repos and new trending ones. Which projects will make the list can be be decided by total number of followers and forks of the project, follows and forks they have received in last one week. User need not be logged in to see them.
  • Integration of sparkleshare, designers need not worry about manually uploading their work. They can just give us the link of github repo(or other similar site) and we will do the rest for them. We set up the project online for them by reading their github repo and let sparkleshare sync their project with all the followers of the project. Their documentation explains most of the things we need.
  • Integration of inkscape. The case for SVG, Inkscape and Git explains a bit how we can use inkscape with git but I think we will have to explore more. Since SVGs are increasingly gaining more popularity, I think it will be really useful.
  • Better commenting system. I am already working on this and trying to improve it. "if I send a link to my mockup’s page in IRC, a bot sitting in a GNOME IRC channel will see the link and associate any comments about it automatically with that mockup and post the feedback from the IRC user right into the mockup’s page in the web app!". That is an extract from The one where the designers ask for a pony. I think that will be a nice addition to existing commenting system we have. Besides that Sarup had suggestion about comment box, I look forward to implement them soon.
  • Better history view. #187 pretty much explains the basics I have in mind. A nice addition would be animated history view, it would be nice addition to visual tool designers would appreciate. Animating a git repository explains how we can achieve this or instead watch this youtube and I am sure you will be convinced that we need it ;)
  • Another improvement which was suggested by Sarup is integration of design-with-git . Side by side view, one on top of other with sliding mask probably exactly what we need to make our history view richer.
  • #105 highlights the need of improvement of project page. Another Design Hub mockup has some nice suggestions like listing all designers and collaborators, timeline and image specifications to name a few.
  • We already support the feature to fork, tho we don't have view for it yet. We need to implement the ability to pull and merge. We can start from something simple like that button of New Proposal from another design hub mockup. User can fork a project, make changes and upload a single file (not whole history) as his proposal, if owners of project like it then they can just add it to their repo and it would work exactly like adding a new file to tree works.
  • Projects and issues need to be taggable. acts-as-taggable-on gem would make it quite easy, we would just need to add some css and jquery to achieve something like tags of stackoverflow.
  • We need a network graph feature so that users can see which fork is ahead of its parent. We recently added ancestry so that would take care of showing number of forks but for visual representation like github we would need something like morris.js or chartkick.py
  • We can further improve our commenting system by on image comments. User can click on any area of design and leave comment on pop up box. I am not sure how we would lay out this but we can learn how to do this from openstreetmap-website, they have used rails to make their website too so it must not be that difficult to figure it out. Another possible way to achieve this could be magic-mockups.
  • Okay this list is getting quite long, I am gonna rap this up. We can add something like newfeed of github to see what our followings are upto, admin area to monitor our site and twik with configs whenever needed and an inspiration page, which would be improvement on exploration page for logged in users. I have studied a bit of machine learning and always wanted to use it. we can give suggestion to users about projects they might like using things like tags they have on their own projects, comments they made on others, projects they forked and other parameters.

I will not be able to achieve all of the ideas mentioned above in this summer? I know ;) But I have plans for GG which go way beyond one summer. Following would be final deliverables which I want to achieve this summer:

  • Implementation of exploration page
  • Integration of sparkleshare and inkscape
  • Improvement in layout of history page with addition of design-with-git
  • Improvement in layout and content of project page
  • Addition of tagging to projects and issues
  • Improvement of network graph


Timeline

Before coding period

(before 25 May) My final exams start at 21st of April and ends on 1st of May. My contribution would be virtually dead for two weeks around that time period. Still it leaves me with a lot of days in before coding period. I am already familiar with code base so I am going to skip that, although I do need to study about rugged

  • Read the Pro Git book, Sarup had pointed me to. I am comfortable with git and with time I got comfortable collaborating too. I think my mentors must have never see anything like my PR #247 :D But they helped me and I think I am doing okay. I do need to learn every single detail git has to offer.
  • Get more familiar with rugged and its doc.
  • Complete work with comments and improvement in notification I am doing right now #254
  • Clean specs folder so that it passes rubocop, add hook of haml-lint to the repo and clean haml files so that it passes it.
  • Read more about integration of sparkleshare, inkscape and design-with-git. If I have time then I would like to start work on them too, I hope my mentors will point me to more useful sources. Those are the things I am not very familiar with, it would be nice to have a head start on them so that when I actually work on them, I am able to finish my work in time.

I am going to split each iteration time with following guideline

1/4 time - Discussing idea with mentors, tell them what I have in mind and how I plan on implementing it. I would use this time also to the read docs of gem/rails relevant to functionality I am going to implement to that I use best practices. If some other website has implements the same functionality then I would like to look into their code.

1/2 time - Implementing the feature and write relevant tests

1/4 time - Get feedback from mentors, make suggested improvements, rector my code and update wiki about it if needed. This time would also act as buffer if I was not able to implement the feature in time.

Iteration 1 - Exploration Page

(May25 - June 10)

Besides follow option which we already have, I am going to add one more button to projects. It work like star botton of github, I don't have a name yet but glitter, outglitter and gallop comes to mind :D I have used whenever gem before and I would like to use it here too but I am open to using any other scheduler gem too. As explained previously I would define a function which look through the database and compile a list of most loved and trending projects. I would use total number of follows, forks and stars along with number of follows, forks and stars it gained in last one week to decide which projects will make to the landing page. I have read Mysql in my high school and if need I should be able to write raw sql code to achieve this but I don't think it would come to that. Since this would be our landing page, I think it would be nice if give some time to style it to build our reputation.

Iteration 2 - Project Page

(June 11 - June 20)

Adding things like project description, stats of number of forks, number of files, activity, comments, followers etc and link to any relevant blog posts is easy. It shouldn't take more than 2 days. Implement a nice view for files in project. Slideshow is one of the options but there are many others nice way for gallery kind of effect which can achieved with css and a bit of jquery # TODO: Add link to websites/templates with nice presentation of pictures Add subdomains using episode of railscast on subdomains Discuss the ideas presented in Another Design Hub mockup with mentors, whether we need implantation of things like timeline, stats related to collaborators and designers.

Iteration 3 - Taggable issues and projects

(June 21 - June 26)

Use acts-as-taggable-on to make issues and projects taggable. Add some css and js so that it looks nice tooI Make projects sortable on basis of tags they have and add pagination to sorted list Mid-term Evalution (26 June - 3 July)

I would use this time a buffer to finish up things and give them a final touch so that everything I have added is production ready

Iteration 4 - Sparkleshare and Inkscape

(4 July - 24 July)

This is something I am least familiar with. I am hoping my mentors will point me to resources from which I can use to implement Right now, my idea is that we should add an option to download the project as zip file I was thinking may be we would make the link of github available on project's page, so that other users can clone it as and add it to their sparkleshare app so that sparkleshare keeps the folders in sync. Using The case for SVG, Inkscape and Git, we should be able to integrate inkscape but I am afraid there is more to it.

  1. TODO : Improve this section

Iteration 5 - History Page

(25 July - 5 August)

Use design-with-git to improve the way we present files and add tools to compare different versions Implement ideas from #187. I think we already have what we need, we just need to add a little bit of style to achieve what we require Animated History is something we can

  1. TODO : Improve this section

Iteration 6 - Network Graph

(6 August - 11 August)

Make changes to project page so that it displays numbers of forks Add ability to look up the network tree, see whether the parent is ahead by any commits and add that to project page as well Use morris.js or chartkick.py to add a chat like that of github

Why should we choose you over other applicants?

I won't deny that I am inexperienced as compared to others but more you know me, more you will admire my passion and dedication. I am only in second year of my college and I have had a laptop only for a year or so yeah! I might not know everything but I know I love learning new things. I might not have experience of gsoc or contribution to open source of 2 or 3 years so yeah you will have to guide me through most of things but I can promise you this that at end of summer you will be proud that you chose me. Besides isn't gsoc is about endorsement to new comers like me rather than people who already well experienced with everything? It's not that I am worthless either. Following are the things you should know about me:

  • I am already familiar with code base and have been actively contributing on GG.
  • I am really hardworking. I can sit in front of laptop for as long as 15 hours a day and not just for days but for weeks. I don't even consider it chore but I love it. I know something is probably wrong with me ;) One good side of that I will get more work done than any other applicant.
  • I have worked with rails projects (ANK and catforum) for club I am part of and they probably aren't best rails app you have seen but they helped me learn the basics of rails. # TODO add link to repo of catforum
  • I have done multiple course related to rails and web development: Ruby on Rails 4 Essential Training, RSpec Testing Framework with Ruby, Ruby Essential Training, Git Essential Training and Up and Running with Bootstrap 3 on lynda.com, Web Application Architectures on coursera.com. I can't wait until I get to use things I have learned. I have done many more ;) I love learning new things that much.. other relevant courses which might be useful in this project would be Machine Learning (which I plan on using to give smart suggestion to users) and Cryptography I
  1. TODO Improve this section and try to sound less lame :P