GSOC 2014/Student Application niqmat/FreeMedia
Infrastructure for FreeMedia group
The project is about creating one, complete system for the Fedora Free Media Program. Now requests for a media are done through a simple (and not beautiful) form and after that the Trac is used to track them. This gives some limitations, as this software is not primarily designed for that purpose. The solution will be to make easy to use PHP application, which will gather everything from submiting a request, through assigning a volunteer, up to tracking status of the shipment.
Why I think it's needed?
People are working for open source projects in their free time. We want to give them the ability to save some time. We'd also like to simplify the process for the user: one site with clean design would be much easier to understand. I think it's a great idea to give people, who can't afford getting Fedora for some reason, the ability to receive it from one of volunteers.
My relevant experience
I have a great work experience with huge PHP projects. I was working for two web companies, where I was writing software for millions of people using object oriented programming. I was creating software using big frameworks (company-proprietary, Yii and Symfony).
I have experience in working with databases (MySQL, PostgreSQL, redis). I completed intensive databases course at the university and created many applications with non-trivial schemas.
I've also written many web applications from scratch and I know how to design them.
What do we need?
Request form It will allow user to request a media. The account will be created for the user, based on his email account. Form will have similar inputs to the current one.
Volunteer form New volunteers will have to register through a special form. After registration, administrator will have to approve that account.
Application for the user People, who requested the media, will be able to login on applications' page. They will see there status of the ticket (for example: volunteer assigned, ready to be sent, in shipment, delivered, rejected) and a conversation boxes to communicate with the volunteer (if assigned). We also need an option to change delivery address, if the package hasn't been sent yet.
Application for the volunteer Volunteer can see the list of tickets from his region. He can pick up a new ticket. There will be also a list of tickets assigned to volunteer (active and closed). He can of course change the status of the ticket (option for changing the delivery address will be blocked after giving the ticket status 'ready to be sent'). Volunteer can also see the history for the user based on his email and address (with warning if suspicious), so multiple requests can be easily rejected.
Application for the administrator Administrator will have (additionaly, over volunteer privileges) the ability to add new regions, volunteers (accepting volunteer status after his registration) and countries.
Statistics We want to show that Free Media program is really important, so it would be great to publish some statistics regarding number of requests, volunteers, etc.
Email notifications Very important for the application is to have nice working notifications. From a user level we need to know about changes of the requests status and new messages from volunteer. Volunteer, additionally will have the option to receive notifications about new tickets in his region. For each account there will be an option to choose between instant or bulk (for example: weekly or daily) notifications.
How do I want to code it?
I'd like to use some popular PHP framework (Symfony with Doctrine or Yii are the strongest candidates, however it's not a problem to learn something new). I'd like to use PostgreSQL as the DBMS. Probably some migration from the current system (form + Trac) will be possible (I can write PHP or Python scripts for it). I want to use Twitter bootstrap for the layout. I'll use PHPDoc for documentation and write scripts for easy deployment (probably with continuous integration and some unit tests).
- week 1-2: preparing layout, designing database schema, migrating data,
- week 3-4: forms for users and volunteers, ticket creation and listing,
- week 5-6: enhancing deployment process, notifications system,
- week 7-8: complete panel for users, volunteers and admins,
- week 9-10: statistics, UI improvements,
- week 11-12: fancy options, final testing and deployment.
Contact with mentor
I've contacted Buddhike Kurera. He agreed to speak about the details only after proposal submission.