Contact Information
Name : Mahesh Bandara Wijerathna
Email Address : m4heshd@gmail.com
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?
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.
- Useless usage of variables in Django code should be modified.
- Usage of bootstrap grid system is needed.
My Current Experience regarding the project
- What is already there?
- What is to be done?
- What can i add more?
Why 'Google Material Design'?
What benefits does this proposal have for 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
My plan of implementation
- 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)
- 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.
- 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.
- 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.
The Timeline
- 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.
- 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.
- 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() -%} )
- 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.
- 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.
- Will be doing the final touch ups for the Mid term evaluation with my mentors.
- Debugging as much as i can.
- 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.
- 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.
- 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.