Squeak
  links to this page:    
View this PageEdit this PageUploads to this PageHistory of this PageTop of the SwikiRecent ChangesSearch the SwikiHelp Guide
Google Summer of Code 2009 Project Ideas
Last updated at 6:33 pm UTC on 18 March 2009
See also Project Ideas for Google Summer of Code 2007
See also Project Ideas for Google Summer of Code 2008

Making Squeak Pluggable into Other Programs

Mentor: Aik-Siong Koh
Level: Intermediate
Currently, Squeak can call external programs using FFI or DotNet Bridge. But it is not yet possible for external programs to call Squeak and make it behave as plugins in the external programs. Such a capability will open many more doors to deploying Squeak. This project aims to extend DotNet Bridge to allow any .NET program to call and control Squeak. Specifically, Squeak will be made into a plugin that a CAD program will call and control to get added capabilities. The student will gain experience in C#.NET and Smalltalk which are important languages in static and dynamic typing respectively. A working CAD plugin will also have commercial potential.

WordNet Browser for Squeak

Mentor: Klaus D. Witzel
Level: Beginner
Princeton University WordNet is a large lexical database of English, with nouns, verbs, adjectives and adverbs grouped into sets of cognitive synonyms. The WordNet DB is very often the starting point for sense mapping, natural language processing, NL parsers and query systems, mining the Web, natural language understanding and other cognitive and commonsense computation tasks.
In this project the student will implement a Smalltalk GUI for browsing the WordNet DB and also provide an interface for other Smalltalk tools which want to benefit from accessing senses and glosses of the lexical database.

Squeak Improving the New Compiler

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

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.
Follow up of Safara last year project.


Ross Method Business Rules Editor: 

Mentor: Brenda Larcom
Level: Intermediate
Ross Method is a declarative language for expressing business rules, developed by Ronald G. Ross. Although the language is entirely diagrammatic, and widely used by database practitioners, no diagram editor is available; existing proprietary editors use text equivalents instead of diagrams. In this project, the student will use the CASE Framework to model business rules using Ross Method, and Connectors to display and edit the rules. The resulting editor will become part of the Trike security analysis tool. Students interested in an additional challenge are welcome to write the security analysis portions as well, add gesture recognition using Genie, and/or implement simulating the rules rather than just modeling them. Students will gain experience in Smalltalk, business rules modeling, cutting edge requirements security analysis, working with a research team, and Agile development.

Data Flow Diagram Editor: 

Mentor: Brenda Larcom
Level: Beginner
Data flow diagrams show the components of a system and the relationships between these components; they are commonly used to express system architecture. No DFD editor is currently available in Squeak. In this project, the student will use Connectors and Genie to develop a cross-platform, pen-based editor for existing DFD model classes. The resulting editor will become part of the Trike security analysis tool. Students will gain experience in Smalltalk, Connectors, Genie, architectural modeling using data flow diagrams, cutting edge architecture security analysis (if desired), working with a research team, and Agile development.

Smalltalk Code Portal: 

Mentor: Janko Mivšek
Level: Intermediate
The goal is to build a web portal for a Smalltalk code to be browsable, searchable and also one-click loadable into the image. Loadable with the help of in-image agent, which is connected to the portal and receive an appropriate command to load the Monticello (or some other) package into image. The point is in simplicity of this process, to ease the barrier of entry for newcomers to Squeak and Smalltalk in general.

Fast binary format

Mentor:Alexandre Bergel, Stephane Ducasse, Michael Rueger
Level: Beginner, Intermediate
The ultimate goal is to significantly increase the speed of loading and saving Monticello project. Every single user of Monticello will find benefit in it, including people using Squeak in industries.
More information available here.


Glorp and Glorp-DBX: 

Mentor:Esteban Lorenzano
Level: Beginner, Intermediate

Continues SqueakDBX. Link: http://wiki.squeak.org/squeak/6052. Now that I have finished the core of squeakDBX (there are still some features to be included soon), I am planning to start the GLORP (http://www.glorp.org/) integration. Actually, this may include two parts:

1) The integration of GLORP with squeak is completely hardcoded with PostgreSQL driver. Because of this, first I will do a refactor in GLORP in order to enable it to support different drivers. I will create a PostgreSQL driver with the things that GLORP already has. We invited Alan Night to have dinner with us when he came to Argentina. We told him our ideas and discuss for a while till we get a first design of this refactor.

2) Create a SqueakDBX driver for GLORP just like the one we are planning to do for PostgreSQL.

Through this project, the squeak and pharo community will hopefully be able to interact with major database engines, such as oracle and mssql, besides those which are open source, like postgresql and mysql. Moreover, by integrating this plugin with GLORP, will allow us to generate a complete and open source solution to relational data base access.

Finally, I want to say that many times (perhaps always), I rather use an OODB like GemStone or Magma that RDBMS, but unfortunately, many many times (we did a survey at collage and seems to be 90%) the client of our software require us to use certain persistence strategy like RDBMS. Because they now about it, because they already have license, because they want to execute SQL statements, or any other reason. So, for all those cases, we rather user smalltalk and RDBMS than having to use other programming language.

CAD on Web

Mentor:Rajeev Lochan
Level:Intermediate

Web based software is becoming the preferred way of offering software. It centralizes maintenance yet offers very easy user access. More details at http://en.wikipedia.org/wiki/Software_as_a_Service

You will build a web server that allows users to create freeCAD (http://www.ar-cad.com) drawings inside any Internet browser. Project will implement Seaside and would be developing a browser plugin such as one that is available for etoys http://www.squeakland.org/ .


Virtual Presentation over Internet: 

Mentor:Rajeev Lochan
Level:Intermediate

The project is to help making Virtual Presentations over the internet.
1)A Seaside and/or Comet web application needs to be developed, where a presenter(host) can upload his/her Presentation File (.ppt/.odp).
2) The server has to process that into an intelligent format (flash like).
3) The host can then invite guests to his presentation session. The host has control over the slide the guests are able to view. The host has 2 buttons (Back and Next) to navigate between the slides. When the host clicks either of the buttons, the action is sent to all his guests' browsers and the corresponding slide is shown to them.
4) The host and guests can talk to each other using an implementation of Jabber in Seaside.

This could be useful in a scenario when the presenter has to explain his/her slides to a set of guest users, without having to show his/her desktop(which usually happens in Desktop Sharing) and thus reducing the bandwidth costs and also it is less susceptible for hacking of shared desktop.


Collision Detection in freeCAD/Cobalt: 

Mentor:Phua Khai Fong
Level:Intermediate
3D Web is coming with Croquet/Cobalt http://opencroquet.org freeCAD/Cobalt is a 3D Modeler in Croquet/Cobalt. It needs collision detection to behave like a game or physics engine. Student will use Smalltalk and Slang to build or port Collision Detection similar to that in Open Dynamics Engine. http://www.ode.org/

Object Memory Visualization

Mentor: Craig Latta
Level: Intermediate
The Spoon project aims to improve Smalltalk pedagogy, collaboration, and deployment through better system organization. One task is to identify the essential elements of the Smalltalk object memory, to aid in the creation of a minimal memory which can load and unload live code modules. One very useful tool in that identification has been the simultaneous and interactive visualization of all the object reference relationships in a memory. So far we've used Munzner's H3 layout algorithm as implemented by the Walrus 3D graph visualization tool, in combination with extensions to Squeak's interpreter simulator. Integration of the visualization component with the simulator would make interactive visual exploration of memories easier and faster, and likely lead to new insights regarding memory structure. It would also make such visualization useful for teaching Smalltalk, beyond the relatively narrow needs of Spoon's minimization task. We suspect Cobalt would be an excellent environment for the visualization.

Students will adapt techniques from H3, Walrus, or other sources as appropriate, and gain experience in Smalltalk, interactive 3D development, and virtual machine simulation.

Work on the new Cog VM: 

Mentor:Eliot Miranda
Level: Advanced

The Cog VM is a new faster VM for Squeak/Croquet. It is a hybrid just-in-time compiler and interpreter VM written in Smalltalk using the existing VM's Slang Smalltalk-to-C compiler and a processor simulator to allow full development in Smalltalk and production via translation-to-C. Currently Cog is running on x86 using the closure bytecode extensions currently being adopted by the latest Squeak VMs. There are a number of projects that can be worked on, in order of priority:




Package the Squeak VM as a DLL: 

Mentor:Eliot Miranda
Co-Mentor:Aik-Siong Koh
Level: Advanced

A major limitation of the current Squeak is that it cannot be used as a DLL that can be loaded by other programs and provide functionality in the form of a library. One architecture that allows convenient use in this form is a threaded FFI that supports "send-backs", means to discover objects and message selectors exported by the Smalltalk DLL and use these from the client program to send messages into the Smalltalk DLL and retrieve results, packaged using suitable procedural abstractions to provide a usable interface. The cliennt program then loads the Smalltalk DLL and invokes some initialization routine that loads an image and returns once the image has initialized and reached its idle loop, at which point it is ready to accept requests. This involves