From Fedora Project Wiki

Contact:

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

Why do you want to work with the Fedora Project?

"Freedom. Friends. Features. First." pretty much explains what the 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 have used linux since the first day I bought my laptop, now I have installed Fedora too and I am on the phase of transitioning to using Fedora only.

I look forward of building and maintaining 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 the other contributors we have created the biggest contribution hype GG has ever seen. 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 be 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 it would ever have an end.

I want to be part of Fedora Infrastructure team, particularly web developers team.


Proposal

The need I believe the project fulfills

  • With the rise of the internet, developers were hugely benefited. Tools like disturbed version control made is dead easy for programmers to collaborate. But such a tool doesn't meet the requirement of designers and leaves them with huge a disadvantage. Designers need visual tools to see the progress through their development.
  • Very few tools which designers use to collaborate are really ineffective and tedious. Right now they have to ask for suggestions on a mailing list and share work with proprietary software like dropbox. 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 the designers.
  • Having to not worry about sending files to everyone on a mailing list and waiting for feedback, designers can focus on what is more important and deliver quality work.
  • You can fork any existing public project, make changes to it and propose the changes to the original repo. If they like your work, they will accept it and merge it into 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 the beginning.

Ideas list

GG is quite young and possibilities are immense. That is probably the one thing which really excites me the most. I will try to mention only the ideas 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 the issues page and reading blogs related to it.

  • Landing page needs 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 the total number of followers and forks of the project and 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 the existing commenting system we have. Beside 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 my mind. A nice addition would be animated history view. It would be the visual tool, which designers would appreciate. Animating a git repository explains how we can achieve this or instead watch this youtube video 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 the other with sliding masks 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, though 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 the owners of the 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 the 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 a comment on the 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.
  • We can add something like newsfeed of github to see what our followings are upto, admin area to monitor our site and tweak with configs whenever needed and an inspiration page, which would be an improvement on the exploration page for logged in users. I have studied a bit of machine learning and always wanted to use it. we can give suggestions to users about the 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 the 21st of April and end on 1st of May. My contribution would be virtually dead for two weeks around that time period. However, 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 rubocop.
  • 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 so that I use best practices. If some other website has implemented the same functionality then I would like to look into their code as well.

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 4)

  • Besides the follow option which we already have, I am going to add one more button to the projects. It would work something like star botton of github, I don't have a name yet but glitter, outglitter and gallop comes to mind.
  • I have used whenever gem before and I would like to use it here too but I am open to using another scheduler gem too.
  • As explained previously I would define a function which would 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 the past week to decide which projects will make it to the landing page. I read Mysql in my high school and if needed 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 - Sparkleshare (5 June - 30 June)

  • Use Git on the Server to set up our own server. Users would be able to push directly to our website.
  • Add way/instruction which users can use to sync their Sparkleshare app with our server.
  • Add an option to download the project as zip file.
  • If collaborators choose to host their project on Github or any other similar website, we would need to make the link of the online repo available on the project's page, so that other users can clone it and add it to their sparkleshare app. Sparkleshare would keep the folders in sync.

Mid-term Evalution (1 July - 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 3 - Project Page and Tagging (4 July - 15 July)

  • 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 be achieved with css and a bit of jquery. Other examples: toolofna, good-morning, mediamonks, hellomoday, aquest.
  • Use acts-as-taggable-on to make issues and projects taggable.
  • Make projects sortable on the basis of tags that they have and add pagination to sorted list

Iteration 4 - Network Graph (16 July - 20 July)

  • Make changes to the 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 the project page as well
  • Use morris.js or chartkick.py to add a chat like that of github

Iteration 5 - History Page and Inkscape (21 July - 11 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.
  • Using The case for SVG, Inkscape and Git, we should be able to integrate inkscape but I am afraid there is more to it.


I am keeping the last two weeks as a buffer for any iteration I am not able to complete. I would use this time to brush up the code I have written in the entire project and try to get more feedback from mentors and as well as others. I guess this would be the time when we discuss my future involvement with GG and launching it in production.

Why should we choose you over other applicants?

I won't deny that I am inexperienced as compared to others. I am in my second year of college and I have had a laptop for only a year. 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, you will have to guide me through some of the things but I can promise you that at end of summer you will be proud that you chose me. You will come to admire my passion and dedication. Besides isn't gsoc about endorsement to new comers like me rather than people who are already well experienced with everything? 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 a chore, I love it. One good side is that I will get more work done than any other applicant.
  • I have worked with rails projects (ANK and catforum) for a club I am a part of and they probably aren't the best rails app you have seen but they helped me learn the basics of rails.
  • I have done multiple courses 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
  • Talking about design expereince.. I know Gimp enough to get by as a web developer but I don't suppose that would be called design experience. I do like to draw, however!