From Fedora Project Wiki

GSOC 2016 Project Proposal : 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, Meetbot and Fedcal. 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,This is the first time that I'm working with an open source organization.

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

I participated in the awareness session for GSoC 2016 organized by the ACM chapter of university of Moratuwa 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 GSOC participant for two times and an active open source contributor.

Proposal Description

Overview and The Need

Daily, in Fedora there are many meetings taking place within groups. As mentioned in the idealist, Fedora hub is the new web presence for all of the Fedora users, subprojects, and communities Therefore it is essential to have widgets in Fedora hubs to manage those meetings efficiently and productively without any overheads such as delaying assigned task in meetings. Some of these features have already been integrated with Fedora Hubs, but a greater fraction is still left out. The implemented features too are only completed with regard to the backend implementation and not the front end with good UI designs (Meeting widget).

In Fedora Hubs issue Queue, There are numerous issues regarding the meetings yet to be implemented (#24,#25,#26,#28,#29,#30,#31,#33 and more). Functionalities such as Meeting Nag Widget, One-Off Meeting Organization Widget, Meetbot action items and UI mockups are well defined and have to be implemented according to Duffy. Most of backend part can be achieved by integrating Fedocal and Meetbot with these widgets.

According to the guidelines of my mentor, if I could achieve implementing Meeting widgets before the end of the given period of time, I can work on other unimplemented widgets such as Fedora Welcome Hubs widgets( which are yet to be made into mockups).

Some drawbacks in the currently implemented Meeting functionalities

  • No other functionalities have been implemented yet in both frontend and backend.
  • Poor user interfaces in implemented meeting widget.
  • Lack of mobile responsiveness (See the attachments)

What the project fulfills

  • Above mentioned problems will be solved.
  • Proposed widgets regarding meetings will be implemented both in backend and frontend.

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, Fedcal and Metbot.
  • I have already worked out UI designs using Fedora-hubs resources related to Meeting widgets. (#22, #26, #28, #29, #30, #31, #33). See attachments and hosted solutions.
  • 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 am a 3rd year undergraduate from the Department of Computer Science and Engineering, University of Moratuwa and with a "deanlist" Grade Point Average(GPA) (3.96 out of 4.2)
  • 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 GSOC participant for two times 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 mentors' feedback.
  • 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.

Step 2:

  • Polish up already implemented meeting widgets and finish the implementation of backend by adding proposed functionalities to it. (Integrating it with fedcal and meetbot.)
  • Test and prepare final documentation for those widgets.

Step 3:

  • Merge other proposed new meeting widgets and functionalities at the front end.
  • Implement backend of the new widgets.
  • Perform final testing and final documenting.

A rough timeline for your progress

Before April 22 (Announce accepted proposals):

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

April 22-May 23(Community bonding period):

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


May 23 - June 20(Working period):

  • Week 1-2:
    • Polish up already implemented meeting widgets and finish the implementation of backend by adding proposed functionalities to it.
  • Week 3:
    • Test and prepare final documentation for those widgets.

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

  • Complete and submit mid-term evaluations.

June 27 - August 15(Working period):

  • Week 1:
    • Modify prototype of widgets according to feedback. hub.
  • Week 2-5:
    • Merge prototypes with the system.
    • Implement the backend as required.
  • Week 6:
    • Perform testing and bug fixing
    • Prepare final documents.

August 15-23(Final week):

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

Note: According to my mentor’s advice, if I could finish the proposed workload in time, I would be able to and I am intended to support to develop welcome hub which is still in at very imitative state.

Final deliverable

  • The final goal of this project is to deliver a completely functional and fully tested meeting widgets in order to strengthen communication in fedora hubs.
  • 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 to 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 advice. Especially mizmo gave us lots of advice towards making this proposal.
  • 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. Other than that I have worked out working UIs for (#22, #26, #28, #29, #30, #31, #33) which are related to Fedora Meetings and currently merging them with the system. See attachments and hosted solutions.
  • Additionally I watched meetup videos and went through all mockups to expand my knowledge about needs of contributes and their ideas.

Following images are taken from developed prototype

  • Personal Notification in feed for action items and minutes

[1]

  • Edit Meeting Request modal

[2]

  • Event Reminder widget with modifications

[3]

  • Create New Meeting modal

[4]

  • Meting announcements and meeting request notifications in feed

[5]

  • Add meeting reminder and Add meeting data widget

[6]

I have also uploaded the UI source codes for these widgets in github. [7]

Any other details you feel we should consider

How to avoid potential risks?

  • My main goal is to develop the meeting widgets for fedora hubs. In case I sense that I might not be able to complete the scheduled work within the time limit, I will double the time that I am going to allocate on the project in the next steps and complete the missed work as soon as possible.
  • I also allocated an extra week at the end of the timeline in order to finish incomplete work.
  • I was able to reduce my other work load in order to contribute to FOSS development.
  • I used fedora hubs CSS and javascript resources when creating prototypes. So there is no risk of merging them with the system and currently merged some of them with the system.


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 teamwork and collaborating to teamwork.
  • 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.