From Fedora Project Wiki
Line 8: Line 8:
* '''Code Forges (GitHub, GitLab, BitBucket, etc.)''':  
* '''Code Forges (GitHub, GitLab, BitBucket, etc.)''':  
** Github :  https://github.com/DimuthuLakmal
** Github :  https://github.com/DimuthuLakmal
**
 
* '''Social Media Accounts''':
* '''Social Media Accounts''':
** LinkedIn : https://lk.linkedin.com/in/dimuthukariyawasam
** LinkedIn : https://lk.linkedin.com/in/dimuthukariyawasam

Revision as of 18:00, 23 March 2016

Fedora Infrastructure Web Application Development: Fedora Hubs

Contact Information

NOTE: My blog was not updated for quite a while. But I hope to blog about the progress of this project continuously in my blog.

Questions to answer

Why Fedora?

I am an enthusiast of open source software development and was exploring new open source software projects to work on as a long-term contributor. When I discovered that Fedora has many projects which are suit with my passion and interest of web application development, my attention was instantly drawn to it and I found out that it is a great place to learn something new. Also it consists of a very helpful community which supports new contributors who are willing to contribute with their knowledge.

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

I am participating in a FOSS project for the first time and I do not have past open source project experience. However, I am willing to work on it with my full effort as a long-term contributor of Fedora.

Have you participated in GSoC in the past? If so, what year(s) and which organization(s)?

This is my first experience in participating in GSoC.

Do you plan to continue contributing to the Fedora Project after GSoC? If yes, what sub-project(s) are you interested with?

I have already planned to contribute to Fedora projects continuously. I am fascinated with Fedora-hubs and Fedora developer portal and I have already started to contribute. Since there are a lot to complete in the said projects, Fedora will need the commitment and the support of the contributors even after GSOC. Also I have found interest in learning kernel programming too. Undoubtedly, Fedora is the best way to seek my desired paths.

Why me?

As far as I can remember, I have always wanted to do something useful to the world with my knowledge of computer which pushed me to choose computer Science and Engineering as my major in my degree program in University of Moratuwa.
From there I was able to polish up my knowledge of web application development as well as my soft skills. (See my LinkedIn profile for completed projects. I have included some of them in my github account.)

I am interested in Fedora hubs as I have a stable and fast-paced knowledge in most of the required technologies used in it (HTML/Javascript/CSS, Python, Bootstrap).

In addition, I am getting familiarized with Jinja2, Fedmsg and datanommer/grepper. Jinja2 is a template engine very much similar to blade in PHP, laravel and JSP EL which are the technologies that i have worked with previously.

Moreover, I have already researched resources on prototypes I am willing to develop for the GSOC. Therefore it will much easier to continue from there on.

I believe that Fedora is the place that I can fulfill my vision.

Have you contributed to any other open source organizations or projects? If so, do you have artifacts you can show so we can see your skill set(s)?

No,I have not contributed to any other open source organizations yet.

Do you have any other open source experience (even if not coding-related)?

I'm member of https://ask.fedoraproject.org/en/users/9982/jadd22/, I used to provide solution to some general problems regarding fedora.

Proposal Description

Overview and The Need

The issue in https://pagure.io/fedora-hubs/issue/47 highlights the need of information about regional places where Fedora already has or would like to have a presence in. It is proposed that a page similar to Teams hubs which contributors will automatically join those regional hubs based on their FAS locations would be suitable for this.

As mentioned in the idealist, Fedora hub is the new web presence for all of the Fedora users, subprojects, and communities and one of my target is to welcome the involvement of the newbies through simplicity. In order to achieve this, I propose to provide tutorial widget for each team hubs describing how to get involved and how to install pre-requirements including topics such as how to make development environment. Video tutorials with relevant information prove to be more efficient than words and it has a more favorable impact on the audience than reading long text. Therefore it is ideal to create tutorials for each team hub covering at least the initial phases such as setting up the developer environment. It is important to be able to reach out to tutorials with or without videos related to a project rather than going through guidelines that span over hundreds of pages. My colleagues of the university claim that these issues make Fedora very difficult to work with.

Fedora has many various projects which require varying skill sets. Therefore sometimes it can be quite difficult to find a suitable proposal for a newbie that suits his/her skill set. It would be very helpful if they have a widget in their profile page that suggests suitable projects according to their skill set.

Any relevant experience you have

  • I have worked on multiple web based applications using HTML, Javascript/CSS, Bootstrap, PHP laravel framework and JSP (See Github and LinkedIn profiles).
  • All those projects have used MVC architecture which is the base for the Fedora Hubs project. MVC acts as the foundation for the jinja template engine which is based on django. The expressions and variables statements are more like jsp, EL and laravel blade framework. Therefore I believe I have sufficient knowledge and resources to deal with jinja2 and I’m currently getting familiarized with jinja2, Fedmsg.
  • I have expertise in Python and I have worked on customizing MakeHuman open source project build using Python. I have already got the knowledge of the structure of the backend codebase and fixed issue (#113) and proposed a mockup for regional hub (#47).
  • In the idealist there is an idea to integrate some of the features of the fedora hubs with the developer portal. I have already setup the developer portal and started working on it.
  • I participated in the awareness session for GSoC 2016 which was held in our university with the aim of explaining the importance of contributing towards FOSS development and guidelines for using IRC and mailing lists. It was conducted by Mr. Andun Sameera Liyanagunawardana who was a 2 times GSoC winner and an active open source contributor.

How do you intend to implement your proposal

Step 1:

  • I have already created prototypes. Modification can be added to the prototypes according to the mentor’s feedback (on regional hubs and other two widgets).
  • The comments of stakeholders of the project play a significant role in this project. So I hope to get feedback/requirements from other fedora contributors and modify the prototype accordingly (regional hubs and other two widgets).

Step 2:

  • Implement the backend of the regional hubs. I believe that some of the backend features of “Teams” hubs can be reused or evolved for this purpose as well.

Step 3:

  • Integrate it with the fedora hubs.
  • Perform final testing and bug fixing for the regional hubs.
  • Prepare final documentation for regional hubs.

Step 4:

  • Then the backend of the tutorials widget and project matching widget will be implemented.

Step 5:

  • Integrate widgets with fedora hubs.
  • Perform final testing and bug fix for the widgets.
  • Prepare final documentation for widgets.

A rough timeline for your progress

Before April 22 (Announce accepted proposals):

  • Get more familiarized with Jinja2, Fedmsg and datanomer/grepper.

April 22-May 23(Community bonding period):

  • Present the ideas and prototype to mentors and get advices mentors.
  • Analyze requirements with other stakeholders such as regular as well as new contributors.

May 23 - June 20(Working period):

  • Week 1:
    • Modify prototype of regional hub according to the feedback.
  • Week 2-3:
    • Develop the backend of the regional hub.
    • Integrate the system with the fedora hubs and start bug fixing.

June 20 - 27(submitting period for mid evaluations):

  • Complete and submit mid-term evaluations.

June 27 - August 15(Working period):

  • Week 1-2:
    • Continue testing and bug fixing.
    • Prepare final documentation for the regional hub.
  • Week 3-4:
    • Modify prototype of widgets according to feedback.
    • Develop tutorial widget and project matching widget.
  • Week 5-6:
    • Continue testing and bug fixing.
    • Prepare final documentation.

August 15-23(Final week):

  • Extra week in case of completing missed worked due to unavoidable reasons.
  • Polish up final documents.

Final deliverable

  • The final goal of this project is to deliver a completely functional hub to regions.
  • In addition to the main objective, tutorials and project matching widgets will be delivered and all those will be incorporated with several rounds of testing and bug fixing.
  • Project documentation lists all the things that I have done in accomplishing the project targets which can be included in my personal blog.

My current approach towards the project

  • I have already subscribed into the Fedora summer-coding mailing list, Fedora developers mailing as well as the relevant IRC channels. I also discussed with mentors about the feasibility of my project and they provided me with influential advices.
  • I have already set up the local machine for development and I must go through the codebase and understand the data flow.
  • I identified an issue in Fedora hubs (ticket #113) and solved it. In Fedora developer portal, identified issue (ticked #32) and solved it.
  • Additionally I watched all meetup videos and went through all mockups to get an idea about needs of contributes and their ideas.
  • I have made up mockup for regional hubs in Fedora hubs (#ticket 47). I have already created prototypes using the said mockup. ( http://www.titansmora.org/Fedora/templates/fedora_regional.html )
  • I have also created prototypes for project matching widget and tutorial widget.

Project matching widget: http://www.titansmora.org/Fedora/templates/search_projects.html
Tutorial widget: http://www.titansmora.org/Fedora/templates/tutorials.html (I used same regional hub page that I created for regional hub since it is very similar to the teams hub)

Any other details you feel we should consider

How to avoid potential risks?

  • Main goal is developing the regional hubs for fedora hubs. I made the proposal with including time to create another two widgets. In case I am not able to complete the entire task, I can push developing extra two widgets off the boundary and focus on developing the regional hubs as I intend to work with Fedora continuously even after the GSOC and extra two widgets can be implemented after the GSOC.
  • I was able to reduce my other work load in order to contribute to Fedora Hubs.
  • I will commit and manage my daily tasks so that any of the work that I will be doing on the project will not be wasted.


Miscellaneous Information

  • I am an enthusiast of open source software development and volunteer programs and love to contribute to FOSS continuously even after GSOC. I am contributing for voluntary organizations in the university such as Rotaract club. (See my LinkedIn profile).
  • I am the team leader of Team Titans which is a renowned hackathon team of University Of Moratuwa and we have won several hackathons in Sri Lanka. Therefore I have good experience in team work and collaborating to team work.
  • Department of Computer Science and Engineering of University of Moratuwa promotes GSOC and open source software development and organize awareness events regarding those topics. Therefore if I get an opportunity to work on this project, I would get a chance to increase awareness about FOSS development and encourage junior colleagues to contribute to FOSS development.