This is a list of PageKite-related project ideas for Google Summer of Code applicants. This list should by no means be considered "complete", we are more than open to other suggestions inspired by these or the PageKite concept itself.
For details on what PageKite is, see the links in the sidebar.
Note: Our application to take part in GSoC 2011 was not accepted by Google this time. We'll try again next year! In the mean-time, feel free to take inspiration from this list - whether you are a student or not!
PageKite is a young project, just shy of a year old. As such, there are many, many opportunities for students to have a large impact.
Our ultimate goal is to encourage the decentralization of the WWW and make it really easy for anyone to host their own web server, so any projects which help accomplish that by using or improving on PageKite fall within our scope of interest.
Ideas are explicitly not limited to those which are likely to generate near-term revenue for the PageKite Service, we take a longer view of things and feel that any application which raises awareness of the technology and makes it more useful will ultimately benefit both the open source community and the company itself.
The following ideas fall roughly into roughly three categories: improvements to
pagekite.py, re-implementation of the PageKite protocols, and interesting applications of the technology.
Detailed descriptions follow.
Required skills: Python, Mac OS X Difficulty: medium Licensing: AGPL Mentors: Bjarni R. Einarsson
The goal of this project is to integrate PageKite into Mac OS X as well as possible. Sub-projects could include:
Required skills: C or C++, socket programming Difficulty: medium/hard Licensing: LGPL, Apache or BSD style Mentors: Bjarni R. Einarsson
The goal of this project is to create a high-performance and/or low-footprint PageKite front-end, which could either be suitable for pagekite.net-style widely shared front-end deployments or, alternately, embedded in F/LOSS router software.
Rather than starting from scratch, this project should probably build on top of an existing low-footprint/high-performance HTTP reverse proxy (for example nginx or lighttpd), as a module if possible, or implemented on top of a mature event-driven library such as libevent.
Required skills: C or C++, socket programming Difficulty: easy to hard Licensing: LGPL, Apache or BSD style Mentors: Bjarni R. Einarsson
The goal of this project is to create a light-weight C or C++ implementation of the PageKite back-end, for use on embedded devices.
There are a few different approaches to this problem which could all be useful and vary significantly in complexity:
pagekite.pyback-end functionality (preferably based on the libevent support above).
Required skills: Java, socket programming Difficulty: easy to hard Licensing: LGPL, Apache or BSD style Mentors: Bjarni R. Einarsson
The goal of this project is to create reusable Java code which Java and Android developers can use to add publicly visible HTTP servers to their applications.
Required skills: Delphi (reading Python) Difficulty: medium to hard Licensing: GPLv2 Mentors: Massimo (rejetto.com), Bjarni R. Einarsson
HFS is an easily installed stand-alone HTTP server for Windows. By adding native PageKite support to HFS, users of HFS would no longer need to know how to (or have permission to) reconfigure their routers or firewalls in order to make their sites visible.
The level of complexity for this task depends on the level of performance desired: implementing a blocking single-request server will be relatively easy, but full support for multiplexing multiple requests over the PageKite connection will require a more complex asynchronous design.
This project would be mentored by Massimo Melina, the principle author of HFS, with back-up and guidance on any PageKite-related issues from Bjarni.
The goal of this project is to create a trivial-to-install Unhosted wallet and/or key-value store which uses PageKite to expose itself to the wider Internet. This would allow users of Unhosted web-apps to keep their credentials and/or application data on their own hardware, for maximum privacy.
Once a working Python program has been created, a logical second stage for this project would be to explore various platform-specific packaging options for making it easy to install on Linux, Windows or Mac OS X.
See http://unhosted.org/ for details on the Unhosted project and protocols.
This project would be mentored by Michiel de Jong, the founder of the Unhosted project, with back-up and guidance on any PageKite-related issues from Bjarni.
This would be a project to create a personal identity server which could be carried around in your pocket (an Android App). Some things a server like this could do:
The access control use-case is a particularly interesting one, as it could provide a decentralized way to do access control using credentials users are already familiar with - names, e-mails or phone numbers. As an example:
This application could be developed either as a prototype, using SL4A, in which case it could directly build on top of
pagekite.py, or it could be a stand-alone Android application and the implementation of a native PageKite connection left as a separate project.
pagekite.pyto do uPNP.
pagekite.pyand the PageKite protocol for streaming media and rebroadcasting one stream to many recipients (generalized ice-cast).
connectbot(on Android) and/or popular VNC clients.