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
|