From Fedora Project Wiki

Contact Information

Application

Why do you want to work with the Fedora Project?

Fedora is one of the few successful linux distributions, I believe in Open Source philosophy and would like to support and contribute, I believe that Linux should be used by everyone, Fedora is not just a project it's a great community which is the most important in my opinion, I believe that the community is the core of any successful open source project. I am willing to gain some real life experience and meet new people and make friends from the fedora community, I am new to the community but I love new experiences. Getting involved in such a successful open source project is a life milestone to begin my professional life beside the satisfaction i'll get while contributing back to the community who helped you at the beginning.

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

I don't have any past involvement in Fedora, But I contributed to Ubuntu by reporting bugs, suggesting translations, contributed as part of the LoCo team Ubuntu Egypt by creating some needed artworks, building the team website, gave some web development sessions and co-organised public events and team activities.

Did you participate with the past GSoC programs, if so which years, which organizations?

No I didn't, It's my first year to apply.

Will you continue contributing/ supporting the Fedora project after the GSoC 2013 program, if yes, which team(s), you are interested with?

Yes, I am interested to contribute in the Marketing Team or Website Team, I would be also interested to maintain the project idea I am applying for.

Why should we choose you over other applicants?

  • I am eager to learn new web technologies.
  • I am willing to invest my next vacation learning and building a new application which will help others (The main motivation for me is to help others).
  • I will keep contributing to Fedora after the end of the Program.
  • Increasing my experience in Web Apps development is my career objective.
  • I have experience in Web Design and User Experience, I follow up with all recent web technologies and try to use some of them in my projects.
  • I have a good financial background, as I am a Business Information Systems student.
  • I have been using linux since June 2006, and I believe in this operating systems and I will keep recommending it to all my friends.
  • Experienced in building MVC web apps.

Proposal Description

Proposal Overview

The project idea "Fedora Financial System" can be used with in the project to track and analyse the financial activities for FAms (Fedora Ambassadors), Managing Fund Requests, Receipts, Budget Proposals and generating financial reports. In this system we will try to implement the current financial process for fedora ambassador described below in respect to standardisation between regions that will give Fedora Ambassadors Steering Committee (FAmSCo) a cross region reports generation.

Current Financial Process

To ask FAmSCo for budget is necessary to complete the following steps:

  • Have organized/structured the event or the events that are you going to do.
  • Estimate costs supported by receipts or buy orders.
  • Update your user page on the Fedora wiki to make sure you are working for the project.
  • Have a PayPal account (other options are available) to receive the money.
  • Log in with your FAS Account on FAmSCo Trac.
  • Create a new ticket.
  • In the body of the ticket, explain in details the reason of the budget request. This must include to which events the budget will supply and what impact these events would have to Fedora project. Also, detail where the budget is going to be spent and attach all receipts and buy orders.
  • Assign your region, the component "Budget" and the required amount.
  • Create the ticket and wait for some member of the FAmSCo team to value it.

If you were approved, you will receive the money depending on the decision you and main contact of the credit card decided. Else, you must rewrite your ticket to see if they reconsider sending that money. Source

Then the current Reimbursements Process.

From the above process, a lot of steps and tools where used and here comes our role to create a standardised and all in place process for FAms to request funds, report budgets and for Budget Owners and FAMSCO (any other administrator) to be able to monitor, approve and generate reports.

The need I believe the project fulfils

  • Track Cash Inflows and Outflows.
  • Allocate Budget for each region.
  • Generate reports and managerial level data which will help Budget Owners to allocate the right budget for next year.
  • Help Fedora Ambassadors to easily request funds without following a long process, also give them the option to track approval inside the same system.
  • Save evidence (receipt) in one place for easier reference.
  • Replaces many Trac installations for every region with a centralised system for cross region reports generation. (Old Process).

Relevant Experience

I am a Business Information Systems Student, I have a good background in business specially accounting and finance from college. Firstly started with web design then web development since 2007, created many small websites that were static at the beginning, then build many dynamic websites using some CMSs (Joomla, Wordpress and Drupal). I am maintaining some examples in my resume hosted here.

I have a good programming knowledge specially PHP since 2008, I love to follow the best practices for each language I use, I adore keeping myself updated with the latest technologies and features.

I am currently creating my graduation project with laravel 4, unfortunately I don't have it in a public repo right now.

This is my first financial or accounting system, but not my first web app, I believe that I have the set of required skills that will help me to implement my proposal.

How I plan to implement the proposal

Below is a brief information about the system implementation and core features from the requirements, For the detailed information check this Wiki Page. I am planing to learn more about how we could improve the implementation to be more solid and reshaping the requirements with my mentor before the Code Start period, Check the timeline for more detailed information. As "This is a live system so we will not be clear 100% about the requirement" quoted from Buddhike Kurera

Definitions

  • Regions - Fedora Ambassadors are divided into regions (APAC, EMEA, NA & LATAM).
  • FAm - Fedora Ambassadors are the representatives of Fedora. Ambassadors ensure the public understand Fedora's principles and the work that Fedora is doing.
  • Budget Owners - Every region have a Budget Owners who determine budget limit and approve fund requests.
  • Double Entry Accounting System - In a ‘double entry’ system each value is stored twice, once as a credit, once as a debit.

System Core Features

The system will have five core backends (Access Control, Double Entry Accounting System, Fund Requests, Budgetting & Reports Generation) which is the core for all the needed front-end features, most of the described core modules below will have their own data models and controllers to conveniently interact with from the front-end.

  • Access Control: (To authenticate users, allow them to do certain actions according to their roles and assigned permissions.)
    • Fedora Account System Integration (FAS)
    • Roles
    • Permissions
  • Double Entry Accounting System: (Module to record journal entries associated with accounts which reflects the paper double entry accounting system in a relational database).
    • Transaction Types
      • Deposit
      • Withdrawals/Payments
    • Accounts
    • Journal Entries
    • Postings

Less Priority, Packing the Double Entry Accounting System classes into a Composer package and share on packagist for other PHP/Laravel developers usage.

  • Fund Requests: (Module to handle Fund Requests by FAm and handle approval by Budget Owners, receipts attachments. Was handled by trac tickets in the old system).
    • Each fund request will have a status field (0 -> requested, 1 -> approved, 2 -> claimed, 3 -> reimbursed, disapproved).
    • Fund Requests creation by FAm (Status = Requested)
    • Fund Requests approval by Budget Owners. (Status = approved or disapproved).
    • Receipts or Evidence attachment by FAm. (Status = claimed)
    • Budget Owner will reimburse the evidence. (Status = reimbursed).
    • Receipts amount will be issued as a Journal Entry then updating the region account balance.

Note: I am trying to follow the current reimbursement process, The challenge is that the process is not standardised for all regions, But as my mentor mentioned that they will apply a new process or model. So the above could change according to the new standardised process.

  • Budgetting: (Module to let FAm submit next year budget requirements and facilitate queries by Administrators.)
    • Budget Proposals
    • Budget Filtering (Type, Amount, Region)
  • Reports Generation: (Pre-set reports to facilitate data extraction for system administrators and budget owners for high level managerial data or decision making and a JSON API for custom reports generation.)
    • RESTFul JSON API for Reports Generator
    • Pre-set reports implementing the above JSON API. Less Priority (Backbone.js or Ember.js for report generations without page refresh).

System UI, Front End

Tools

Rough Timeline

1: Requirements Finalisation

2: Mocks, UI Wireframes & Final Layout

3: Database Models & Relations

4: Double Entry Accounting Classes

5: Controllers Logic & Fund Requests

6: Views Setup

7: Budget Proposals

7: Reports Generation

8: Twitter Bootstrap Themeing & UI Enhancements

9: Test & Fix Round 1

10: Test & Fix Round 2

Other Information