Ideas for Smalltalk GSoC 2012 projects


Core

 
Tools

Nautilus In Spec

Level: intermediate
Possible mentor: Stéphane Ducasse
Possible second mentor: Benjamin Van Ryseghem

Description

Nautilus is the new default browser for Pharo3.0. But because the UI is fully platform dependent, it can not be used in other dialects (contrary to OB by example).
The goal is to migrate the entire Nautilus UI to a Spec based version, ti be able to export Nautilus.

Technical Details

Currently Nautilus is fully written using Morphic (and even have its own morphic widgets). The idea is to redefine the existing UI using Spec, rethink the way interaction between sub widget is done,
and provide a way to statically describe Nautilus UI.

Benefits to the Student

The student will acquire knowledge about Morphic. He will also learn how Spec is working and its mechanisms for event propagation as well as widget static description. He will also learn how to define new Spec widgets and how to link them to already existing Morphic widgets.

Benefits to the Community

The community will benefit of a more modular UI for Nautilus (since every one can then specify its one Nautilus UI), as well as a browser which may be used in different dialects

Distributed Issue Tracker

Level: (intermediate, advanced)

Possible mentor: Stephan Eggermont

Possible second mentor: Diego Lont

Description

A native smalltalk distributed issue tracker. It should have basic issue tracking functionality
including attaching files/pictures/code. It should have a native interface, a web interface
and a scripting API. Primary development is in Pharo.

Issue trackers have different kind of users. To make clear that different users have different
needs, persona can be helpful.

Isabelle is an information technology student looking for an interesting language and environment
to learn. She wants to contribute to and learn from a smart community and needs interesting
experiences on her cv. She has already learned the basics of a few mainstream languages
and feels ready to try something more exotic. Smalltalk seems interesting as the origin of
many inventions.

Yann is the major developer of a web-based platform based on Pharo and Seaside. He needs
to ensure the platform keeps working smoothly and is updated regularly with the latest
changes. In production he uses the released versions. He fears the major clean-ups Pharo is
making make it difficult for him to keep up. He is dependent on a few old unmaintained
squeaksource packages.

Janine just found an interesting old package on squeaksource. It was last changed in 2007.
She has been using smalltalk for a few years, so knows what to expect when trying to load
an unmaintained package. There are some missing classes that still exist in squeak.

Tony is the developer of a package that is used with nearly all smalltalks. He mainly works
with a commercial smalltalk and keeps just enough contact with the Pharo community to keep
his package working. He has complained about some changes that made it necessary for him to
change his package structure. He mainly updates the Pharo version on his way to and from the
office in the train.

Eve maintains a few of the crucial Pharo kernel packages. They are under heavy development
and once in a while everything breaks, leading to a flood of issues. They mostly come from
outsiders, as she talks daily with the Pharo core team. She has to close a lot of them as
duplicates. She also has to review code that gets attached in one form or another to the
issue.

Daniel is a maintainer of the vm that forms the basis for the Pharo vm. The vm is used by
many more projects.

Lara is a release manager for a well known linux distribution. Pharo is just one of 30 languages
that are included in the distribution. Before doing a release she scans the issue tracker for
any show stoppers. She had to stop including environments because of security issues.

Technical Details

The recent decision by Google to deprecate and stop its API for the Google Issue Tracker
used by a.o. the Pharo, Seaside, MOOSE and Metacello projects makes it necessary for those
projects to select a different issue tracker. The timespan before this decision has to be made is
too short for the development of a new issue tracker from scratch.

Now most development in Smalltalk uses distributed version control systems, either Monticello or Git,
the question arises why these projects still would want to use a centralized issue tracker. The
long-standing problems in keeping squeaksource up-and-running are only one example of the problems
of depending on centralized infrastructure. Other examples are the move of Lukas' repository and the
number of times where the Pharo CI infrastructure was not available, especially on holidays and weekends.  

The currently used issue trackers cannot work disconnected. Integrating the issue tracker in
the CI workflow of the projects is crucial.

The goals of the persona should be translated into a storymap. Delivery should be iterative
and incremental, driven by value to the community and technical risk. The student is expected
to be active on the mailing list and discuss development there. This includes handling
(source) contributions by others.

There is a small prototype available.

Benefits to the Student

- getting to know the difficulties of issue tracking/the workflow of open source projects
- experience with distributed systems
- experience an agile open source environment

Benefits to the Community

- better integrated workflow
- native issue tracker, accessible both in-image, web and automated
- showcase for productive environment  

Questions

Here are seven persona. Which ones are missing/should be fleshed out?

SmalltalkHub Continuous Integration Service

Level: intermediate

 Possible mentor: Nicolas Petton
 Possible second mentor: Esteban Lorenzano

Description: Continuous integration services are becoming a fundamental part of programming process, and tools for easy the execution of builds are emerging and being integrated directly into the version control systems (like travis and github). We propose to add this facilities to pharo flag version control service (smalltalkhub), to facilitate the adoption of continuous integration processes into our community.

Technical Details: This project implies the extension of smalltalkhub and the configuration of building jobs into the pharo community public infrastructure (and explore the possibility of using travis itself).

  Benefits to the Student
  - Use a highly reflective dynamic language
  - Learn to develop a complex multi-module architecture with several communication pipes.
  - Learn about REST interfaces.
  - Learn about integration of different services developed in different technologies.
  - Learn web application development techniques.

  Benefits to the Community
  - have a platform for automate continuous integration processes
  - indirectly increase the quality level of the frameworks developed
 
Debugger Improvements
Level: intermediate
Possible mentor: Marcus Denker
Possible second mentor: Stéphane Ducasse
Description
The Pharo IDE contains an advanced debugger that allows the programmer to explore and change the program as it is executing.

Over the last years, the Pharo community has realized a number of experiments and libraries that, taken together, form a powerful core of a new, even more advance debugger subsystem:- a new Debugger Model

    a first graphical user interface for this model
    an AST (Abstract Syntax Tree) interpreter
    research in the direction of Object Centric Debugging

The goal of this internship is to take the exiting code and build a new debugger infrastructure.

Technical Details

To solve this problem, the student will have to:

    implement a user interface using the Spec framework of Pharo 3.0
    extend the AST Interpreter to support debugging (e.g., single step execution)
    extend the debugger model to use the AST interpreter
    integrate with Object Centric Debugging

Benefits to the Student

    learn about Abstract Syntax Trees, Debuggers and IDEs.
    learn about advanced concepts of language implementation.
    learn about design and implementation of debuggers for dynamic languages
    understand how programming languages and IDEs are implemented;
    integration into a prolific community, fond of software development and programming languages;
    potential integration as a master and/or PhD student within research groups of the community around the world (France, Switzerland, Chile, Belgium, Argentina).

Benefits to the Community

For the Pharo community, the current debugger is an indispensable tool for daily development. An improved debugger will have a direct impact on the productivity of every developer and will, last but not least,
support the development of Pharo itself.
 
User Interface

UIPainter

Level: advanced
Possible mentor: Stéphane Ducasse
Possible second mentor: Esteban Lorenzano

Description

The purpose is to offer a way to easily describe and create UI using a point and click interface. This interface should be extendable, as well as the widget proposed. The Painter should also propose a simple way
to link widgets together, and to locally redefine behaviours.

Technical Details

Using Spec, the UIPainter should be able to generate the needed methods (and Layouts).
The UI corresponding class could also be generated.

Benefits to the Student

A deep understanding of UI creation. A good set of knowledges about widgets interactions. The students will also benefits of an understanding of Spec at all the levels.

Benefits to the Community

The community will benefit of a new tool for generating UIs easily using the new platform independent UI framework. A UIPainter will help developers by improving the widgets reuse and simply the process of UI creation

Spec platform/framework Independence

Level: intermediate
Possible mentor: Stéphane Ducasse
Possible second mentor: Nicolas Petton

Description

The goal is to improve and ensure the platform independence of Spec. Indeed, one of Spec goals is to generate widgets on multiple UI rendering framework (Morphic, Seaside, etc). The student could improve Spec by providing a set of widgets for multiple framework, and ensure the usability of Spec in different Smalltalk dialect.

Technical Details

Currently running only in Pharo, Spec should be able to be used easily on Squeak. One interesting target is to be able to use it in Amber by example.

Benefits to the Student

The student will acquire knowledge and experience about different Smalltalk implementation. He will also experience different UI framework, and trough Spec how widgets interact with each others.

Benefits to the Community

The community will benefit of the coolness of Spec, and will also have a single way to define UIs regardless of the framework used to render them.

Animation Library based on Athens

(Student proposal by Mariano Vicente)

Level: intermediate
Possible mentor: Guillermo Polito
Possible second mentor: (?)   

Description

Animation Library based on Athens

Technical Details

Animation Library, to make visual animation objects in the screen, such as move, bounce , etc.

Benefits to the Student

    Learn the basics of animations and moving objects.
    Learn about manage of graphics
    Understand the concepts of movement functions

Benefits to the Community

    Get a library to make custom animations with the posibility of add new ones.

 
Web
 
 
Tools for developing Amber web clients from Pharo.
 
Level: Advanced
 
Possible mentor: Dennis Schetinin
 
Possible second mentor: ??? (can be assigned later)
 
Description
 
Further development of Nemo project towards ability to build Amber applications from Pharo, including tools like Browser, Inspector, Debugger, etc.
 
Technical Details
 
Nemo project 1, 2 is a starting point. WebSocket technology to be used for duplex communication between Pharo and Amber. Many results and ideas of the "HMI with Amber" project can be used 3, 4
 
1 https://github.com/NicolasPetton/amber/tree/nemo
2 http://smalltalkhub.com/#!/~BenjaminVanRyseghem/Nemo
3 http://gsoc2012.esug.org/projects/mmi-amber
4 http://www.google-melange.com/gsoc/project/google/gsoc2012/xumuk/21001
 
Benefits to the Student
 
The student will gain experience in building client-server applications with advanced UI and providing two-way communication between client and server using modern WebSocket technology, and get deeper knowledge of modern Smalltalk system internals.
 
Benefits to the Community
 
Amber is a very promising platform for building modern web applications with rich UI, but it still lacks too many convenient and productive development tools Pharo offers. A seamless development environment for building both server and client code is an obvious win for community.
 
Jabber client / server
(Student proposal by Mariano Vicente)
 
Level: intermediate
Possible mentor: guillermo polito
Possible second mentor: (?)
 
Description
 
Jabber client / server to communicate smaltalk with this common protocol.
 
Technical Details
 
Create a jabber client api, to provide the capacity to connect with accouts like google talk, or facebook chat.
Create a jabber api server, with the capacity of accept connection of diferent jabber clients.
 
Benefits to the Student

    Learn​ and understand ​architecture ​​server/client
    Learn about the protocol jabber.
    ​​Use a highly reflective dynamic language​

Benefits to the Community

    Server and client for jabber protocol
    Posible implementations for chatbots, chatclients, chatservers


Gamification of Pharo development process
Level: intermediate
Possible mentor: Santiago Bragagnolo
Possible second mentor: Guillermo Polito
 
Description
 
Gamification is becoming more and more popular in a lot of applications. What about gamify the pharo development process? You get points by adding comments, fixing bugs or answering questions. You can be a comment healer, a bug slayer, a Zinc magician. The intend of this project is to build an application that integrates with the Pharo development process tools (issue tracker, smalltalkhub, stack overflow) and provides a gamified experience, so we get more and more motivated to code.
 
Technical Details
 
This project implies the creation of an application which communicates with different applications APIs and perform some analysis on them such as running source code Lint rules. Additionally, this application should have a web frontend.

Benefits to the Student

    Use a highly reflective dynamic language
    Learn to develop a complex application architecture with several communicating components
    Learn about ramification concepts
    Learn about an open source project development and integration process, such as Pharo
    Learn web application development techniques

Benefits to the Community

    have a platform to organize activities and events around the Pharo development
    be more motivated to participate into the development for rewards such as experience, badges and abilities

Amber's HTML5 canvas
Level: intermediate
Possible mentor: Damien Cassou
Possible second mentor: Nicolas Petton

Description

Athens (http://code.google.com/p/pharo/wiki/Athens) is an innovative open-source vector-graphics framework that lets Pharo users programmatically generate diagrams and other vectorial drawings and animations. Athens supports several rendering back-ends including Cairo (used by, e.g., Firefox).

Amber (http://amber-lang.net) is a variant of Smalltalk that compiles to JavaScript. Amber is currently gaining momentum as it makes it possible for developers to program web applications using a simple language and very powerful tools.

The goal of this project is to write a new back-end for Athens so that it can generate graphics on an HTML5 canvas. With this back-end in place, it will basically be possible to write a single application that can run native and within web browsers.

Technical Details

The student will have to:

    learn Pharo, Athens, Amber, and HTML5
    implement the HTML5 back-end for Athens
    make sure everything works fine with Amber
    implement a small game in Amber to showcase the work

Benefits to the Student

    Integration into a prolific community, fond of software development and programming languages;
    Discovery of completely different ways to program object-oriented applications;
    Knowledge of HTML5 canvas and vector-graphics programming;
    Potential integration as a master and/or PhD student within research groups of the community around the world (France, Switzerland, Chile, Belgium, Argentina).

Benefits to the Community

    Facilitate the implementation of games and other graphical tools that can run in the web browser;
    Augment the awareness of developers regarding Pharo and Athens technologies.

Persistency

 
DBXTalk on NativeBoost

 Level: intermediate
 Possible mentor: Guillermo Polito
 Possible second mentor: Esteban Lorenzano

Description

DBXTalk database driver nowadays uses a native library called OpenDBX. This library stands as an adaptor between different database drivers, implemented in C. This native library supposes many problems:

    it should be normally compiled for each different platform (Windows, *nix, macosx) and database vendor
    each of its bugs should be fixed in a C source code base
    OpenDBX do not expose the particular behavior of each database vendor, but their common denominator
    difficulty for distribution, and problems to locate libraries.

This project proposes to use NativeBoost bindings to remove the necessity of the native openDBX library, simplifying the deployment of applications using relational databases, and moving all the code base to Smalltalk.

Technical Details

This project supposes the replacement of openDBX old FFI bindings by direct nativeBoost bindings to the database drivers. The new drivers should be completely written in Smalltalk, and take care of platform and library resolution in the image side. These drivers should be polymorphic while also enabling the access to specific API provided by database vendors.

Benefits to the Student

    Use a highly reflective dynamic language
    Learn the basics of foreign function interface (and its exponent NativeBoost)
    Learn how to manage external resources and platform specific native code
    Put into usage its object design skills to transform a structured designed library into an object oriented one

Benefits to the Community

    A more malleable and full smalltalk implementation of relational database drivers
    Easier deploy for applications using relational databases
    Database divers exposing their particular apis, providing access to features not




Updated: