Google Summer of Code 2008 - Ideas Page
Aptivate intends to take part in the Google Summer of Code 2008. This program is sponsored by Google as a means of promoting involvement by students in open source software development. More information about the program can be found here: http://code.google.com/soc/2008/.
Loband Ideas
Many Internet users in developing countries have to use low bandwidth connections. It is not unusual for an entire African university to have the same bandwidth as a single household in the US or Europe, 2 Mbps, yet pay $5000 - $10,000 a month for it. Consequently it is important that the most efficient possible use is made of the connection.
Loband is aimed at internet users in low-bandwidth environments, often found in developing countries. Loband provides a proxy browser that filters content from browsed pages, reducing webpage sizes by up to fifty times and making browsing possible over slower connections.
Loband is a free online service and the source code is open and available to download. The service receives thousands of hits a day from users in developing countries. Loband's source code is licensed under the GPL, and is written in Java as a servlet application. More information about the Loband project, and endorsements, can be found here.
Difficulty: Medium. Skills: Java, J2EE, HTML
Component API
Loband is built on a number of filters that process different types of content. The project is to modularise these filters, and give them a standard programming interface, so that they can easily be incorporated into third-party applications, such as websites, proxy servers, browser toolbars, etc.
This would help web developers to build websites that work well over low bandwidth (for example by building in a text-only version of the site) and help end users and network administrators to browse websites more effectively over low bandwidth.
New content filters
Loband currently only works on HTML web pages and JavaScript. There are many documents posted online in bloated formats that would be much more accessible through a lightweight HTML interface like Loband. The project is to create Loband filter modules that convert the following file formats into lightweight HTML:
- Adobe Portable Document Format (PDF)
- Microsoft Word document (DOC)
- Microsoft Powerpoint document (PPT)
Filter configuration
Loband currently does not allow users to adapt the level of filtering to their bandwidth and preferences. This project is to make the existing filters user-configurable for different levels of optimisation, such as turning images and layout on and off. This should make Loband more versatile, friendly and acceptable to a larger group of users.
Media transcoders
There are many high-bandwidth video and audio files on the web which are inaccessible to users with slow connections or which waste unnecessarily large amounts of bandwidth.
This project is to create transcoders that can be built into Loband and convert:
- Video files to low-bandwidth (lower bitrate) versions
- Audio files to low-bandwidth (lower bitrate) versions
- Video files into audio files (audio track extractor)
This will allow people to use such content more easily on slower connections than is possible at present. We would host the transcoder on our Loband website and servers.
Lomail
Most commercial webmail services are very inefficient on bandwidth, since they need to send a large amount of HTML with each page and cannot cache pages effectively. But they are very popular in developing countries because they allow users to access them from anywhere without being tied to a service provider or paying a fee. Their design means that they waste around 25% of the Internet bandwidth of universities in Africa and are almost impossible to block.
This project is to develop an ultra-lightweight, ultra-efficient webmail service (e.g. using AJAX). As well as the user interface, it would be ideal to provide it with backends to connect to POP and IMAP servers and popular webmail services, and POP and IMAP front-ends so that users can use an installed software client such as Thunderbird or Outlook Express to further reduce bandwidth use.
This project would be integrated into the Loband service to provide an alternative (and more efficient) way to access the commercial webmail services that currently cannot be used with Loband. We would host it on the Loband website and servers.
Email interface
Users with very slow and unreliable Internet connections may find it easier to request web pages using email rather than with a web browser. In some cases, direct web access is blocked or forbidden over such connections. There are existing web-to-mail gateways, but Loband does not have this feature yet. On the other hand, Loband should offer more document support in future (e.g. PDF, Microsoft Word documents) which the other gateways do not.
This project is to create an email interface to Loband through which users can request and receive filtered pages by email. This should make it possible to use Loband on an even lower-bandwidth connection than at present, and to access files in formats which are currently not accessible via email over low bandwidth.
Bandwidth tester
Many websites offer free "speed test" services. However, most of these are designed for testing broadband speeds and simply do not work (or take far too long) on low-bandwidth connections.
This project is to build client-side and server-side bandwidth testing tools into Loband that work properly and accurately in a low-bandwidth environment. This should help users to understand their own bandwidth availability better. We plan to publish aggregated results which should help to improve awareness and understanding of the problem to policy makers and the general public, and focus further Loband development and help content providers to understand the needs of their users and adapt their content accordingly.
Loband browser plugin
This project is to develop Loband plugins for popular browsers. For example, it could offer a keyboard shortcut to switch in and out of Loband view, to load a page through the loband simulator, to report a problem with a page or change the optimisation level. This should make Loband easier to use.
Speed Simulator
Add functionality to simulate low-bandwidth browsing using a plugin on the client side, to demonstrate the impact that Loband has.
PDA Software
Good up-to-date information is the lifeblood of any development project, from health projects to education and agriculture. Far from being technology for its own sake, PDAs appear in practice to provide a qualitative step change in the ability to collect and manage vital monitoring information. Questionnaires delivered using PDAs provide significantly more accurate data and dramatically decrease the time between data collection and analysis. In an example we worked with we estimated that a survey team with 8 PDA's would replace a 2 metre stack of paper questionnaires over the course of a single monitoring exercise lasting several weeks.
For PDA based monitoring we have been working with EpiSurveyor (http://sourceforge.net/projects/episurveyor), a free, open source tool enabling anyone to very easily create a handheld data entry form, collect data on a mobile device, and then transfer the data back to a desktop or laptop for analysis. Originally developed by DataDyne.org, NGOs use it for their monitoring and evaluation activities. DataDyne are working with the World Health Organisation to implement EpiSurveyor across Sub Saharan Africa, and Aptivate have been working with CAMFED and DataDyne using EpiSurveyor in Tanzania, Zambia and Zimbabwe.
It's a great tool and there are a many features and improvements we could add to make it even better.
At a high level, there are three areas to focus on:
- Addressing usability and interface issues on both desktop and PDA components.
- Developing support for all the stakeholders involved in the entire survey process.
- Generally improving the codebase making it more modular, flexible and portable. Ultimately making it easier for developers to contribute to the project.
Difficulty: Medium. Skills: Java, Eclipse, SuperWaba
Here are some ideas:
Workflow Support
The overall workflow of designing and producing surveys could be well supported by appropriate software.
The workflow needs to support multiple stakeholders involved in the process:
- Project managers
- Question designer
- Translators
- PDA questionnaire designers
- Survey managers in the field
- Interviewers
- Collator
- Statisticians
The following areas need particular attention:
- high-level survey framework design
- management of individual questions, perhaps in a database
- version control of questionnaires and collaboration tools for their creation
- management of translations and tools for translators to use
- the frequent need for paper versions during the review process
- wide scale deployment issues (e.g. how do you manage 50 PDAs across 3 countries carrying out 3,000 surveys?)
- data aggregation
- automated backup
Multi-Language Support
Surveys need to be conducted in local languages, while the design is often carried out in English.
- Managing versioning in the review and translation process should be supported by the software.
- EpiSurveyor should treat a questionnaire in the abstract and readily handle output to different languages (e.g. English and Swahili) allowing easy collection of data from a questionnaire administered in different languages.
- A PDA version of a questionnaire should be able to switch between languages "on the fly" - allowing a question to be viewed in its original language and translated forms.
Data Validation and Questionnaire Logic
Support for in-questionnaire data validation is where PDAs help increase data quality.
- Have a general tool for building validation rules (e.g. the response to question Y is inconsistent with that to question X, are you sure that's what you mean?)
- Implement more complex skip patterns (e.g. skips to different questions depending on responses in a multiple choice response set, ignore certain sections if the respondent is male etc.).
- Implementing a survey timer & individual question timer running in the background as an audit / analysis tool. This ensures that the survey was adequately delivered (e.g. a 40 minute survey should not take 15 minutes) and can point to problem questions if they take too long.
Online IDE
Large open source projects are challenging to engage with. For example, if you wanted to fix a bug in Firefox or OpenOffice, you have to wait hours while downloading and compiling source code that may not work anyway, install a ton of dependencies and work your head around very complex build scripts and procedures.
The idea for this project is to make it quick and easy to start hacking on these projects. Ideally you should be able to just visit a website to access a pre-built environment where the latest code is already checked out and compiled. Then you can just run it to try to reproduce a bug, run it in a debugger, modify it, incrementally build it, etc. This should massively increase the opportunities for skilled and busy people to contribute to open-source projects.
Implementation options are deliberately left open, with the only goal being to reduce the time taken for a new volunteer to be able to run or modify the latest trunk version of a large open-source project (over 100,000 lines of code) to 10 seconds. Implementation ideas/starting points:
- Create a downloadable version of the Eclipse IDE as a Java applet that runs in a browser and stores all your files, configuration and workspace on a server online
- Create a new VNC desktop and scratch filespace for each user, which is deleted when they log out
Either way, all the necessary compilers, tools, libraries, etc. must be instantly available, along with the latest version of the code compiled as object files with debug support, so that building the project succeeds instantly with no changes, and after making a change, only the affected files need be rebuilt, as quickly and easily as possible.
We would then host the build environment for some open source projects, and they would be free to host it themselves.
Difficulty: Hard. Skills: Unix sysadmin, Java, C/C++
