Open Projects
If you are interested helping out with Étoilé, there is still a lot of work to be done that we would be glad to have help with. This section contains a few project ideas. If you want to know more about any of these then come and visit our IRC room or send a message to our mailing lists, etoile-discuss or etoile-dev.
All projects will require some basic knowledge of the Objective-C Cocoa/OpenStep API's. If Étoilé sounds like the project for you but you aren't familiar with these technologies, we will be happy to help you get comfortable. See First Steps into Étoilé and GNUstep Programming for some starting points.
EtoileUI Difficulty:
EtoileUI is a reflective UI framework based on a uniform tree of UI objects, it implements many Étoilé high-level UI features like Pick & Drop, Pluggable Layouts, Composite Document etc. This is a broad project which will involve working with Quentin on finishing the design and implementation of EtoileUI.
Time to Complete | Task |
---|---|
TBD | For a task list, see the TODO document. |
Opal Difficulty:
Opal is the CoreGraphics implementation in Étoilé subversion.
Time to Complete | Task |
---|---|
4 Months | Finish the text-related functions in Opal and build a CoreText implementation on top (probably using Pango for most of the layout). This is a large task and probably should only be attempted by someone already familiar with Apple's Quartz and Cairo. |
Theming Difficulty:
Finish existing Étoilé themes, and collaborate with GNUstep on the theme engine.
Time to Complete | Task |
---|---|
2 Months | Polish GNUstep theme engine. |
1 Month | Finish Narcissus. |
2 Weeks | Finish Nesedah. |
1 Month | Finish the Aristo port. |
OMeta Implementation Difficulty:
OMeta is a object-oriented pattern-matching language. It allows implementing parsers that can easily be extended by subclassing. Étoilé already has a work-in-progress implementation of the parsing side written in Smalltalk.
Time to Complete | Task |
---|---|
TBD | Finish the present OMeta implementation. |
Reimplement the present lemon-based Smalltalk parser using OMeta. |
TermX Difficulty:
Finish the terminal application TermX (add colour support and other missing features)
Time to Complete | Task |
---|---|
TBD | TBD |
SystemConfig Difficulty:
Write the missing parts of SystemConfig, test it on more platforms and implement missing components and write a dæmon which coordinates the access to the system, monitors the system and sends distributed notifications.
Time to Complete | Task |
---|---|
TBD | TBD |
XMPPKit Difficulty:
XMPPKit is an Objective-C implementation of the Extensible Messaging and Presence Protocol (XMPP) that can be used to write Jabber-enabled applications.
Time to Complete | Task |
---|---|
TBD | Add Jingle support to XMPPKit. The Jingle protocol is a large collection of XEPs, so this can be done in an incremental fashion. |
TBD | Add file transfer support to XMPPKit. Since the latest file transfer protocols are based around Jingle, this could be combined with adding Jingle support. |
TBD | Implement shared shelf using PubSub (includes implementing PubSub - XEP-0060). The publish-subscribe protocol is very large, but only a subset needs to be implemented. The scale of this project can vary depending on the student. |
TBD | Implement serverless messaging (XEP-0174). This will require some changes to the connection handling code in StepChat (which is badly in need of rewriting) and the abstraction of the presence handling code to allow presence stanzas to be delivered over ZeroConf. |
PhotoManager Difficulty:
PhotoManager is a simple application for managing photographs, written in Smalltalk using EtoileUI and CoreObject.
Time to Complete | Task |
---|---|
2 Weeks | Implement stack/unstack operations similar to Aperture. They would give an "exploded" view of a group, by switching the layout set on it. For the "exploded" view, the layout would a either ETFlowLayout or a new ETSpreadStackLayout (based on ETComputedLayout). |
1 Week | Add a full-screen layout to EtoileUI to support viewing a slideshow of the images. |
2 Weeks | Add support for importing images from a digital camera, using the gPhoto library. Write both a simple Objective-C wrapper around gPhoto, and a CoreObject subclass which presents the photographs on the camera as a CoreObject group. |
1 Month | Support reading image metadata, likely by writing a wrapper around an existing metadata reading library (support EXIF and IPTC, and possibly XMP). |
Garnet-style Constraint Support for EtoileUI Difficulty:
TBD
Time to Complete | Task |
---|---|
TBD | TBD |
Melodie Difficulty:
Melodie is the Etoile music player/manager. This project will involve various improvements to the application to bring it to a more usable state.
Time to Complete | Task |
---|---|
1 Month | Finish writing parsers for various playlist formats (M3U, SMIL, XSPF) |
1 Month | Finish the album cover support. This will involve working with EtoileUI to support asynchronous loading of images. |
1 Month | Integration with Last.FM, or possibly other web services. |
1 Month | Support for iPod and other digital audio players. |
1 Month | Investigate adding the capability to CoreObject to coordinate transcoding between different audio formats |
CoreObject Difficulty:
CoreObject is a framework for managing persistence, versioning, and metadata on documents/objects. This project could cover a wide variety of work on CoreObject depending on the contributor's interests.
Time to Complete | Task |
---|---|
TBD | For task list, see the TODO document |
Metadata and CoreObject Difficulty:
Investigate a unified way of handling metadata extraction, linking with UTI's (Uniform Type Identifiers). We have some basic code for reading audio file metadata in Mélodie, and will want to support reading metadata for other file types (video, photographs, etc.). We may want to support Adobe's XMP metadata format.
Time to Complete | Task |
---|---|
TBD | TBD |
EventKit on top of CoreObject Difficulty:
The EventKit API that Apple introduced with 10.8 is very simple, and now that we have declared properties working with clang it would be pretty simple to implement it on top of CoreObject. Parsing iCalendar files is pretty simple (they're like vCards; trivial key- value pairs, you can parse them with NSScanner). Leave the remote calendar source stuff for now, and let people provide plugins for things like CalDAV / MS Exchange calendars if they're sufficiently motivated.
Time to Complete | Task |
---|---|
TBD | TBD |
EScript Difficulty:
Work on EScript, an ECMAScript-like language implemented on top of LanguageKit.
Time to Complete | Task |
---|---|
TBD | TBD |