Project Ideas for Google Summer of Code 2008
Last updated at 4:46 pm UTC on 13 March 2009
See also Project Ideas for Google Summer of Code 2007
Mentor: Andreas Raab
The goal is to build development tools for HydraVM allowing users to edit code with the UI running in the "primary" image but the actual editing performed in the "secondary" image. Starting with some reasonable front-end framework (Omnibrowser for example) the tools would use Hydra channels to communicate the actual editing request to the secondary image (bonus points are awarded if this is done atomically upon a commit request ;-) It is important that the code required in the secondary image is minimal itself so that the tools can be used to build truly minimal images. The range of possible results is variable - minimally just providing a browser but optionally including additional reflective tools like senders/implementors, inspectors, the debugger etc.
Mentor: Janko Mivšek
The goal is to build a web portal of all Squeak code ever written. Code should be accessible to search engines like Google Code Search and each package/class/method should have nice bookmarkable Url. This is important (besides others) for better visibility and promotion of Smalltalk among other languages, which have all code accessible on the web. Portal is supposed to be written using Aida/Web framework to leverage its strong Url support.
Mentor: Esteban Lorenzano
The goal is to build an OpenDBX (http://www.linuxnetworks.de/doc/index.php/OpenDBX) plugin who will allow users to perform relational database operation, through a truly open source library. We, -the squeak comunity- should be able to interact with major database engines (such as oracle and mssql, besides those who are open source, postgresql and mysql). Also, we should be able to integrate this plugin with Glorp, so we can produce a complete solution to relational access.
Mentor: Stephane Ducasse and Mathieu Suen
The goal is to enhance the new compiler.
- One of the task is to provide a better error handling:
- Report error of token that is not in the Scope (ie Class not define, variable not in the scope,..)
- Provide a way to capture errors. For example when Monticiello load code it should be able to mute errors and make a report at the end of the load.
- Another task is to work on the Parser.
- Parsing is slow. May be a hand written Parser would be better and be easier to report errors.
- The Parser should also be able to work with a syntax highlight (eg Shout)
- Work on a Bootstrap compiler:
- When you are working on the compiler often you break it then since you have no rescue compiler you will be jammed. The solution is to automate a copy of the compiler and make it possible to switch between them and also adopt fixes...
- Make a better model of Scope and Varaible:
- Now the scope and variable models are very complex. The idea would be to design a better model. It would be profitable for the ir-decompiler and the ast-to-ir-generator.
Mentor: Stephane Ducasse
The goal is to bridge Squeak and GTK and continue previous effort in that direction.
Mentor: Klaus D. Witzel and Pei Wang
The goal is to port OpenNARS (Non-Axiomatic Reasoning Systems) to Squeak using Seaside for the GUI, experiment this new reasoning paradigm, and possibly make it evolve. What makes this system different from conventional reasoning systems is its ability to learn from its experience and to work with insufficient knowledge and resources. NARS attempts to uniformly explain and reproduce many cognitive facilities, including reasoning, learning, planning, etc, so as to provide a unified theory, model, and system for AI as a whole. The ultimate goal of NARS research is to build a thinking machine. The NARS project is still at the conceptual design stage. Code can be found here, a Java implementation exists and pyNars (a port to Python) is under development too.
Mentor: Aik-Siong Koh
It has occurred to me that Croquet lacks an authoring tool inside it. I
have therefore started to port my CAD software to Croquet with the help of
three final year students in Malaysia.
freeCAD: 3D CAD with Motion Simulation
Although not as sophisticated as Blender yet, freeCAD is 100% Visualworks
Smalltalk and OpenGL. So porting should be quite simple and the power of
Smalltalk can be used to extend it indefinitely. It also adds motion
simulation which is very useful for teaching of physics and mechanics.
My goal for freeCAD since 2000 has been to create a Smalltalk system for
Computer Aided Design, Simulation and Manufacturing (CADSM).
For the work to date see
my paper at Smalltalk Solutions 2007.
It is my believe that Smalltalk can produce better CADSM type software
than any other development environment. Now that Croquet is available, it
seems very logical to bring freeCAD, hence CADSM, into Croquet.
freeCAD uses NURBS boundary representation of solids, faces and edges. So
it can be simple or complex. Its GUI is very lacking, so much of the core
is not visible. It has an non-manifold topology solid modeler based on
radial edge method. It can import STEP files from SolidWorks and DXF files
from AutoCAD. Its motion engine is accurate enough for engineering
Extensible Code Editor
Mentor: Lukas Renggli
Smalltalk lacks an extensible editor component, that can not only be used to program in Smalltalk but also be extended to facilitate domain specific languages (DSLs). The goal of this project is to implement the model and view of a powerful editor component that is highly configurable and customizable. Possible features include, but are not limited to: configurable keyboard bindings, unlimited undo/redo, copy and past with multiple clipboards, multiple editing areas, bookmarks in text, folding of text, multiple selections, rectangular selections, syntax highlighting, completion mechanism, template mechanism, collaborative editing, etc.
AJAX Interface for Pier
Mentor: Lukas Renggli
Pier is a powerful and extensible implementation of a meta-described content management and Wiki system, written with objects from top to bottom. It currently makes only little use of Web 2.0 technologies and forces editors to learn the wiki syntax to author pages. The goal of this project is to create a fully AJAX based user-interface using modern Web technologies such as: AJAX, Comet, Drag & Drop, Effects, In-Place editing, etc.
Mentor: Ken Causey
The Squeak community now includes several IRC channels on the freenode.net network including, but not limited to, #squeak, #spoon, #croquet, #aida, and #slate. For our bot needs we have tended to rely in recent years on the kindness of the Lisp/Scheme community. It would be really nice to have our own bot that could be customized to our specific needs. Functions could include channel logging, info storage, and paste support and it would be fun to experiment with other Smalltalk/Squeak specific ideas. The student would learn about the IRC protocol, socket programming, object databases, and website development at the very least. And of course the student would gain experience in development using Smalltalk and Squeak.
SqueakSource CIA Support
Mentor: Matthew Fulmer
CIA is a version control informant designed to make code more public. It is designed to integrate with the version control server and collects statistics and broadcasts, in a variety of media (such as IRC announcements, Web statistics, RSS feeds, and others) when new code is commited to a repository. SqueakSource is squeak's most popular code repository, and already has the ability to broadcast commits via email and RSS. What is required? Not much. This project would take about 2 months for someone minimally familiar with squeak. What you would learn: how to use squeak, a bit about how squeak version control works, a tiny bit about seaside, and a bit about using web api's.
Croquet IRC bridge
Mentor: Matthew Fulmer
Croquet is a toolkit to allow the development of collaborative applications. Chat is a simple application within the scope of croquet. Croquet currently supports in-world chats and also a Jabber bridge to chat with jabber users. In this project, the student would create a bridge between IRC and croquet, so that croquet users in a world and irc users in a channel could easily chat with each other. Squeak already has irc protocol support, so this project would mostly be learning how Croquet chat works, how squeak irc works, and bring them together.
Mentor: Stephane Ducasse
Dr. GeoII is an interactive geometry application and framework for Squeak. It is an unfinished port of the DrGeo1.1. It need to be finished and improved in different areas.
Parts to be written:
Parts to improved:
- implementation of the macro-construction system. It is a system to record a set of constructions as a function the user can save and use repeatably. See the original implementation.
- implementation of the script system. A script within DrGeoII is code hooked to an interactive sketch, it is used to perform calculus. See the original implementation in Scheme. The script language will be Smalltalk based.
Other suggestions for improvements, see the DrGeo tracker.
- improve the load time for the OLPC version, the load time is now unacceptable for the user and make DrGeoII unadapted for the OLPC.
- define a journal type entry to save/load for OLPC version.
- improve the user interface, particularly the access to the construction tools.
- improve the locus sampling, it is by now suboptimal.
Mentor: Tansel Ersavas
This project is about creating a minimal UI in Squeak suitable for embedded systems, kiosks, mobile phone platforms such as "Android" and internet devices such as Nokia N810 and Chumby. Many complex looking UI functions can be developed using a minimal set of tools and some simple code using Squeak. This UI only requires basic Squeak graphics and text support and doesn't use MVC or Morphic. The code can be harvested from a project that was done 8 years ago for an 8MB PDA handheld device and refined to be published to be used in open source projects. An early draft of the code was ised in a system that can be seen at: http://www.squeakonline.com/downloads/cedemo.zip. The system also lends itself to code generation and the project will address this part also.
Mentor: Klaus D. Witzel
The classic browsers you get today as part of the Squeak images are monolitic and open a new heavy decorated window for everything you ask (senders, implementors, references, hierarchy, etc). Also, after a while the desktop is cluttered with all the sub-browsers opened and people complain that they no longer know which sub-browser belongs to what context and overview is lost.
In the new browser view all panes are in separate almost undecorated windows whose location can (but must not) be changed; the selectable lists are in the corners of the desktop and the result-lists and code panes are stacked in the center (with a small visual distance to each other) - all panes with as less decoration as possible (usually just an icon and a label text reflecting annotations, if any, but mouseover shows balloon text).
Result-lists and code panes have sticky notes attached to them on which the developer can make quick notes without having to bring any other pane to the front of the desktop, without disturbing the concerted view he currently has.
The selectable lists in the corners of the desktop are connected to each other with arrows (connectors) and the connectors play an active and powerful role, like relations in a database. The arrows never cross the center of the desktop.
Clicking on an arrow highlights the related panes and related selected items, so the developer can always focus on the actual working set. More functionality on arrow's relations is planned for the future (inversion of the arrow direction, grow/shrink of the subsets they select, etc), so that the working set of the developer can always reflect what is needed (for example an attention begging debugger pane).
The selections/relations/positions/notes of the new browser view can be cloned, saved and easily brought back to use, for example in another Squeak image or after shutdown without save, etc.
Because of the power of the new selections/relations/panes, the project's name is Maze Resolution Browser. A picture which drafts the view's elements and their relations is available on request.
Mentor: Adrian Kuhn or Toon Verwaest
Spy is a Smalltalk VM written using the PyPy toolchain. Spy is written in RPython, and can be translated with the PyPy toolchain to any backend, as eg Posix, Java or .Net. Spy is the collaborative effort of the Squeak-PyPy Sprint in Bern last autumn. Spy has been realized by the PyPy Team and the SCG Group in only one week. The project would be about continuing/finishing the VM implementation. Currently Spy can load any image, run the tiny benchmarks, compile arbitrary methods and run them. Open issues are
- proper exception handling
- improve the Multithreading
- Graphical frontend
- Output devices, Music
- Input devices, Keyboard, Mouse
- Image saving
Improve loading time of project file
Loading project file with Smalltalk code are slow to load, especially when
the code is pretty important as in project like BotsInc or DrGeo. Indeed the provided Smalltalk code need to be compiled at each loading time. Improving the loading time will be very useful to use Squeak as a base for additional Smalltalk application. It will make it an acceptable solution, and it is particularly true for the OLPC project.
Ref.: discussion 1, discussion 2
Seaside (New) User Experience
Mentor: Julian Fitzell
Work to improve the experience for old and new users of the Seaside framework. This could include:
- squeak-based administration tools
- web-based control panel
- a tool to ask a some simple questions and generate a prototypical project to get people started
- anything else you can think of!