Educational Blogger Project: Difference between revisions

From OLPC
Jump to navigation Jump to search
No edit summary
 
(166 intermediate revisions by 11 users not shown)
Line 1: Line 1:
{{translation|lang=en|source=Educational Blogger Project|version=}}
<h1>Abstract</h1>
I will develop an educational blogging system that teachers and students can use to create and share content and runs efficiently on the XO laptop in low bandwidth environments. Current blogging systems tend to consume too much bandwidth, a precious commodity in some third world countries as stated by some users in Uruguay. Great success has been achieved from using blogging systems with the XO, but involved significant technical help and administration. This system would significantly facilitate the use of this technology on the XO environment, making it available for more widespread use.


== Abstract ==
<h1>Overview</h1>
Blogs are an excellent educational tool as demonstrated by the use of Google Blogger in [http://olpc-ceibal.blogspot.com/2007/09/get-photos.html Villa Cardal, Uruguay]. The kids had some issues and requested changes to make the system easier to use. Setting up the system on the XO was difficult due to Blogger's many features and bandwidth intensive resources. Technicians needed to assist in actually posting the blog entries to the internet. Very few (if any) current blogging systems are easy enough for use by young children in the low bandwidth environment they have in third world countries. The Educational Blogger Project will address these problems. Essentially, it stores posts locally using Moodle (or similar service) and allows for kids to collaborate, gives teachers the control they need and optimizes the process for the XO environment. It also allows teachers to release posts to Google Blogger, WordPress or other blogging system. The Educational Blogger Project significantly facilitates the use of blogs on the XO environment and makes it available for more widespread use. The ultimate goal is to create an system that can be set up easily on any XS and used by kids around the world.
The project has already been divided into four steps on the requirements page (http://wiki.laptop.org/go/Requiremientos_Para_XO). At a high level, the requirements stipulate modifications to the WordPress system to make it support different levels of user permissions, synchronize blog data across servers to make data transfers as local as possible, more bandwidth conservative, and easy for a child to use and teacher to administer. I would like to create the four essential core functions of the XO educational blogging system and integrate them into a basic working application ready for deployment.


==Benefits of Educational Blogging System==
1) WordPress customization for granting different access levels
<ul>
As per requirements, I would like to create four access levels: public (internet), registered (school/class), selected (small group), publisher only. WordPress currently does not provide an effective mechanism for such a scheme. This modification would allow teachers to do things like keep posts private for their class, publish selected posts and create group projects.
<li>Allows teachers to use blogging as an effective educational tool by adding teamwork capabilities, creating a collaborative environment for students and simplifying the process</li>
I propose implementing this feature by creating independent tables to store the permissions associated with each post and creating a class or set of functions (depending on target PHP version) to interface with this table. This would allow the feature to be fairly separate from the core of WordPress so updates and bug fixes to WordPress can be more easily integrated into the XO version of the system.
<li>Optimized for the XO and bandwidth, so users will have a great experience</li>
<li>Gives OLPC a source of feedback and a way to see what is important to kids</li>
<li>Makes kids happy! Kids requested blogging!</li>
</ul>


==Problems with Current Blogging Systems==
2) Daemons system for exchanging information within "Partner Servers"
*The need for good connectivity
This consists of writing daemons for a set of servers to all share blog information. Essentially, public posts will be replicated across the servers so that internet bandwidth can be conserved (local caching). Other partner servers can store specific posts to make the information more readily available to the world. All of this is controlled by a web application.
*Children getting confused with some options
I would like to develop a set of PHP cron scripts to synchronize public posts between servers. Instead of sending the entirety of post information to each server, I think it would be sufficient to synchronize meta information for each post. Upon access of the post, the partner server would obtain the data from the originating server and cache it until new meta data appears for that post. This would conserve server-server bandwidth as well as client-server bandwidth.
*The number of steps involved in creating a post
*Difficulty in collaborating on a post
*Difficulty with monitoring and viewing posts before being published


==Details (Revised See [[EduBlog Implementation|EduBlog Implementation]])==
3) WordPress customization for optimizing XO and children access
<p>
WordPress currently contains many complicated features that can make the system appear intimidating for XO users. Simplifying the interface would make this system much more inviting to use.
The design of this project addresses the concerns in the [[Blogs Knight Challenge|requirements specifications]] (Please note there will be mismatch since many areas were changed during discussion with my mentor, but not updated on the requirements page).
First, I would like to remove/hide complex WordPress features, unnecessary high bandwidth elements and XO incompatible elements. Also, I propose to simplify the theme interface and alter the editor interface. I think it would be sufficient for users to be able to select from a set of XO approved themes (that optimize bandwidth) and provide a few simple configuration options for style. I also want to modify the icon GUI in the editor with a more descriptive menu interface that would guide the child through formatting step by step.
</p>
===Use Case / Workflow===
<center>
[[Image:Tarun2000_workflow.png]]
[[Media:tarun2000_edb_workflow.odg|Original]]
</center>


;<b>1) Kid Creates Post</b>
4) Web application for creating and managing users and blogs
:Children can use the Write Activity (AbiWord based) to create a post. A slight modification/plug-in to the Write activity would display a "post to blog" option for the child. When clicked, the post (taking advantage of Write's XHTML generation) and meta information (class its for, group, etc.) will be sent to the Educational Blogger Web Application on the XS. The XS will store the post locally using Moodle, WordPress or other similar web application (modified to incorporate needed user permissions, bandwidth optimized).
School administrators need to be able to create/delete users, blogs and posts. A simple web based administration screen would allow them to do so as well as edit the settings of the system on the local school server.
;<b>2) Kids Collaborate</b>
I would like to write a simple PHP script that allows administrators to change settings and manage users and blogs using browser based forms and controls.
:Children in the same group can collaborate on a post. To edit a post, a child can click on an edit link (which will appear if they have permission to edit that post) in the browser. The link will open Write and load the file for editing (file extension association). Uploading the edited post will be similar to creating a post, except that the user will not be prompted for extra information when saving.
;<b>3) Teacher Controls Post</b>
:At all times, the teacher can view posts of all students in the class and edit/delete them. The teacher can also create users/groups, give students editing rights and perform other everyday administration tasks. The teacher also sets access rights for the post (internet, local, class only, group only).
;<b>4) Post Released</b>
:The teacher also has the power to release the post (publish Generic WordPress server or other blogging site). This would essentially transfer all the post data using XML-RPC. The post will also be available for replication on partner servers.
;<b>5) Post Exchange</b>
:A daemons system will replicate posts across partner servers. For example, a regional server could store all the posts in the region. Post Exchange serves to optimize a country's bandwidth as well as a school's bandwidth.
<br />
<b>[[EduBlog_Instructions|More detailed use cases]] with screenshots have been posted for the first beta test.</b>


===Major Components (Design Modified see [[EduBlog Implementation|EduBlog Implementation]])===
<h1>Benefits of Educational Blogging System</h1>
<center>
-Adds teamwork capabilities to blogs through permissions creating a collaborative environment for students allowing teachers to use blogging as an effective educational tool
[[Image:Tarun2000_stack.png]]
-Much easier to set up and administer than current blogging systems
[[Media:tarun2000_edb_stack.odg|Original]]
-Overcomes limitations of bandwidth hungry blogging systems allowing for a good user experience on the XO
</center>


<h1>Success Criteria</h1>
;<b>EduBlog Client</b>
:This is a modification/plug-in to the Write Activity and serves as the interface between Write and the EduBlog server. This consists of a slight GUI modification to Write so that a "Publish" option is shown in the menu. Clicking on that option will bring up a GUI allowing the child to select what class the post is for. Finally, the child can click "Submit" and send the data to the EduBlog Server using HTTP. All accessory files, such as images, will be sent to the server as well. XHTML generation is done by the Write Activity (already supported). Also, clicking on edit in the Browse Activity will open up Write and preload the page for editing and allow for easy updating through the EduBlog Client. The client is also partly responsible for authentication; initial implementation will store a password in the XO and submit that securely (md5) to the server with the post.
The four stages of development described above can serve as the deliverables for this project. The system will have to work on the XO environment (both client and server) and be practical for use with low bandwidth.
;<b>EduBlog WebClient</b>
:This is a browser based editor that can serve the same functionality as EduBlog Client. This can be a stripped down version of the WordPress client interface.
;<b>EduBlog Server</b>
:The EduBlog Server handles most of the communication between subsystems. When a post is or edited, the EduBlog server will alter Moodle (with blog plug-in) tables appropriately (either directly or through the Moodle API). It will also deal with concurrent editing issues by locking the post or merging changes. The EduBlog server also augments the Moodle database to support the specific user types needed and handles a post's view and edit permissions. It also allows teachers to make certain posts public by publishing them to blog sites on the internet. This will be done with plug-ins that allow it to interface with various blog systems such as Google Blogger and WordPress using XML-RPC (supported by both Blogger and WordPress as well as popular blog exchange API's such as GData, MetaWeblog and MovableType). In addition, EduBlog Servers running on different XS's will replicate posts as necessary through daemon processes to optimize local and national bandwidth.
;<b>EduBlog Admin</b>
:This is a web interface to administer the EduBlog Server (through PHP and XHTML forms). Teachers can use this interface to view and control the posts made by kids in their class, create/delete users, edit posts made by their class, create groups that can collaborate on a post and release posts to the internet. Admins can use this interface to configure the system such as settings for releasing to blog sites on the internet and what data is to be exchanged with partner servers.

== Mock Ups ==
<center>
<b>Student Page</b><br;>
[[Image:tarun2000_edublog_screen1.png]]
<br />
After clicking post, the new post goes right to Blogger.com
<br />
[[Image:tarun2000_edublog_screen2.png]]
</center>
<h3>Beta Server Hardware and Software Details</h3>

Tarun has a basic FTP host with Apache and PHP which we can use for
mocking up the GUI. and doing some developing. Greg really wants to have a
full blown School Server just like they have in schools in Uruguay.

We need
# A box and someone to image it with XS code (Tony)
# A primary sys admin and support for them (Marcel)
# An IP address, BW and a hosting location (Glen)

Must haves:
* Ethernet configured for connection to Internet
** Accessible from XO laptops in Uruguay via HTTP
** Remote administration through SSH/FTP
* XS Software stack with web server, database, and utilities
* Recover CDs or DVDs

Nice to haves:
* Alternative OS such as Debian 4.0-r3 Etch with Dual-boot option and Grub loader
* Alternative databases (MySQL versus PostgreSQL)
* Logical Volume Manager (LVM2)
* RAID-1 configuration between the two SATA disks
* Backup through Mondo Rescue, SysRescueCD, Partimage, or similar
* KVM virtualization that would allow other images to run as Linux guests
* Ability to hot-add USB keys or USB external drives
* Install "git" source code revision management software (yum install git-core)

<h4>Hardware Requirements:</h4>

The requirements are loosely based on [[ XS_Server_Specification#XSX_Specifications ]]:

* 1.6 - 1.8 GHz AMD processor
* 2 GB RAM
* 160 GB disk (two drives, in RAID 1)
* three NICs (one WAN, and two LAN) the intent was to have a WiFi network inside the school and another for outside the school, but they are currently only using a single WiFi network.
* Six USB slots
* CD-RW/DVD-RAM for backup

Actual hardware implemented:
[[ User:Az990tony/edublog-beta-hw | EduBlog Beta Server Hardware ]]

<h4>Software Requirements:</h4>
* XS-160 or higher software build (based on Fedora 7)
* Apache 2
* PHP 5
* PostgreSQL 8
* Moodle
* FTP
* SSH

Actual software implemented:
[[ User:Az990tony/edublog-beta-sw | EduBlog Beta Server Software ]]

<h4>Backup / Recovery Method:</h4>

Tony has successfully backed up using "partimage" from the
[[http://www.sysresccd.org/Main_Page SystemRescueCD 1.0.3 ]]. In
this test, the system was booted from CD, partimage was run interactively
and the image files were written in 690M pieces to another disk partition.
Then, using
[[http://www.sysresccd.org/Sysresccd-manual-en_How_to_burn_a_DVD_with_SystemRescue_and_4_GB_more_files growisofs procedure ]] was able to create a bootable DVD that contained this backup copies.
It is not fully automated as Mondo Rescue, but close enough to move forward.

Tony has not been able to get "Mondo Rescue" to complete successfully (See
[[ XS_Backup_and_Disaster_Recovery ]] for details). More investigation is required.

<h2>Deliverables (Revised see Work Plan)</h2>
<p>
The major components described above are the deliverables for this project. The WebClient is not part of my proposal since the system can function with just the Write Activity modification. It may however streamline the blogging process for kids if implemented in the future. The EduBlog server will be capable of handling data sent from it if it is created.
</p>
<p>
The entire system will have to work on the XO environment (both client and server) and be optimized for bandwidth. In addition, at the end of the project, the system will be put into a one click install package for the XO server.
</p>
<ul>
<li>EduBlog Client</li>
<li>EduBlog Server</li>
<li>EduBlog Admin</li>
<li>One click installer for XS</li>
</ul>

<h2>Working plan</h2>

Latest plan here:
http://wiki.laptop.org/go/Blog_Educativo_Plan_del_Proyecto

Older plan kept for the record here:
<ul>
<li>Prior to GSoC Start: Configuring and familiarizing with the XO environment, Moodle, XML-RPC</li>
<li>Week 1: Developing and testing EduBlog Client and sending data to EduBlog server</li>
<li>Week 2: Incorporating user privileges into EduBlog Server</li>
<li>Week 3: Developing and testing of storing of information in Moodle</li>
<li>Week 4: Developing and testing plug-ins to publish to Blogger and WordPress</li>
<li>Week 5: Developing and testing web application for administration</li>
<li>Week 6: Package and test installer</li>
<li>Week 7,8: Integration testing, further plug-ins depending on remaining time</li>
<li>After GSoC End: Support, Upgrades, Maintenance</li>
</ul>

<h2>People Involved</h2>
<p>[[ User:Gregorio | Greg Smith (Gregorio)]] - Mentor</p>
<p>[[ User:tarun2000 | Tarun Pondicherry (tarun2000) ]] - Lead Developer</p>
<p>[[ User:marcel |Marcel Renaud (marcel)]]</p>
<p>[[ User:az990tony | Tony Pearson (az990tony) ]] - Beta Server build</p>
<p>If I missed you, add yourself!</p>

[[Category:GSoC proposals]]
[[Category:Educational Blogger Project]]

Latest revision as of 17:31, 12 September 2008

  Translation of Educational Blogger Project original  
  en | es   +/- changes  

Abstract

Blogs are an excellent educational tool as demonstrated by the use of Google Blogger in Villa Cardal, Uruguay. The kids had some issues and requested changes to make the system easier to use. Setting up the system on the XO was difficult due to Blogger's many features and bandwidth intensive resources. Technicians needed to assist in actually posting the blog entries to the internet. Very few (if any) current blogging systems are easy enough for use by young children in the low bandwidth environment they have in third world countries. The Educational Blogger Project will address these problems. Essentially, it stores posts locally using Moodle (or similar service) and allows for kids to collaborate, gives teachers the control they need and optimizes the process for the XO environment. It also allows teachers to release posts to Google Blogger, WordPress or other blogging system. The Educational Blogger Project significantly facilitates the use of blogs on the XO environment and makes it available for more widespread use. The ultimate goal is to create an system that can be set up easily on any XS and used by kids around the world.

Benefits of Educational Blogging System

  • Allows teachers to use blogging as an effective educational tool by adding teamwork capabilities, creating a collaborative environment for students and simplifying the process
  • Optimized for the XO and bandwidth, so users will have a great experience
  • Gives OLPC a source of feedback and a way to see what is important to kids
  • Makes kids happy! Kids requested blogging!

Problems with Current Blogging Systems

  • The need for good connectivity
  • Children getting confused with some options
  • The number of steps involved in creating a post
  • Difficulty in collaborating on a post
  • Difficulty with monitoring and viewing posts before being published

Details (Revised See EduBlog Implementation)

The design of this project addresses the concerns in the requirements specifications (Please note there will be mismatch since many areas were changed during discussion with my mentor, but not updated on the requirements page).

Use Case / Workflow

Tarun2000 workflow.png Original

1) Kid Creates Post
Children can use the Write Activity (AbiWord based) to create a post. A slight modification/plug-in to the Write activity would display a "post to blog" option for the child. When clicked, the post (taking advantage of Write's XHTML generation) and meta information (class its for, group, etc.) will be sent to the Educational Blogger Web Application on the XS. The XS will store the post locally using Moodle, WordPress or other similar web application (modified to incorporate needed user permissions, bandwidth optimized).
2) Kids Collaborate
Children in the same group can collaborate on a post. To edit a post, a child can click on an edit link (which will appear if they have permission to edit that post) in the browser. The link will open Write and load the file for editing (file extension association). Uploading the edited post will be similar to creating a post, except that the user will not be prompted for extra information when saving.
3) Teacher Controls Post
At all times, the teacher can view posts of all students in the class and edit/delete them. The teacher can also create users/groups, give students editing rights and perform other everyday administration tasks. The teacher also sets access rights for the post (internet, local, class only, group only).
4) Post Released
The teacher also has the power to release the post (publish Generic WordPress server or other blogging site). This would essentially transfer all the post data using XML-RPC. The post will also be available for replication on partner servers.
5) Post Exchange
A daemons system will replicate posts across partner servers. For example, a regional server could store all the posts in the region. Post Exchange serves to optimize a country's bandwidth as well as a school's bandwidth.


More detailed use cases with screenshots have been posted for the first beta test.

Major Components (Design Modified see EduBlog Implementation)

Tarun2000 stack.png Original

EduBlog Client
This is a modification/plug-in to the Write Activity and serves as the interface between Write and the EduBlog server. This consists of a slight GUI modification to Write so that a "Publish" option is shown in the menu. Clicking on that option will bring up a GUI allowing the child to select what class the post is for. Finally, the child can click "Submit" and send the data to the EduBlog Server using HTTP. All accessory files, such as images, will be sent to the server as well. XHTML generation is done by the Write Activity (already supported). Also, clicking on edit in the Browse Activity will open up Write and preload the page for editing and allow for easy updating through the EduBlog Client. The client is also partly responsible for authentication; initial implementation will store a password in the XO and submit that securely (md5) to the server with the post.
EduBlog WebClient
This is a browser based editor that can serve the same functionality as EduBlog Client. This can be a stripped down version of the WordPress client interface.
EduBlog Server
The EduBlog Server handles most of the communication between subsystems. When a post is or edited, the EduBlog server will alter Moodle (with blog plug-in) tables appropriately (either directly or through the Moodle API). It will also deal with concurrent editing issues by locking the post or merging changes. The EduBlog server also augments the Moodle database to support the specific user types needed and handles a post's view and edit permissions. It also allows teachers to make certain posts public by publishing them to blog sites on the internet. This will be done with plug-ins that allow it to interface with various blog systems such as Google Blogger and WordPress using XML-RPC (supported by both Blogger and WordPress as well as popular blog exchange API's such as GData, MetaWeblog and MovableType). In addition, EduBlog Servers running on different XS's will replicate posts as necessary through daemon processes to optimize local and national bandwidth.
EduBlog Admin
This is a web interface to administer the EduBlog Server (through PHP and XHTML forms). Teachers can use this interface to view and control the posts made by kids in their class, create/delete users, edit posts made by their class, create groups that can collaborate on a post and release posts to the internet. Admins can use this interface to configure the system such as settings for releasing to blog sites on the internet and what data is to be exchanged with partner servers.

Mock Ups

Student Page<br;> Tarun2000 edublog screen1.png
After clicking post, the new post goes right to Blogger.com
Tarun2000 edublog screen2.png

Beta Server Hardware and Software Details

Tarun has a basic FTP host with Apache and PHP which we can use for mocking up the GUI. and doing some developing. Greg really wants to have a full blown School Server just like they have in schools in Uruguay.

We need

  1. A box and someone to image it with XS code (Tony)
  2. A primary sys admin and support for them (Marcel)
  3. An IP address, BW and a hosting location (Glen)

Must haves:

  • Ethernet configured for connection to Internet
    • Accessible from XO laptops in Uruguay via HTTP
    • Remote administration through SSH/FTP
  • XS Software stack with web server, database, and utilities
  • Recover CDs or DVDs

Nice to haves:

  • Alternative OS such as Debian 4.0-r3 Etch with Dual-boot option and Grub loader
  • Alternative databases (MySQL versus PostgreSQL)
  • Logical Volume Manager (LVM2)
  • RAID-1 configuration between the two SATA disks
  • Backup through Mondo Rescue, SysRescueCD, Partimage, or similar
  • KVM virtualization that would allow other images to run as Linux guests
  • Ability to hot-add USB keys or USB external drives
  • Install "git" source code revision management software (yum install git-core)

Hardware Requirements:

The requirements are loosely based on XS_Server_Specification#XSX_Specifications :

  • 1.6 - 1.8 GHz AMD processor
  • 2 GB RAM
  • 160 GB disk (two drives, in RAID 1)
  • three NICs (one WAN, and two LAN) the intent was to have a WiFi network inside the school and another for outside the school, but they are currently only using a single WiFi network.
  • Six USB slots
  • CD-RW/DVD-RAM for backup

Actual hardware implemented: EduBlog Beta Server Hardware

Software Requirements:

  • XS-160 or higher software build (based on Fedora 7)
  • Apache 2
  • PHP 5
  • PostgreSQL 8
  • Moodle
  • FTP
  • SSH

Actual software implemented: EduBlog Beta Server Software

Backup / Recovery Method:

Tony has successfully backed up using "partimage" from the [SystemRescueCD 1.0.3 ]. In this test, the system was booted from CD, partimage was run interactively and the image files were written in 690M pieces to another disk partition. Then, using [growisofs procedure ] was able to create a bootable DVD that contained this backup copies. It is not fully automated as Mondo Rescue, but close enough to move forward.

Tony has not been able to get "Mondo Rescue" to complete successfully (See XS_Backup_and_Disaster_Recovery for details). More investigation is required.

Deliverables (Revised see Work Plan)

The major components described above are the deliverables for this project. The WebClient is not part of my proposal since the system can function with just the Write Activity modification. It may however streamline the blogging process for kids if implemented in the future. The EduBlog server will be capable of handling data sent from it if it is created.

The entire system will have to work on the XO environment (both client and server) and be optimized for bandwidth. In addition, at the end of the project, the system will be put into a one click install package for the XO server.

  • EduBlog Client
  • EduBlog Server
  • EduBlog Admin
  • One click installer for XS

Working plan

Latest plan here: http://wiki.laptop.org/go/Blog_Educativo_Plan_del_Proyecto

Older plan kept for the record here:

  • Prior to GSoC Start: Configuring and familiarizing with the XO environment, Moodle, XML-RPC
  • Week 1: Developing and testing EduBlog Client and sending data to EduBlog server
  • Week 2: Incorporating user privileges into EduBlog Server
  • Week 3: Developing and testing of storing of information in Moodle
  • Week 4: Developing and testing plug-ins to publish to Blogger and WordPress
  • Week 5: Developing and testing web application for administration
  • Week 6: Package and test installer
  • Week 7,8: Integration testing, further plug-ins depending on remaining time
  • After GSoC End: Support, Upgrades, Maintenance

People Involved

Greg Smith (Gregorio) - Mentor

Tarun Pondicherry (tarun2000) - Lead Developer

Marcel Renaud (marcel)

Tony Pearson (az990tony) - Beta Server build

If I missed you, add yourself!