Ideas for Smalltalk GSoC 2013 projects

Ideas collected, now look at the Projects page to see how those ideas evolved into real projects.

Core
Event based library integration in Pharo image and VM
FAST Java Model
Pharo Image running on top of VirtualBox
Unicode CLDR integration into Squeak/Pharo
SmalltalkOpenCL
Implement Fast Byzantine Paxos in Slang
Split Mocketry into separate Mock Objects and Specification DSL frameworks
A New Trait Implementation
Tools
Nautilus In Spec
Programming tools for Pharo based on Type Inference
Better rewriting rule tool
Smalltalk IDE in Emacs
Search Indexing of Smalltalk image
Gadget (the inspector)
Thread Profiler
Debugging
Debugger Improvements
Improving the inspection of expressions in the debugger
Smalltalk Native-Code Debugger
Source Control
Distributed Issue Tracker
SmalltalkHub Continuous Integration Service
Git integration
User Interface
UIPainter
Spec platform/framework Independence
Animation Library based on Athens
Framework to render and to edit LaTeX formula
Worksheet toolkit
Morphic widgets for browsing
Visualization
Tree models visualization
Improving Roassal Scalability
Roassal in Amber
Graph-ET
Web
Tools for developing Amber web clients from Pharo.
Jabber client / server
Gamification of Pharo development process
Athen's HTML5 canvas
Amber CouchApp framework
Squeak Web browser Plugin for Major Browsers
Spec over Aida for desktop-capable Web Apps
Glamour Toolkit on the web
Web based environment for OOP Learning
Persistency
DBXTalk on NativeBoost
Math
SciSmalltalk - Solving Ordinary Differential Equations in Smalltalk
Industrial
Smalltalk Modbus Industrial Communications Protocol
For Kids
Phratch, a port of Scratch to Pharo 2.0
Arduino Web Interface
ROSTalk, control robot on the web

 

Core

Event based library integration in Pharo image and VM

Level: advanced

Possible mentor: Davorin Rusevljan

Possible second mentor: ?

Description

Event based libraries help handling large number of concurrent connections and sources of async events. Many successful projects use such libraries like for instance Node.js and Twisted. To be used in Pharo suitable interface in image and quite possibly in VM would be needed.

Technical Details

Two main candidate libraries for inclusion would be libev and libuv. It would be necessary to find suitable and efficient non delaying way to transfer callbacks from library to process inside Smalltalk image. One path suggested by Elliot Miranda was to investigate Multi threaded VM and see if some of its functionality can be used as is or as a base for further development.

Benefits to the Student

Getting in depth understanding of event driven frameworks and interfacing to Smalltalk virtual machine.

Benefits to the Community

Having efficient event driven library available in Smalltalk would open possibility of writing efficient servers in Smalltalk that can handle large number of concurrent connections.

 

FAST Java Model

Level: intermediate

Possible mentor: Nikolas Anquetil
Possible second mentor: Yuriy Tymchuk

Description

For in depth source code analysis a support of abstract syntax trees is required. FAST is an abstract syntax tree extension for FAMIX meta-model that is used by Moose technology. The goal of this project is to create a Java version of FAST.

Technical Details

As programming languages are different, their AST representations are different too. FAST model aims for creation of as generic as possible core that can be extended for different languages. Also the structure of a model allows creation of generic algorithms like symbol resolution, metrics calculation and rule checking that will work for any language. A prototype of FAST for Smalltalk is already implemented by Yuriy Tymchuk as well as couple of nodes for Java. During the project a student will implement the rest of the Java model, and improve some parts of PetitJava parser that is used by FAST.

Benefits to the Student

The student will gain a deep understanding of a Java syntax and abstract syntax tree model. He will also learn about PetitParser framework, and gain knowledge about software modeling and analysis.

Benefits to the Community

Community will get a FAST model for Java that can be used for software assessment with Moose. Also this model can be used later in PhD projects such as automation of source code translation form C++ to Java.

 

Pharo Image running on top of VirtualBox

Level: intermediate

Possible mentor: Clement Bera

Possible second mentor: Marcus Denker, Camillo Bruni

Description

Archiving Pharo / Squeak Image is not easy : it depends on a VM, that depends on a processor and an OS. Sometimes, we find old Pharo / Squeak Image that we cannot run because we have lost the appropriate VM. This
is even more relevant when the project rely on a specifically built VM. Moreover, sometimes we have also lost the Pharo / Squeak Image sources from that image and we cannot read easily the code. I propose then to save the working image with its sources, changes file and VM into a virtual box image in order to have it working on top of virtual box easily forever. This way the archived image will only depends on the computer processor, and not on VM, OS, computer processor, source file, change file.

Technical Details

The student would have to identify a minimum linux kernel in order to run Pharo. Then, he would have to implement some Pharo code so that by entering 'Smalltalk saveAsVirtualBoxImage' in workspace it would create
a virtual box image in the same folder, with the current VM, source file, change file, image and the minimum linux kernel. This command will probably go get some part of the virtual box image (for instance the linux micro kernel) or some external tool as Vagrant (http://www.vagrantup.com) somewhere on the internet. Running the virtual box image would directly run the Pharo image on the Pharo VM through a start-up process. Lastly, the student would have to set up a Jenkins job on the Pharo-contribution continuous integration server that create a Pharo virtual box image. If some time is remaining, the student would have to find a solution to manage the Pharo image crashes in virtual box.

Benefits to the Student

The student will learn some smalltalk (networking, commandLineHandler), how to set up a build in a Jenkins continuous integration server and some linux command line. He will also have a nice impressive open source
tool to show.

Benefits to the Community

The community will benefit from the archiving tool. The Pharo virtual box image could also be interesting for some experiments.

 

Unicode CLDR integration into Squeak/Pharo 

Level: beginner?

Possible mentor:

Possible second mentor: Paul DeBruicker

Description

The Common Locale Data Repository CLDR (http://cldr.unicode.org/) is a maintained set of locale specific information for use in programs.  Creating a package that integrates it into Squeak & Pharo would help with i18n and l10n for the platforms.  It would be preferable to be able to load a limited number of locales rather than the whole thing into every image.  We would probably benefit from having a Fuel based data repo somewhere that can access the updated and interpreted standards.

Technical details

The CLDR is constantly edited and updated and published as a spec and set of XML files.  Those files would need to be regularly downloaded and parsed to create a publicly available repository that Smalltalkers could access to import only those locales they're interested in having in their images. A repository on github that contains a Fuel file per locale would be an acceptable solution.

Benefits to the Student

Work with international standards, web services, wider knowledge of the affects of the actions of politicians and history.

Benefits to the Community

Being able to properly interpret, compare, and format currencies, dates, times, inside their images.


SmalltalkOpenCL

Level: Advanced

Possible mentor:

Possible second mentor:

Description

Build the interface from Pharo to OpenCL (https://www.khronos.org/opencl/) This will automatically provide a great opening for Pharo to work with the underlying OpenCL libraries for effective use of multi CPU cores and across GPU's. Infact a Apache Hadoop like capability to do a map reduce can also be leveraged that will make it immensely beneficial for the enterprise stakeholders. Sometimes the very capability does exist is more important than the actual utilization in deciding the use of technology in enterprise units. (This along with a proper interface to MQ / MQ like messaging interface will be a great platform for enterprise computing)

Technical Details

In this project the student will:

  • define and implement an interface to the OpenCL C library
  • work on porting some existing samples to Pharo Smalltalk

Benefits to the Student

The student gains a huge understanding of the current trends in parallel programming of modern processors across various hardwares.

The student should have good understanding and grasp of C / C++ as well ability to work FFI in Pharo Smalltalk.

Benefits to the Community

An interface to an industry standard platform for parallel programming

 

Implement Fast Byzantine Paxos in Slang

Level: advanced

Possible mentor: Paul DeBruicker

Possible second mentor:

Description

Paxos is a system for ensuring consensus across a network of processors (e.g. multiple images on multiple computers or cpus on the same hardware). Fast Byzantine Paxos is Paxos extended to ensure reliability
in the face of arbitrary failures among processors, lying from processors, collusion among more than once lying processor, etc. Fast Byzantine Paxos is just a version of Byzantine Paxos that omits a step seemingly trading network latency for additional CPU work. But I'm not sure of the tradeoffs.

My basic understanding is that among a set of images (technically "processors" but I'm going to use image because it seems more relevant here) you construct a quorum. That quorum calculates and agrees on a
response to a client request. The quorum survives and is the unit of computation but the individual images inside it change in make up and number through time as images and machines die and come back. The quorum maintains and replicates the state among its member images. The images in the quorum can at any time assume at least one of 5 roles (client, acceptor, proposer, learner, leader) for that quorum and most play all but leader all the time. The images can participate in more than one quorum. There is only one 'leader' per quorum (but the
leader can be any image in the quorum and is 'elected' by the quorum members) and sends messages to others in the quorum to process. I'm not sure of the gory details but the client sends a request to the quorum, the quorum processes it, and sends back the one agreed upon response regardless of how many machines are in the quorum that fail or fail to respond during the computation. Paxos describes all the intra process communication that needs to take place to ensure that the quorum provides reliable responses to requests in the face of hardware and network failures. Implementing it in Slang would potentially make it faster than in image (guessing) because C and it could be a plugin. 

Technical details

It is my understanding that implementing Paxos from scratch and covering all corner cases and failure modes is very very hard. Probably also confusing. Sorry I don't know more but here's a zip of the papers I've collected that describe ways and issues around implementing it: http://dl.dropbox.com/u/4460862/paxos-papers.zip.

Benefits to the Student

Learn Smalltalk, Slang. Implement something hard. Also build a robust distributed Smalltalk system.

Benefits to the Community

With enough images you can just persist everything in the image and each image can be a reasonable size. Other benefits include making a (hardware, network) failure resistant server Smalltalk process.

 

Split Mocketry into separate Mock Objects and Specification DSL frameworks

Level: Intermediate

Possible mentor: Dennis Schetinin

Possible second mentor: Denis Kudryashov

Description

The Mocketry framework offers two really nice features: Mock Objects themselfs and an extendable DSL for Specifications within Smalltalk syntax. Both features are essential for a language like Smalltalk, but they correspond to distinct (although, tightly connected) domains. Thus, they should be separated into different frameworks, independently useable.

Technical Details

The Mocketry code is not very sophisticated, so it shouldn't be too complex to understand it and find a point for the segregation.

Benefits to the Student

A student will:

  • get better understanding of TDD ideas
  • understand interior engines of Smalltalk
  • see how simple it is to implement such sophisticated (for other languages) things like mocks and a custom DSL


Benefits to the Community

Two distinct loosely-coupled frameworks are better then a monolithic architecture. This, at least, widens the usage area for both frameworks. 

 

A New Trait Implementation

Level: intermediate

Possible mentor: Damien Cassou

Possible second mentor: Stéphane Ducasse

Description

Inheritance is well-known and accepted as a mechanism for reuse in object-oriented languages. Unfortunately, due to the coarse granularity of inheritance, it may be difficult to decompose an application into an optimal class hierarchy that maximizes software reuse. Existing schemes based on single inheritance (e.g., in Java), multiple inheritance (e.g., in C++), or mixin (e.g., in Ruby), all pose numerous problems for reuse.

To overcome these problems, we designed a new composition mechanism called Traits [1], now included in programming languages such as PHP, Perl and Pharo/Smalltalk. Traits are pure units of behavior that can be composed to form classes or other traits. The trait composition mechanism is an alternative to multiple or mixin inheritance in which the composer has full control over the trait composition. The result enables more reuse than single inheritance without introducing the drawbacks of multiple or mixin inheritance.

Technical Details

Pharo (http://www.pharo-project.org) is a new open-source Smalltalk-inspired programming language and environment [2]. It provides a platform for innovative development both in industry and research. Traits are
integrated in Pharo but barely used due to a lack of support in the development environment. The current implementation of traits in Pharo merges the trait methods into the classes that use the trait. This merging of external methods into classes makes the implementation of the development tools harder.

To solve this problem, the student will have to:

  • evaluate alternative implementations of traits that do not merge methods into classes;
  • implement the best alternative in Pharo (this alternative will have to be (un-)pluggable);
  • adapt the Pharo development tools (e.g., code browser, refactoringtools, and versioning tools).

The project will be realized in the Pharo environment (http://www.pharo-project.org).

Benefits to the Student

  • Understanding of how programming languages and IDEs are implemented;
  • Integration into a prolific research group, fond of software development and programming languages;
  • Potential integration as a master and/or PhD student either within the group or within one of its numerous partners around the world (Switzerland, Chile, Belgium, Argentina, Italy).

Benefits to the Community

  • Simplify writing new code with traits and help understand trait-based existing code;
  • Enable rewriting of non trait-based code with traits to improve its design and reuse;
  • Provide a basis to continue research around traits with a better implementation.

[1] S. Ducasse, O. Nierstrasz, N. Schärli, R. Wuyts, and A. P. Black.
Traits: A Mechanism for fine-grained Reuse. In TOPLAS: ACM  Transactions
on Programming Languages and Systems 28(2) p. 331—388,  March 2006.
http://scg.unibe.ch/archive/papers/Duca06bTOPLASTraits.pdf

[2] A. Black, S. Ducasse, O. Nierstrasz, D. Pollet, D. Cassou, and M.
Denker. Pharo by Example, Square Bracket Associates, 2009.
http://pharobyexample.org/

[3] D. Cassou, S. Ducasse, and R. Wuyts. Traits at Work: the design of
a new trait-based stream library. In Journal of Computer Languages,
Systems and Structures 35(1) p. 2—20, 2009.
http://scg.unibe.ch/archive/papers/Cass08a-NileNewKernel-ComputerLanguages.pdf

 

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
 

Programming tools for Pharo based on Type Inference

Level: intermediate/advanced

Possible mentor: Camille Teruel
Possible second mentor: Stéphane Ducasse

Description

Type inference mechanisms can be used to compute the types of variables from the source code. This information is very interesting in the context of a dynamically-typed language like Smalltalk. Several
type inference tools already exists for Smalltalk but the type information they bring has not revealed all its potential yet. The student will have to leverage this type information with new programming
tools.

Example of such tools are:

  • Code analysis tools:
    • better "implementors of" and "senders of" lists
    • dead code finder
  • Development tools:
    • type mismatch hints at compile time
    • better code completion

Technical details

The student will have to analyze existing type inference tools and choose an appropriate solution. Then he will have to learn how to build UIs with Spec.

Benefits for the Community

  • New useful development tools

  • * Improvement of existing code base thank to these tools

Benefits for the student

  • Use a highly reflective dynamic language
  • Learn the basics of type inference
  • Learn how to make UIs with Spec
  • Have an impact on the code base of a large project

 

Better rewriting rule tool

Level: Intermediate

Possible mentor: Stephane Ducasse

Possible second mentor: Andre Hora

Description

The refactoring browser is based on a powerful rewrite engine which transforms AST. However it is quite cumbersome to write rewrite rules. There is a need to build a tool to help programmers defining their own transformation.

Technical Details

Benefits to the Student

  •     learning AST
  •     learning AST transofrmation
  •     learning AST pattern matching
  •     User interface definition


Benefits to the Community

A tool that is cruelly missing.

 

Smalltalk IDE in Emacs

Level: intermediate

Possible mentor: Damien Cassou
Possible second mentor: Nicolas Petton

Description

Smalltalk IDEs (integrated development environments) are quite powerful as they feature code browsers, debuggers, object inspectors, immediate feedback... Nevertheless, such IDEs have been lacking great text
manipulation features that have been available for decades in good text editors such as Emacs and Vi. Moreover, many developers outside the Smalltalk community have developed great skills in their favorite editors and they are often reluctant to switch to different tools. In this project we propose to port some of the best Smalltalk tools to the Emacs platform so that developers can use very high-level tools while still using their day to day editor.

Technical Details

The student will benefit from the already existing Shampoo project (http://dmitrymatveev.co.uk/shampoo/) which already features a Smalltalk code browser in Emacs. In this project, the student will have to:

  • fix the problems that make it hard to start using Shampoo;
  • continue the development of the Smalltalk code browser in Emacs and write unit tests;
  • using a test-driven approach, implement a debugger interface in Emacs using the already existing Smalltalk debugger infrastructure;
  • using a test-driven approach, implement object inspectors and immediate feedback (do-it and print-it).

The project will be realized in the Pharo environment
(http://www.pharo-project.org) as Shampoo already supports Pharo and
Pharo has a new debugger infrastructure decoupled from its user interface.

Benefits to the Student

  • Knowledge of Smalltalk, Emacs Lisp and inter-process communication;
  • 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

With such a tool, more developers will be able to join our community as many don't want to stop using their favorite editors. Additionally, even existing Smalltalk developers will benefit from the Emacs platform that has improved steadily for decades.

 

Search Indexing of Smalltalk image

Level: Intermediate

Possible mentor: Aik-Siong Koh

Possible second mentor: Ian Chai

Description

All Smalltalk development environments can now search for implementors, senders or strings using brute force. The results are usually just listed alphabetically. This project will use search technology to index and page rank all the packages, classes, methods and comments in the image. Search results will be returned quickly and ranked intelligently. It will be a Search Engine for Smalltalk in Smalltalk. A search browser will be created to accept search strings and return columns of hits for packages, classes, methods and comments listed according to their page ranks. Time permitting, an autocompletion capability will be implemented to suggest relevant methods for code writing. The code will be made portable to all Smalltalk dialects.

Technical Details

The Anatomy of a Search Engine http://infolab.stanford.edu/~backrub/google.html

Demo on Search Indexing of Smalltalk image videos:

http://youtu.be/2YVU_-EAZ4c

http://youtu.be/twVX7yOg5C0

http://youtu.be/C9a7F-Uwop8

Benefits to the Student

The student will learn the important areas of search technology and object oriented programming. The student will experience creating something that is immediately useful to all Smalltalk programmers.

Benefits to the Community

Fast and intelligent search of Smalltalk code will help the community advance Smalltalk development even faster. Additional programming capabilities can be built on top of the search capabillities.

 

Gadget (the inspector)

Level: Intermediate

Possible mentor: Juan Pablo Sandoval Alcocer

Possible second mentor: Alexandre Bergel

Description

Understanding how an application behaves at runtime requires adequate tools. However, MessageTally, the standard Smalltalk code profiler, is very limited in the kind of analyzis it can carry out. Spy (a profiler framework) is an attempt that has been made in the past, however Spy suffers from poor design, typically forcing profilers to contain a heavy dose of duplicate code.

In this project, we plan to produce Gadget, a portable, open and flexible profiling platform. Hapao [1], Kai [2] and Rizel [3] will be migrated from Spy to Gadget.

Gadget will not only provide features to measure code coverage, time consumption, snapshot comparison, but will provide tools to monitor memory consumption.

All these features will provide to Pharo developers the tools to create domain specific profilers and reuse the features of different implemented profilers in Gadget.

Technical Details

In this project the student will:

  • define and implement a profiler metamodel.
  • learn and implement instrumentation and/or sampling techniques.
  • migrate three profilers from Spy to Gadget.

Benefits to the Student

The student will (i) address performance problems; maintainability, design and evolution issues. (ii) get a better understanding of the executing environment of Pharo; (iii) learn reflection and dynamic analysis basics.

Benefits to the Community

  • Have a new open-source profiler framework with a smooth implementation
    of the feedback and experience from the community.
  • Allow the community to develop new profilers on top of Gadgetwhich are
    easier to implement and maintain.

 

Thread Profiler

Level: intermediate

Possible mentor: Alexandre Bergel
Possible second mentor: Juan Pablo Sandoval

Description

Any operating system comes with a tool to monitor the CPU consumption of the running application (e.g., Activity Monitor on mac, .... in windows). These tool give for each process the amount of CPU and memory it consumes. Unfortunately, Smalltalk does not have such a tool. Pharo and VisualWorks offers the process browser, which is a rather primitive. No indication about the resource consumption is given. A first prototype has been proposed (Loom http://objectprofile.com/#/pages/products/loom/overview.html), however it currently works on VisualWorks and offers a rather sluggish user interface.

This project is about offering a reliable tool to monitor the resource consumption of the running threads. Our tool will be made portable and will run on Pharo and VisualWorks.
The tool will offer nice visual chart to monitor the consumption, as most OS process monitors do.

Technical Details

The program will present:

  • A window with a table of thread's information
  • A visual time line that represents the tread evolution
  • Several Buttons to handle the threads

Benefits to the Student

The student will (i) get a better understanding of the executing enviroment of Pharo and VisualWorks (ii) make a contribution that will be use by several users (iii) practice in building GUI applications/frameworks, improve Smalltalk programming skills.

Benefits to the Community

The Smalltalk community would use the new browser like a tool in order to review and handle the consumption of the processes in a visual way. We expect Thread Profiler to help improve Pharo and VisualWorks applications.

 

 

Debugging

 

Debugger Improvements

Level: intermediate

Possible mentor: Andrei Vasile Chis

Possible second mentor: Nicolas Passerini

Description

The Smalltalk IDE contains an advanced debugger that allows the programmer to explore and change the program as it is executing.

Over the last years, the Smalltalk 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
  • 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 Smalltalk 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 Smalltalk IDEs themselves.

 

Improving the inspection of expressions in the debugger

Level: beginner/intermediate

Possible mentor: Andrei Chis

Possible second mentor: Nicolas Passerini, Tudor Girba

Description

The debugger is a central tool in any programming language, as it helps developers understand the dynamic behaviour of applications. Furthermore, in Smalltalk, it can also be used to write code and thus extend applications while they are running.

One important aspect that is missing in the current Pharo debugger, is the ability to view the value of intermediate expressions involved in method calls. For example consider the call:

^ self doSomething: (anArray at: 2) with: aStream next onlyIf: aCondition isValid.

In order to view the values of the expressions (anArray at: 2), (aStream next) and (aCondition isValid) we have to directly go into the actual method call. Furthermore, viewing the return value can be more difficult, if we do not store it into a variable.

The goal of this project is to add support for exploring these kind of expressions by using dedicated widgets. For example, one alternative might be adding pseudo variables into inspectors, while another might consist in using popups that display these values for any expression selected in the editor.

Technical Details


The student will have to understand how the debugger works, and will  have to familiarise himself with the new debugging infrastructure. Also, he'll have to look into at least a framework for building UIs (Spec/Glamour).

Benefits to the Student

He will get a deep understanding of how debugging is done, on how the debugger works and he'll also interact with a framework for building UIs.

Benefits to the Community

The community will bet a better debugger, in which values passed and returned by methods could be easily explored using different widgets.

 

Smalltalk Native-Code Debugger

Level: Intermediate.
Possible mentor: Guido Chari.
Possible second mentor: Javier Pimás.

Description

Smalltalk is a powerful environment for software developing. It allows the development of high-level abstractions, and it is highly dynamic and reflective, which promotes analyzing and changing objects at run-time. Debuggers are essential tools, particularly in Smalltalk because they allow developers to understand a program as well as to find and fix defects as they are running.

Debugging native applications, on the other hand, is very hard. Many native applications can't be developed using high level abstractions. Furthermore, as they consist of native-code, debugging them requires understanding and modification of very low-level operations on raw memory at run-time [1], and also a close interaction with the operating system [2][3].

Using Smalltalk to control and debug low-level code would be a great aid in the native-code development process. It would allow not only to control programs status and trace, but also to easily develop a myriad of high-level tools that analyze and modify native-code as it runs.

Technical Details

There are many different kinds of debuggers, and many mechanisms are already mature for implementing features in them [4]. Warp[5] is a recently born project to implement on Pharo a wrapper for the PTrace system call, the essential operating system debugging API. With the addition of already existing powerful  high-level tools for low-level programming, as NativeBoost[6] and Waterfall[7], this project will allow to have a native debugger interface for any process from a Smalltalk image, and create a complete ecosystem for Native-Code developing from Smalltalk.

The first steps will include understanding the ptrace system call, and about x86 instructions coding and decoding. This can be done by completing the wrapper of ptrace, which consists of only one function with many different functionalities and improving the disassembler for x86 binary code. After this the student will be able to develop tools for aiding in native-code debugging, like a specialized inspectors and debuggers for watching the value of variables, adding breakpoints, watchpoints, modifying memory and code.

Benefits to the Student

  • gain experience in high-level and low-level programming.
  • learn about how debuggers work under the hood
  • gain experience on the usage and development of a complete Smalltalk native-code development toolchain.
  • learn about native-code assembling and disassembling.

Benefits to the Community

Lately, there has been more and more evidence that high-level written software for low-level development is starting to succeed. Smalltalk provides an ideal platform for exploring this domain because of its powerful reflective capabilities. NativeBoost already promotes lot of new possibilities for working dynamically on the Pharo environment with complex low-level tasks. More tools for having a complete and outstanding tool-chain are needed and the native debugging interface is one of the most prominent and promising.

A native-code debugger will help Smalltalk VM and low-level programmers, because it will leverage all their Smalltalk programming skills into low-level programming. It could even bring closer non-VM programmers to VM code, as it would remove a barrier of entrance to VM programming.

Having a fully working native-code debugger would be a killer app that can attract lots of low-level developers to Smalltalk, specially Virtual Machine and C/C++ programmers.

 

 

 

Source Control

 

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

 

Git integration

Level: intermediate

Possible mentor: Damien Cassou

Possible second mentor: Camillo Bruni

Description

Git (http://git-scm.com) is a famous distributed revision control system that is gaining momentum.

Smalltalk systems have had distributed revision control systems for quite some time now. However, the Smalltalk community can't keep up with all the wonderful works done in other communities. We should reuse as much of what exist today to stop loosing time reinventing the wheel. That's why this project is so important.

Technical Details

The goal of this project is to integrate Git within Smalltalk. The Git object model has already been implemented
(http://smalltalkhub.com/#!/~FileSystemGitDev/FileSystem-Git). The student will have to implement what is missing, that is to say:

  • the Git network protocol with good unit-tests (already started);
  • a new back-end for Monticello (a revision control system used in some Smalltalk environments) that fetches from and saves to a Git repository;
  • a simple graphical user interface (written in the Spec GUI framework) to manipulate Git repositories.

The project will be realized in the Pharo environment as Pharo is the development platform we used to start the project. To fulfill the project's goal, the student will first have to learn Pharo, Git (and its underlying network protocol) and Spec.

Benefits to the Student

  • integration into a prolific research group, fond of software development and programming languages;
  • discover completely different ways to program object-oriented applications;
  • understand how protocols are designed and implemented;
  • get insights about designing graphical user interfaces;
  • potential integration as a master and/or PhD student either within the group or within one of its numerous partners around the world (Switzerland, Chile, Belgium, Argentina).

Benefits to the Community

This work will allow the community to reuse existing tools (e.g., hosting services, continuous integration, web interfaces, code review) instead of loosing energy and time reinventing the wheel.

 

Dialect-Portable Monticello

Level: intermediate

Possible mentor: Sean DeNigris

Possible second mentor: ?

Description

Extend FileTree and Cypress to handle dialect feature differences like namespaces vs. prefixes

Technical Details

The pieces are all available and a proof of concept has been done, but what's required is a deeper look to integrate the idea consistent with the existing design.

Benefits to the Student

The student will get a deep understanding that ultimately, no matter how many layers are on top, most data boils down to text, which can be freed from wherever it lives, to go wherever it's needed. Also, the student will have the opportunity to contribute to a key core open source tool, with all the community involvement that implies.

Benefits to the Community

There are many great libraries for Squeak/Pharo vs. VW that would be extremely useful on the other side (like Xstreams - which has an older version on Squeak/Pharo, and PDF Artefact). There is very little preventing near-automatic porting between the ecosystems, and this project would address that.

 

 

 

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.

 

Framework to render and to edit LaTeX formula

Level: Advanced

Possible mentor: Hilaire Fernandes

Possible second mentor:

Description

The framework should come in two parts:

  1. rendering of LaTeX math formula.
  2. LaTeX equation editor

Technical Details

The tools should depend on:

  • Pharo freetype interface to render font.
  • the Morph user interface tool kit.

No external libraries or on-line services should be used.

Why LaTeX and not MathML: LaTeX formula can be hand edited, MathML not really as there are not very human readable.

Benefits to the Student

Learn how to represent, to render and to edit mathematic expressions.
Learn how to design an editor tool: model, view and controller.

Benefits to the Community

A library to render and to edit mathematic formula.

 

Worksheet toolkit

Level: Intermediate

Possible mentor: Hilaire Fernandes

Possible second mentor:

Description

A Smalltalk based spreadsheet toolkit with a basic editor to:

  • add/delete cells
  • edit cells formula
  • render aspect

May depends on PetitParser to parse cells formula.

Technical Details

The toolkit should be customizable.

Benefits to the Student

Learn how to modelize a spreadseet, to design a view and editor.
Learn how to design an editor tool: model, view and controller.

Benefits to the Community

A spreadsheet toolkit.

 

Morphic widgets for browsing

Level: intermediate

Possible mentor: Tudor Girba
Possible second mentor:

Description

Browsers are key software development tools. The Pharo/Moose environment already offers sophisticated support for constructing browsers (for example, through Glamour). However, the effectiveness of these browsers highly depends on the rendering capabilities, and currently, the Morphic widgets offer limited capabilities.

The goal of this project is to construct multiple widgets that make browsing smoother and more scalable. These widgets will at the very least influence the rendering available in Glamour. Ideally, the widgets should be integrated in Spec, and perhaps Pharo.

Why Morphic? Because Pharo/Moose is a highly dynamic environment that deserves appropriate widgets. And because the effort is less science fiction that one might tend to think.

Technical Details

Scalable list widget:

  • The list will offer parallelized loading (without blocking the ui)
  • The list will offer dynamic paging (like google photos or twitter)
  • The target is to handle easily 100k items

Multi-category search widget:

  • This will behave similarly with the Mac Spotlight widget
  • The widget will react on every keystroke

Smart tabs

  • The tab behaves similarly with the one from Eclipse: it has a label and an associated menu
  • The tabs are lazily loaded
  • The tab label resizes smartly depending on the size of the overall widget
  • A first implementation exists in Glamour, but it needs consolidation and extension

Popup inspect widget

  • The widget will appear on demand and will contain a morph (typically, a simple text morph)
  • The widget will disappear as soon as the input is lost
  • This widget will useful for replacing the "print it" behavior that currently directly affects the existing text
  • To some extent, the widget will behave like the inspector from Eclipse

Watcher widget

  • The widget will behave like the preview functionality from the Mac Finder
  • On a certain key combination, the preview window appears and it displays a morph
  • Loading the contents of the preview must not block the ui
  • A first implementation exists in Glamour

(Optional) Grid widget:

  • The grid widget allows navigation similar to an Excel spreadsheet
  • Each cell in the grid knows its row and column
  • The grid allows the manipulation both by column and by row
  • The grid can be navigated with keys
  • The grid accepts any morph as a widget
  • The size of the columns and rows can be customized individually (and ideally take the size of the contained widgets)

Benefits to the Student

 

  • The student is expected to want to deal with user interface design
  • You will familiarize yourself with the domain of browsing
  • You will gain experience in user interface design
  • You will learn Glamour (read about it here: http://www.themoosebook.org/book/internals/glamour)

Benefits to the Community

The community will benefit from significantly better browsers

 

 

Visualization

 

Tree models visualization

Level: intermediate

Possible mentor: Usman Bhatti

Possible second mentor: Yuriy Tymchuk

Description

Moose platform (http://www.moosetechnology.org) does very good job for data analysis. Recent FAST extension allows one to model an AST for a source code. The idea behind this project is to develop an interactive tree visualization that will gradually improve analysis of the underlying model.

Technical Details

Roassal graphical visualization engine will be used to visualize tree models. One of a use cases are abstract syntax trees. In particular FAST implementation for Smalltalk. Tree visualization should improve model understanding and incorporate interaction. Upon creation of the visualization, development of a supporting framework is welcome. This way when FAST will be extended to model another languages visualization for them could be introduced in an easy way. Main issues when working with large tree visualization:

  • for source trees different nodes have different meanings,
  • size of the model often makes visualization difficult to analyze.
  • adding interactivity in the visualization to annotate interesting entities, analyze them individually/independently.

Benefits to the Student

  • learn Roassal visualization engine
  • learn about software modeling
  • learn about model representation

Benefits to the Community

Result can be used in Moose for AST visualizations as well as all other models that conform to tree hierarchy, this will greatly improve their analysis.

 

Improving Roassal Scalability

Level: Intermediate

Possible mentor: Vanessa Peña-Araya

Possible second mentor:Alexandre Bergel

Description

The Roassal visualization engine is getting more users in the Smalltalk community every day. This means more complex visualizations are created using Roassal, and the amount of data the user wants to represent is larger. However Roassal is still behind to answer this demands as it lacks from scalability for big visualizations, resulting in very slow displaying and events answering.

In this project we plan to fix this problem and allow Roassal to become a efficient tool.

Technical Details

In this project the student will define and implement a strategy for faster displaying for the visualizations and events reaction. This includes understanding the techniques currently used in other visualization tools.

Benefits to the Student

  • Learn and understand Roassal, including its structure and design,
  • Learn graphical tools techniques mainly for rendering and event responding.

Benefits to the Community

Allowing the community to have a faster and efficient visualization tool, making Roassal a powerful visualization engine and answering to the demand to render large amount of data.

 

Roassal in Amber

Level: Intermediate (?)

Possible Mentor: Nicolas Petton or Manfred Kröhnert

Possible Second Mentor: Nicolas Petton or Manfred Kröhnert

Description

Roassal has proven to be a useful and top tool for the entire Smalltalk community. It has been used both in academic and commercial organizations. Proof of this is that it has already been ported to other Smalltalk dialects such as VisualWorks.

Nowadays, where the Web reigns as king of information sharing, Amber is one of the most robust responses from the Smalltalk world. Thus, porting Roassal in Amber will promote Roassal as a good alternative for interactive visualization development on the web.

Technical Details

The project consists in:

  • Getting Roassal to compile automatically
  • Adapt Roassal to Amber’s environment constraints
  • Connect Roassal with an optimized HTML5 canvas rendering library (RaphaelJS [1], D3 [2])

[1] http://raphaeljs.com/
[2] http://d3js.org

Benefits to the Student

The student will (i) better understand both Roassal and Amber internals, (ii) improve his / her javascript skills (iii) make an important contribution for the community

Benefits to the Community

Both Roassal and Amber projects will have several benefits. Roassal will attract web users, leading to an increase in interest and use of both Amber and Roassal.

We expect it will help Roassal users to easily share and show their visualizations on the web, making it available to a wide range of viewers (not only Pharo users).

 

Graph-ET

Level: Beginner

Possible Mentor: Alexandre Bergel
Possible second mentor: Tudor Girba

Description

The necessity of having a chart-drawing tool integrated with Roassal is increasing day by day. Graph-ET is a tool that allows the user to create and draw charts with small and expressive Smalltalk instructions. The user may enter a large variety of entries, and the program with parse it to fit the users need. For example, the user may use a domain of words and visualize the length of those words with just two lines of code. The nice thing about Graph-ET is that it’s very simple to see results also the interface allows the user the play with their charts in a
variety of ways. The idea is having a kind of EyeSee but with Roassal as rendering and adding more power of desition to the user.

Technical Details

Graph-ET is a software that needs to draw to work, for that it mainly uses Object Profile’s Roassal to make the drawing and the interaction work.

Benefit to the Student

The student will learn a lot more of Smalltalk and Pharo environment. Also he will learn some chart visualization and learn to solve all the problems that come with it. Not to mention learning entry parsing. Mainly he will face with serious and critical decisions that will change the fate of his program, but that will mean significant learning process for him.

Benefit to the Community

The community will have the pleasure of making fast charts with small and expressive instructions; this will lead to a more simple way of making and drawing charts. The users of Roassal will enjoy a tool that fit their needs and that work well with the software they already own.

 

Web

 

Tools for developing Amber web clients from Pharo.

 
Level: Advanced
 
Possible mentor: Dennis Schetinin
 
Possible second mentor: ?
 
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]
 
 
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

 

Athen'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 Smalltalk, 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

The project will be realized in the Pharo environment as Pharo is the development platform of both Athens and Amber.

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.
 

Amber CouchApp framework

 
Level: Intermediate

Possible mentor: ?

Possible second mentor: ?

Description

CouchApps, are javascript HTML applications which use CouchDB as backend, but also get served directly from CouchDB server. Purpose of this project would be to provide means that such applications can be developed easily with Amber Smalltalk.

Technical Details

Currently Amber uses WebDav interface to store source code. This should be overridden to store it into the couchdb. Proper way of including of all amber generated javasciprt files should also be found.

Benefits to the Student

Getting to know development process of CouchDB and Amber Smalltalk applications

Benefits to the Community

Amber CouchApps would be very simple to deploy and provide combined powers of Smalltalk and CouchDB

 

Squeak Web browser Plugin for Major Browsers

Level: Intermediate to Advanced

Possible mentor: ?
Possible second mentor: ?

Description

The goal is to make Squeak accessible within major web browsers. Mozilla Firefox and Google Chrome/Chromium are two open-source browsers that should be targeted/tested. Safari, IE and Opera would be nice to have, and strongly encouraged.

Technical Details

The current plugin code could be a good start.

Benefits to the Student

Learn or enhance knowledge of web browser plugins for major browsers. Requires student to learn techniques to interface two different products (squeak and a web browser) - each that maintain their own unique characteristics. Helps student be more attractive for Internet-based technical employment.
 
Benefits to the Community

A Squeak plugin breaks the Page-Bound barrier of traditional HTML/JS/PHP generated content. Current Squeak applications could be easily adapted and utilized by users almost immediately. Allows new web apps to be created using powerful built-in Squeak tools. Could elevate the marketability of Squeak and may proliferate it's use.

 

Spec over Aida for desktop-capable Web Apps

Level: advanced

Possible mentor: Janko Mivšek
Possible second mentor: Benjamin?

Description

Spec as a means to describe and generate GUI has a potential to help building web applications as well. And because one of Spec goals is to become a platform/framework independent, this project has a goal to extend Aida component model for building Single Page web apps to become Spec-aware.

Technical Details

Aida has a component model for building so called Single Page web UIs, capable of composing a hierarchy of so called web widgets, which are standalone reusable components, together with hierarchical web form support. Spec as descriptor and generator of UI is therefore a natural extension of Aida component model. When a HTML5 Web Components standard will be ready, Aida component model can be easily extended to support that standard as well, together with Spec (and maybe UIBuilder too?).

Benefits to the Student

Student will acquire the knowledge and experience of building desktop-capable UIs on the web using HTML5 approach.

Benefits to the Community

Spec has a potential to become a de-facto standard way of describing User Interfaces for Smalltalk projects from desktop to web and mobile, on a dialect and web framework neutral way. This project can contribute a piece toward that goal.

Glamour Toolkit on the web

Level: Intermediate

Possible mentor: Usman Bhatti

Possible second mentor:

Description

Glamour is an award-winning engine to script browsers. The ability to rapidly create custom browsers and accommodate arbitrary domain models make it an attractive choice for constructing dedicated tools. In the context of Moose, Glamour is used to create custom tools for software analysis. Glamour has its own representation for UI components and then there are mappings for morph widgets. There is also a renderer for Seaside but it is not complete. The purpose of this project is to bring the core concepts of glamour in the Web browser through Amber and provide a port of Glamour to script web-based browsers. Amber is a language (derived from Smalltalk) and environment built for the web.

Technical Details

We need to port the key concepts of Glamour on the web with Amber such as Transmissions, Ports, and Panes. It will also be interesting to see what widgets to choose for the UI components of Glamour toolkit.

Benefits to the Student

  • Understanding the internals of an award-winning, state of the art tool for constructing browsers and Amber Smalltalk applications

Benefits to the Community

The community will have the tool working on the web to create custom browsers on the web.

 

Web based environment for OOP Learning

(Student proposal by Gastón N. Charkiewich and Nahuel Garbezza)

Level: intermediate

Possible mentor: Gabriela Arevalo

Possible second mentor:

Description

Within the context of lectures of object-oriented programming/paradigm, most professors use learning environments: stand-alone applications that are installed in each student PC. During practical exercises, the professors have to check with each student how the exercises are solved and the feedback is based only on professors' comments. There is no so far a tool that allows to have a web-based access to the environment and to allow two different roles that can interact with the environment: professor and student.

This project proposes a web-based application to teach/learn object-oriented programming with the following functionalities:

  • The access is through a web-application
  • The student can save all the progress that she/he can do with their exercises
  • The professor can have access to all the progress done by the students
  • The professor can propose exercises (based on Lessons, such as Object Browser)
  • The student can make progress on the exercises and get rewards that are published on the social networks.

Technical Details

  • Model to support lessons (starting with only objects and then gradually introduce classes and more advanced concepts).
  • Basic tools (smalltalk-like browser, workspaces, test runner, code critics, etc)
  • Object diagrams (to see objects and references in a graphical way)
  • Login with two different roles (student, teacher)
  • Technologies: Amber/Seaside

Benefits to the Student

The student will learn to design complex web applications, and to identify aspects of the OOP teaching/learning process.

Benefits to the Community

The community will gain a very useful tool to any kind of course related to OOP. Teachers can prepare lessons easily, and keep track of the students' progress. Students can play with the environment only visiting a web site, without installing anything locally. Smalltalk can potentially attract new users.

 

 

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 available before 

 

Math

 

SciSmalltalk - Solving Ordinary Differential Equations in Smalltalk

Level: (intermediate)

Possible mentor: Serge Stinckwich

Possible second mentor: ?

Description

SciSmalltalk is a new Smalltalk project, similar to existing scientific libraries like NumPy, SciPy for Python or SciRuby for Ruby. SciSmalltalk already provide basic functionalities under MIT licence: complex and quaternions extensions, random number generator, fuzzy algorithms, LAPACK linear algebra package, Didier Besset's
numerical methods, ... We want to extend SciSmalltalk to solve ODE (Ordinary Differential Equations). SciSmalltalk is available here: https://github.com/SergeStinckwich/SciSmalltalk

Technical Details

The development of this project is to be done in Pharo Smalltalk, but the code could be portable to other Smalltalk flavors. We want to build a library of ODE solvers that take care about performance without sacryifing flexibility. OdeInt could be used as an example to develop a Smalltalk library: http://headmyshoulder.github.com/odeint-v2/index.html. The student will need to have basic knowledge about differential equations and numerical algorithms. Units tests should also be provided.

Benefits to the Student

The student will help the Smalltalk community in a very concrete way. The student will learn to design well-designed code with tests.

Benefits to the Community

Having a basic ODE library is very important if we want to develop Smalltalk in new domains like robotics, high performance computing, computer vision, bio-computing, .... The lack of numeric librairies hamper the use of the Smalltalk in a scientific context at the moment.

 

Industrial

 

Smalltalk Modbus Industrial Communications Protocol

Level: Intermediate

Possible mentor: Ben Coman - I can provide the domain knowledge and general programming assistance

Possible second mentor: Someone to help advise on good Smalltalk architectural patterns

Description

Smalltalk has high potential as a SCADA (Supervisor Control And Data Acquisition) platform for industrial plant automation. A SCADA system provides a real-time animated interface for plant operators to monitor and control industrial processes, by providing graphical mimics of meters, gauges, valves, motors, tanks and field start/stop buttons [1]. A pre-requisite of this is communicating with a PLC (Programmable Logic Controller) to which the electrical wiring of the plant sensor and control devices are connected. The de facto communications protocol for SCADA/PLC communication is Modbus. This project will implement the Modbus protocol in Smalltalk.

Technical Details

First published in 1979, Modbus is an application level master-slave/client-server communications protocol used for SCADA/PLC communications. Much of its popularity as a de facto standard is due to its relatively simple implementation compared to other industrial communications protocols. The student will use the Modbus specifications [2] to implement ModbusASCII, ModbusRTU serial line protocols and ModbusTCP. This will be done first using a simulator [3], then later using a physical I/O module [4] to control some real world devices.  A stretch goal is to integrate with the server side of last year's GSoC project "MMI (Man-Machine Interface) with Amber" [5].

[1] Sample animation at http://en.wikipedia.org/wiki/SCADA (circles are motors, triangles are valves, half circles are valve controllers.)
[2] http://www.modbus.org/specs.php (about 50 pages - not all required)
[3] http://www.plcsimulator.org/Home (or similar)
[4] http://www.audon.co.uk/modbusio/mbiodaio.html (or similar)

[5] http://gsoc2012.esug.org/projects/mmi-amber

Benefits to the Student

  • gain experience in client/server programming
  • gain experience in a widely used industrial communication protocol.
  • practice breaking down and implementing a real-world specification - good training for the workplace.
  • controlling the real world from Smalltalk will be cool
  • a local industrial plant might be approached to help with a practical test case, maybe leading to ongoing employment.

Benefits to the Community

This project expands the industry segments into which the Smalltalk community can consult. It provides a foundation for development of a SCADA system in Smalltalk.

The industrial automation industry is a great source of bespoke application development. It is a service industry where the source code is owned by the client, since every industrial plant is different requiring a custom written SCADA application. Many plants run 24x7, so ongoing modifications need to be made online without shutting down the operator's console, for which Smalltalk is ideal (not all current commercial SCADA platforms can do this).

 

For Kids

 

Phratch, a port of Scratch to Pharo 2.0

Level: intermediate

Possible mentor: Jannik Laval

Possible second mentor: Serge Stinckwich

Description

Phratch (https://code.google.com/p/phratch/) is an ongoing port of Scratch and BYOB on Pharo 2.0. The current prototype is still suffering from a lot of bugs. Part of the work will be to add unit tests to the existing project. Even if this is a port to Pharo, we will try to build a new version that is flavor-independent. The long term objective of Phratch is to be able to use it for teaching software engineering and robotics.

Technical Details

Pharo and some knowledge of Squeak

Benefits to the Student

Student will participate to a very cool project.

Benefits to the Community

Scratch will be rebuild on top of a modern Smalltalk version and will benefit from lastest development in the
core library and VM.

 

Arduino Web Interface

Level: Beginner

Possible mentor: Ricardo Moran

Possible second mentor: Gabriela Arevalo

Description

The Arduino project for Pharo currently includes a set of core classes that allow you to communicate with an Arduino board. This is generally enough for some projects. However, no user interface has been implemented yet. This project involves the development of a web interface that would allow to control an arduino from a web browser.

Technical Details

The project could be implemented using Seaside and Amber, and it would involve developing a set of generic web controls for accessing the state of the arduino pins. These web controls must allow the user to easily compose a website to control his arduino project. The arduino pins could be classified as:

  1. digital input
  2. digital output
  3. analog input
  4. analog output (pwm)

Each of these pin types would have a different graphical representation, and maybe inputs could be plotted over time. Other devices (like motors, lcd displays, and such) could be modelled as well.

Benefits to the Student

The student will learn how to control an Arduino from Pharo and to develop a web application (possibly using Seaside and Amber).

Benefits to the Community

The community would benefit from having a set of generic web controls to interact with an Arduino, which would in turn encourage the development of interesting projects using Pharo and Arduino. The interaction via web is specially interesting for home automation projects because it allows you to control some aspects of your home from anywhere in the world, provided that you have access to a web browser.

 

ROSTalk, control robot on the web

Level: advanced

Possible Mentor : Serge Stinckwich

Possible second Mentor : Anyone ?

Description

ROS (Robot Operating System) is a software to standardize communication between robotic applications. Communication between components is performed using messages channels named "topic". A gateway named ROSBridge allow ROS components to controlled from a web browser that supports HTML5 WebSockets protocol. The gateway converts ROS topics in JSON objects used in a web application. JavaScript is the default language of many modern web browsers (Firefox, Google Chrome, ...) but this is a limited language as soon as you want to
build reusable components. ROSTalk is a prototype developed by Serge Stinckwich based on Amber Smalltalk, which allows to use the language Smalltalk from a web browser in order to control robotic software.

Technical Details

Smalltalk Amber, JavaScript, ROS middleware

Benefit to the Student

  • Learn how to use ROS middleware and develop complex Smalltalk application on the web.

Benefit to the community

  • will enhance visibility of Amber Smalltalk to larger audience.

 




Updated: 10.4.2013