| Home | Podcasts | 

Open Educational Resources Africa: Is it built on proprietary technologies?
419 days ago

Some things just leave me gobsmacked. I cannot be absolutely sure of what I say, so I am willing to be proven wrong!

Today I saw a post that appeared on my Facebook profile from a FB contact about a blog post that he made about OER Africa. The site for OER Africa is - as far as I can tell - running on proprietary technologies! I could understand this if there were a scarcity of skills to build on a Free Software stack in Africa, but there is not. For example, any one of the nodes of AVOIR could build a site like that in a few days (or hours), and there are AVOIR nodes in 16 institutions around Africa. They work exclusively with African-made Free Software (open source). So why lock the so-called OERs up in proprietary technology?

OER Africa

More importantly, this highlights the absurdity of the notion of 'open'. It is actually utterly and totally devoid of values, so people can do stuff like this and still call it 'open'. That is why I prefer to keep the notion of Freedom in the concept, and prefer to talk about Free Educational Resources.  I allow for the notion of open to be included by talking about F/OER (Free and Open Educational Resources). But surely one of the key aspects of legitimate F/OERs is that the entire stack is also Free.

OER Africa really needs to get serious about Freedom throughout the entire stack if it is to be taken seriously. Also, a key to the success of any such initiative is going to be building the ecosystem. It is always going to be easier to build an ecosystem in partnership with other initiatives that are building a compatible ecosystem. Furthermore, 'community before content' should be the mantra of any attempt to build a real 'F/OER' ecosystem. In its current incarnation, atop a proprietary software stack, and finding zero synergy with related software initiatives, I have to wonder if OER Africa deserves any further attention, or if its just another poorly conceived donor project that will die a natural death when the donor funds dry up.

I don't know, but I do feel a bit disgusted. I would prefer it otherwise.



Tags for this post

       
Bookmark this post Trackback URL  No trackbacks were found for this post Attribution Share Alike

Canon 50D: using the top controls
421 days ago

I have a Canon 50D digital SLR. Its a great camera to play with, and I am finally learning to take control of the camera. There are a few videos on YouTube that are good for working with this camera, so I will share them on here, as much for myself to find them again as any other reason.

Here are a few pictures that I have taken with this camera. I am not sure if I did the Flickr thing right, so there may be some older ones mixed in.



Tags for this post

       
Bookmark this post Trackback URL  No trackbacks were found for this post Attribution Share Alike

New module for #Chisimba: Apture integration
425 days ago

In my minute little bit of spare time, I created a module for Apture use in Chisimba. Apture is a Web 2.0 site that allows you to build multimedia content into your content by providing drag and drop for video, audio, media from hundreds of sites. Its pretty cool stuff. You don't use it in edit  mode, you edit it after saving in the live page! Check out some of the links in this page that have little icons next to them to see Apture in action.

The module is still pretty alpha, but it is stable enough for me to risk installing it on the KIM site, as well as to use it here on dkeats.com. To use it, you need to add some code to the page template of the skin you are using. The code goes into your page template before the </body> tag, and if you have any scripts at the end of your page, you need to put this code BEFORE those scripts. The code you add is:

    // Insert the apture module code for see www.apture.com
    $objModule = $this->getObject('modules','modulecatalogue');
    // See if the apture module is registered and set a param
    $isRegistered = $objModule->checkIfRegistered('apture');
    if ($isRegistered){
        if (!isset($suppressApture)) {
            $objApture = $this->getObject('apturecode','apture');
            echo $objApture->getAptureScript();
        }
    }

You can see this functionality in the kim_wits skin, which is in the skins repository. The module will be added to the User menu, so on a live site, you should use Configure module links to remove it. I will fix this in the next version in a day or so.

To use it you need to go to [LINK] http://www.apture.com[/LINK] and click the button "Download Apture Plugin". choose "Other Platform" and then "Get started now". Go through the registration and add your site to the list of sites you are installing apture on. You can use http://localhost on a test site - it seems to work OK.

When you have saved your site, you will get a code snippet of the type

<script id="aptureScript" type="text/javascript"
src="http://www.apture.com/js/apture.js?siteToken=6Bs4YyH";
charset="utf-8"></script>

If you don't see it, click installation instructions. The token is the bit after the equal sign in the siteToken=6Bs4YyH part of the script, and in this case it is 6Bs4YyH. Copy this.

Go to User parameters on the user menu in your chisimba site (requires Userparamsadmin), and add a parameter 'apturetoken' and make its value the token as noted above, in this case '6Bs4YyH'.

Once you have done this, and the apture module is installed, you should see a howto video popup the first time you open your enabled site. To activate it, hit the letter e (on a saved page, not in the FCKeditor).  Select some text, and see what happens! Its pretty cool, no?

UPDATE: Because it is quite tricky to decide whose Apture Token to use for any given page, I have enabled this feature only in the blog module. If you are a developer, and you want to add this feature to another module, you need to add username detection to the bestguess class in the utilities module. Then you need to edit the apturecode class in the apture module, and add the module code for your module to the array that limits access. That is, change:
  $permittedModules=array('blog');
to
  $permittedModules=array('blog', 'yourmodule');

UPDATE: It is really hard to get this kind of application working without access to the back end or some kind of support. The Apture support people don't seem to respond much to ordinary requests. I guess they are swamped with requests for support from more significant players. I am not sure that it is possible to use Apture properly with a dynamic application such as Chisimba.



Tags for this post

       
Bookmark this post Trackback URL  No trackbacks were found for this post Attribution Share Alike

Google SMS services: a good thing for 'Africa'?
434 days ago

A blog post appeared yesterday on the official Google Blog entitled Extending Google services in Africa ( http://googleblog.blogspot.com/2009/06/extending-google-services-in-africa.html). The post talks about one-third of the population owning a mobile phone and many more having access to one, but that most only have voice and SMS capabilities. Google has therefore focused on SMS, and has a number of SMS based applications, including Google Trader and Google SMS Tips. The blog post talks about information poverty.

The story is reiterated on the official Google Afirca Blog under the title Google SMS to serve needs of poor in Uganda. The focus of that article is on the SMS marketplace application, which is probably one area where SMS can be useful, in that there is a business need,  and the cost can be passed on to the customer through normal business practices. However, I am worried that Google seems to be suggesting that 'the poor' can be made information rich by buying prepaid SMS bundles from MTN (MTN in Uganda is currently the only service provider supporting the service).

Interstingly, while it is true that a lot of current phones only support voice and SMS, what the Google blog post fails to point out, SMS is still very expensive in most African countries. Indeed, extensive use of any of these SMS services, apparently available only in Uganda right now, is likely to cost quite a lot of money. With many African countries dealing in prepaid services at higher rates, the people who are information poor will pay significantly to alleviate their information poverty using SMS.

Indeed, I can easily imagine running up an SMS bill that would exceed the cost of a low-end phone that can do basic web browsing and run XMPP based services. This is a bit of a Catch-22 type of situation in that spending money on SMS might prevent people from accessing cheaper sources of information by keeping them from getting a better phone. For example, a phone that can support XMPP messages (most modern phones) can retrieve text based information for about 1/2000th the cost of sending an SMS. That means you can do around 2000 searches for the price of a single SMS search.

XMPP based communication is widespread in Africa, particularly in South Africa where the MXiT application is extremely popular among young people, with about 11 million subscribers. Other XMPP applications that can run on phones work just as well, you do not need to subscribe to the MXiT service.

Paul Scott of the University of the Western Cape's (UWC) Free Software Innovation Unit (FSIU) has developed some innovative services based on XMPP messages, and thanks to his work and that of Wesley Nitsckie, adding new ones within the Chisimba framework is very simple to do. The framework was developed in the African Virtual Open Initiatives and Resources (AVOIR) project to foster collaboration in Software Engineering in African institutions using Free Software (Open Source) as the vehicle. The UWC XMPP based tools in Chisimba have already been used extensively in drug counselling. Paul has built some of this into a XMPP based social networking service at http://www.peeps.co.za. For example, you can send a dictionary lookup or a Wikipedia request to Paul's service and get the results back on your phone for a tiny fraction of the cost of sending an SMS.

So the question is, are SMS-based services going to contribute to information wealth, or further entrench information poverty. The answer is probably somewhere in between, but certainly not in the space the Google marketing hype would have us believe. And I am a big fan of Google!

[COLORBOX:boxtype=bluebox] Links

More on Google SMS services http://www.google.co.ug/mobile/sms/
Paul Scott's XMPP based social network http://wwww.peeps.co.za
African Virtual Open Initiatives and Resources http://avoir.uwc.ac.za
Business Times article on drug advice services http://www.thetimes.co.za/Business/BusinessTimes/Article1.aspx?id=1017017
[/COLORBOX]



Tags for this post

       
Bookmark this post Trackback URL  No trackbacks were found for this post Attribution Share Alike

My SlideShare presentations
435 days ago

Here are all the presentations that I have on slideshare. They are all licensed under a Creative Commons, Attribution-ShareAlike license.



Tags for this post

       
Bookmark this post Trackback URL  No trackbacks were found for this post Attribution Share Alike

Learning new technologies
441 days ago



Tags for this post

       
Bookmark this post Trackback URL  No trackbacks were found for this post Attribution Share Alike

A #Chisimba developer and demonstration installation and a Bash script to automate it
444 days ago

When I set up the PHP5 development framework, Chisimba, on my laptop, I always follow a practice that I have used for development and demonstration purposes since we first created Chisimba. I have written about it before on the nextgen-online mailing list, and David Wafula published this on the AVOIR site. Hence, this has been published before, but what I am going to do here is to provide a bash script that automates most of this process.

The install takes advantage of the soft linking capabilities of GNU/Linux to allow multiple installations to run from the same code base. In that way, you can develop different functionality with different installs but you only need to maintain a single code base. In addition, you can run demonstration sites on your laptop without having to deal with the confusion of maintaining multiple checkouts or copies of the Chisimba code. This basic setup can also be used to create multiple live sites, and I use this on http://kim.wits.ac.za for my test and play sites.

I use Eclipse for development, so I check out the code using the Subversive plugin. However, here I will give the instructions for command line checkout. You can adapt them if you use a GUI for interacting with Subversion.

Firstly, I always do my Chisimba checkouts in my home directory. The reason for that is that I use RSYNC to back up my home directory quite often, so if I have done some editing and not committed the code to subversion yet, the chances are it will be in my backup. Of course, the only reason not to commit code to subversion is if it is a core module that will break everything. Since I work mainly on filters, this is the case, so I need them to be working properly before I commit. Normally, youwould just commit your code to subversion and not worry about backups.

I create a directory called chisimba in my home directory, so when I begin, I have

/home/dkeats/chisimba

I am using Ubuntu (Jaunty at the time of writing), so my webserver root is in

/var/www

So, with that bit of background, lets get on with it.

Step 1: Check out Chisimba from subversion

There are three separate sets of code to check out, the framework core, the modules and the skins (if you need them).

svn co https://cvs2.uwc.ac.za/chisimba/framework/trunk/ framework
svn co https://cvs2.uwc.ac.za/chisimba/modules/trunk/ modules
svn co https://cvs2.uwc.ac.za/chisimba/skins/trunk/ skins

This will leave you with three directories

/home/dkeats/chisimba/framework
/home/dkeats/chisimba/modules
/home/dkeats/chisimba/skins

The next step is to create the web directory, and build the symbolic links.

Step 2: Create web location and make symbolic links

First we are going to enter the webroot directory, and make a directory for our instance of Chisimba. It might be chisimba, or you might name it for the type of instance you are going to install. In this case, I am going to install a content management system (CMS) demonstration, so I call the directory cms.  I chmod the directory to 777 so I can write to it, and so can the webserver. You should not do that on a real web server that is accessible on the Internet, rather use the production settings.

cd /var/www
sudo mkdir cms
chmod 777 cms -R

Now we can change to the cms directory, and create symlinks to the appropriate parts of the framework. We do the files and directories individually this way so that we do not create links that will mess up the subversion repository. This keeps the repository clean and means we can commit back code from our code base without worrying about the repository structure.

cd cms
ln -s /home/dkeats/chisimba/framework/app/*.php .
ln -s /home/dkeats/chisimba/framework/app/*.php .
ln -s /home/dkeats/chisimba/framework/app/classes/ .
ln -s /home/dkeats/chisimba/framework/app/core_modules/ .
ln -s /home/dkeats/chisimba/framework/app/cron/ .
ln -s /home/dkeats/chisimba/framework/app/installer/ .
ln -s /home/dkeats/chisimba/framework/app/lib/ .

Now we need to make a directory for the skins. While we could symlink the skins directory as above, it would create problems if we wanted to add skins from the skins repository later. Therefore, each instance of Chisimba should have its own skins directory that links to the root skins and any skins from the skins repository that you want to use. Here we only link back to the core skins, but adding other skins from the skins repository could be done the same way.

mkdir skins
cd skins
ln -s /home/dkeats/chisimba/framework/app/skins/* .
cd ..

We need to create a separate user_images directory for each instance for the same reasons. Each instance will have different user images, and also, we do not want user_images getting back into subversion. This keeps our subversion checkout clean. Therefore, we create a directory, and link in the default images from the framework core.

mkdir user_images
cd user_images/
ln -s /home/dkeats/chisimba/framework/app/user_images/* .
cd ..

Chisimba expects to find the modules that are outside of the core in the directory packages. Therefore, we create this directory, and symlink all the modules into it. Once again, we do it this way to keep the subversion repository clean, and avoid accidental contamination.

mkdir packages
cd packages
ln -s /home/dkeats/chisimba/modules/* .
cd ..

Lastly, we chmod the installation directory to 777 so that you and the webserver have write access to it, keeping in mind that using 777 on any machine on the Internet as a webserver is a recipe for getting hacked. Rather use the production settings as recommended in the Chisimba installation guide for production servers.

sudo chmod 777 cms -R

Thats it, you now have a fully operational Chisimba instance, and you can repeat this procedure for as many Chisimba instances as you would like to have on your developer machine. Now you can proceed with the install.

Step 3: Install your instance

You can now install your instance of Chisimba by opening http://yourserver.yourdomain/yourinstancename/ in the usual way. For example, in my case, I would open http://localhost/cms/ and run the installer. Before you use my automated script, you should do this manually at least once, so you have an understanding of how it works.

Automating the process

Having just done this process for the umteenth time, I decided to make  very simple bash script to automate it. To make it work, you first need to edit the script and change some settings as indicated in the script itself. The lines that you need to edit are:

CHISIMBA_SVN="/home/dkeats/chisimba/framework"
MODULES_SVN="/home/dkeats/chisimba/modules"
SKINS_SVN=="/home/dkeats/chisimba/skins"
SERVER_ROOT="/var/www"

Change the above lines to correspond to your setup. If you have followed the checkout instructions, and you are running Ubuntu, you should not need to change anything.

The script is as follows:

#!/bin/bash
#  This script creates a developer clone of a chisimba
#  subversion checkout. Do not use this on a production
#  server. It is for setting up a developer machine only.
#  Author: Derek Keats
#  License: GPL 2

#  Set the chisimba base directories for core, modules
#   and skins (this assumes that all Chisimba
#   files follow standard naming protocol in that directory)
#   IMPORTANT: Note that there is no trailing /
CHISIMBA_SVN="/home/dkeats/chisimba/framework"
MODULES_SVN="/home/dkeats/chisimba/modules"
SKINS_SVN=="/home/dkeats/chisimba/skins"

#  Set the webserver root location. This is usually /var/www
SERVER_ROOT="/var/www"

#Check if there is a supplied $1 input
if [$1 = ]; then
   echo "You did not supply a directory name to create."
   exit 0
fi


#Change to the server root directory
cd $SERVER_ROOT
echo "In $SERVER_ROOT, which contains"
ls -l
echo
echo

#Create the Chisimba instance directory
sudo mkdir $1
chmod 777 $1 -R
cd $1
echo "Created $1 directory"

# Create the symlinks to things that can be safely linked
ln -s $CHISIMBA_SVN/app/index.php .
ln -s $CHISIMBA_SVN/app/gateway.php .
ln -s $CHISIMBA_SVN/app/classes/ .
ln -s $CHISIMBA_SVN/app/core_modules/ .
ln -s $CHISIMBA_SVN/app/cron/ .
ln -s $CHISIMBA_SVN/app/installer/ .
ln -s $CHISIMBA_SVN/app/lib/ .
echo "Linked the core into $1, which now contains"
ls -l
echo

#Create a directory for skins and link it in
mkdir skins
cd skins
ln -s $CHISIMBA_SVN/app/skins/* .
echo "Created skins directory and linked core skins"
ls -l
cd ..

#Create a directory for user_images and link it in
mkdir user_images
cd user_images/
ln -s $CHISIMBA_SVN/app/user_images/* .
echo "Created user images directory and linked default images"
ls -l
cd ..

#Create a directory for modules and link it in
mkdir packages
cd packages
ln -s $MODULES_SVN/* .
echo "Created packages directory and linked to modules"
ls
cd ../..

#Make it all writeable and horribly insecure
sudo chmod 777 $1 -R
echo "Chmodded it all to VERY INSECURE."
echo "All done. Bye....."

You can download the script from here.

You need to run it as root, so put it somewhere, change to that directory, and run it as:

sudo sh clone-chisimba.sh DIRECTORY

where DIRECTORY is the name of the directory you want to create. For example

sudo sh clone-chisimba.sh cms

Using this script, you can have a new Chisimba demo installed and up and running in less than 3 minutes. As I have been writing this, it has just occurred to me that I could actually turn it into a full install by adding the SVN checkout to it. I will do that another time, test it and make another blog post about it.

 



Tags for this post

       
Bookmark this post Trackback URL  No trackbacks were found for this post Attribution Share Alike
Weblog of: Derek Keats
Login




Remember me

Forgot your password?
HELP

toggle Twitter
You cannot tweet unless you are logged in, and on your own page.
Follow me on Twitter Follow me on Twitter
Friend me on Facebook Add me on Facebook
Chisimba Facebook group Chisimba Facebook group





Afrigator