ColingoXO: Difference between revisions
(→Status) |
No edit summary |
||
(64 intermediate revisions by 8 users not shown) | |||
Line 1: | Line 1: | ||
{{Olpcboxtop|toptext=[[{{PAGENAME}}|Colingo XO]]}} |
|||
[[Colingo]] is developing an [[activity]] for [[Sugar]] called ColingoXO. ColingoXO creates a platform for [[constructivist]] language-learning by letting children construct [[video]] narratives using short video clips. Children will be able to use Colingo-produced, copyleft video clips or record new clips using the XO camera / microphone. Essentially, the activity is an integrated video recorder and extremely simple video editor. |
|||
{{ OBX activity|[[Image:Colingo-sugar.svg]]|extra|Site: [http://www.colingo.org/ colingo]}} |
|||
{{ OBX source|[http://www.colingo.org/ colingo]|colingo.org}} |
|||
{{ OBX team |Ben Lowenstein, Eben Eliason}} |
|||
{{ OBX pot }} |
|||
<small>see more [[:Category:OBX templates|templates]] or [[OBX proposals|propose new]]</small> |
|||
{{Olpcboxbottom}} |
|||
ColingoXO will also provide a framework for sharing video narratives, both between XO machines and online through colingo.org and other websites. |
|||
[[Colingo]] is developing an [[activity]] for [[Sugar]] called ColingoXO. ColingoXO creates a platform for [[constructivist]] language-learning by letting children splice video clips to create and share video narratives. Children will be able to use all video clips from the Colingo video library or alternatively record new clips with the XO camera and microphone. |
|||
==Purpose== |
|||
Beyond its role as a simple video editor, ColingoXO will focus on taking advantage of the XO's [[mesh]] capabilities. Videos will not be housed on individual XO's, but rather be housed and streamed from the [[School server]]. Video narratives, which are essentially XSPF playlists, will be kept locally in the [[Journal]] and be easily passed through the mesh due to their lightweight, text-based format. |
|||
ColingoXO will allow children to splice together short video clips into dialogs, along with letting children submit new videos to a video language-learning library. The package emphasizes networking and collaborative education, so video dialogs can both be shared with other XOs and also shared online via an integrated web portal, [[http://www.colingo.org Colingo.org]]. To be accessible for children on low-bandwidth connections, dialogs are passed over the mesh as XML files, with only unique clips embedded. Larger video clip libraries can be mirrored locally on a school (or other local) server. |
|||
Imagine the following scenario as an example of how this program could be used to learn languages, The user wishes to learn English and clicks on "learn English > Beginner" They may then select which beginner lesson they are interested in, in this case "Lesson 1: Hi, my name is..." They then see the following interface. |
|||
==Interface== |
==Interface== |
||
This interface design is by Eben Eliason, a lead UI designer for the OLPC project and the primary author of the OLPC Human Interface Guidelines. Please post comments on the discussion page, or ping lionstone in #olpc-content. <br><br> |
|||
Here is an early sketch of the interface.<br> |
|||
[[Image:colingoxo.5.png]] |
|||
This interface is being designed (and re-designed) according to the [[OLPC Human Interface Guidelines]].<br> |
|||
[[Image:colingoXO.3.png]] |
|||
==Interface description== |
==Interface description== |
||
The comboboxes at the top allow one to simply switch the language or select a phrase. Typing some words directly into the phrase box will simply filter out the results. The video bank on the left contains all of the videos which match the filter in the [[toolbar]] for language and phrase. It scrolls for easy navigation, and holds up to 15 clips before needing to scroll at all. |
|||
Beginning at the top-left: The '''logo''' is a mix of the Colingo logo and OLPC's XO logo. |
|||
The timeline is the main interactive component, since it defines the |
|||
Moving left: the child is prevented with a '''linkable breadcrumb''' providing comprehensive navigation between languages and lessons. |
|||
dialogue for the session. It is shown as using a standard (not quite |
|||
finished) [[Tray control]], which will automatically provide drag'n'drop |
|||
support, reordering, paging, and assist in supporting networked |
|||
collaboration on the timeline. This will make it easy for kids to |
|||
actually create back and forth dialogue with each other, alternately |
|||
selecting video clips, and in the end having a record of that |
|||
conversation which they can play back in any language. |
|||
The video consumes the rest of the screen, and is a fair bit larger. |
|||
Moving down to the second row: 3 icons let a child open, save, and share dialogs. An upcoming fourth icon will allow children to record clips within ColingoXO. Clicking on the first icon, open, causes a box to float above the screen surrounded by 75% transparent black. The box allows a child to open a video dialog stored either locally, on a remote XO, or on the colingo.org portal. |
|||
Beneath the video there are some basic controls. The play/stop button |
|||
The second icon, '''save''', causes a similarly behaving window to appear with options to save the dialog as an XML file (small / fast) or as a compressed movie file (bigger / slower). |
|||
is obvious. The next and previous buttons will skip to the various |
|||
video clips in the sequence, like tracks on a CD. Finally, the text |
|||
beneath the video updates in real time to provide the written form of |
|||
the phrase being spoken during playback. |
|||
=Specifications= |
|||
The third icon, '''share''', pops up a similar box allowing children to share the video dialogs between local XO machines and between colingo.org users. |
|||
There are four programmatic arenas we must focus on in developing ColingoXO: how the user interacts with the XO, how one XO interacts with other XOs, how an XO interacts with the XS, and how the XS interacts with the rest of the world. Our primary focus right now is on the user interface on the XO and how the XO interacts with the server. Our secondary focus is on how the XOs interact with one another, and our tertiary focus is on how the XS interacts with the rest of the world. |
|||
==Broadly== |
|||
A forth icon,''' record''', (not pictured) will allow children to record and tag video clips to add to the video library. |
|||
===User -> XO=== |
|||
From a programmatic perspective, the interface for the user must: |
|||
*read/display available video files |
|||
*search the library of videos based on a user's specified language, and return appropriate videos in the specified language |
|||
*create/save video clips |
|||
*create/save playlists built by dragging/dropping videos onto a "timeline" |
|||
*specify videos/playlists as shareable or private |
|||
*playback individual videos and playlists |
|||
*allow control via keyboard, mouse and integrated gamepad |
|||
===XO -> XS=== |
|||
Moving to the center: Front and center is the '''video player''', which shows the title of the corresponding video clip as a text string below. An upcoming feature will be to make this text area dynamic, such that it would have a dual function displaying '''subtitles''' and as a '''search box'''. (ie- you could type in "my name is" and the program would search for video clips of people saying "my name is," displaying all results in the clip selector) |
|||
Like the XO, the XS is still undergoing heavy development, and not all of the software that will run on these machines has been wholly settled on just yet. This makes our task a little more difficult, but it should push us to build our software with greater flexibility in mind. We are still trying to determine which SQL driven database will be running on the XS (we have been told that it will ''probably'' be MySQL), and how/where on the XS videos will be stored/streamed is undetermined. Regardless, our specs are as follows: |
|||
*XO must be able to write and read video files/playlists to/from the XS |
|||
*XS must be able to stream the same video(s) simultaneously to multiple XOs |
|||
*XS will host a database containing metadata about each video clip, including bridging videos about the same thing across all languages |
|||
*XS and its database must have support for any character set (from Arabic to Zapotec!) |
|||
===XO -> XO=== |
|||
Moving to the left column: The '''phrase selector''' is a scrollable selector of all the phrases available for a particular lesson. The active phrase will have have a defined a:active color. |
|||
The collaborative aspect of the XOs is where these machines really shine. Our activity should embody an ethos of collaboration and take full advantage of the mesh networking capabilities of the XO. |
|||
*Read/write shared files |
|||
*Collaborate in realtime on shared playlists |
|||
*Support more than one XO on one XO - groups of XOs collaborating on one project |
|||
*Provide visual signatures on clips/playlists (perhaps a watermark of the student's colored XO character) |
|||
*Some form of communication beyond just manipulating files (ie bridge with the chat activity) |
|||
===XS -> World=== |
|||
Moving down: The scrollable '''clip selector''' bar shows thumbnails of all the videos available for each particular phrase. So, for example: Clicking on "my name is" in the phrase selector will cause the clip selector to display all available clips of this phrase. Only four clips will display at a time but clicking the circled carrots will scroll through all the clips, four at a time. Clicking on any clip in the clip selector will play the clip in the video player. |
|||
Each XS will host its own library of videos developed by the students, as well as initial seeded content provided by Colingo. On the OLPC wiki, there is talk about regional XSs talking with one another, as well as XSs connected with the internet sharing content to the world. |
|||
*XSs should be able to share video content and playlists with the rest of the world. |
|||
*Video content from the XSs should be available to colingo.org, which will be the portal through which these videos are shared. |
|||
*XS should be able to pull content (videos) from colingo.org to share with the students. |
|||
*XS should be able to share their metadata (ie translations, associations of clips with languages) with one another and colingo.org to build a global decentralized database. |
|||
==More Specifically== |
|||
Moving down to the bottom row: To create dialogs, children can simply drag and drop video clips from the clip selector onto the''' timeline'''. Dragging and dropping a clip onto the timeline displays the thumbnail of the video clip located in its proper spot. Clips can also be moved relative to each other on the timeline by dragging and dropping. Clicking the circled carrot to the left will automatically splice together the video clips on the timeline in their indicated chronological order. |
|||
*The ability for a user to create media clips tagged with metadata |
|||
**Taking advantage of the XO's built in video camera and microphone, users will be able to make videos, still photos, or audio recordings. The idea being that each clip would be of a student saying a short phrase. |
|||
**The user would be able to tag the clip with information such as the language of the clip, the phrase, translations of that phrase into any other language, creative commons licensing information and information about the creator of the clip. |
|||
**The metadata for each clip would be stored in a database on the school servers, as well as Colingo's servers on the internet |
|||
*The ability to tag additional translation metadata to clips |
|||
**Anybody with access to the library would be able to add additional translation metadata to any clip (similar to dotSub's method for video translation). |
|||
*The ability to store and retrieve clips to and from the school server as well as Colingo's servers on the internet. |
|||
**ColingoXO will make calls first to the school server to see what clips are available on the local network. |
|||
***If a particular clip is requested, the metadata would be sent to the client with XML, and the video would be streamed from the school server |
|||
***If a particular clips is not available on the school server, but is available and retrievable from the internet and/or other school servers, the clip would be downloaded to and streamed to the client from the school server. |
|||
**Due to the XO's limited storage capacity, clips as well as the Colingos will be stored primarily on the school server. |
|||
***If the school server has a connection to the internet, the clips will also be uploaded to Colingo's servers. |
|||
*The ability to search the Colingo library for clips as well as Colingos across languages |
|||
**The user would be able to enter a phrase or category in a particular language, and specify what language to return associated clips in. |
|||
**The school server would be queried and would search through the library for relevant clips, looking first at associated phrases from the metadata, and then using translation tools to return associated clips |
|||
***The school server would then query other school servers and the Colingo servers, if they were accessible. |
|||
*The ability to use these clips (retrieved clips and locally created clips) to build narratives |
|||
**Users would be able to drag/drop clips onto a timeline, creating an interactive playlist |
|||
**The integrated video player would playback the mashup of videos |
|||
*The ability for multiple XO users on the local mesh network to collaboratively create Colingos |
|||
*Users will be able to share clips or mashups with anyone they specify – locally or on the internet, if access is available. |
|||
==Activity vs Content Bundle== |
|||
==Functionality== |
|||
There are two ways to develop for OLPC: |
|||
* Creating an [[activity]] |
|||
** ColingoXO is our activity. Activities are robust, [[python]] frameworks that enable [[programming the camera]], creating databases with [[SQLite]], etc. |
|||
* Creating [[content bundles]] |
|||
** A content bundle is a curated collection of content viewable from the [[library]]. They are limited in functionality and primarily intended to house content. |
|||
===Our content bundles=== |
|||
On November 2, 2007, Colingo released four content bundles: |
|||
* [http://dev.colingo.org/media/OLPC/colingo_all.xol All our movies] |
|||
* [http://dev.colingo.org/media/OLPC/colingo_en.xol English-only ] |
|||
* [http://dev.colingo.org/media/OLPC/colingo_es.xol Spanish-only] |
|||
* [http://dev.colingo.org/media/OLPC/colingo_pt.xol Portuguese-only] |
|||
* We will be releasing more content bundles shortly, |
|||
** Lessons 2 - 10 of basic English |
|||
** Lessons 2 - 10 of basic Spanish |
|||
** Lessons 2 - 10 of basic Chinese |
|||
Please help test our content bundles, and see [http://dev.colingo.org/mediawiki/index.php/ColingoCB_Known_Issues known issues] with them. You can also watch an [http://dev.colingo.org/media/OLPC/cb.23/colingo_all_1 online demo] if your web browser can handle OGG theora video. |
|||
==Get involved!== |
|||
Developers ought to look at the list of existing XO [[activities]] to see what we can reuse code from. |
|||
We need your help to create a revolutionary educational tool completely in line with the XO's constructivist educational philosophy. If you are committed the ideals of Free Software and are interested in helping to develop a platform for global language exchange, please say hello in IRC, check out [http://dev.colingo.org our dev environment] and learn how to [http://dev.colingo.org/mediawiki/index.php/Become_a_Colingo_Developer become a Colingo developer]. |
|||
ColingoXO will need to be able to '''read and write XML files''', sometimes with embedded video clips and other times streaming compressed video clips from a server. |
|||
==Code== |
|||
It will need to pass such information extracted from XML to an embedded '''video player and recorder''' capable of streaming, recording, and slicing OGG files. Such a player and recorder must be extremely lightweight due to the challenging resource constraints of the XO. The already-developed [[Helix media activity]] provides much of the video player functionality. OLPC wiki also offers help on [[programming the camera]] to record with gstreamer. |
|||
===Checking out code from Colingo=== |
|||
The ability to '''drag and drop clips''' from the clip selector to the timeline will necessitate...anyone? |
|||
Note (8/23/07): We are currently hosting ColingoXO code on the Colingo development server. Please see the instructions about [http://dev.colingo.org/mediawiki/index.php/HOWTO_Checkout_ColingoXO how to check out code] from the ColingoXO repository. |
|||
Sharing Theora (video clips) and XML (dialogs) between XOs on mesh networks will require a '''[[networking]] interface'''; perhaps code can be extracted from the [[chat]] activity. |
|||
===Our sugarized SVG activity icon=== |
|||
Likewise, sharing Theora and XML between ColingoXO and colingo.org will necessitate a '''shared API''' with the Drupal-based website. |
|||
[[Image:Colingo-sugar.svg]] |
|||
Integrates cleanly into the activity bar and the Home view activity ring.{{-}} |
|||
==Code== |
|||
Here's what we have so far <br> |
|||
===A python script to launch totem with a user-selected playlist fullscreen=== |
|||
<pre> |
<pre> |
||
<?xml version="1.0" encoding="UTF-8" standalone="no"?> |
|||
#!/usr/bin/env python |
|||
<!-- Created with Inkscape (http://www.inkscape.org/) --> |
|||
#123gtk.py |
|||
<!-- by Ben Lowenstein 10-08-07 --> |
|||
#script to load totem with a predefined playlist in fullscreen mode |
|||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [ |
|||
#by arthur richards 2007-10-05 |
|||
<!ENTITY fill_color "#FFFFFF"> |
|||
#released under the GPL |
|||
<!ENTITY stroke_color "#000000"> |
|||
import os, pygtk |
|||
]> |
|||
pygtk.require('2.0') |
|||
<svg |
|||
import gtk |
|||
xmlns:svg="http://www.w3.org/2000/svg" |
|||
xmlns="http://www.w3.org/2000/svg" |
|||
class OneTwoThree: |
|||
version="1.0" |
|||
def launch_playlist(self, widget, data): |
|||
width="55" |
|||
print "launching playlist for " + data |
|||
height="55" |
|||
os.system("totem --fullscreen 123/" + data + "/play_all.m3u") |
|||
viewBox="0 0 55 55" |
|||
id="svg2160" |
|||
def delete_event(self, widget, event, data=None): |
|||
xml:space="preserve"><defs |
|||
print "delete event occurred, shutting down" |
|||
id="defs2183"> |
|||
return False |
|||
</defs><line |
|||
style="fill:none;stroke:&stroke_color;;stroke-width:3.38274455;stroke-linecap:round;stroke-linejoin:round;display:inline" |
|||
def destroy(self, widget, data=None): |
|||
id="line2174" |
|||
gtk.main_quit() |
|||
y2="34.398335" |
|||
y1="41.699673" |
|||
def __init__(self): |
|||
x2="28.363632" |
|||
self.window = gtk.Window(gtk.WINDOW_TOPLEVEL) |
|||
x1="32.03511" |
|||
display="inline" /><path |
|||
self.window.connect("delete_event", self.delete_event) |
|||
d="M 80.538794,14.634424 A 3.7837837,5.7432432 0 0 1 82.360937,3.919944" |
|||
transform="matrix(4.5103261,1.9208816,0,1.503442,-344.36635,-144.93321)" |
|||
self.window.connect("destroy", self.destroy) |
|||
style="fill:none;fill-opacity:1;stroke:&stroke_color;;stroke-width:1.99899995;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" |
|||
id="path4147" /><path |
|||
self.window.set_border_width(10) |
|||
d="M 80.538794,14.634424 A 3.7837837,5.7432432 0 0 1 82.360937,3.919944" |
|||
transform="matrix(-4.5103261,-1.9208816,0,-1.503442,401.38327,199.09105)" |
|||
#define box to stuff buttons into |
|||
style="fill:none;fill-opacity:1;stroke:&stroke_color;;stroke-width:1.99899995;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" |
|||
self.box1 = gtk.VBox(False, 0) |
|||
id="path5118" /><line |
|||
display="inline" |
|||
#add the box to the window |
|||
x1="35.277481" |
|||
self.window.add(self.box1) |
|||
x2="28.57617" |
|||
y1="30.112953" |
|||
self.labelWelcome = gtk.Label("Welcome to ColingoXO!") |
|||
y2="34.113159" |
|||
self.labelInstruct = gtk.Label("Please select a language to begin your lesson") |
|||
id="line5120" |
|||
style="fill:none;stroke:&stroke_color;;stroke-width:3.38274455;stroke-linecap:round;stroke-linejoin:round;display:inline" /><line |
|||
self.labelWelcome.set_alignment(0,0) |
|||
display="inline" |
|||
self.labelInstruct.set_alignment(0,1) |
|||
x1="25.064001" |
|||
x2="28.735477" |
|||
self.box1.pack_start(self.labelWelcome, False, False, 0) |
|||
y1="12.559251" |
|||
self.box1.pack_start(self.labelInstruct, False, False, 0) |
|||
y2="19.86059" |
|||
id="line5122" |
|||
self.labelWelcome.show() |
|||
style="fill:none;stroke:&stroke_color;;stroke-width:3.38274455;stroke-linecap:round;stroke-linejoin:round;display:inline" /><line |
|||
self.labelInstruct.show() |
|||
style="fill:none;stroke:&stroke_color;;stroke-width:3.38274455;stroke-linecap:round;stroke-linejoin:round;display:inline" |
|||
id="line5124" |
|||
#portuguese |
|||
y2="20.145765" |
|||
self.button = gtk.Button("Portuguese") |
|||
y1="24.145969" |
|||
x2="28.522943" |
|||
self.button.connect("clicked", self.launch_playlist, "portuguese") |
|||
x1="21.82163" |
|||
display="inline" /></svg> |
|||
self.box1.pack_start(self.button, True, True, 0) |
|||
self.button.show() |
|||
#spanish |
|||
self.button1 = gtk.Button("Spanish") |
|||
self.button1.connect("clicked", self.launch_playlist, "spanish") |
|||
self.box1.pack_start(self.button1, True, True, 0) |
|||
#english |
|||
self.button2 = gtk.Button("English") |
|||
self.button2.connect("clicked", self.launch_playlist, "english") |
|||
self.box1.pack_start(self.button2, True, True, 0) |
|||
self.button.show() |
|||
self.button1.show() |
|||
self.button2.show() |
|||
self.box1.show() |
|||
self.window.show() |
|||
def main(self): |
|||
gtk.main() |
|||
if __name__ == "__main__": |
|||
lesson = OneTwoThree() |
|||
lesson.main() |
|||
</pre> |
</pre> |
||
===A script for DV capture automagic=== |
===A script for DV capture automagic=== |
||
Line 200: | Line 236: | ||
</pre> |
</pre> |
||
==See also== |
|||
*[[Shtooka Project]] |
|||
<pre> |
|||
{{Activity page |
|||
</pre> |
|||
|icon=Image:Colingo-sugar.svg |
|||
|genre=Language Learning |
|||
|short description=ColingoXO creates a platform for constructivist language-learning by letting children splice video clips to create and share video narratives. Children will be able to use all video clips from the Colingo video library or alternatively record new clips with the XO camera and microphone. |
|||
|contact person=Unknown |
|||
|related project=Shtooka_Project |
|||
}} |
Latest revision as of 20:41, 6 August 2008
see more templates or propose new |
Colingo is developing an activity for Sugar called ColingoXO. ColingoXO creates a platform for constructivist language-learning by letting children splice video clips to create and share video narratives. Children will be able to use all video clips from the Colingo video library or alternatively record new clips with the XO camera and microphone.
Beyond its role as a simple video editor, ColingoXO will focus on taking advantage of the XO's mesh capabilities. Videos will not be housed on individual XO's, but rather be housed and streamed from the School server. Video narratives, which are essentially XSPF playlists, will be kept locally in the Journal and be easily passed through the mesh due to their lightweight, text-based format.
Interface
This interface design is by Eben Eliason, a lead UI designer for the OLPC project and the primary author of the OLPC Human Interface Guidelines. Please post comments on the discussion page, or ping lionstone in #olpc-content.
Interface description
The comboboxes at the top allow one to simply switch the language or select a phrase. Typing some words directly into the phrase box will simply filter out the results. The video bank on the left contains all of the videos which match the filter in the toolbar for language and phrase. It scrolls for easy navigation, and holds up to 15 clips before needing to scroll at all.
The timeline is the main interactive component, since it defines the dialogue for the session. It is shown as using a standard (not quite finished) Tray control, which will automatically provide drag'n'drop support, reordering, paging, and assist in supporting networked collaboration on the timeline. This will make it easy for kids to actually create back and forth dialogue with each other, alternately selecting video clips, and in the end having a record of that conversation which they can play back in any language.
The video consumes the rest of the screen, and is a fair bit larger.
Beneath the video there are some basic controls. The play/stop button is obvious. The next and previous buttons will skip to the various video clips in the sequence, like tracks on a CD. Finally, the text beneath the video updates in real time to provide the written form of the phrase being spoken during playback.
Specifications
There are four programmatic arenas we must focus on in developing ColingoXO: how the user interacts with the XO, how one XO interacts with other XOs, how an XO interacts with the XS, and how the XS interacts with the rest of the world. Our primary focus right now is on the user interface on the XO and how the XO interacts with the server. Our secondary focus is on how the XOs interact with one another, and our tertiary focus is on how the XS interacts with the rest of the world.
Broadly
User -> XO
From a programmatic perspective, the interface for the user must:
- read/display available video files
- search the library of videos based on a user's specified language, and return appropriate videos in the specified language
- create/save video clips
- create/save playlists built by dragging/dropping videos onto a "timeline"
- specify videos/playlists as shareable or private
- playback individual videos and playlists
- allow control via keyboard, mouse and integrated gamepad
XO -> XS
Like the XO, the XS is still undergoing heavy development, and not all of the software that will run on these machines has been wholly settled on just yet. This makes our task a little more difficult, but it should push us to build our software with greater flexibility in mind. We are still trying to determine which SQL driven database will be running on the XS (we have been told that it will probably be MySQL), and how/where on the XS videos will be stored/streamed is undetermined. Regardless, our specs are as follows:
- XO must be able to write and read video files/playlists to/from the XS
- XS must be able to stream the same video(s) simultaneously to multiple XOs
- XS will host a database containing metadata about each video clip, including bridging videos about the same thing across all languages
- XS and its database must have support for any character set (from Arabic to Zapotec!)
XO -> XO
The collaborative aspect of the XOs is where these machines really shine. Our activity should embody an ethos of collaboration and take full advantage of the mesh networking capabilities of the XO.
- Read/write shared files
- Collaborate in realtime on shared playlists
- Support more than one XO on one XO - groups of XOs collaborating on one project
- Provide visual signatures on clips/playlists (perhaps a watermark of the student's colored XO character)
- Some form of communication beyond just manipulating files (ie bridge with the chat activity)
XS -> World
Each XS will host its own library of videos developed by the students, as well as initial seeded content provided by Colingo. On the OLPC wiki, there is talk about regional XSs talking with one another, as well as XSs connected with the internet sharing content to the world.
- XSs should be able to share video content and playlists with the rest of the world.
- Video content from the XSs should be available to colingo.org, which will be the portal through which these videos are shared.
- XS should be able to pull content (videos) from colingo.org to share with the students.
- XS should be able to share their metadata (ie translations, associations of clips with languages) with one another and colingo.org to build a global decentralized database.
More Specifically
- The ability for a user to create media clips tagged with metadata
- Taking advantage of the XO's built in video camera and microphone, users will be able to make videos, still photos, or audio recordings. The idea being that each clip would be of a student saying a short phrase.
- The user would be able to tag the clip with information such as the language of the clip, the phrase, translations of that phrase into any other language, creative commons licensing information and information about the creator of the clip.
- The metadata for each clip would be stored in a database on the school servers, as well as Colingo's servers on the internet
- The ability to tag additional translation metadata to clips
- Anybody with access to the library would be able to add additional translation metadata to any clip (similar to dotSub's method for video translation).
- The ability to store and retrieve clips to and from the school server as well as Colingo's servers on the internet.
- ColingoXO will make calls first to the school server to see what clips are available on the local network.
- If a particular clip is requested, the metadata would be sent to the client with XML, and the video would be streamed from the school server
- If a particular clips is not available on the school server, but is available and retrievable from the internet and/or other school servers, the clip would be downloaded to and streamed to the client from the school server.
- Due to the XO's limited storage capacity, clips as well as the Colingos will be stored primarily on the school server.
- If the school server has a connection to the internet, the clips will also be uploaded to Colingo's servers.
- ColingoXO will make calls first to the school server to see what clips are available on the local network.
- The ability to search the Colingo library for clips as well as Colingos across languages
- The user would be able to enter a phrase or category in a particular language, and specify what language to return associated clips in.
- The school server would be queried and would search through the library for relevant clips, looking first at associated phrases from the metadata, and then using translation tools to return associated clips
- The school server would then query other school servers and the Colingo servers, if they were accessible.
- The ability to use these clips (retrieved clips and locally created clips) to build narratives
- Users would be able to drag/drop clips onto a timeline, creating an interactive playlist
- The integrated video player would playback the mashup of videos
- The ability for multiple XO users on the local mesh network to collaboratively create Colingos
- Users will be able to share clips or mashups with anyone they specify – locally or on the internet, if access is available.
Activity vs Content Bundle
There are two ways to develop for OLPC:
- Creating an activity
- ColingoXO is our activity. Activities are robust, python frameworks that enable programming the camera, creating databases with SQLite, etc.
- Creating content bundles
- A content bundle is a curated collection of content viewable from the library. They are limited in functionality and primarily intended to house content.
Our content bundles
On November 2, 2007, Colingo released four content bundles:
- All our movies
- English-only
- Spanish-only
- Portuguese-only
- We will be releasing more content bundles shortly,
- Lessons 2 - 10 of basic English
- Lessons 2 - 10 of basic Spanish
- Lessons 2 - 10 of basic Chinese
Please help test our content bundles, and see known issues with them. You can also watch an online demo if your web browser can handle OGG theora video.
Get involved!
We need your help to create a revolutionary educational tool completely in line with the XO's constructivist educational philosophy. If you are committed the ideals of Free Software and are interested in helping to develop a platform for global language exchange, please say hello in IRC, check out our dev environment and learn how to become a Colingo developer.
Code
Checking out code from Colingo
Note (8/23/07): We are currently hosting ColingoXO code on the Colingo development server. Please see the instructions about how to check out code from the ColingoXO repository.
Our sugarized SVG activity icon
Integrates cleanly into the activity bar and the Home view activity ring.
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <!-- Created with Inkscape (http://www.inkscape.org/) --> <!-- by Ben Lowenstein 10-08-07 --> <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [ <!ENTITY fill_color "#FFFFFF"> <!ENTITY stroke_color "#000000"> ]> <svg xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" version="1.0" width="55" height="55" viewBox="0 0 55 55" id="svg2160" xml:space="preserve"><defs id="defs2183"> </defs><line style="fill:none;stroke:&stroke_color;;stroke-width:3.38274455;stroke-linecap:round;stroke-linejoin:round;display:inline" id="line2174" y2="34.398335" y1="41.699673" x2="28.363632" x1="32.03511" display="inline" /><path d="M 80.538794,14.634424 A 3.7837837,5.7432432 0 0 1 82.360937,3.919944" transform="matrix(4.5103261,1.9208816,0,1.503442,-344.36635,-144.93321)" style="fill:none;fill-opacity:1;stroke:&stroke_color;;stroke-width:1.99899995;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" id="path4147" /><path d="M 80.538794,14.634424 A 3.7837837,5.7432432 0 0 1 82.360937,3.919944" transform="matrix(-4.5103261,-1.9208816,0,-1.503442,401.38327,199.09105)" style="fill:none;fill-opacity:1;stroke:&stroke_color;;stroke-width:1.99899995;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" id="path5118" /><line display="inline" x1="35.277481" x2="28.57617" y1="30.112953" y2="34.113159" id="line5120" style="fill:none;stroke:&stroke_color;;stroke-width:3.38274455;stroke-linecap:round;stroke-linejoin:round;display:inline" /><line display="inline" x1="25.064001" x2="28.735477" y1="12.559251" y2="19.86059" id="line5122" style="fill:none;stroke:&stroke_color;;stroke-width:3.38274455;stroke-linecap:round;stroke-linejoin:round;display:inline" /><line style="fill:none;stroke:&stroke_color;;stroke-width:3.38274455;stroke-linecap:round;stroke-linejoin:round;display:inline" id="line5124" y2="20.145765" y1="24.145969" x2="28.522943" x1="21.82163" display="inline" /></svg>
A script for DV capture automagic
This should help OLPC video content creators running linux (only tested on Debian Etch) who have:
- dvgrab
- ffmpeg2theora
- ffmpeg
installed. The shell script will:
- Connect to an attached firewire camera
- Capture all footage on tape and break footage by timestamp
- save all files as oggs (optimized for XO playback), dv, and flv
#!/bin/bash ## Script to take a raw DV file and split it by timestamp ## Robin Walsh 10/2007 echo "Please input the series title. The resulting files will be placed" echo "in a subdirectory by this name." read -e seriestitle; echo "Now please give me a filename prefix for the DV files I'm about to split up." read -e prefix; ## First, let's create the directory structure. mkdir -p $seriestitle/dv $seriestitle/flv $seriestitle/ogg ## Next, lets's grab the DV from the camera and split it by timestamp into AVI files. dvgrab --autosplit --timestamp --format dv2 $seriestitle/dv/$prefix- echo "I can wait here while you check for needed video adjustments." echo "Just hit return when you're ready to convert the grabbed DV into ogg and flv." read -e waiting; ## Here's the for loop that will convert the original AVI files into .flv for f in `ls $seriestitle/dv` do filenameflv=`basename $f .avi` ffmpeg -i $seriestitle/dv/$f -s 320x240 -ar 44100 -r 12 $seriestitle/flv/$filenameflv.flv done ## Here's the for loop that will convert the original AVI files into .ogg for i in `ls $seriestitle/dv` do filenameogg=`basename $i .avi` ffmpeg2theora -x 240 -y 160 -v 5 -a -1 -o $seriestitle/ogg/$filenameogg.ogg $seriestitle/dv/$i done
See also
Activity Summary
Icon: | Sugar icon::Image:Colingo-sugar.svg |
Genre: | Activity genre::Language Learning |
Activity group: | ,|x|Activity group::x}} |
Short description: | [[Short description::ColingoXO creates a platform for constructivist language-learning by letting children splice video clips to create and share video narratives. Children will be able to use all video clips from the Colingo video library or alternatively record new clips with the XO camera and microphone.]] |
Description: | |
Maintainers: | ,|x|Contact person::x}} |
Repository URL: | |
Available languages: | ,|x|Available languages::x}} |
Available languages (codes): | ,|x|Language code::x}} |
Pootle URL: | |
Related projects: | Related projects,|x|Related projects::x}} |
Contributors: | ,|x|Team member::x}} |
URL from which to download the latest .xo bundle | Activity bundle:: |
Last tested version number: | |
The releases with which this version of the activity has been tested. | ,|x|Software release::x}} |
Development status: | |
Ready for testing (development has progressed to the point where testers should try it out): | ,|x|Ready for testing::x}} |
smoke tested : | |
test plan available : | |
test plan executed : | |
developer response to testing : |