From Fedora Project Wiki

Proposal: Fedora College

An overview of the proposal

ABSTRACT
Fedora College is a project that searches to deploy the use of virtual classrooms in the training of new Fedora contributors, using known educational resources, by relying primarily on video.

DETAILED PROPOSAL DESCRIPTION
A virtual learning environment is a place mediated by technology, this facilitates communication, processing and distribution of information, allowing new possibilities for learning and facilitating the interactions between the various actors involved in the process, relations, teaching and learning.
Usually in a virtual environment with these characteristics, enrolled and registered students, usually receive credentials, which consist of a username and password that allows it to be recognized by the system for exclusive access.
In a virtual learning environment combine several virtual tools in order to support teachers and students in order to optimize the various stages of the process of teaching and learning.
Said this, Fedora College will be a virtual learning environment based on screencasts for the fedora and FOSS contributors. Many of the fedora groups based their task in a model of sponsors and contributors. Sponsor with skills accept new contributors based on their proven contribution. Now, a rookie contributor has investigated between all available documentation, that is wiki, mailing list, manuals, but there isn't a centralized place for this information, and less so visual way.
While taking advantage of the centralized auth system of Fedora, (based on openid) that retrieves the information of the contributor and the groups to which they belong, we have to make a system with the roles of teacher and student, where teacher can publish screencast in video and text.


The need you believe it fulfills

Fedora have many contributors around of the world, many of them with a universitary formation on Information Technology (IT), languages, sysadmins, developers, graphic designers and so on, but like any large ecosystem, the information doesn't tend to be found between many documents and sites. At the end of completion of the project, Fedora will dispose off a centralized place where the users can easily investigate about all their groups.


Any relevant experience you have

1. Experience with the Application development Platform and the MVC (Models, Views, Controllers) Architecture.
2. Experience working with the tools required to work on this Project idea.
3. Experience working with the Fedora Operating System, Version control system (Git).
4. Experience with the Python Programming Language and various Python API's such as Flask API, pytest, python-babel, etc.


How you intend to implement your proposal

The main goal is to develop a virtual learning environment (web application) for Fedora based on screencasts for the new Fedora contributors. The web application will be integrated with the Fedora Account System (FAS) taking advantage of the centralised auth system of Fedora (based on openid) that will retrieve the information of the contributor and the groups to which they belong.
An example http://railscasts.com/ with a chronologic line time, where the students can see the process and belong to any group of their preference.
From the developer’s view of perspective, the project mainly consists of three modules namely Backend Module (Content Management), Frontend Module (User Interface) and a rest API which will provide the accessibility of data on the web platform to the users.

Backend Module : This module will manage the uploads, comments, and access level of the contributors. This module can be viewed as the further division into smaller sub modules for the easy development and understanding of the web application.

1. Content management : It deals with the static delivery of content and handling of user’s requests.

2. Authentication : It uses the centralised auth system of Fedora (based on openid) for authentication and subsequent login to the Application. The user will be mapped to the default user level in the fedora groups according to the user’s access privileges (Admin, content creator, moderator, registered user, anonymous user).

3. Administrator : It deals with the admin privileges with includes content and user management, and maintenance of the web application.

4. Core : It includes the models and views of the core application. This module enlists the various models mapped with the database and will serve as the main media and content management system of the web application.

5. API : It will provide with the data access available on the web platform to the users and will support uploads, delete and revisions of the data along with commonly available API endpoints as mentioned in the REST API module.


Rest API  : It will provide with the data access available on the web platform to the users. It will also support uploads, delete and revisions of the data along with commonly available API endpoints.
Main features of the API includes :
1. Support for Upload, Delete and Upload of revised or updated version of Media content (video, images).
2. Ability to perform video conversion from any open source video format to standard OGV video format. A possible example of GStreamer package from the Fedora can be used.
3. Use of python-babel library for language conversions and localizations.
4. The API will have the below mentioned commonly available access endpoints.

URL -- Description
/api -- General API documentation and usage.
/api/user/ -- Get Information about the user profile page along with the access privileges.
/api/media/ -- Get Information about the media content (videos, images) and publish revisions, edit information and delete media.
/api/content/ -- Get Information about the content and publish revisions, edit information and delete content.
/api/comments/ -- Manage the users comment stream.
/api/search -- An abstraction for easy searching of user’s queries.
/api/tags -- Manage tags.


Frontend Module : This module includes the user interface of the project web application. A rough sketch of the User Interface has been designed which includes the user’s profile page, screencast page and a general content page specifying the related videos and content accessible to the user based on the credentials provided. An example of railscasts.com can be viewed for the implementation of this module. Added to this example, it also includes a profile section where the user can ask questions related to the videos, any content from the organisation mentors and experienced contributors of the Fedora community.


A rough timeline for your progress

Community Bonding Period April 21, 2014 - May 18, 2014
As I'm already familiar with the community, this time will be spent communicating with all the potential mentors of the community and getting feedback on my project proposal, both from the organisation mentors and the community to improve the solution proposed for the development of Fedora College.
Based on the feedback, I will make the changes and organise the tasks in the more appropriate way. At the end of this period, I will have a good idea about the work and the knowledge (more in depth) about the project.

Program Start
Week 1 : May 19, 2014 - May 25, 2014
Discussion about the Fedora College database models and implementation of the database models.

Week 2 : May 26, 2014 - June 1, 2014
Develop a authorization module for Fedora College.

Week 3 : June 2, 2014 - June 8, 2014
API Development for the Database abstraction queries and to Manage Video (Upload, delete and revisions).

Week 4 : June 9, 2014 - June 15, 2014
API Development for the functionality to Manage Images (Upload, delete and revisions).

Week 5 : June 16, 2014 - June 22, 2014
API Development for the User Profile functionality.

Midterm Evaluation
Week 6 : June 23, 2014 - June 29, 2014
API Development to Manage comments.

Week 7 : June 30, 2014 - July 6, 2014
Work on the Backend module and the Administration interface.

Week 8 : July 7, 2014 - July 13, 2014
Complete the work for the Backend module and Perform testing.

Week 9 : July 14, 2014 - July 20, 2014
Work on the Frontend module.

Week 10 : July 21, 2014 - July 27, 2014
Work on the Frontend module.

Week 11 : July 28, 2014 - August 3, 2014
Work on the Frontend module.

Week 12 : August 4, 2014 - August 10, 2014
Final work on the Frontend Module and Documentation about the work done for the community and Fedora users about the functionality and working of the Fedora college.

Final Evaluation
Week 13 : August 11, 2014 - August 18, 2014
Final week to scrub the Frontend and Backend code, write tests, perform and improve documentation.


Have you communicated with a potential mentor? If so, who?

Yes, I have communicated with the Project mentor Eduardo Echeverria.