Google Summer Of Code Ideas |
|
This is the central list of project ideas for the Lua Community's application to the 2008 Google Summer of Code program. Jim Whitehead is the administrator for this effort. Please contact him with any questions you may have.
Click on each title to go to a more detailed description of the projects. Please note that the scope of the project is negotiable: if you think the project you'd like to undertake can't be completed in two months, we can agree to reduce its scope.
If you are a student interested in working with Lua, an amazing, open-source language, gaining valuable development experience, and getting to know open-source developers from around the world, while getting paid, we encourage you to apply to one of our Google Summer of Code projects [1]. Or propose your own!
Please see Google's SoC FAQ [2] for more information on the program. There are several good sources of advice for choosing a project to which you should apply [3], expectations of student participants [4], how to write a compelling application [5], and proposing your own project [6].
If you have an idea, please include it in the list below. Put "MENTOR REQUIRED" in the mentor line if you are unable to serve as mentor for the project. Contact Jim Whitehead (see above) with any questions.
Mentor:
Level:
Brief description
Mentor: Jim Whitehead
Level: Medium
Recently, the Lua team put together a live demo of Lua that runs via the web[7]. This is a step in the right direction for giving people a chance to experience the language without needing to download anything. Unfortunately it's in very much "proof of concept" mode at the moment, and there are number of improvements that could be made to make it a more educational demonstration (see [Try Ruby!]).
See also: list discussions: [26], JavaScript-based LuaImplementations
Mentor: MatthewBurke
Level: easy to medium
The Open Scripting Architecture[8] is an extendible mechanism for inter-application communication in Mac OS X. Although originally designed for Applescript, it is possible to support other languages and their are OSA implementations of Ruby[9], JavaScript[10], Perl (supposedly).
This project entails writing a library to allow Lua scripts to respond to OSA events.
Mentor: Eric Wing, (more to come?)
Level: hard
The Lua bridge to Objective-C[11] is a language binding between Lua and Objective-C. The current implementation currently works, but is very basic, especially compared to other language bridges such as PyObjC[12] and Ruby
Cocoa[13]. The primary users of Obj-C are Cocoa developers that develop for OS X. In Mac OS X 10.5 Leopard, Apple shipped'Bridge Support' which is intended to help language bridges more easily cover all of Apple's APIs, including ones that are C-based (not just Obj-C based). The (ambitious) goal of this next generation Lua/Obj-C Bridge is to make the Lua binding first class, on the level of Py
ObjC and Ruby
Cocoa. A secondary goal is to also consider how to build/apply the bridge to OS X on the iPhone as Lua is sufficiently small and easy enough to embed in an application, whereas embedding PyObjC or Ruby
Cocoa may be less appealing in this environment.
This project may be too big for a 2 month project, but would probably benefit from any groundwork that can be done in this period.
Mentor: FabioMascarenhas
Level: Medium
Implement as much as possible of Lua's standard library in Lua itself, using thin wrappers around the ANSI C functions where necessary. This is useful for bootstrapping alternative Lua implementations (LuaImplementations).
See also: StringLibraryInLua
Mentor: Petite Abeille
Level:: Medium
Lulu, a Lua implementation of Lucene
See also: [Lucene implementations in languages other than Java]. Sputnik mail list: [14][15][16]
Mentor: YuriTakhteyev?
Level: hard
Provide a high-quality binding to Xapian[17] (an indexing system). Then build a solution for indexing Lua tables based on this binding (More or less like XML retrieval works).
Mentor: FabioMascarenhas
Level: Medium
A special LuaSQL driver that wraps another LuaSQL driver in a non-blocking server (yielding to a scheduler such as Copas when it would block). The "protocol" can be serialized Lua data, either as strings or using Pluto, and the communication medium can be sockets or pipes.
Mentor: ArielManzur
Some of the tasks that might be suitable for SOC:
Level: Medium
Improving the acquisition of the Qt interface for tolua++. Currently, the Qt interface exposed to tolua++ is provided with the lua_qt package, on a series of .pkg files which are difficult to maintain. Using a more automated way to obtain the Qt interface (such as parsing the output from gccxml or a similar tool) would make it easier to keep up-to-date. This would be implemented as an add-on to tolua++, distributed with lua_qt (no need to patch/recompile tolua++).
Level: Medium
Implementing Qt-specific features that are 'scripting-language-friendly', such as Qt's property system, or things that are not accessible through the standard c++ interface, like qlinguist (more examples needed).
Level: Easy (should probably be combined with another task)
Cross platform building/distribution. The package should easily build under all platforms supported (linux, osx, mingw, visual studio (assuming qt's free distribution is buildable with microsoft's tools)).
Mentor: MatthewBurke and Brian McCallister?
Level: Medium-Hard
Mod_wombat is a module for the Apache webserver that enables a programmer to use Lua for scripting web pages. The source code resides in the Apache subversion repository and can be accessed at [18]. Slides from Brian's talk on mod_wombat internals can be found at [19].
There are a number of tasks to be undertaken to improve mod_wombat. See ModWombat for details.
Mentor: YuriTakhteyev?
Level: easy to hard
Sputnik[20] is a "generalized wiki" written in Lua. (Sputnik looks like a wiki out of the box but is designed to be extended and eventually turned into something entirely different.) There are many things that could be done, and the tasks vary from relatively easy to fairly difficult.
By far the most needed task is:
Other tasks are:
Mentor: Eric Wing, Peter Drahoš, Peter Kümmel
Level: medium
[CMake] is a cross-platform, open-source build system, and provides a family of tools designed to build, test and package software. Famous C++ based [projects] like KDE4, or Scribus use it. CMake currently supports only a home-grown scripting language.
Here [CMakeLua] comes in: its intending is to supplement, and in the long run to replace, CMake's scripting language with Lua.
CMake is written in C++ and builds on all common platform, therefore you need at least some C++ knowledge.
Tasks:
Within the 2 months this project could reach a mature develoment status, and has the chance to go upstream into the official CMake repository.
See also: LuaBuildSystems
Level: Medium to Hard
Auctioneer[21] is an open source AddOn? for World of Warcraft. Its purpose is to provide a market price for items listed inside of the World of Warcraft Auction House. However these prices change over time, so an idea we've had for a while is to implement an in-game graphing module to visually represent the changes in price over a period of time.
This project would require the creation of a stats module to gather the raw statistical information from Auctioneer Advanced (API already available). The other major component is the creation of a graphics lib to be able to draw simple graphs in-game. For more information, please login to irc://chat.us.freenode.net/Norganna and ask for MentalPower.
Mentor:
Level: Advanced
The idea is to generically describe and validate the constraints of Lua configuration data (i.e. a Foo is a list of 0 or more Bar; a Bar is a table containing 1 or more string keys pointing to Zig, Zag or Foo; so on and so forth).
We've looked for such a tool before at work, and the closest we found was an example Norman Ramsey posted[27], which was interesting to play around with, but not general enough to cover any but our simplest cases.
Ideally, the syntax would be succinct yet expressive. For instance, compare Relax NG's compact syntax with it's regular syntax (or with other XML schema validation syntaxes).
Mentor: MatthewBurke
Level: Easy-Medium
There are a number of Object-Oriented languages that don't use classes to organize objects. Instead, new objects are created by cloning existing objects and any object can have its properties dynamically modified. Example languages include Self[22], JavaScript[23], Io[24], and Newtonscript[25].
This project involves designing and implementing a metaobject protocol (MOP) in Lua that would enable prototype-based programming.
See also ObjectOrientedProgramming and LuaMOP bundled with [AspectLua].