From Fedora Project Wiki

Contact Information

  • Name: Vidhun K.
  • FAS Account: Xvidun
  • Fedora userpage: Vidhun
  • Email Address: xvidun@gmail.com
  • Blog: Windyplatform
  • Freenode IRC Nick: xvidun

Why work with Fedora

I had only known Fedora as an Operating System before, only recently when I started talking and getting involved with various members of the community to get to understand the culture and the diverse works that fedora does.

I've talked with some of the members of the Fedora community who were very helping and welcoming. Joining the mailing lists had showed me the extent and the energy with which the fedora development team is contributing with, this made me want to do the same.

All this in whole makes me get into long term involvement with an organisation that has a great community with diverse knowledge and exciting culture.

Past involvement with Fedora/Open Source

This is my first involvement with Fedora, although I have been sometime contributing to open source wherever I can. For the past months I have been learning and working with ruby and rails, so most of my works reflect these.

  1. Integrated the dogecoin support for the bitcoin ruby gem.
  2. Worked on a simple kick-start application using devise for authentication with Openid for google, facebook and twitter.
  3. Added a bitcoin payment and donation functionality for the privly-web stack. Used the blockchain bitcoin-receive api for this.

Past participation in GSoC

This is my first time.

Contribution to Fedora post GSoC

I will enhance the system, fix bugs in the long term for anything I develop this summer so that I can continually ensure it's propoer functioning.

I have be keeping myself updated with the fedora development activities by joining some of the mailing lists that had interested me(fodora-devel, websites) which should help me get started with the various areas I can contribute to after this summer and put the skills I have and contribute.

Why choose me

It's been years since I've switched focus to FOSS products(Ubuntu and recently fedora) which has helped me in many ways to observe, learn and grow. Open communities has also taught me to collaborate and communicate well, one of the major skill in open source. I am passionate, enjoy and use open software on a regular basis giving back my little contributions where I can.

I had communicated with mentor bckurera and have joind mailing list of the freemedia group which has helped me rectify the errors and make enhancements to my approach.

I have been learning rails and its ecosystem for almost 4 months. This experience will help me easily migrate to cakePHP with PHP. I had also worked with PHP easlier using CodeIgniter.

I try to be as self-sufficient as possible using google and mailing lists effectively. To make sure of this I will use the pre-coding period to learn and improve upon the areas I lack in. I will also make updates and progress on my work in my blog for the mentor to keep track of where the project is heading. As said I'm looking to become a long term contributor to fedora. This summer will provide me with the required resources and connections to get on with my open source journey with fedora.

I have no other commitments this summer and can give upto 40 hours or more if required a week. Even if I have to take break mentor will be informed and the work will be completed in coming weeks.

Project Proposal

An overview

Overview: Fedora free media as quoted from the Freemedia wiki -

“The Fedora Free Media Program is a volunteer initiative by local Fedora Ambassadors and contributors to distribute Fedora Media (DVDs) for free to individuals who can’t afford to buy or download Fedora. There is no funding from Fedora for this initiative. The media comes from volunteers from around the globe that coordinate their efforts using Fedora Infrastructure. The number of discs is limited to the resources of those volunteers. We are constantly looking for more Fedora Ambassadors or contributors to participate.” Currently the system that Fedora uses for FreeMedia is manual, we need to automate this process which is what this project is all about making it easier for both volunteers and users involved in the process."


Process Steps:

  • User creates a TICKET, which is the request message containing the item(Fedora 20) and the format(fedora i386 etc).
  • The ticket is a form for which the user has to fill in details. TICKET contains information on user name, address.
  • The volunteers has the list of available user tickets(requests) via email.region and item.
  • Volunteer’s process request depending on the specified reqion of request of user. Before the item will be sent, the volunteer can ask some Item specific request (why do you need this?).
  • Volunteer reviews the user reply and depending on this ships the requested item, closing the corresponding ticket.

Freemedia process steps.jpg

The need I believe the project fulfills

Some of the possible difficulties using the manual process.

The process requires manual sorting and closing of tickets. Sorting has to be done manually according to the users region. No way for user to track requests. Possible duplication, sending same item by two volunteers to same user. Slow and troublesome process. Rectifying incorrect request(wrong address) is troublesome. The process is not real-time for both volunteers and users. Adding a new item is cumbersome as we have to update the form page manually. No way a volunteer to get recongnized for his contributions possibly a page to list contributions. There are specific constraints, it is not easy to check these constraints in a manual process. This project aims to solve all of the above faced difficulties.

Relevant experience

  • My experience working, developing and contributing to the ruby and rails have made me understand all the concepts and patterns involved in the web development.
  • This project will use PHP with the CakePHP framework for the implementation, with my experince using rails it will not be difficult migrating to CakePHP(to be self sufficient I will use the pre-coding period effectively for this). I also have experience working with the CodeIgniter framework of PHP and had used authentication systems like tank auth with codeigniter.
  • I have experience using git and can its workflow. I understand open source development patters like versioning, bug tracking, pull requests, mailing lists.
  • I have switched my work environment completely to linux, therefore I can use the system as extensively with productivity.

Proposal Implementation

The development will be done in such a way that the core functionalities of the system will be worked out as soon as possible, this way a basic functioning working system will be out. After the core functionalities have been worked out the other feature that will be useful for the system will be integrated. All works will be clearly documented. Relevant work progress will be recorded in my blog(once a week) to enable the mentor keep track of my progress. I will also be pushing my commits once a week on a remote server specified, sometimes even earlier when I feel major works have been completed.

Actors

  • FreeMedia:
    • An item that a volunteer can ship to a user based on request.
    • A user can submit and accept a FreeMedia as a service.
    • A Freemedia successful request is marked unconfirmed if a volunteer marks as sent. It will be marked as confirmed once the user marks the successful request).
    • An admin/taskforce defines the list of FreeMedia.
    • Eg: cd/dvd, posters, stickers etc.
  • User:
    • A user is an actor requesting the FreeMedia.
    • View if the requested item is accepted and sent.
    • A user can additionaly perform several other activities like acknowledge the received media.
    • Have to specify the reason for the request, (how are you going to make use of this? [optional].
    • Make a donation or just say thanks.
    • A user can also reversibly act as a volunteer without implicitly being one.
    • Request admin for a new scope, probably even specifying the reason for it.
  • Volunteer:
    • A volunteer can sends out FreeMedia to volunteers.
    • Has a list of all the requests in sorted fashion(sorted with closeness using the address of volunteer and user).
    • A volunteer can assign himself to multiple FreeMedia for which he can respond to and ship upon request.
    • A volunteer can respond to a request by self assigning it and marking it as sent when shipped.
    • Ability to view users reason for request, just so that the receiver can decide who he needs to send to.
    • A volunteer can also request for any FreeMedia.
    • Can specify max number of FreeMedia that a user can recieve.
    • Have a personal page listing data on the services and donation address(bitcoin, paypal).
  • Admin or task force:
    • A person who manages the system.
    • Has the ability to add or remove the FreeMedia.
    • Specifies the regions or countries banned from shipment.
    • Managing the list with ability to remove users.
  • Stranger / non-user:
    • Have no account on site, therefore cannot make request or volunteer.
    • Can view different statistics like number of requests, request processed, top volunteers etc.
    • Can make donations to volunteers.

Core features

  • Freemedia Infrastructure:
    • Basic automated implementation for the Freemedia process steps support for request and response cycle.
    • Tracking the number of requests made and processed.
  • Authentication system:
    • Authentication to enable with relevant details and identification of different kinds of users.
    • Support for authentication using OpenID so that FAS login can be integrated into it.
    • Possibly use the cake php open-id plugin for this.
  • Validation of constraints:
    • User cannot request more than one item of the same type.
    • User will not receive FreeMedia if their region is listed in the Export Matrix List.
    • User cannot receive request if there is no volunteer in region.

Extra features

Top priority first

  1. Sorting and listing user tickets based on distance to interested volunteer using the google distance matrix api.
  2. Feature to add a message to volunteer upon request.
  3. “Page of fame” feature listing the top volunteers and the links to the volunteer page.
  4. A volunteer page to provide the list of all contributions(confirmed and unconfirmed).
  5. Shipment tracking functionality for users(found some api to handle this, needs more research).
  6. Donation feature for volunteers(bitcoin, paypal). Bitcoin receive api and paypal merchant libraries can be used to track the donators.
  7. A “mailing list” like feature(probably integrate into freemedia mailing list) to send user queries and get information on other details.

Technical details

  • I will be using PHP with CakePHP framework for development.
  • Twitter bootstrap will be used for styling.
  • AuthComponent on CakePHP will be used to handle authentications and OpenID will be integrated into this.
  • Testing will be done using the PHPUnit component available in CakePHP. Additional components for BDD will be used if necessary.

Timeline

Development Pattern

  • Analyze the problem identifying the general relationships, class diagrams and UI design. Implement a formal approach to solve the required problems stated.(~ 3 days).
  • Develop the stated problem working on the views and controllers integrating the required models.(~ 8 days)
  • Work on polishing the interface and documentation(~ 3 days).
  • Write basic seed/test data for future use, write unitTests and review code.(~ 2 days)
  • Record progress on blog, communicate with mentor. Fix relevant issues encountered during development. (~ 3 days)

Precoding Period (upto may 19)

  • Continue with getting familiar with CakePHP, PHPunit testing while noting the required resources for learning and future reference.
  • Research and investigate on the required open source libraries and API’s that can be used.
  • Communicate more with the community to identify other major points of improvements. Get in touch with volunteers from the FreeMedia volunteering team by using the mailing list effectively.
  • Start initial works in implementing the core features while recording progress for the same in the blog.May 19 - June 5: **
  • Resume working on the core feature implementation.
  • Implement feature to handle authentications.
  • Organize users into the basic categories recording the same. Get the relevant details from the user upon registration.
  • Integrate Open-id into the system to handle FAS.
  • Polish the interface

June 6 - June 30

basic core functionality without validation

  • Make an administrator interface with a basic functionality to add FreeMedia.
  • Implement the core infrastructure with the basic request - response cycle for a FreeMedia.
  • User interface to submit tickets and validate the same.
  • Tracking the user requests by listing accepted/sent.
  • Interface for volunteer to accept requests and respond as “sent”.

July 1 - July 15

  • Write the implementation for styling user, volunteer profile listing the relevant details in the same.
  • Start works on validations of the required constraints.
  • Add more feature to the Admin panel(CRUD user, volunteer, freemedia, update Export matrix list etc.)

July 15 - July 20

  • Perform intensive test and code review for the core components as this will become the backbone for future developments.
  • Work on system-wide styling of the interface using bootstrap.

July 21 - August 11

  • Work on implementing the additional features(1, 2, 3, 4) and others if time permits.
  • Test code, document and style the interface for the same.

Upto August 21

  • Test the overall code, fix bugs, document the areas that are necessary while getting ready for the final evaluations.

Any other details you feel we should consider

  • I will request to stay in the college(hostel) throughout the development period. This way I can give my full effort without interruptions and I would also have the required resources to be productive.
  • Features mentioned in this proposal will not be final, some features may be added or removed depending on further feedback and requests from the FreeMedia community.

Potential Mentor

I have communicated with mentor bckurera.