Squeak
  links to this page:    
View this PageEdit this PageUploads to this PageHistory of this PageTop of the SwikiRecent ChangesSearch the SwikiHelp Guide
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

Hydra Tools

Mentor: Andreas Raab
Level: Intermediate
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.

Squeak code on the Web

Mentor: Janko Mivšek
Level: Intermediate
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.

Squeak OpenDBX plugin

Mentor: Esteban Lorenzano
Level: Intermediate
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.

Squeak Improving the New Compiler

Mentor: Stephane Ducasse and Mathieu Suen
Level: Intermediate
The goal is to enhance the new compiler.

Squeak GTK Support

Mentor: Stephane Ducasse
Level: Advanced
The goal is to bridge Squeak and GTK and continue previous effort in that direction.

OpenNARS port to Squeak using Seaside

Mentor: Klaus D. Witzel and Pei Wang
Level: Intermediate/Advanced
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.

freeCAD: 3D CAD with Motion Simulation Port to Croquet

Mentor: Aik-Siong Koh
Level: Intermediate
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
simulation.

Extensible Code Editor

Mentor: Lukas Renggli
Level: Intermediate

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
Level: Intermediate

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.

Squeak IRC Bot

Mentor: Ken Causey
Level: Intermediate?

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
Level: Beginner

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
Level: Intermediate

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.

DrGeo II

Mentor: Stephane Ducasse
Level: Intermediate

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:
Other suggestions for improvements, see the DrGeo tracker.

Minimal UI For Embedded Systems, Mobile computing and Kiosks

Mentor: Tansel Ersavas
Level: Intermediate
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.

Maze Resolution Browser

Mentor: Klaus D. Witzel
Level: Intermediate
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.

Spy VM

Mentor: Adrian Kuhn or Toon Verwaest
Level: Intermediate
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


Improve loading time of project file

Mentor:
Level: Intermediate
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
Level: Intermediate
Work to improve the experience for old and new users of the Seaside framework. This could include: