Pages

My Project Proposal for GSoC 2015 with Fedora

Friday, March 27, 2015

 

Contact Information

Name : Mahesh Bandara Wijerathna

Email Address : m4heshd@gmail.com

IRC Nick : m4heshd

Introduction to myself

I'm Mahesh Bandara Wijerathna from Sri Lanka & i'm 21 Years old. Currently i'm a Software Engineering student at National Institute of Business Management Sri Lanka.
This is my second time of applying to GSoC, so i really hope to code the whole summer in dedication to fedora project with my good mentors. I can assure that i have done every research regarding to this project and i have the full potential to complete this project with 100% success.

Why Fedora Project?

I've been a FOSS lover since 2007. Started with Linux OSs itself. Since then what i always wanted is to be a part of it. So i've contributed to many open source projects in past years and as i think what better organization there's to contribute than Fedora. 

Past Involvement in Free Open-source software

Linux operating systems were the first step to my Open-source experience. By the time i started using Linux i had no clue about how to use it or where does they come from. But by the time got comfortable with the operating system i digged deep into birth of Linux & Programming for Linux. That happened very fast. When it comes to me i'm a really curious guy. I love collecting knowledge about things i have the interest in. I Started using Gnome with ubuntu.

After few months here I am, developing with GTK+. C and GTK+ are the best combination of languages i've ever written in. My brother was my mentor in this part of my life because he had experience in Linux way before me. He was the one who pushed me into this path & specially to Fedora. I wrote so many applications using C language and also with C++ and GTKmm. That's when i started contributing to Gnome, CCExtractor & few other local projects. Even in my start, i got an understanding by Overhauling complex projects like evince, vlc & CCExtractor. More can be found on my Blog.

Fedora and Me

By the time i got to fedora i was a lot familiar with Debian based operating systems such as Ubuntu. I was kind of frightened to change to an rpm based OS even though it's just a different package manager & few bash command differences. But with Gnome and the time pass by, i got used to fedora very quickly. First i got to use Fedora 15 just after Gnome 3 came out. Mostly why i love fedora is how they admire community members. Each and everyone is treated as a contributor. So I thought what if i really contribute some of my knowledge to Fedora since i've been enjoying the product for so many years. My inspiration for that was GSoC.

Future contribution toward Fedora Project

My ultimate goal is to contribute to Fedora as much as i can and be a big part of it by Being an Ambassador. We currently have 5 ambassadors in my country and i know every single one of them. I even have contacted all of them. I hope everyone in the Fedora community will help me to achieve my goal. 




Project Proposal (AskFedora UX/UI & Functionality Overhaul)

Overview

Fedora never suffered from lack of support for users over all these years because of AskFedora and the contributors who make AskFedora alive. I've used AskFedora personally and i got answers within minutes i posted the question. I watched the rate of submission of questions by users per day and it's an average of 25. So anyone can understand how popular is this.

With all these facts we can agree on giving the users a new experience just like askUbuntu or Stackoverflow. Currently askFedora in on Askbot's default UI and it doesn't seems to be neither much attractive nor responsive. A really smooth core application or backend isn't enough for a user to interact with a product. The interface matters very seriously. I quoted following from the wikipedia page about GUIs

"Designing the visual composition and temporal behavior of a GUI is an important part of software application programming in the area of human-computer interaction. Its goal is to enhance the efficiency and ease of use for the underlying logical design of a stored program, a design discipline known as usability."

I also think the AskFedora application also needs an update because it runs on Askbot version 0.7.49. There is a minor update for version 0.7.50. I've tested the new version and it seems to be working really good.

Why current UI/UX doesn't work

In the part of contribution, AskFedora has came a long way to the current status. But if we compare the User experience and the unique design of AskUbuntu to AskFedora there's a considerable difference. I've used both AskUbuntu and AskFedora and i can understand each difference one by one.

Fedora has it's own unique set of colors and shapes that has been developed for years now. The only product related to Fedora that doesn't inherit this uniqueness is AskFedora. Why leave that alone?

AskBot's default UI doesn't match the Unique Fedora designs in any way. And for the User experience users needed to be guided in a well manner when using the forum. Just like in StackExchange products. How do you earn the badges, how does the karma is collected....etc.

In points,
  • Colors are not attractive and doesn't match the fedora Uniqueness
  • Usage of fonts are not very good. Need to be changed.
  • Pages are responsive but not in the way we need it.
  • Most of the elements are out of the alignment.
  • Users that doesn't at least have 20 of karma shouldn't be allowed to create new tags.
And just for the technical part
  • Useless usage of variables in Django code should be modified.
  • Usage of bootstrap grid system is needed.


My Current Experience regarding the project

First i got my hands on AskBot & different versions of it. I used both askbot-devel and pip install of Askbot. Digged deep into the coding of every version in Askbot. Referred all the CSS files and got a complete idea about the whole project. As following..
  • What is already there?
  • What is to be done?
  • What can i add more?
I've seen that some of bootstrap components are currently used. Compared the default UI with Suchakra's Mockups and got into some editing. Edited CSS to match Suchakra's mockup and most importantly i added Google's Material design CSS and JS to some elements in the askbot. Here's the ask button working with material design.
Please follow this video to inspect my current work on AskFedora (Unfortunately the hosting plan i own doesn't allow apache mod_wsgi & the openshift also failed to run. I'll be looking at those soon)




Why 'Google Material Design'?

Google Material Design was first implemented in Android 5.0 that blew users minds. I was sitting at the Google I/O when they were announcing it and what first came to my mouth was "WOW". I heard everyone saying things like that. Because it's just amazing. Attractive solid colors, Amazing animations and transitions, Layered design.. etc. 
Everyone loved the new approach of Material Design. It gives the user a complete idea about what happens in the UI. I've never seen anyone who disliked this UI. So i thought implementing this design in web pages will be a really good way to attract people and give them a way better experience. I found few open source projects that took an effort on making it happen. 
From all those projects i've selected Materialize because it's really simple and does not mess up any of the original codes.

What benefits does this proposal have for AskFedora

The plan of giving a whole new UI/UX to all types of users such as Registered Users, Contributors and also the visitors will improve the rate of usage in AskFedora just initially by at-least 25%. Users doesn't need to visit StackExchange to solve issues regarding Fedora or Fedora related applications.
Other than implementing the improvements suggested by the community my proposal assures to implement much more powerful and advanced UI/UX features to improve the experience of the user. As a day to day user of these services i always would prefer the most user friendly and most attractive of all. These features aren't just Eye candy. They actually are responsible for the performance of the application, Resource usage meanwhile giving the best experience to the user. 
This proposal also assures that a new update to the Askbot application will be done matching to the DB queries & also cleaning out the whole django coding by throwing out the garbage codes that aren't essential to AskFedora. 

Prioritized Final Deliverables 

  • High Priority
    • Brand new UI created by taking apart the template of the Askbot
    • Modified Django coding to couple with New UI
    • Final documentation for the improvements done by me
  • Mid Priority
    • New user guidelines for the new UX just like in AskUbuntu
    • New easy to use navigation system for users. (Similar to StackExchange)
    • Updated Badges system
    • Modified permissions to new users such as "Adding new tags is not allowed until the user receives >20 karma"
  • Low Priority
    • Cleaned out Django codings
    • Updated application to Askbot Version 0.7.50

My qualifications to take the Responsibility of this Project


  • I'm a well achieved, Well dedicated student at NIBM Sri lanka.
  • I have experience in usage & Development in Linux operating systems including Fedora since the year 2007.
  • I have shown the abilities of very Fast learning & gaining experience over the past years continuously.
  • Well experienced and well practiced in Computer Programming since when i was 11 years old. Also written many commercial web & desktop application since then.
  • I've Expertise in programming languages such as C, C++, GTK+, GTKmm, JavaSE, JavaEE, python, HTML, php, Javascript, ajax, Django, Visual Basic 6.0, .Net..etc
  • In past years i've experience in contributing to FOSS organizations such as Gnome. More can be found in my blog. And also my GitHub. Most of my work is on private repos at bitbucket. I'm not allowed to make them public. :(
  • I have the Guidance of all current Fedora Ambassadors from Sri Lanka.
  • I'm also guided by professors from my institute.
  • I went through all the things that related to this project and i can assure that i have a 100% understanding about the project. In fact i have done some of the developing related to this project. [Video]

My time commitments

I'm currently completing my Diploma level in software Engineering. So i'll be attending lectures on on saturdays. I assure that I'll be dedicating all the other time to this project.

My plan of implementation

Tools i'll be using to make this project a success
  • Python & Django (obvious)
  • Inkscape, Balasmiq & Gimp (For mockups)
  • VirtualBox and KVM with Virt Manager (For virtualizing purposes in testing)
  • Openshift (For online instance of Askbot)
  • GitHub (For version tracking)
  • Sublime-text 3 (For file editing purposes)
  • Materialize (An open source project to bring the Google Material Design to HTML. Will be used to implement the Material design to Askbot)
  1. First level (UI)
    • Taking apart the Askbot source and going through each and every part of the coding with my mentors. (Partially done)
    • Come to an agreement with mentors on a mockup.
    • Editing of CSS, HTML & Django to match the selected mockup.
    • Adding new styles and HTML, Django elements.
    • Replacing the old elements with Amazing Google Material Design elements.
    • Adding attractive JS transitions for areas that my mentors suggest.
  2. Second level 
    • Getting hands on the mobile view and checking on the responsiveness.
    • Upgrading the responsiveness with Bootstrap Grid system.
    • Checking the pages with different user agents.
    • Looking at errors occurred in python while implementing the new UI
    • Modifying Askbot Macros, Methods, Functions to resolve errors.
    • Creating new macros because there are instances that some functions can't be edited. (Such as getting the user's Gravatar. If we modify the img element in the macro to be appear as a circle to be used in the header, it appears everywhere rounded because same macro is used to retrieve the Gravatar.
  3. Third level
    • Running a test period on an openshift instance to start the low level debugging process.
    • Tracing the bugs and resolving them by discussing with mentors.
    • Trying for an Update of the Askbot application. Looking for any DB clashes or code mismatches.
    • Finalising the project by discussing with mentors.
I'll be documenting every single one of above mentioned events in my blog.

The Timeline

I'll be following the Agile Iterative Development method to make this project a success. The reason for using this methodology according to my knowledge, is to test out a working portion of the Askbot after every implementation with my mentors. 
Warm up period (27th March - 27th April)
  • I'll be studying bit more advanced parts of Django & Python. Also will be practicing WSGI on apache for more understanding in the module. Will be spending time on openshift a lot. More knowledge never hurts. :) 
  • Will be Going through Askbot doing modifications till i fill my mind up with askbot structure. Even though i have a complete understanding about the askbot i could use some memory for tracing bugs later. 
Community Bonding period (27th April - 25th May)
  • I'll be talking with my potential mentors and evaluating any work i've done in the warm up period. I'll be taking all the advices from my mentors. 
  • I'll do a rough flow chart of the process upon the agreements with my mentors. 
  • If it's possible i'll show my modifications to the community approved mockup and get a confirmation on the UI.
Iteration #1 (25th May - 1st June)
  • I'll be deploying a fresh copy of Askbot on my Virtual machine and on Openshift. 
  • Will be initializing a Git repo for the use of me and my mentors.
  • If any mockups were confirmed i'll be starting the work on Askbot Landing page (/questions)
  • If mockups were not confirmed i'll be getting the mockups approved by my mentors.
  • Will be upgrading the responsiveness of the questions page with bootstrap or without(with respective to conditions like {%- if request.user.is_authenticated() -%} )
Iteration #2 (2nd June - 15th June)
  • Adding the Burger Menu with Material Design transitions.
  • I'll be editing existing CSS classes to resolve clashes in Materialize, Bootstrap & style.css
  • Start working on 'Ask your question page'. Adding the unique colors & shapes. Especially on the Secondary Header.
  • Try to improve the tag suggestion system like Askubuntu.
  • Will be doing modifications to WMD editor if needed to match the UI.
Iteration #3 (16th June - 26th June)
  • Will start working on the User profile page.
  • Arranging the content inside the user profile page in a proper manner and reducing the font sizes.
  • Will be changing the notification system Along with the inbox UI 
  • I noticed a bug that Number of answers of a user does not exceed 100. I'll be looking into solving that.
  • Will change the listing of questions and answers on user page. Currently it lists 100 answers and all the questions. That's way too much for a single page.
Iteration #4 (27th June - 3rd July)
  • Will be doing the final touch ups for the Mid term evaluation with my mentors.
  • Debugging as much as i can.
Iteration #5 (4th July - 24th July)
  • I'll be working on the users page.
  • Changing the search users feature to be working on a LIKE clause instead of an EQUAL. SO the users doesn't have to know the whole username to search a user.
  • Looking at the possibility of changing the search trigger for every key press instead of waiting to hit the return key.
  • Getting the Hands on CSS to implement Media Queries + Bootstrap to get the responsive UI on mobiles and many other user agents.
Iteration #6 (25th July - 10th August)
  • I'll be completing the mobile views and testing them.
  • I'll be improving the help documentation and help page.
  • Looking at the possibility of implementing a top navigation bar to switch between fedora services like in stack exchange.
  • Also will be looking at the possibilities of updating the application before or after the modifications.
Iteration #6 (11th August - 28th August)
  • I'll be debugging all the UI issues, DB errors and Django error occurrences.
  • Will be running the long period test on openshift for bug tracing with my mentors.
  • Finalizing of the documentation will be done.
  • Will  be creating a patch with modifications to the corresponding askbot version.
  • Finalizing the project for the final evaluation.
I'll be proceeding further with my mentors to get this project evaluated by community members and get it live. 

Handling of any unexpected issues

There could be some unexpected instances like personal issues, Getting sick, Family emergencies, losing of computer, Sudden announced examinations by the institute..... within this few months of participating in GSoC. So i could be losing the time that has to be spent on this project.
I'll be handling these kind of problems in well manner by being ready for every single one of those instances. For an example: Having a backup PC set up for the project with backed up data in case of a sudden break down of my current PC. 
In any case i'll have to do travelling, i'll be occupied in this project on the road using my laptop.
Like this I'll manage my problems in well manner without doing any harm to the project.

Potential Mentors

 Kushal Das, Suchakra & Sarup Banskota will be my potential mentors. I've spoken with all three of them and i'm really glad to work with them further more.
I hope this proposal meets the maximum potence that a student in my skill level can dedicate for an Open Source Project. 
Read more ...