| Title | Systematically Breaking and Fixing AbiCollab |
|---|---|
| Student | Ryan Pavlik |
| Mentor | J.M. Maurer |
| Abstract | |
|
The AbiSource project provides a free, fast, powerful word processing application, AbiWord. A live, real-time collaboration feature, AbiCollab, has been added to the development version, allowing an arbitrary number of users to work together on the same document at the same time. While keeping all copies of the document in sync is of moderate difficulty when entirely separate parts of a document are edited, edits that are close to each other provide remarkable challenges in synchronization and usability: how do we maintain the integrity of the document for all viewers, yet not surprise any of them with unexpected, if technically "correct," behavior? I will systematically explore these corner cases, finding where synchronization is lost and where synchronization results in counter-intuitive behavior. I will then work to resolve the problems that I find, so that AbiCollab is released with the next major release of AbiWord as a robust, stable addition, in addition to being highly innovative.
In addition to my work on the AbiCollab algorithm, I will also use my knowledge of the Windows platform and my experience building and testing on Win32 to produce a solid Win32 GUI for the AbiCollab feature, which is currently Linux-only (GTK+). |
|
| Title | Abiword: OpenXML importer |
| Student | Philippe Milot |
| Mentor | Kamran Khan |
| Abstract | |
|
The cross-platform word processor AbiWord has great interoperability. The project's website states: "AbiWord is able to read and write all industry standard document types, such as OpenOffice.org documents, Microsoft Word documents, WordPerfect documents, Rich Text Format documents, HTML web pages and many more."
However, there is a new format that will eventually become an "industry standard" which AbiWord does not support yet: Microsoft's OpenXML initiative. This project aims to create a filter plugin that will import a ".docx" OpenXML document by translating it into AbiWord's native data model. The project will have two components: an extensible "backend" which does the work of converting ".docx" files, and the actual filter plugin, which will use the backend to integrate the functionality into AbiWord itself. Since the backend's design will be as modular as possible, one of the goals is to allow the eventual extension of its capabilities so that it will be able to convert both ways. Once that is done, an export filter can hopefully be written easily to complete Abiword's compatibility with OpenXML. |
|
| Title | 4. Implement annotations |
| Student | Ernesto Rivera |
| Mentor | Martin Edmund Sevior |
| Abstract | |
|
Provide a complete solution to work with annotations in AbiWord.
- Create, edit and remove annotations. - Create annotations from existing text or from “scratch”. - Allow AbiWord-generated annotations. - Allow users to show, hide and print them. |
|
| Title | Interface service for the use of external grammar checkers in Abiword |
| Student | Gabriel Bakiewicz |
| Mentor | Dominic Lachowicz |
| Abstract | |
|
Abiword currently offers a grammar checking tool to the user through a plugin that uses link-grammar as back-end. The only available language for checking is English, as supported by link-grammar. Moreover, the checking is slow and the results are not clear to the user, with no further information on the errors detected.
I would like to enhance this tool by allowing to connect other open source checkers to Abiword. The change will make it possible for users to count on more developed tools, which have features such as explaining the errors found and suggesting a correction. Also, it will allow grammar checking on a higher range of languages, as supported by the different checkers. |
|
| Title | (Un)Lock groups |
|---|---|
| Student | Andre Cohen |
| Mentor | Brian Eric Ganninger |
| Abstract | |
|
Project Overview
This project will add a new feature to the way groups are presented. Groups will be able to be unlocked from their vertical arrangement and float freely and locked to either a vertical or horizontal arrangement. In order to keep some sense of order, groups will be able to snap to both other groups and the edges of the screen. This will give users more freedom in the way they arrange all their currently open windows by taking advantage of all the free space on the screen. |
|
| Title | Fix & expand AppleScript |
| Student | Matthew Joseph Handley |
| Mentor | Peter Hosey |
| Abstract | |
|
Adium's AppleScript support is somewhat incomplete and buggy. I will implement a dictionary file that addresses many of the these problems and will provide Adium scripters will plenty of opportunities to expand the application. Hopefully, this will get more Applescripters excited about using Adium.
|
|
| Title | Improving Adium's XMPP Support |
| Student | Andreas Monitzer |
| Mentor | Robert August Fackler |
| Abstract | |
|
Since my project last year was scrapped after the fact due to the deprecation and simultaneous breaking of the Java Bridge by Apple, I'd like to re-implement most of the features it had into Adium again, since Adium's XMPP support is still very bare-bone.
Due to vivid discussions with the Adium and libpurple developers, I've concluded that going with libpurple-based XMPP is the way to go. I reviewed the Pidgin 2.0 application and found it to have many features that are absent in Adium. These will have to be integrated into the user interface. Further, some missing features are known to be incompatible with Pidgin's philosophy. Sean agreed that we're allowed to add features to XMPP/libpurple, even when they don't benefit Pidgin itself. Features that are implemented in Pidgin I'd like to add to Adium are: * Full MUC support (roles, nick registration, nick change, channel setup, channel subject) -- this will probably require co-operation with whoever will work on the improved groupchat support * Forms support (required for many features) -- this is going to be complicated due to the nib-centrism of Cocoa * Console for directly sending stanzas and logging all XMPP communication Features that I'd like to implement in libpurple and add to Adium are: * Gateway support (registration, log on/off) * PEP (http://www.xmpp.org/extensions/xep-0163.html) -- This will be a bit complicated to implement, since there is no support for this in any server yet. However, there's an experimental patch to ejabberd for it, so maybe I can use that one for testing. * Based on PEP, implement some protocols that require this, like user tune (http://www.xmpp.org/extensions/xep-0118.html), user avatar (http://www.xmpp.org/extensions/xep-0084.html) and user nickname (http://www.xmpp.org/extensions/xep-0172.html) * fix OTR-support (http://trac.adiumx.com/ticket/5558) * http://trac.adiumx.com/ticket/4695 * Discovery Browsing. This will probably need some previously unthought of user interface (the main reason why Pidgin refuses to implement it is the weird interface usually used for it). This would enable MUC channel listings, ad-hoc commands (http://www.xmpp.org/extensions/xep-0050.html), looking up gateways and other nice features. * Maybe Invisible Command, depending on whether this can be implemented using libpurple (it requires being silent to certain requests). |
|
| Title | Improved Bonjour Support for Adium |
| Student | Erich Kreutzer |
| Mentor | Andrew Wellington |
| Abstract | |
|
The Adium instant messaging client supports many popular messaging protocols including AIM, Yahoo, Google Talk, and MSN. Adium currently also supports other protocols including Bonjour, a protocol most widely used by Apple's iChat. Unfortunately, Adium's current support for Bonjour messaging has numerous bugs and lacks important features. This project aims to modernize Adium's support for Bonjour.
Adium currently uses the libezv library to support messaging with iChat, however, important bugs such as the inability to send multiline messages and improper reporting of the current users online significantly detract from the usefulness of this library. Thus, this project will fix these outstanding bugs. Another function of this project will be to switch libezv to use Apple's well-maintained mDNSResponder. Supporting file transfer between Adium and iChat over Bonjour is the third major goal of the project. However, time permitting, the project will lay a groundwork for audio/visual chat using Bonjour. |
|
| Title | CD-Text support for the CDAudio plugin |
|---|---|
| Student | Calin Crisan |
| Mentor | Tony Vroon |
| Abstract | |
|
Audacious Media Player has evolved very much in the last few months, thus becoming a good and mature music player. It is the best alternative for XMMS - the most common player in the past 10 years, in Linux. The plugin-based infrastructure allows a great variety of media files to be played. Most of the plugins are fully functionable, while some of them lack certain features, or they are marked as "ugly" because of their code lookalike, their instability or usability. The main goal of this task is to implement suport for CD-Text (see: http://web.ncf.ca/aa571/cdtext.htm for more info) in the existing CDAudio plugin. To achieve this goal, the guidelines found at the previously given link will be used, as well as some code from the K3b project (http://www.k3b.org/).
|
|
| Title | Rewrite widgetcore as real GTK2 widgets |
| Student | Tomasz Moń |
| Mentor | William Pitcock |
| Abstract | |
|
Synopsis
-------- This project aims to get rid of some leftovers from XMMS and BMP code. I would rewrite the widgetcore as real GTK2 widgets. |
|
| Title | Additional NewVFS transports |
| Student | Cristian Măgherușan |
| Mentor | William Pitcock |
| Abstract | |
|
Project: Audacious Media Player - additional NewVFS transports
Audacious uses a implementation of a virtual file system (called NewVFS) in order to abstract the file access. NewVFS transports currently enable audacious to play URL's for streaming content (such as http and https). In my SoC project I would like to add support for some streaming protocols that audacious is currently missing, including the following URL types: * lastfm * mtp * daap * ssh * smb If the time allows, I would add support for even more as required by the community. Time Schedule: * In the first 1-2 weeks I'll get familiar with the source code and the devs crew. I'll try to understand how any other free software applications implement these features, and if possible 'steal' some ideas or code samples from them. I hope my my mentor will help me finish this stage as fast as possible * The next weeks I'll dig into the source and write code to implement the features. * The following 2 weeks I will do mainly bug-fixing. Shall I'll finish faster than the SoC deadline occurs (hopefully), I'll make myself useful by adding other features audacious is lacking, or improve the existing ones. Anyway I intend to remain an active developer afterwards since audacious is my main music player, and I'll like to make it become better. |
|
| Title | Multi-threaded Implementation |
|---|---|
| Student | Manuel Antonio Fernandez Montecelo |
| Mentor | Tristan Colgate |
| Abstract | |
|
With the advent of multi-core computers even for basic desktops, parallelizing an application which needs huge amounts of CPU power can bring big performance benefits. Using threads in applications to listen for incoming data (e.g. via sockets) has the benefits of not blocking the rest of application or not having to poll in a loop; but with N CPUs/cores an application with huge CPU usage can run up to N times faster (using a fraction 1/N of the time compared with single-threaded implementation) in the critical parts -- provided that is highly parallelizable, of course.
One of the big problems of using threads is the different implementation of them in the different platforms. However, this can be circumvented with the use of Boost.Threads (or maybe alternatives such as OpenThreads). This project aims to implement core parts (especially the rendering stages) in a multithreaded way, so the application can benefit from powerful hardware in a platform-independent and reliable way. |
|
| Title | Deep Shadow Maps implementation for the rendering of coloured shadows and hair/fur shadows |
| Student | Zachary Carter |
| Mentor | Christopher James Foster |
| Abstract | |
|
I propose to implement the deep shadow mapping algorithm as described by Lokovic and Veach [http://graphics.stanford.edu/papers/deepshadows/deepshad.pdf] as a new feature for the Aqsis renderer. This algorithm, like traditional shadow maps, stores a rectangular grid of pixels, but unlike standard shadow maps, the data stored at each pixel is a visibility function, rather than a depth value, representing the fraction of initial light energy that reaches a point at arbitrary depth. This is like having an alpha channel available as your shadow map at every z-depth, giving you semi-traasparent shadows and colored shadows without raytracing. Since these alpha maps themselves are not stored, only the functions used to compute them, storage for this algorithm is very low, but sampling can still be parallelized.
I will correspond with students implementing multi-threaded functionality of the core REYES renderer so that shadow mapping is ready for threaded execution upon release. |
|
| Title | Piano-Roll MIDI Editing Interface |
|---|---|
| Student | David Edward Robillard |
| Mentor | Paul Davis |
| Abstract | |
|
Last year's SoC saw Ardour gain the ability to record MIDI data in addition to audio. While the underlying functionality is there, in order to be competitive with professional sequencers a nice GUI interface for editing MIDI data is needed (and highly requested by Ardour users and the Linux audio community in general).
This project includes the implementation of a piano-roll style MIDI note editing interface in Ardour, and the ability to send control messages (MIDI CC and NRPN) with an interface similar to the existing one for automation. |
|
| Title | n.m panning |
| Student | Christian James Muise |
| Mentor | Jesse Chappell |
| Abstract | |
|
n.m panning
Name: Christian Muise Email: christian (dot) muise (at) gmail (dot) com Site: http://www.haz.ca/ ## Proposal ## Panning a mono sound source to an arbitrary speaker setup, such as 5.1, is required by any studio level audio recording software. A properly written panner for Ardour to any of the standard home theatre setups would be a huge asset to the software. Having this capability would allow users of Ardour to mix sound for Dvd videos or even DVD-Audio mixdowns. Providing this feature to the Ardour user base is something that would take Ardour to a new level. ## Why Me? ## The task of gearing an audio application to spacial panning is one that requires a great deal of mathematics and programming knowledge. This is primarily why I'd be perfect for this project. I have a strong mathematical background through the courses taken in University, and programming for audio is a huge interest of mine that I've not been able to tap into as of yet. I am currently a student in a Sonic Design program at Carleton University. Because I have a strong background in music and audio recording combined with my primary major in Computer Science, I would fit quite nicely with the Ardour team. I have used Ardour with Agnula quite a bit in the past, and I am currently shifting my home studio setup to use that OS with Ardour exclusively. ## Why You? ## Having a hand in creating the software I will be using would be the best area for me to work in. I want to solidify a place in the open source community where I could be the most helpful and interested, and Ardour would be one of the best projects providing this. ## Purchases ## For this project, the initial funding would be used to up my current setup from 2.0 to 5.1. This would simply involve purchasing new speakers for the Delta 1010 Soundcard currently being used. I feel that it is reasonable for the student to input some of the funding for the gear needed to complete the project. ## Milestones ## May 28th: Project plan figured out, and code base reviewed. May 31st: 5.1 speaker setup purchased/placed June 21st: Mathematical research complete for panning July 9th: First draft of code for 5.1 complete July 17th: Mathematical code optimized for real-time Aug 2nd: Second draft of code complete for arbitrary speaker setups Aug 20th: Final implementation ready to be released ## Bio ## I am currently finishing my 5th and final year of a Computer Science degree with a Minor in Math at Carleton University, Ottawa. I hold a leadership role in the Robotics Club, Game Dev Audio Group, ACM Contest Teams, and the student society for Computer Science. I have interests ranging from AI to audio to robotics, and spend most of my spare time trying to find slick ways of combining all of them into a single project. I was a successful applicant of Google's Summer of Code in both 2005 and 2006. While I have adopted a fair amount of Open Source solutions over the last few years, I have not yet had the opportunity to become part of a development community for which I would be well suited. This is my goal for Summer of Code, 2007. More info can be found on my website. |
|
| Title | UML2 for ArgoUML |
|---|---|
| Student | Pistol Constandache Bogdan Ciprian |
| Mentor | Tom Morris |
| Abstract | |
|
Eclipse UML2 for ArgoUML
Project Goals The goal of my project is to advance ArgoUML model subsystem to UML2.1.1 with the Eclipse UML2 project. Details The hole UML2 is too big for 3 months of summer, so I propose a subset of UML2. The main interfaces from argouml-core-model (ModelImplementation, ModelManagement and others that are required). Then I would choose an incremental approach on language units: Classes, Use Cases. Eclipse UML2 is suited for both Eclipse plugins such as ArgoEclipse and for standalone applications such as ArgoUML. I tested it by building a small standalone application in Java that uses Eclipse UML2. You can find details here: http://argouml.tigris.org/servlets/ReadMsg?list=dev&msgNo=20781 |
|
| Title | Extending ArgoUML to support UML Profiles |
| Student | Marcos Aurélio Almeida da Silva |
| Mentor | Linus Tolke |
| Abstract | |
|
UML is a de facto standard in commercial software modeling. The language provides a rich set of constructors which enable the specification of systems ranging from simple information systems to sophisticated multi-threaded ones. Despite of the fact of being mainly target to specifying software systems the language also provides means to be adapted to other domains, as multi-agent systems, tests, and many others. This project aims to extend ArgoUML in order to support UML profiles, the proposed features include (but are not limited to): definition, application and management of profiles.
|
|
| Title | Sequence Diagrams improvements |
| Student | Christian López Espínola |
| Mentor | Robert James Tarling |
| Abstract | |
|
The sequence diagrams subsystem in ArgoUML are in need of some work. It was coded a long time ago, and now it isn't consistent with the rest of the ArgoUML code. I want to refactor this decreasing the maintenance cost of the subsystem in the future.
|
|
| Title | ArgoPDF – The PDF report generation tool. |
| Student | Dmitry Churbanov |
| Mentor | Ion Savin |
| Abstract | |
|
During the development programmers need to have a report of the architecture of the future application. This report can also be useful for future development and not only for programmers.
At this moment ArgoUML do not have the possibility to generate full-scale report of the designed architecture. ArgoPDF as a part of ArgoUML will make it easy to generate report as pdf file. While making a report, you will be able to compose title page by specifying different parameters. You will be able to choose the diagrams to include in the report. Setting up parameters will be easy through an intuitive graphical user interface. ArgoPDF will be implemented in Java using a free powerful java library for generation pdf files - iText (http://www.lowagie.com/iText/). ArgoPDF will be a part of already existed ArgoPrint subproject. |
|
| Title | Alternative GUI layer in GEF library for ArgoUML project |
| Student | Jian Zheng |
| Mentor | Robert James Tarling |
| Abstract | |
|
The GEF project is developed to provide a graph editing library for other graph applications, e.g. ArgoUML. It contains several diagram elements and enables the users to interact with them for moving, resizing, reshaping, dragging and dropping, etc.
The GEF project is based on swing and java2d libraries. This GSoC project aims to abstract away the Swing/Java2D functionalities in the GEF project into a separated package and provide an alternative GUI alyer. |
|
| Title | Canonical XML Implementation on Apache AXIOM |
|---|---|
| Student | Saliya Ekanayake |
| Mentor | Ruchith Fernando |
| Abstract | |
|
Apache Axis2 uses Axiom as its underlying object model which provides an efficient yet less memory-intensive object model. The current implementations of Canonical XML and Exclusive XML Canonicalization specifications of The Apache XML Project use DOM underneath. These implementations are used in Axis2 in providing WS-Security with great hassle due to the expensive conversion between DOM and Axiom.
The intention of this project is to eliminate such conversion and to improve the efficiency for relying parties of XML canonicalization by implementing both specifications based on Axiom. Eventually it would provide a vital improvement to Axis2 as its WS-Security implementation heavily depends on XML canonicalization. |
|
| Title | Implementing Mail Transport (SMTP/POP3) support for SOAP 1.2 for Axis2/C |
| Student | Rajika Kumarasiri |
| Mentor | Saminda Wishwajith Abeyruwan |
| Abstract | |
|
This is an attempt to implement Mail Transport (SMTP/POP3) support for Apache Axis2/C. Currently Axis2/C has the HTTP transport as the general transport.
At the end of the project Axis2/C will have the mail transport support in addition to the HTTP transport. The project is going to be done keeping extensibility in mind so that the other protocols(ex.IMAP4) can be plugged. |
|
| Title | Unified expression handling and unified object model in Apache Cocoon |
| Student | Grzegorz Kossakowski |
| Mentor | Daniel Fagerstrom |
| Abstract | |
|
As for any other web application framework, one of Cocoon's core functionality is expression handling. Simple yet powerful expression languages (ELs) enable developers creating Cocoon applications query for data they need in clean manner. Even though several ELs are already present in Cocoon their use is now incoherent and they operate on inconsistent Object Model (OM, discussed below). This is a serious obstacle for novice users and makes Cocoon applications more difficult to maintain. In order to address these issues I propose to:
* revise EL handling implemented in Cocoon's template block and find out if improvements are needed * get rid of Avalon dependencies in EL and OM handling code * provide consistent, complete object model for expressions everywhere they are used * implement converter concept and provide basic converters' implementations * refactor at least portion of Cocoon samples so they use new ELs implementation * document new architecture, create migration guides and promote the use of new implementation across the community |
|
| Title | Streaming LOB support (for OpenJPA) |
| Student | Ignacio Andreu Dolset |
| Mentor | Patrick Linskey |
| Abstract | |
|
OpenJPA is a 100% open-source implementation of the Java Persistence API (JPA), which is the persistence component for EJB in the Java EE 5 specification (part of JSR-220).
JPA combines the best ideas of other persintence technology, such as Hibernate, JDO and TopLink The fields BLOB and CLOB of sql are translated for the Java programmer in the java.io.InputStream (for BLOBs) and java.io.Reader (for CLOBs) types, the objective of this project is to provide a serialization in database of these objects in a natural way. |
|
| Title | Maven Diagram-Maker |
| Student | Piotr Tabor |
| Mentor | Jason van Zyl |
| Abstract | |
|
My proposition is to create a software system that will allow,
during the build process of a project, to automatically generate diagrams of chosen aspects of the project. I would like to provide two components: a graphical editor and a Maven plug-in. "The Graphical Editor will offer live (WYSIWYG) preparation of a graphical presentation of the project by setting such properties as: - Type and subset of data, we want to present, - What part of the data is to be presented, - The method of presenting of each type of diagram nodes (that is, what attributes of the item will be displayed), and the general "style" of the presentation. I would like to provide UML-like design. - The general layout algorithm - The positions of selected locked nodes – which we want to put in a fixed area. All other nodes will be positioned automatically. The schema of the diagram created by the editor will be saved to an XML file. Additionally the editor may be used as a graphical browser (explorer) of chosen aspects of the project. The editor will use the Prefuse library (http://prefuse.org). The Maven Plug-in (maven-graph-plugin) – will be using the XML file prepared by the Graphical Editor and the current state of project to prepare images in various graphic formats (JPG, TIFF, PNG and others supported by the Sun JIMI library). The plug-in will be able to prepare the HTML <map> tag for the picture too (to create an active area on web page containing the image). The resulting file will be ready to use in the next Maven phases by Doxia or other documenting tool. The maven-graph-plugin will cope with changes in the project made after generating the schema XML file. This means that if an object from the XML file is no longer exists in the project, it won't be visible in the picture. It also means that if the object is new, it will be placed in the picture (in a place calculated by the general layout strategy set in the XML file). Additionally the user will be warned about any discrepancies between the expected and actual data and problems with finding space for a new object. The diagram generation will not modify the XML file, but will only try to interpret it for the current situation. During Google Summer of Code time I wish I prepare two connectors (possibilities to visualize an aspect of project): - Dependencies diagram connector – to visualize the chosen project's subset of the dependencies (internal or external, up to a configured depth or/and included in a given scope). It will be also possible to exclude some dependencies from the diagram. - Class diagram – to visualize the inheritance and composition aspects of the class hierarchy. The information will be obtained by reflection. Of course the mechanism of the connectors will be universal enough to make the addition of a new aspect of a project as simple as possible. |
|
| Title | Implementing “Dobly” Noise Reduction for SpamAssassin |
| Student | Jianyong Dai |
| Mentor | Michael Parker |
| Abstract | |
|
* Project Description
Bayesian filtering is a powerful machine learning tool frequently used in spam detection. However, unintentional or intentional noise could circumvent Bayesian filter (http://bnr.nuclearelephant.com). In unintentional case, it is normal that some common words appear in both spam and legitimate email, which makes spam emails look somewhat similar to legitimate emails. Furthermore, spam mail writer could intentionally inject some words which only appear in legitimate emails. In that, Bayesian filter will be deceived and misclassify a spam as a legitimate email. Dobly Bayesian Noise Reduction (BNR) is a preprocessing step to eliminate these noises from email before presenting them to Bayesian filter. The basic idea of BNR is to remove words which are not informative in Bayesian filter and words not consistent with its context. Result shows that BNR will increase the accuracy of Bayesian filter by a wide margin. BNR is a feature of DSPAM system (http://dspam.nuclearelephant.com) and there is a reference implementation of BNR alone (http://bnr.nuclearelephant.com). The goal of the project is to add BNR into SpamAssassin in a proper way. * Benefit to SpamAssassin Community Increase the accuracy of Bayesian filter with affordable performance penalty and minimal administrative overhead * Deliverables Perl module for BNR, integration with existing Bayesian filter and learner, sql script for new data structure, documents for new configuration entries, performance document, etc |
|
| Title | Enhancing Batik's document viewer |
| Student | Ivan Andjelkovic |
| Mentor | Cameron McCormack |
| Abstract | |
|
Batik's browser application has only the basic support for inspecting a document, through the DOM Viewer component.
In my application I propose the possible ways of enhancing Batik's document inspector. This can be achieved by not only browsing the DOM tree, but also allowing the editing of the document through the DOM Viewer. Therefore, following options should be implemented: 1. The user – requested option which would update the state of the DOM Viewer from the content of the document, 2. The options for adding new elements and attributes, and editing the listed ones. The key is to use intuitive GUI interface and write a set of methods to support the manipulation of the document throught the GUI. The user should be able to add new nodes to the Viewer's tree, add new attributes in the attribute list or edit the value of the existing ones and see the changes on the canvas. After performing any of the changes, the document referred by a Viewer has to be refreshed. The final goal here is to enhance document manipulation through the DOM Viewer component, so the user can easily browse and edit the content of the document. |
|
| Title | The Persistent Database Connection Plugin |
| Student | Zhang Shunchang |
| Mentor | Michael Parker |
| Abstract | |
|
Just as the bug reporter said: In the spamassassin system(http://spamassassin.apache.org/), every spamd instance (fork) requires a new connection to be created to the SQL server, then a query happens, and then the session is disconnected. This is quite unnecessary and inefficient. Spamd should actually connect on startup, disconnect on shutdown, and just do queries through that open connection. So we need a persistent database connection plugin.
Fortunately, Michael Parker have fixed the bug by adding a plugin (http://wiki.apache.org/spamassassin/DBIPlugin) that handles persistent database connection. However, due to the licensing problem(DBI,Apache::DBI is under GPL,http://www.gnu.org/copyleft/gpl.html), this plugin cannot be made into the main SpamAssassin codebase. we need an implementation under ASL(http://www.apache.org/licenses/). Main purpose: 1.keep a persistent database connection 2.implement the plugin under ASL |
|
| Title | Adding Functionality and Usability Improvements to Chainsaw |
| Student | Isuru Eranga Suriarachchi |
| Mentor | Paul Smith |
| Abstract | |
|
Chainsaw is included in Apache/Log4j. It is a GUI based log viewer which is developed to load log events mainly through the 'Receiver' concept. Via these receivers, Chainsaw can load events generated by various frameworks like log4j, log4net, log4perl, log4cxx and java.util.logging. Other than that, Chainsaw can load log events using XML-formatted log files. Using both these mechanisms, Chainsaw can cater various applications. It's GUI features support a lot when it comes to debugging huge applications.
Currently Chainsaw is lacking some important features which can improve the usability of the tool in a great deal. Tailing capability in the VFS log viewer is one of the major improvements that should be done. There are some other features to implement in areas like receiver creation panel, remembering filter and search expressions between Chainsaw restarts and memory usage as well. And also there will be more ideas arising as this project go on. This project would be an attempt to implement the required features in Chainsaw after some research to understand the best ways of improving the efficiency. This will improve the usability of the tool in a great deal. |
|
| Title | MyFaces Component Set Integration |
| Student | Leonardo Alfredo Uribe Panesso |
| Mentor | Martin Marinschek |
| Abstract | |
|
The objective of this project is to improve the integration of the available components in MyFaces, being incorporated the capacity to define skins or styles for define a look n feel of the components in a web page, making a wiki tutorial about using tiles for layout MyFaces components, and solving some previously raised topics in jira of MyFaces that contribute to improve integration between different components available in MyFaces.
|
|
| Title | MyFaces Component Generator |
| Student | Bernhard Huemer |
| Mentor | Werner Punz |
| Abstract | |
|
The JSF APIs are quite powerful from a component developer's perspective, but as in the majority of cases the flexibility you need for full-fledged enterprise web applications implicates complexity in the daily usage. Ruby on Rails demonstrates that it is more advisable to favor convention over configuration, as this is exactly the principle why Ruby on Rails gained its popularity. Therefore JSF component developers should not have to mess around with writing boilerplate code, but rather modify and complement it where appropriate.
Currently, if you want to implement a custom JSF UI component, the following three steps are required: - Create a Java class which inherits UIComponentBase either directly or indirectly. This UIComponent class contains the actual Java code representing the logic of the component. It accomplishes rendering either on its own or by using a seperate renderer. - Register the UI Component by adding the appropriate configuration entries in faces-config.xml. These entries are used both to initialize the JSF application and to provide the possibility for tool vendors to display custom components on a component palette. - Integrate your component with the desired view technology (i.e. JSP). This involves writing tag libraries and tag library descriptor files. The problem arises from the fact that you have to keep these three steps align with each other, but that's an annoying and time-consuming task (for example, it can be quite cumbersome to propagate changes appropriately). In the face of these difficulties it seems to be rather conventient to generate components and taglibs using an existing faces-config.xml. This principle is nothing new as similiar projects (for example, maven-faces-plugin and myfaces-build-tools) are already available, but none of these projects are feature-rich enough. The MyFaces Component Generator improves the ease of component development by using an approved method – convention over configuration. It generates components with default, meaningful behaviour, but of course only if you desire to, as you're still able to use custom templates to alter the generated outcome. |
|
| Title | Design and implementation a better document inspector |
| Student | Jasleen Singh |
| Mentor | Cameron McCormack |
| Abstract | |
|
There is lack of a good SVG explorer on the Windows platform. Batik's browser application, Squiggle, allows a user to view and apply only limited transformations to a single document at a time. Also, error handling and document inspection is quite basic. This project will use the existing code base to implement a full-fledged explorer-like application which allows, in addition to existing features, directory navigation, multiple views (thumbnail, film-strip etc.), undo/redo, simple directory search and generally a better user interface than what we have today. The proposed browser will also have support for making changes to the DOM tree and viewing animated SVG files.
|
|
| Title | Convert Derby tests to JUnit and fix Derby bugs |
| Student | Ravinder Reddy Pandiri |
| Mentor | Samuel Andrew McIntyre |
| Abstract | |
|
In computer programming, unit testing is a procedure used to validate that individual units of source code are working properly.
A unit is the smallest testable part of an application. In procedural programming a unit may be an individual program, function, procedure, web page, menu etc, while in object-oriented programming, the smallest unit is always a Class; which may be a base/super class, abstract class or derived/child class. Units are distinguished from modules in that modules are typically made up of units. The goal of unit testing is to isolate each part of the program and show that the individual parts are correct. A unit test provides a strict, written contract that the piece of code must satisfy. As a result, it affords several benefits. Unit testing allows the programmer to refactor code at a later date, and make sure the module still works correctly (i.e. regression testing). The procedure is to write test cases for all functions and methods so that whenever a change causes a fault, it can be quickly identified and fixed. Readily-available unit tests make it easy for the programmer to check whether a piece of code is still working properly. Good unit test design produces test cases that cover all paths through the unit with attention paid to loop conditions. Unit testing helps to eliminate uncertainty in the units themselves and can be used in a bottom-up testing style approach. By testing the parts of a program first and then testing the sum of its parts, integration testing becomes much easier. Unit Testing provides a sort of "living document". Clients and other developers looking to learn how to use the module can look at the unit tests to determine how to use the module to fit their needs and gain a basic understanding of the API. Limitations: ----------- Unit testing will not catch every error in the program. By definition, it only tests the functionality of the units themselves. Therefore, it will not catch integration errors, performance problems or any other system-wide issues. In addition, it may not be easy to anticipate all special cases of input the program unit under study may receive in reality. Unit testing is only effective if it is used in conjunction with other software testing activities. JUnit is a unit testing framework for the Java programming language. In this project I am going to Convert Derby tests to JUnit and fix bugs in Derby. |
|
| Title | jackrabbit-jcr-demo: μAssessment (muAssessment) Testing System |
| Student | Pavel Konnikov |
| Mentor | Jukka Zitting |
| Abstract | |
|
An application programmer who is not familiar with JCR API but plans to use Jackrabit should have an example of JCR API and Jackrabit usage. Therefore it is necessary to build up a proper application to put on a demonstration of JCR API features.
Demo application requirements: - should illustrate JCR API features in full measure - should illustrate JCR API features complete - should deal with some non-trivial JCR API use cases along with general ones - shouldn’t use any extra frameworks (ex. Struts, Hibernate, etc.) in order to pay attention to JCR API features and not to eliminate people who are not familiar with frameworks in question at initial point; therefore the application must be built up with JSP + Servlets + Design patterns - as a basis for repository realization it is possible to chose both DB and XML-catalog - shouldn’t to be too large, that is to say that the application shouldn’t be overloaded with architectural components - any beginner should gain an understanding of demo application knowledge domain - it is necessary to assure that the application should deploy both on Tomcat and on some AS (Apache Geronimo is preferable) As a case in point the online-test system μAssessment (muAssessment) is suggested. Please visit http://www.konnikov.net/GSoC/2007/ for further information. |
|
| Title | Motion estimation and mode decision in Dirac |
|---|---|
| Student | Andrew Lewis |
| Mentor | Andrea Gabriellini |
| Abstract | |
|
Motion estimation and mode decision incur a large proportion of the
costs in compressing video. I propose a project to utilise more efficient algorithms for these features in the Dirac reference encoder. The focus will be on selection of an algorithm/algorithms which provide excellent performance whilst being conducive to lower-level optimization in the Schroedinger implementation of Dirac by use of the liboil library. |
|
| Title | A file handle like interface to backgrounded Kamaelia components |
| Student | Patrick Thomson |
| Mentor | Michael Philip Sparks |
| Abstract | |
|
This project will give an interface to kamaelia components which can be operated on in a similar way to file I/O, to enable easy kamaelia integration into non-kamaelia-component oriented systems.
|
|
| Title | AIM/IRC client for Kamaelia |
| Student | Jinna Lei |
| Mentor | Matt Hammond |
| Abstract | |
|
[Taken from 'Synopsis' of the Detailed Description]
This project has three parts. Part I is to implement support for the TOC protocol in Kamaelia and to extend the existing IRC capabilities. Part II is to bridge the AIM and IRC protocols, and create a client that deals with both of them uniformly. The client should (a) be easy to extend to other protocols. (b) be a standalone client and be integrable with Kamaelia’s other components, and (c) present a single interface for messaging across all protocols supported. An AIM user Jane messaging an IRC user Bob should not have to be aware (after the initial setup) that Bob is using a different protocol. All Jane should know is that she is sending messages and receiving messages back. |
|
| Title | A Xesam-based D-Bus interface and some TextCache improvements for Beagle |
|---|---|
| Student | Arun Raghavan |
| Mentor | Joe Shaw |
| Abstract | |
|
Currently, Beagle uses an XML-based interface over Unix sockets for it's communication. Specifically, clients talk to the Beagle daemon (beagled) with messages to (a) index data, and (b) perform queries using this interface. This project aims to use the search interface defined in the Xesam [1] specification over the D-Bus [2] message bus system.
[1] http://wiki.freedesktop.org/wiki/XesamAbout [2] http://www.freedesktop.org/wiki/Software/dbus The advantage of such a system is that if each desktop search application, such as Beagle [3] or Tracker [4] supports this interface, then client applications do not need to write code to support each search backend that it wishes to support. [3] http://beagle-project.org/ [4] http://www.gnome.org/projects/tracker/index.html Additionally, it is also desirable to see if such an interface would provide performance benefits over the current XML-over-Unix interface, in which case it could also serve as a replacement to the existing system. Besides this, the project also includes improvements to the TextCache system (used to store partial text from documents for generating "snippets"), particularly with respect to the amount of disk space used. |
|
| Title | Thunderbird backend rewrite |
| Student | Pierre Östlund |
| Mentor | Debajyoti Bera |
| Abstract | |
|
The objective is to rewrite the Thunderbird backend to make it more efficient in every way possible. Straightening out various bugs will also be of highest priority. To make the integration between beagle and Thunderbird more apparent, an extension will be written for Thunderbird so beagle-search can open emails and contacts directly in Thunderbird.
|
|
| Title | Proposal to implement deep shadow maps and a tiling disk cache in Blender. |
|---|---|
| Student | Joseph Eagar |
| Mentor | Martin Poirier |
| Abstract | |
|
This proposal is to implement deep shadow maps, including mipmapping, motion blur, colored shadows and filtering, in Blender. Also, a generic disk cache mechanism will be implemented.
Deep shadow maps are an advanced technique to make high-quality shadows. They work by storing additional samples and transparency info inside of the shadows, allowing for advanced techniques such as mipmapping and motion blur to be applied to shadow maps. Since deep shadow maps take a great deal of memory, a generic tiling disk cache will also be implemented. This system will simply swap shadow map tiles to disk as needed to keep RAM consumption below a user-defined limit. |
|
| Title | Blender audio system cleanup and upgrade |
| Student | Csaba Hruska |
| Mentor | Robert C. Holcomb Jr. |
| Abstract | |
|
The main purpose is to remove every other sound code references from lender source than SoundSystem library.
The other task is removing unneccessary dependencies (fmod, openal) from SoundSystem code with keeping API unchanged. The only used library is SDL, because it`s good multiplatform support. Openal will be replaced with verse project`s audio system code (code is available in verse blender source). |
|
| Title | A GLSL Shader Editing and Preview System for Blender |
| Student | José Miguel da Silva Torres Lima |
| Mentor | Brecht Van Lommel |
| Abstract | |
|
Blender is a powerful Free Software application for 3D modelling, animation, rendering, post-production, interactive creation and playback.
The aplication features many unique and expressive tools for 3D artists like the node-based material editor and compositor, integrated multi-resolution sculpting tools, multi-layer UV mapping and render baking and integrated video sequencing. This project's goals are: to implement support for improving Blender's current material display in the 3D View window, using GLSL programmable hardware shaders; extend Blender's 3D View real-time material preview to support node-based materials by implementing a system to combine shader fragments that represent each node of the graph at real-time and, from those fragments, generate GLSL shaders; create a GLSL shaders representation for Blender's material nodes. Further objectives, if the remaining time allows are: to create a generic GLSL shader node, allowing users to create their own shader in Blender's Text Editor window; to allow to import/export GLSL code for a material node network and to integrate it with Blender's scripting system and the forthcoming PyNodes API. |
|
| Title | Mesh bevel and offset tools/modifiers |
| Student | Levi Schooley |
| Mentor | Geoffrey Bantle |
| Abstract | |
|
Tools to create beveled edges are very important in technical modelling and rendering. However, it is also important that the artist have as much control over the process as possible. During modelling, the artist should be able to bevel selected faces/edges/vertices, choose the appropriate beveling method, and accurately set and view the final result in real-time. Also, a mesh-wide technique for producing a beveled result would be very helpful, mainly for rendering. This would be best implemented as a modifier with options to bevel based on edge crease values, vertex weights, and percentages (based on face joining angles and face area sizes).
In addition, based on the fact that there is a shared interest and perhaps even similar algorithms, the creation of a parallel offset tool would be a great benefit to technical modelling. A parallel offset tool increases or decreases the area/volume of a mesh while attempting to keep the points on the resulting surface as equidistant as possible to the original surface. |
|
| Title | User-friendly graphs and their measures |
|---|---|
| Student | Andrew Sutton |
| Mentor | Jeremy Siek |
| Abstract | |
|
This proposal discusses two additions to the Boost Graph library: the implementation of user-friendly, general purpose classes for simple directed and undirected graphs, and the implementaiton of several graph measures. Specifically, the graph classes are provided to improve the usability of Boost.Graph by providing implementations of common cases (hence lowering the entry barrier). The development of different graph measures can provide statistical insight into the structure of arbitrary graphs. These statistics may be used to help choose, at runtime, more efficient algorithms depending the traits of those graphs.
|
|
| Title | FastCGI and SCGI-compatible CGI library |
| Student | Darren Garvey |
| Mentor | Christopher M Kohlhoff |
| Abstract | |
|
This proposal is for an extensible CGI library for C++. Despite C++ being historically regarded as somewhat 'overkill' for CGI programming, the language can in fact provide efficient, elegant and flexible solutions to many problems in the web application domain. With CGI programming unwaveringly popular and the scale and complexity of web programs ever increasing, there is a distinct need for a library to aid developing these programs using C++.
Furthermore, alternative implementations of CGI, such as FastCGI and SCGI – which significantly aid writing scalable CGI programs – have very poor support in C++, something the proposed library aims to remedy. The Boost libraries (esp. Boost.Asio) are fundamental to this library's design as it exists now (essentially as an incomplete FastCGI library). The scope of the library is intentionally limited to CGI-specific functionality in order to avoid controversy (for instance, no html output formatting such as in perl's CGI.pm). It is also intended to be protocol-independent. That is, to allow a program to be written as a CGI program and for it to be allowed to run as a FastCGI program, for example, with only trivial alterations. Take the following 'Hello world' example: int main() { cgi::request req; // initialise the environment, as one would expect req.header("Content-type: text/plain"); req<< "Hello, world"; return 0; } The above is a complete CGI program. The proposed library will ship with FastCGI and (possibly) SCGI drivers - provisionally called 'services' - as well as a standard CGI service. The following is a complete FastCGI program, which will handle multiple requests synchronously (ie. removing process startup/shutdown costs): int main() { // Note: syntax is not final cgi::fcgi_service service; cgi::request req(service); // this works just like a standard cgi request object while( req.accept() ) { req.header("Content-type: text/plain"); req<< "Hello, world"; } return 0; } The above follows the style of the FastCGI reference library, although more responsive and realistic variations of the above are planned (and partly implemented already). These variations will aim to take full advantage of modern C++ techniques. More information can be found at http://cgi.sf.net I can be contacted directly at lists.drrngrvy [ @ ] googlemail [.] com |
|
| Title | Signal Network library |
| Student | Stjepan Rajko |
| Mentor | Douglas Gregor |
| Abstract | |
|
The Signal Network library aims to facilitate the implementation and interconnection of objects into signal networks using Boost.Signals. To understand the concept of signals (data generators / senders) and slots (data consumers / receivers), please see the Boost.Signals documentation and the associated tutorial.
This is a proposal for development of the Signal Network library as a part of Google Summer of Code and evential inclusion into Boost. Depending on what is preferred, the Signal Network library can be included into Boost.Signals or considered as a separate library. The Signal Network library is to provide * a concise operator based syntax that facilitates construction and readiblity of signal networks * mechanisms that facilitate construction of signal network components * implemented building-block components that are applicable to a wide range of signal networks * detailed documentation (tutorial, examples and reference) of all of the above The development platforms are * OS X / Xcode with Apple's branch of GCC * Windows / MSVC8.0 |
|
| Title | Visualization Of Arrays And STL Containers |
| Student | Jacob Robert Voytko |
| Mentor | Joaquín María López Muñoz |
| Abstract | |
|
As a species, humans gather a majority of their input visually. However, there are an unlimited number of problems that programmers face on a day-to-day basis with computers of a numerical nature. Graphs are the best bridge between the two worlds: they allow for a quick and logical visualization of numerical data that humans are able to quickly comprehend. However, the C++/STL library does not provide a quick and easy way for a visualization of numerical data to occur, and neither does Boost. I propose writing a minimal SVG class that can write in the SVG format along with helper functions to help users visualize data stored in arrays as well as common STL containers. There will also be a subclass, svg_plot, that acts as a user interface for the graph data. The user will be able to customize how they would like the graph to be styled, and the data to be displayed.
|
|
| Title | Boost.Extension and Reflection |
| Student | Mariano Gabriel Consoni |
| Mentor | Hartmut Kaiser |
| Abstract | |
|
The project that I propose is centered in adding to Boost a library that allows the programmer to include extensions/plugins. Additionally this will be the start point to implement reflection concepts.
My proposal has two parts: - Bring Boost.Extensions [1] to completion and enhance it. As I will say in the next sections, I wanted to add to Boost a library that allows an application to have dynamic plugins/extensions within an infrastructure. A member of the Boost mailing list told me about a library by Jeremy Pack called Extension. Jeremy and I agreed that the best approach would be to complete and enhance this library. In short, the completion consists in preparing the library to be sent for review in Boost. The enhancements are several, and will be described later. - Implement Reflection [2] using Extensions functionality The Extensions functionality is the perfect platform to implement Reflection in C++. I've analyzed several papers about this topic and having Extensions complete will be great to start building this new features. Also, the Boost Community showed a great interest saying that it would be a great addition to Boost. Discussing Reflection with Jeremy we agreed that it could be very useful to use the dynamic (run-time) method loading features in Extensions to give reflection functionality to normal C++ classes. I'll detail this point later. |
|
| Title | Proposal for the Development of a Graphical BZW 2.0 Editor |
|---|---|
| Student | Jude Nelson |
| Mentor | David Trowbridge |
| Abstract | |
|
At the time of this writing, there does not exist a graphical BZFlag world map editor that supports all extensions defined by the BZW 2.0 format. While some existing editors come close, it is usually the case that they (a) do not fully support 'phydrv,' 'define,' 'group,' etc., (b) require the users to have a programmer's understanding of the file format to make use of all of its features, (c) are not well documented, or (d) are obsolete. This is problematic to the BZFlag community in that it hinders less technically-inclined users from developing worlds that make use of the BZW 2.0 features, or even developing worlds at all. To increase the world developer base, a new BZW editor needs to be created. It should allow users to quickly create worlds in a visual manner, provide GUIs to easily manipulate all features of BZW 2.0, provide intuitive, interactive visualizations of all of BZW 2.0's data, and allow for easy extendibility to ensure future BZW compatibility. Additionally, to encompass a larger user base, it will be developed using cross-platform toolkits, allowing it to be easily ported between operating systems and ideally support the same target operating systems as BZFlag itself.
|
|
| Title | Random level generator plugin for BZFlag |
| Student | Kornel Kisielewicz |
| Mentor | Daniel Remenak |
| Abstract | |
|
Even the best game gets boring when it runs out of content. The traditional solution for that is creating a community of modders/map developers. This solution tough has it's weaknesses. The other solution is random map generation.
Random map generation is older than most players think. It probably started with the game Rogue, from which it wandered into the roguelike community. These in turn spawned one of the most popular games in history - Diablo. Although BZFlag implements a poor man's random map generator as default, most players prefer to play on user made maps. The reason is simple -- the primitive scattering algorithm implemented in BZF's random map generation is neither good looking, nor interesting gameplay wise. Yet creating a nice looking and fun to play map by hand is a non-trivial task. To really enjoy playing BZFlag you need to search for good levels in the community, and even those get boring after a while because you learn their layout. Moreover, players who know the map well have an unfair advantage when playing against people who see the map for the first time. Hence my idea of providing a complex and state of the art random map generation plugin for BZFlag, that will generate good-looking AND exciting/challenging levels to play. Additionally it will be based on a big set of parameters allowing the creation of pre-prepared generator data for different flavors of levels, or user defined generation. The goal is to provide a map system of near-infinite replayability. |
|
| Title | Headless client w/ RoboCode & scripting (for AI) |
| Student | Jørgen Pedersen Tjernø |
| Mentor | Christopher Sean Morrison |
| Abstract | |
|
I propose to develop a headless AI agent for BZFlag.
The main feature is that it will expose a 100% RoboCode API to loaded java source, meaning it will take advantage of already created RoboCode AIs. The implementation will happen in 5 phases: - Phase 1: Rip out GUI code ~2 weeks - Phase 2: Implement Java support, enhance console/administration support ~2 weeks - Phase 3: Implement full support for RoboCode API, expand it (still backwards compatible) to support BZF-specific features (e.g. jumping). ~4 weeks - Phase 4: Bug fixing N/A - Phase 5: Safety net ~4 weeks Deliverables: - Fully headless client. - 100% support for RoboCode API. - BZFlag specific extensions of the RoboCode API. - CLI/text-based administration. Potential deliverables: - Support for other languages (using SWIG). - Remote administration (telnet?). - Extensions to the RoboCode API to support chat. - Configuration files (instead of commandline arguments). See the detailed description for the details on the implementation. |
|
| Title | Bazaar Integration for Visual Studio |
|---|---|
| Student | Klaus Hartke |
| Mentor | Wouter van Heyst |
| Abstract | |
|
The goal of the project is to bring the wonderful world of friendly distributed version control to Visual Studio 2005.
The project's deliverables are a class library written in C# exposing bzrlib to all .NET languages running with Mono or Microsoft's .NET, and a Visual Studio source control provider based of that library integrating Bazaar into Visual Studio 2005. The library could easily be reused to integrate Bazaar also into other IDEs like MonoDevelop. Seamless Visual Studio integration could be a great selling point to attract users of other version control systems for migrating to Bazaar. |
|
| Title | OpenOffice.org Writer add-in for publishing CC licensed documents |
|---|---|
| Student | Cassio de Albuquerque Melo |
| Mentor | Nathan R. Yergler |
| Abstract | |
|
IP issues are becoming critical in all areas. Adobe has recognized that by developing XMP platform. Creative Commons is an important way of adding IP licensing information to a document's metadata. Despite being a requested feature for OpenOffice.org for more than two years, nothing has materialized. [http://www.openoffice.org/issues/show_bug.cgi?id=66656 filed in June 2006; http://www.openoffice.org/issues/show_bug.cgi?id=29404 filed in May 2004]. We can't wait anymore. The goal of this project is to provide a tool for supporting the process of licensing documents. Microsoft Office has a Creative Commons plug-in to put IP metadata in its documents. I propose a similar Creative Commons add-in for OpenOffice.org that would allow license information to be embedded in OpenOffice.org documents. [http://www.openoffice.org/issues/show_bug.cgi?id=29404 is an example of one way this tool could be used.] Having a simple way to add Creative Commons licenses will help to spread those licenses much more broadly.
|
|
| Title | Indexing Embedded License Claims in Tracker |
| Student | Jason Kivlighn |
| Mentor | Jon Phillips |
| Abstract | |
|
Working under Creative Commons, I will extended the Tracker search and indexing engine to support the extraction of license claims. Because of the various forms that the license may take, I will build support based on the recommendations of Creative Commons, as outlined at http://creativecommons.org/technology/usingmarkup. If possible, I will discuss and extend these recommendations for new formats.
The project will have two parts 1) Extracting the license claims from a variety of formats, and 2) Indexing the license claims in a consistent form, providing users the ability to search for works based on their license. In addition to indexing license claims, other metadata can also be indexed. For example, because XMP is a format for arbitrary metadata, metadata not related to licenses will also be made available; rather than ignoring this extra information, it could also be indexed as appropriate or made available for indexing in the future. In other words, I will extend Tracker in the process of indexing license claims. Specifically, I will also add the ability for Tracker to read XMP sidecar files. At the very least, the project will result in Tracker gaining support for indexing license claims embedding in MP3, OGG, PDF, HTML, and XML formats. |
|
| Title | Real-time spectral transformations |
|---|---|
| Student | Hernán Ordiales |
| Mentor | Pau Arumí Albó |
| Abstract | |
|
Revamp all CLAM SMS transformations. Turn real-time all those still aren't and have them working on Network Editor. For example: Harmonizer, Morph and Time Stretch. Make nice prototypes for use them with Prototyper and have special focus on some. Also make real-time Voice2Midi and all those widgets which can be needed.
|
|
| Title | Plugin system for a dynamically extensible framework |
| Student | Andreas Calvo Gómez |
| Mentor | Pau Arumí Albó |
| Abstract | |
|
CLAM provides a dynamic and intuitive way to interact with audio plugins and generate some results.
This projects aims to bring together some audio plugin standards that exists in the present and make them available for the CLAM networks. And also to provide the ability to treat a CLAM network as a standard plugin. Moreover, it also will provide a generic interface for all kind of plugins in order to manage and provide more detailed information of them. More can be found here: http://iua-share.upf.edu/wikis/clam/index.php/Devel/Plugins_TODOs |
|
| Title | Real-time synthesizer using SMS models |
| Student | Gregory Ryan Kellum |
| Mentor | Pau Arumí Albó |
| Abstract | |
|
Modern software-based musical instruments tend to be centered around the keyboard paradigm in which sound synthesis is controlled merely by discrete pitch and amplitude values. This paucity of information, however, places severe limits on the kinds of music that can be made with such instruments, and for this reason the term “electronic music” has become synonymous with different styles of dance music. I propose to create a real-time synthesizer that can be controlled by continuous values for pitch, amplitude and brightness. This project would be realized using the CLAM library for audio analysis and synthesis and would further the goals of this project by providing an example application illustrating the use of spectral modeling synthesis. Spectral modeling synthesis is a variety of sound synthesis that is particularly well suited to the stated task, because it creates models of recorded sounds which can be manipulated in interesting ways without noticeable loss of sound quality.
In the first stage of the project, I will create a database of samples to be used by the synthesizer. I will make recordings of an ebow playing a guitar string with pitches at different levels of amplitude and brightness. (An ebow is a device which creates a magnetic field which can be used to make steel strings vibrate.) I will derive spectral models of these recordings using CLAM’s SMSTool, and I will save segments of these recordings with uniform parameter values in SDIF format. In the second stage I will design the database for managing these SDIF files. It will allow clients to query the database using values for pitch, loudness and brightness and retrieve in real-time the best fitting segment for a given set of query values. Due to the requirement of real-time processing, the database will likely have to make use of either caching or sample pre-loading. In the third stage I will design the synthesis engine that will be responsible for interpolating between segments and resynthesizing the audio from its spectral representation. Given the nature of the sound source, it is possible that a sinusoidal model will give an adequate representation of the sonic material, and therefore, the complexities of resynthesizing the residual portion of the signal can be avoided. I assume that this would be preferable as one of the goals of this project is to create a simpler, more understandable version of a previous CLAM project named SALTO which performed a full-blown sinusoid plus residual resynthesis of saxophone recordings. |
|
| Title | Clam for speech |
| Student | Ebrahim "Abe" Kazemzadeh |
| Mentor | Xavier Amatriain |
| Abstract | |
|
This application will detail my interests in the CLAM project and
explain what I can offer the project as a participant in the summer of code. My main interest is in speech processing and recognition. This gives me a partial overlap in interests in the audio processing capabilities of CLAM, as well as other interests that could add to CLAM's capabilities and user base. Specifically, I am familiar with many of the DSP techniques used in CLAM, but with more of an emphasis on speech than music. This slight difference in focus applies both at the DSP level, as well as the user interface level, since linguists and speech scientists have different needs from a user interface as well as the DSP behind it: at the DSP level, there are warpings to the spectrum to simulate the auditory system, and the LPC model is based on an articulatory model, for example, and at the user interface level, there are certain displays that linguistics prefer, like black and white spectrograms and multi-tiered transcriptions, to name a few. Given my background in linguistics (BA), computer science (MS, working on PhD), and EE/signal processing (2 speech processing courses), the project idea that I am most interested in is the vowel synthesizer . Below in the detailed description I will explain my past experience building a LPC/source-filter based vowel synthesizer in Matlab for my speech processing class. I'll also explain other ideas I have, both to further develop this project, and other ideas I have for incorporating speech recognition abilities into CLAM, such as singing synthesis, . I will also describe facilities available to me at my university that may be helpful. |
|
| Title | Enhancing CLAM's chord detection algorithm for real-time use |
| Student | Roman Goj |
| Mentor | David García Garzón |
| Abstract | |
|
I will improve chord extraction in CLAM (C++ Library for Audio and Music) for real-time usage. Before the start of the summer, as part of my studies, I will perform research on the current state of this specific area of audio digital signal processing. Then I will try to compare the most promising algorithms by implementing them in CLAM. I will also try to improve the visualization of the results. As a by-product of the research phase I would also like to explore the possibility of adding instrument recognition in the future.
|
|
| Title | SwingXBuilder for Groovy |
|---|---|
| Student | James Williams |
| Mentor | Guillaume Laforge |
| Abstract | |
|
The SwingX builder will be an extension to the Swingbuilder class currently included in Groovy. More and more applications are using the SwingLabs components in production applications. Although one is able to use the SwingX components in Groovy using Java code, this means is verbose compared to the SwingBuilder and very un-Groovy.
|
|
| Title | JAXB2 implementation for Castor |
| Student | Joachim Grüneis |
| Mentor | Werner Guttmann |
| Abstract | |
|
Castor is a pretty cool XML and database binding framework. Currently it lacks an implementation of the Sun JAXB2 standard and I want to help to implement it on top of todays Castor implementation.
There are a lot of very interesting details at implementing JAXB2 for Castor: Today Castor itself can run under Java 1.3.1, 1.4.2 and 1.5.0 - but JAXB2 will required Java 1.5.0 features to be used in the heart of Castor (at un-/marshalling) - so Castor will need to get more 'plugable' Castor already has a defined and approved XML - Java mapping, how to implement the JAXB style as a second possibility without harming existing installations A source generator from schema to Java exists, but it doesn't support classes with annotations - the new implementation needs to generate annotated Java Today, mapping information can be provided in a variety of possibilities but not via Java annotations - the extensions will allow that mapping information is read from Java annotations A possibility to generate a schema definition from Java classes needs to be introduced. The bindings definition of JAXB needs to be supported by schema compiler. The JAXB API specification needs to be supported The implementation of JAXB2 for Castor will be a Java project which results in an own library on top of Castor. Castor libraries are used by the 'JAXB2 for Castor' implementation which just provides the new implementation for users which want to rely on the standard. In addition Castor itself will also need to be modified to support features the JAXB standard requires either by implementing them in Castor itself or by providing the possibility to plugin JAXB specific algorithms. |
|
| Title | AJAX Support in Coppermine with an API |
|---|---|
| Student | Nitin Gupta |
| Mentor | Dr. Tarique Sani |
| Abstract | |
|
Coppermine as I see it today is implemented in PHP and most of its application logic resides at the server. Also, Coppermine is basically a user application and derives its USP from user experience and the easy of use. However, given the advent of new technologies such as Javascript and AJAX, I strongly feel that the front-end of Coppermine can be greatly improved to provide a far better user experience. Another major advantage of client-side operations is that the load on the server decreases drastically, since the client browser does most of the layout processing, while the server merely acts as a query engine. Examples of improvements possible through Javascript/AJAX are:
(1) The whole page does not have to be reloaded when one moves from one picture to the next picture in the same gallery. (2) Predictive caching of pictures can be done so that the user does not even have to wait for the next picture and therefore save her browsing time. (3) In the forums area and the comments section of pictures, the entire page does not refresh when a comment is added or modified. All operations are handled asynchronously. The integration of client-side operations into Coppermine would require the client to query/ call functions on the server directly, and therefore, would allow the development of a comprehensive API to interface with Coppermine, which can then be wrapped around any other programming language (including Java, GTK). This can be visualized by say creating a server module to upload pictures, which is called by Javascript through AJAX. This server module is basically providing an API to the outside world to interface with Coppermine - infact, it allows remote interfacing from any web service or application. My proposal entails the development of an API for Coppermine, and instead of the development of a GTK client for it, develop an interface for the same through AJAX and Javascript, so as to allow a smooth experience to the users of the application. |
|
| Title | Users can create albums in admin allowed categories (Big feature) |
| Student | Sander Weyens |
| Mentor | Thu Tu |
| Abstract | |
|
I would like to develop the ability of users creating albums in admin allowed categories.
I am using coppermine for about 3 years now, and it think it is time for me to contribute to the project. |
|
| Title | JCpg: a Java based Cpg management and synchronisation application |
| Student | Frank Cleynen |
| Mentor | Aditya Mooley |
| Abstract | |
|
Overview
-------- JCpg is a java based application which allows a Coppermine Photo Gallery (Cpg) user to manage his photos offline. When an internet connection is established, the program will automatically synchronise the galleries. It will be possible for a user to offline manage galleries, albums, photocollections and even do some basic photo editing. It would be very handy for people to be able to do this kind of management everywhere they are, even when no internet connection is available. Using Java, the user will even be able to run the application on all of his operation systems with just one version. Used technologies and protocols: • I will either use Swing or SWT for the creation of the GUI. I read a lot of articles comparing both technologies and I’m not convinced that SWT is faster than Swing but SWT is more easy to use. • For the datatransmissions and folder settings I will use the FTP protocol. • The Java API to communicate with the user’s SQL databse. • Java 1.5.0 or Java 1.6.0. This depends on when Apple will release the JDK 6 for OS X. Main features in first stage: • managing galleries • managing albums • managing photocollections • basic photo editing Goals in the first stage: • learning more about Swing and SWT to make the GUI not Java standard (grey). • learning more about network programming in Java. • making a better and more userfriendly gallery management script of Cpg. • deliver JCpg V1.0. Links ---- Tracker: http://ardella.madoka.be/jcpg |
|
| Title | Gallery Export, Tagging, and Beefed up Search Features For Coppermine Photo Gallery |
| Student | Daniel Roy Hammond |
| Mentor | Joachim Mueller |
| Abstract | |
|
I will add three features to the Coppermine photo gallery system. All focus on separate areas of the system but are all united in improving user experience and overall functionality of the system.
I will create the ability to export the gallery into a format that is useful for offline viewing. I will allow the person exporting the ability to select specific albums or the entire gallery to export. Also, since this feature may be used for many different purposes, I will create the option to export the albums in multiple formatted html files, or as a directory structure mirroring the categories and albums containing the image files alone, useful for backing up the data of a Coppermine gallery, printing large quantities of photos, creating a slideshow, and countless other uses. Secondly I would like to add photo tagging support to the Coppermine photo gallery system. Coppermine already supports assigning keywords to photos, and allows for searching based on keyword. However, keywords can be cumbersome when used to identify people in photos. I would like to provide a way for users to 'tag' specific parts of a photo (as is available on several web photo gallery services), such as a person or thing, and users to search the gallery by tags and have an optional 'tagcloud' for these tags possibly integrated with the keywords ‘tagcloud’. Finally, I would like to improve the search function. I will add support for searching album titles and categories. In addition I would add the ability of the search to handle string queries enclosed in quotes such as, “George Washington” (as most major search engines handle queries). Time permitting I will also add an advanced search option with more search methods including regular expressions. All three of these improvements will lead to a general increase in user experience of those visiting Coppermine powered galleries, and open up coppermine powered galleries to uncountable uses off-line. |
|
| Title | LBdistro - A LinuxBIOS Distro Maker |
|---|---|
| Student | Alan Carvalho Assis |
| Mentor | Stefan Reinauer |
| Abstract | |
|
Currently, a lot of people are willing to install LinuxBIOS in theirs motherboards, but there is two main problems:
* LinuxBIOS is not supported by all motherboards; * The installation process is very complex. The first problem will be fixed soon since the motherboard manufactures become interested in LinuxBIOS. Since LinuxBIOS has a lot of advantages when compared to tradicional BIOSes, we believe that users are the main piece in this process, claiming for motherboards with LinuxBIOS support. Companies that depends on more powerful BIOSes or need to make some custom BIOS may help in this process as well. But the other problem remains. My proposal is to develop a software solution that will solve the second problem. This tool will help end users creating a LinuxBIOS distro to flashes on theirs motherboards. Nowadays, the process to create a LinuxBIOS and root file system is painful. Until it works, tons of compilation and waste of time with tests are necessary. The software will supply a menu based interface so that users can choose between applications and features to be integrated with LinuxBIOS. |
|
| Title | Booting Windows and other Operating Systems in LinuxBIOS |
| Student | Augusto Pedroza |
| Mentor | Stefan Reinauer |
| Abstract | |
|
This project consists of implementing an efficient way of booting Windows Vista/XP/2003 under LinuxBIOS. Three different approaches have been suggested: using a dedicated LinuxBIOS loader, using kexec/kboot or fixing ADLO (Add-on layer). When choosing one of these, I will take into
consideration the one which, besides supporting Windows XP, can be easily adapted to support windows vista and its possible future modifications. |
|
| Title | New: Winflashrom: Windows port of LinuxBIOS' flashrom utility |
| Student | Darmawan Mappatutu Salihun |
| Mentor | Stefan Reinauer |
| Abstract | |
|
The LinuxBIOS project has been gaining momentum in recent years. More and more platforms implement LinuxBIOS as their core firmware; replacing the more conventional BIOS from vendors such as Award-Phoenix,Inc. and American Megatrends (AMI). Nonetheless, it lacks Windows-based utility to flash the BIOS binary to the motherboard flash ROM because LinuxBIOS development mainly conducted within Linux operating system.
In order to bring LinuxBIOS into a wider audience, it’s important to port some of its components to Windows especially the BIOS flashing utility. This utility is named Flashrom within the LinuxBIOS code base. The nature of a BIOS flashing utility is to gain direct access to the hardware. Therefore, it’s important to port such a utility due to the fact that it can not be executed reliably within virtual machine such as VMware. Porting Flashrom to windows will benefit many Windows-based firmware developers and any system programmers familiar with Windows-based software development but not experienced enough in Linux-based software development. Winflashrom seeks to become the windows-port of the Flashrom utility within the LinuxBIOS project. It will support both console-based interface and a GUI. Winflashrom will be composed of a Windows kernel-mode driver interface and a user-mode application that interacts with the kernel-mode driver. The kernel mode driver provides direct access to the BIOS flash ROM chip and other relevant chips in the motherboard, while the user-mode application provides the console interface and the GUI. A completed Winflashrom would certainly help the development of Windows support in LinuxBIOS as a whole because it provides a “direct link” between Windows and the BIOS binary produced by the LinuxBIOS project. |
|
| Title | Open Firmware payload for LinuxBIOS |
| Student | Jens Thomas Freimann |
| Mentor | Stefan Reinauer |
| Abstract | |
|
I have some experience with Forth and Open Firmware and would love to work on making Linuxbios work with the available open source implementations of open firmware like the OLPC implementation, SLOF, etc.
|
|
| Title | Adding LinuxBIOS support to Grub2 and making LinuxBIOS configuration easy |
| Student | Patrick Georgi |
| Mentor | Stefan Reinauer |
| Abstract | |
|
I propose to work on two milestones:
1. Get Grub2 to run as LinuxBIOS payload This combination enables very flexible booting right from the flashrom, with support for several filesystems and executable formats. Given that grub2 can be expected to become a de-facto standard in the open source operating system area, this work opens the door to wider LinuxBIOS deployment. While working on this, I will port both projects to Solaris, where necessary. I expect this milestone to take 3-4 weeks 2. Build a configuration editor for LinuxBIOS 3 Currently, configuring LinuxBIOS3 involves writing a file by hand which defines the properties of the hardware and the firmware that should be built for it. The goal of this milestone is a java based editor to create this configfile. It will be based on Swing or AWT and should also support the user beyond syntax issues, by providing building blocks (eg. known combinations as provided by chipsets) and janitorial checks for potential issues, warning the user. Such a tool would help mainboard vendors a lot with supporting their combination of chipsets, and I'm not sure that there are similar highlevel tools available for other BIOS systems. It could be used as webapplet for a remote firmware building service, if there is interest in that. I expect that I can provide a working editor by the end of the SoC period, but can't give a definite schedule without detailed discussion about the feature set. If these two milestones don't fill the 3 months, I would work on whatever the mentors think is interesting. One thing that I would consider interesting is building more payloads, like one for OpenFirmware support. |
|
| Title | (U)EFI payload for LinuxBIOS based on TianoCore |
| Student | YI XIONG |
| Mentor | Stefan Reinauer |
| Abstract | |
|
(U)EFI shares a significant market in the firmware area. It is absolutely necessary to get the (U)EFI implementation to work as the LinuxBIOS payload. There are two open source (U)EFI implementation, GNUFI and TianoCore. The former is still in the development progress and there is no official release till now. And the TianoCore is comparatively stable, even the EDKII of TianoCore supports the gnu tool-chain for building. I will introduce the feature that an (U)EFI implementation runs as the LinuxBIOS payload referring to the TianoCore. The following tasks are needed for this goal in general:
1. To figure out the platform/hardware dependent module and the platform/hardware independent modules in the TianoCore, and the interfaces between them. 2. To figure out the rules/methods/interfaces that how the payload and the LinuxBIOS interoperate. 3. To develop the new module of LinuxBIOS to replace the platform/hardware dependent module of TianCore. Specifically to encapsulate the original module of LinuxBIOS to form the new interfaces to support the EDK foundation source codes. 4. To develop the new interfaces for the interoperation between the EFI payload and LinuxBIOS Maybe the 3rd and 4th tasks can be unified together when complete the 2nd task. |
|
| Title | World editor |
|---|---|
| Student | Seth Yastrov |
| Mentor | Frank Richter |
| Abstract | |
|
Crystal Space, being a 3d engine, deserves a good art pipeline so that applications using it can focus on creating assets, not editing world files by hand. Having worked on several game projects using CS over the past 2 years, I have experienced directly the difficulty of getting art into the engine. I would like to help take a huge step in improving it by creating a usable world editor.
The editor should have a completed framework by the end of the work period, including a working plugin system, undo/redo system, selection system, tool system, save/load functionality, scene browser, factory browser, and property editor. Also, basic selection and transform tools will be implemented. Any remaining time will be used to polish the user interface or implement tools for other CS features, such as terrain. |
|
| Title | COLLADA Conversion Library and Utility |
| Student | Scott Johnson |
| Mentor | Christoph Mewes |
| Abstract | |
|
COLLADA is a 3D computer graphics digital asset schema [1]. It is a file format description designed with computer gaming and interactive applications in mind. The major function of the schema is to provide the necessary tools so that applications can easily, efficiently, and dynamically share media and digital assets. The primary goal of this project is to develop and implement an importer for the Crystal Space 3D SDK such that it can use files created in the COLLADA schema.
|
|
| Title | Artificial Intelligence Module |
| Student | Mauricio Hollando |
| Mentor | Jorrit Tyberghein |
| Abstract | |
|
Artificial Intelligence Module
The project which I propose tries to cover to basic actual needs of the Crystal Space projects, AI and path finding (which I would include within the AI module). A good AI module would be a great step to the project since it is (in my opinion) a critical part of any serious game engine. I wish to create a complete, solid, AI module that could be useful to many projects with small or medium demands on AI and physics. I also wish to leave very good documentation on my achievements so there could be further advancements within the same projects (even by myself if that's possible). |
|
| Title | Framework for platform specific optimizations |
| Student | Michael John Gist |
| Mentor | Marten Svanfeldt |
| Abstract | |
|
The current code-base in CrystalSpace has critical code paths optimized mainly by choice of algorithm and in some cases in the implementation; however this is in pure C++. In most cases this is okay or even as good as we will get, but there are a number of places where we could benefit from correct usage of platform specific optimizations such as SSE on Intel and AltiVec on PPC. As the code is generally platform independent and supports a wide range of hardware this poses a number of challenges when it comes to abstraction and using the right implementation.
This project would develop a framework within which platform specific routines can be developed for critical code, and a right set of routines be selected both during compile and at runtime, determined by CPU feature set and target OS support. As a sort of "proof-of-concept", it would also optimize one or more chosen places to use this framework. |
|
| Title | GridSweeper Extension & Completion |
|---|---|
| Student | Ed Baskerville |
| Mentor | Rick Riolo |
| Abstract | |
|
Scientists that model complex systems on the computer often need to perform hundreds or thousands of simulation runs using different parameters. Modern grid computing systems have the potential to make such batches of simulations very easy, but no widely available software exists to integrate the two. GridSweeper, an open-source project begun during Summer of Code 2006, will provide scientists with a straightforward interface for running simulation batches. Some work remains before the software is useful and complete. This year's project is to complete that work.
The GridSweeper code currently includes support for several kinds of parameter sweeps, including simple lists, ranges, stochastic sampling, and arbitrary combinations thereof. Code also exists to extend GridSweeper with adapter plug-ins for different kinds of model programs, and with plug-ins to provide support for different file transfer systems. Job submission is done via the Distributed Resource Management Application API (DRMAA). This year's project will add more sophisticated user interfaces, allowing the user to create, modify, and save batches from the command-line or from a graphical interface. It will also include several plug-ins for different types of model programs. Finally, the project will include testing, documentation, and packaging of the GridSweeper project. The original 2006 proposal is available here: http://code.edbaskerville.com/gridsweeper/proposal.html and development progress is being tracked here: http://code.edbaskerville.com/ |
|
| Title | I-SPOC |
| Student | Michael J Bommarito II |
| Mentor | Scott E Page |
| Abstract | |
|
The primary benefits of I-SPOC are likely to be derived from its facilitation of accessibility, organization, and communication. Models must be easily downloaded and cross-linked with results/literature. Models must also easily be organized into multiple taxonomies, such as discipline(s), methodology (ABM/GA/CA), and qualitative focus (equilibrium/non-equilibrium). Lastly, and perhaps most importantly, communication both specific to single models and in general should be as easy as possible, while still providing for features such as LaTeX typesetting. In order to most effectively accomplish these objectives, I propose the implementation of a Drupal site.
To provide for the modeling side, a critical mass of basic models should be developed to both attract and sustain interest in the project. I propose the implementation of a number of archetypal models in each of the major disciplines (social dynamics, biology, economics, physics, political science), as well as an active attempt to engage authors of recently published modeling material (e.g. arxiv,SSRN,RePeC) in the process. |
|
| Title | Seeding the I-SPOC |
| Student | Ryan Henderson |
| Mentor | Scott E Page |
| Abstract | |
|
I would create some initial SPOCs and MOREs as proposed on your ideas page. Not only complex systems models like the tribute system and landscape theory described in Axelrod's books, but also nonlinear physical systems such as a 3-body problem or free pendulum; I believe including example SPOCs beyond the scope of complex systems will increase the cross-disciplinary appeal of the I-SPOC project since academics from fields like physics, applied mathematics, chemistry etc. are also relying more heavily on computation, though not
all such code is necessarily related to complex systems analysis. It is important that prototype SPOCs contain code in a number of different languages (Java, C, Matlab, Python...) possibly even the same code in different languages; one of your stated goals is replication and re-implementation, and having example SPOCs with code in different languages will help back it up. |
|
| Title | I-SPOC |
| Student | Terrence Charles Stewart |
| Mentor | Rick Riolo |
| Abstract | |
|
As researchers study more and more complex systems, the theories they generate become more and more complex. This has led to the rise of computational modeling as a method for investigating and understanding such systems. However, computational modeling research produces results that are not well suited to the standard academic publication format. Researchers need to be able to experience models created by other researchers, and need to be able to expand on and modify them, looking at different situations or changing them in new ways. This cannot be done via a high-level summary of by the model and the results found within a static publication.
There have been a number of suggestions to resolve this problem, including one by Humphreys & O'Leary (2002) that every modeler should set up a version of their model on a publicly accessible computer, so that other researchers could log in and use the model. Instead of taking this approach, the I-SPOC proposal from the Center for the Study of Complex System is to form an online repository where models and their associated papers and data can be stored, along with instructions for running and using these models, and any links to newer, older, or similar models can be kept track of. This allows for a simple, direct way to get access to the work of other researchers, allowing for greater collaboration, and more comparisons between models and expansions of existing models. This also opens up the possibility of testing models, which is especially important considering Axelrod's finding that when attempting to replicate models, there is consistent “ambiguity in the published descriptions, ... gaps in the published descriptions, ... [and] situations in which the published description was clear, but wrong” (Axelrod, 2003). This proposal is to build an online repository system following the requirements described in http://www.cscs.umich.edu/~rlr/SoC/uploads/Main/SPOC-Description-From-2007-11-12.pdf This will allow for the submission and updating of these SPOCs (Scientific Paper with Open Communication). Important features include version control for tracking changes over time, feedback on issues involved in installing and running models, and links to other related models. The intent is to allow computational models to be a rigorous, reproducible, and easily accessible aspect of modern scientific research. |
|
| Title | Urbance: An agent-based approach to Architectural Design |
| Student | Dawn Thomas |
| Mentor | Rick Riolo |
| Abstract | |
|
The proposal is for the development of a mathematical model,methods, and libraries to analyze Urban design, as well as patterns of Urban growth and various feature associated with it using MASON. Primary deliverable will be the model along with the system as a library which would make modeling of urban space and its elements easy for future analysis in the field of Computer Aided Urban Design/ Analysis.
The urban system is an intrinsically dynamic environment – a constant struggle for equilibrium between constraints & requirements, a platform where diverse interactions take place between agents of numerous but finite variety. The constraints maybe dynamic or static. The requirements are a constantly changing set which is often dependent on the present situation thus inducing the concept of feedback. Such a system of agents – who provide constraints and requirements in a heterogeneous & dynamic environment with a constant feedback system could be interpreted as a complex system. Hence urban system needs to be interpreted and analyzed using mathematical methods and techniques in the field of complex system analysis. Application of such a multi-agent based approach in the field of Urban development provides an opportunity to look at urban growth patterns, profile and form in a completely new light. Drawing analogies from the functioning of Urban System as interactions in a multi-agent environment, a simulation of the same can be used to develop solutions for the Urban Design problem. |
|
| Title | HTML diff |
|---|---|
| Student | Guy Van den Broeck |
| Mentor | Bruno Dumon |
| Abstract | |
|
The goal of the "HTML diff" project is to provide a Java library that compares XML files. The minimum inputs are 2 XML files, and the minimum output file is a Java representation of the basic operations that turned the first data structure into the second. This output can be converted to an XML-based representation or, given the proper formatting guidelines into an html file with a certain syntax to denote changes.
In addition, distance metrics can be computed that allow the user to quantify by how much 2 files differ. This enables them to distinguish minor from major changes, and tells them what the (chronological) relationships are between 3 files. |
|
| Title | Implementing Mole, infrastructure for managing information |
|---|---|
| Student | Jeroen van Wolffelaar |
| Mentor | Martin Michlmayr |
| Abstract | |
|
My application is about implementing Mole:
http://wiki.debian.org/Mole Mole is a set of scripts, mostly in python, to manage many kinds of information. Although designed with Debian QA purposes and goals in mind, this could also find many other uses, being pretty generic infrastructure. Mole provides at least the following: - A means to accept submitted information, with optional access control and moderation - A means to store both transient and constant information ("data") - A means to retrieve this information quickly and efficiently in both micro-queries and as whole datasets, including easy mirroring - A web interface for easy browsing of the available information - A means to coordinate the generation of information This is very generally spoken mole. To make things a bit more concrete, one example: - Mole would accept (by mail, HTTP post, or otherwise) build logs for building source package in current unstable/testing in a standard or rather a specifically tweaked environment - It would store it in its database in an efficient form, keeping some configured amount of older versions too - It would maintain a list of source packages that don't have such log yet, or which log is older than a configurable amount of time, and provide worker machines that can do such rebuilding with a todo-list. Mole would automatically keep track such that double work is prevented. - Via for example a web interface people can query results of specific packages, but one can also retrieve the full database. This approach is very powerful, because mole "jobs" can be stacked. To continue with the above example, a different job could keep track of such logs that didn't get 'judged' yet, and have a worker judge them for "succesful/not-succesful", and store those qualifications in a result table. Additionally, data-providers do not need to be computer programs, they can also be humans. For example, the job could be "file bugs on failed logs/mark a failed log as "wrongly failed". Data can also be abount non-package things, such as bugs, or mirrors. It can itself also be something else than quality tests, examples would be mere extraction of data such as .desktop files for auto-installers, SLOC-counts for funny statistics, or (user-supplied) screenshots and reviews. |
|
| Title | Automated Upgrade Testing Using QEMU |
| Student | Ian Haken |
| Mentor | Lars Ivar Wirzenius |
| Abstract | |
|
When upgrading packages, especially between releases, it is possible for conflicts to occur as a result of dependency problems, version conflicts, and more. In order to identify these problems early, the overall goal of this project will be to create a system which runs an automated test upgrade and logs the results. It will do so by creating a Debian environment from scratch running within a QEMU virtual session. The initial environment will be built using packages from a selected repository, and within the live system it will then be upgraded using packages from a second repository. Problems encountered during this upgrade will be logged and reported in order that they can be fixed early or before official releases. This is often hard to do on live systems as it requires submitting the system to danger of a failed upgrade, and it requires having a system in the desired initial release version.
In the final version I hope to include additional features such as selecting specific version of packages from each repository so that bug reports of package upgrade problems can use a list of installed packages to reproduce the problem and identify the causing element more easily. It could also be used for debugging in general if one wanted to easily reproduce the Debian system on which an ellusive bug occurs. This tool can be used by developers for the above reasons, and it could also be used by system administrators, as well, for the purpose of running it as a test before upgrading their live systems. In this way, administrators would be able to prevent a conflict from occurring the midst of an upgrade, and what's more notify Debian developers so that this problem can be resolved without leaving their existing system in a half-upgraded state. Furthermore, thanks to the versatility of QEMU, one would be able to test upgrades for many target CPU types including x86, x86_64, ARM, SPARC, PPC, and MIPS, all from an x86, x86_64, or PPC host system. |
|
| Title | Piuparts improvements |
| Student | Ana Beatriz Guerrero López |
| Mentor | Luk Claes |
| Abstract | |
|
The goal of this project is to improve piuparts to help Debian's Quality Assurance efforts and make piuparts easier to use for Debian maintainers in order to spread its use to package checking.
|
|
| Title | BitTorrent Proxy for Debian Archive |
| Student | Cameron Dale |
| Mentor | Anthony Towns |
| Abstract | |
|
This project will be to expand on the BitTorrent application to work
effectively with large, constantly updating collections of files such as the Debian archive. BitTorrent is a peer-to-peer file sharing application designed to reduce the costs of hardware, hosting and bandwidth resources for the original distributor by allowing downloading peers to share downloaded data with others. This project proposes to create a backend or proxy to the Debian package distribution tool apt, which will allow for the downloading of packages from other users of Debian in a BitTorrent-like manner, thus reducing the costs incurred by the archive's host. Upon completion and widescale deployment of the service, the bandwidth and hardware costs of providing a very large Debian archive to hundreds of thousands of users will be dramatically reduced. Though the idea of implementing a BitTorrent-like solution to package distribution seems good, there are some problems with the current way that BitTorrent distributes files that make it unsuitable for the Debian archive. First, the Debian archive is a very large repository of packages, including many different versions and architectures. A normal user will only want to download a very small subset of the entire archive, whereas it is normal in BitTorrent to download the entire torrent. Secondly, the archive is made up of a distribution of file sizes, many of which are smaller than the smallest piece size used by BitTorrent today. Some enhancements will be needed to allow for the downloading of small packages without wasting large amounts of bandwidth. Finally, the archive is frequently updated, though only a very small portion of it at a time. BitTorrent is currently not designed to handle updates to files, nor multiple versions of files. Solutions to all of these problems will need to be found. More information is available here: http://www.cs.sfu.ca/~camerond/personal/GoogleSoCDebian.html |
|
| Title | Bug Triage and Forward Tool |
| Student | Gustavo Rezende Montesino |
| Mentor | Loïc Minier |
| Abstract | |
|
The teams and maintainers responsible for big sets of packages in Debian, like X.Org, GNOME, KDE, Kernel, etc. frequently lack the manpower to keep their packages up-to-date and still triage all bugs reported against them. Usually, these teams are running up against huge backlogs of bug reports, and some reports may remain unanswered for a long period of time, which in turn may cause the reporting users to think their reports aren't useful, and stop to submit bugs. This loss of bug reports may lead to the reduction of the quality of the Debian distribution and of the upstream software, as a good amount of these bugs need only to be forwarded and fixed by the upstream developers. This was recently discussed in the debian-project mailling list [1].
To address this problem, I propose the development of a tool to facilitate the triaging of bug reports, rising the productivity of the limited time the maintainers have to triage the bugs and offering a friendly tool to make basic bug triaging an attractive way for users to introduce themselves in Free Software development. [1] http://lists.debian.org/debian-devel/2007/02/msg00643.html |
|
| Title | Bug Submission and Manipulation Web-based User Interface for debbugs |
| Student | Margarita Manterola Rivero |
| Mentor | Stefano Zacchiroli |
| Abstract | |
|
The Debian Project has its own Bug Tracking System (called debbugs, or just BTS), which includes many nice features, but one important drawback: it's driven completely by email. Lots of users and developers would benefit from the ability of being able to manipulate and submit bugs directly with a web interface.
The aim of this Summer of Code project is developing a web-interface for debbugs which is not read-only as the current one, but which enables manipulation of bugs both in form of new submissions and in form of all the other actions which are possible on previously reported bugs. |
|
| Title | OVAL Agent for Debian |
| Student | Pavel Vinogradov |
| Mentor | Javier Fernandez-Sanguino |
| Abstract | |
|
The project goal is to develop a technique for Debian-based clusters security status managment. Notwithstanding the presence of the tools providing local security updates checking (i.e. update-notifier, integrated with the GNOME desktop, or cron-apt), there is no essential way to manage tens or hundreds of systems.
This project is based on Open Vulnerability and Assessment Language, which is an international information security community standard to promote open and publicly available security content, and to standardize the transfer of this information across the entire spectrum of security tools and services. OVAL includes a language for data definition and interpretator which collect information from a computer for testing, to evaluate and carry out the OVAL definitions for that platform, and to report the results of the tests. Only the generic implementation of OVAL agent is present to the moment, but it may be adapted for the Debian distribution. And implementation of OVAL server will provide centralized managment of the entrie network security status. |
|
| Title | A modular lintian-like CD-image testing tool |
| Student | Martín Hernán Ferrari |
| Mentor | Steve McIntyre |
| Abstract | |
|
The Debian Project routinely builds CD and DVD images of specific distributions, like Debian stable, Debian testing and Debian unstable. Each one of those in different "flavours" that fit different needs (business card, net-inst, full archive) and for different target architectures [1]. Also there are images for various Custom Debian Distributions like Skolelinux, and even live-CD systems.
Many of those images are built weekly or even daily, this results in a *lot* of ISO files. As verifying that the built images work is currently a manual process, there is too much work spent in this task. Also, images meant for a release need more presumption of correctness, as it would be very bad publicity to ship a broken image. To alleviate this situation, a modular lintian-like CD-image testing tool is proposed. [1] http://lists.debian.org/debian-cd/2006/12/msg00068.html |
|
| Title | GUI frontend for live-helper for building live Debian systems |
| Student | Chris Lamb |
| Mentor | Daniel Baumann |
| Abstract | |
|
Live-helper is a utility to build CD, DVD, netboot and USB-stick live images of Debian, a GNU/Linux operating system. It boasts support for multiple architectures, auto-building images, amongst many other features.
Live-helper is extremely flexible, allowing interested parties to create their own system completely specific to their needs, including support for custom package lists, kernel parameters, encryption, additional commands to configure the live system etc. My proposal is to construct a graphical user interface that can be used in conjunction with live-helper to build Debian Live systems, allowing editing of existing configurations and including a 'wizard'-style walkthrough for the first-time user. Providing less experienced users with the opportunity to easily create live distributions will generate more exposure for live-helper, providing more valuable feedback for its developers and ultimately helping Debian's image as an extremely flexible and free operating system. The GUI will be written in Python using the pygtk GTK+ bindings. |
|
| Title | TI-83 Plus Logo Interpreter |
|---|---|
| Student | Benjamin Moody |
| Mentor | Marinus Johannes Warmer |
| Abstract | |
|
I propose to write a Logo interpreter for the TI-83 Plus and related
calculators. This will serve as an alternative programming environment which is at once easy for beginners to learn and far more powerful than the builtin "TI-BASIC" language used on these calculators. I will aim for "pseudo-compatibility" with the popular UCBLogo dialect, so that it will be possible, with some care, to run the same programs on the PC and on the calculator. Although I will not have time to implement the entire UCBLogo library in the course of a summer, by the end of the summer I hope to have a functional interpreter that can run some interesting programs. |
|
| Title | Hook Manager application for TI-83+/84+ |
| Student | Andrew Janata |
| Mentor | Brandon Wilson |
| Abstract | |
|
There are several very useful applications for the TI-83+ series which make use of the system's hook facilities. However, most of these applications don't share hooks well together, or only share hooks with a few other programs. Hook Manager would make the hooks be fully under the user's control.
Several useful applications for the TI-83+ calculator series make use of the system's integrated hook facilities. Unfortunately, most of these applications will not share the hooks with other applications for the TI-83+, or if they do, only with a limited subset. The Hook Manager project seeks to create a program that places the user in full control of the system hooks. Hook Manager would manage the system's hooks, allowing multiple applications' hooks to be chained together in any order specified by the user. These hooks would be detected from currently active hooks. An editor will allow the user to (de)activate and reorder hooks at any time. |
|
| Title | Generic views for RESTful web services |
|---|---|
| Student | Andreas Stuhlmüller |
| Mentor | Malcolm Tredinnick |
| Abstract | |
|
I will implement a general method offering a public and private API for existing Django models. New generic views will simplify data retrieval and modification via different web services in a resource-centric REST architecture, providing model data in formats such as XML, JSON and YAML with very little custom code.
|
|
| Title | Integrate package managment into Django and build a public repository website |
| Student | Jannis Leidel |
| Mentor | James Richard Bennett, Jr. |
| Abstract | |
|
For further updates look at http://jannis.leidel.info and http://code.google.com/p/django-package/
Django is one of the major web frameworks that emerged within the last years and created a solid user and developer base. It simplifies the development process by providing tools to reduce repetition, abstracting common web paradigms and still being hackable. Until today that attracted a wide section of programmers, from novices to pros. As the code base is constantly moving towards the 1.0 release, more and more people are using Django to build small projects and websites, just as well as commercial applications like intranet services and content managment systems are realized with it, too. Good for them: Reinventing the wheel with Django is perfectly easy – every Django beginner wrote a todo list or weblog applicaton :) But this is not the end of the road for user participation. The community should be able to uncover more web ideas for contrib apps, combine the already written views and templates to more effecient apps and simply share their products with other users. The implementation of a package system would lower the threshold for Django and Python beginners significantly because it reduces the hassle of the current installation procedure. My task is to do the groundwork for an application which manages Django application packages and integrates tightly with the Django code. |
|
| Title | Implementing Check Constraints on Models |
| Student | Thejaswi Puthraya |
| Mentor | Simon Blanchard |
| Abstract | |
|
* To implement check constraints on models.
The various check constraints to be implemented: 1)Range Based Check Constraints 2)Value Based Check Constraints ---------------------------------------------------------------------- Most Database engines like Postgresql, Sqlite, Firebird etc have built in support for check constraints. So for these database engines the check constraints can be implemented at the database level whereas for MySQL (which does not support check constraints),it has to be implemented at the application level (ie in Django). Example 1: Range based Constraint from django.contrib.constraints import CheckConstraints class Product(models.Model): product_name = models.CharField(maxlength=50) discount = models.IntegerField() check_discount = CheckConstraints(discount__gte = 0 AND discount__lt = 100) price = models.IntegerField() check_price = CheckConstraints(price__between = [0,10000] AND price__gt = discount) Discount and price can only be a non-negative value. Also it checks for discount < 100 and if price > discount and price is between 0 and 10,000. The various Range based constraints being * greater than gt > * lesser than lt < * equal to eq = * not equal to neq <> * lesser than or equal to lte <= * greater than or equal to gte >= * between between (expects a range) Range based constraints can be used to check for constraints for more than one column (as seen in the example above). Example 2: Value Based Constraints from django.contrib.constraints import CheckConstraints class Person(models.Model): first_name = models.CharField(maxlength=50) last_name = models.CharField(maxlength=50) check_name = CheckConstraints(last_name__neq = first_name) gender = models.CharField() check_gender = CheckConstraints(gender__upper__in = ['MALE','FEMALE']) This prevents both first_name and last_name being the same and the upper case value of gender must either be a MALE or a FEMALE. The Value based constraints being * IN to check whether the input is in a given list * LIKE to check if the operand resembles a value (regexps are possible) Example: from django.contrib.constraints import CheckConstraints class Manufacturer(models.Model): name = models.CharField(maxlength=50) check = CheckConstraints(name__like='Merced%') * NULL to check if the given value is a Null or not (already implemented) * UNIQUE to check for uniqueness of column in the table (already implemented) Example 3: from django.contrib.constraints import CheckConstraints from datetime import date class Project(models.Model): proj_name = models.CharField(maxlength=50) check_name = CheckConstraints(proj_name__like='World_Online%') start_date = models.DateField() check_start_date= CheckConstraints(start_date__gte = date(2007,01,01)) end_date = models.DateField() check_date = CheckConstraints(start_date__lte = end_date) The above model checks if project name contains World_Online at the beginning of the proj_name, the project start date is after January 1st 2007 and project end date is after the start date. Simple database based validations done with three small lines in Python (also these lines are similar to the field set lookups, so not much of learning required). When are these check constraints invoked? These check constraints are called whenever a model object is created or edited. Benefits of Check Constraints: * Allows the programmer to write constraints in Python (without having to know SQL) (Sticking to Django's philosophy, purists will not be disappointed.) * Check constraints are used to ensure the validity of data in a database and to provide data integrity. If they are used at the database level, applications that use the database will not be able to add invalid data or modify valid data so the data becomes invalid, even if the application itself accepts invalid data. * Check constraints provide better data integrity. As check constraints are always executed whenever the data in the column upon which they are defined is to be modified. * Check constraints promote consistency. Because they are implemented once, in the table DDL, each constraint is always enforced. Constraints written in application logic, on the other hand, must be executed by each program that modifies the data to which the constraint applies. This can cause code duplication and inconsistent maintenance resulting in inaccurate business rule support. |
|
| Title | Project quality metrics system |
|---|---|
| Student | Andrew Morton |
| Mentor | Angela Byron |
| Abstract | |
|
I propose work on enhancing Drupal's Project module to add a system that computes a number of quality metrics to assist in rating projects. These metrics will help users determine which of the many contributed modules and themes are being actively developed and maintained.
|
|
| Title | Implementation of Jabber/XMPP communications interface for Drupal |
| Student | Maxim Khitrov |
| Mentor | James Walker |
| Abstract | |
|
This proposal is about implementing an Extensible Messaging and Presence Protocol (XMPP aka Jabber) interface for Drupal, which would allow the system to interact with its users via instant messaging. The primary goal of the project will be to implement XMPP extension XEP-0060 (Publish-Subscribe), along with its dependencies, using only PHP and no external jabber software. This will give Drupal users the ability to choose IM as an alternative, to e-mail, medium through which various system messages are delivered.
Initial development will concentrate on one-way communications, with messages being sent from Drupal to its users. Eventually, it is my hope to extend the framework into a fully-functional XMPP server, allowing for two-way communications and a whole new way of interacting with a content management system. |
|
| Title | RCS abstraction for the Project module |
| Student | Jakob Petsovits |
| Mentor | Andy Kirkham |
| Abstract | |
|
Synopsis
The Project module, together with its companion project_release.module, makes extensive use of the CVS module in order to accomplish revision control system (RCS) integration. In order to get drupal.org's new release system done in time, the Project module has been made even more dependent on CVS specifics, making it hard to impossible to use Project's functionality together with other revision control systems. During the Summer of Code, I want to decouple the Project module from the CVS module and move CVS specifics into an RCS independent API. At the end, cvs.module should only be one of several possible backends for the RCS API, so that supporting other revision control systems like Subversion, Mercurial or Git can be achieved with reasonable effort. As an additional advantage, other projects like Case Tracker can also make use of the RCS API in order to integrate revision control functionality while sharing as much code as possible. What is specifically not planned for this project (though possible in case that the existing deliverables take less time than expected) is Subversion support itself. I decided to leave this task out because all the knowledgeable developers that I contacted estimate more time needed for the groundwork than what it would originally look like. So I'll concentrate on just getting the Project module to be RCS independent - which, according to dww, is the majority of the work - and leave actual Subversion support to a future project. Motivation Getting rid of the hard dependency on CVS will benefit a lot of people who want to use the Project module together with their internally used revision control systems. drupal.org itself makes heavy use of the Project module, and if drupal.org ever wants to switch to a more modern revision control system (like Subversion which is frequently in the talks) then RCS abstraction is a basic requirement for such a switch. However, as mentioned above, writing the actual Subversion support itself is not in scope of this project. |
|
| Title | New Drupal Core Theme |
| Student | Klaas Van Waesberghe |
| Mentor | Theodore Serbinski |
| Abstract | |
|
Design a new core theme
Synopsis Although Drupal has a very nice core theme (Garland) since version 5 it would be great to offer an additional theme that's more suitable for customization. Think CSS Zen Garden (http://www.csszengarden.com/), where most of the design changes can be done by only editing the CSS. Of course the design should also be pleasing to the eye, yet it should offer something different than the current blog oriented Web 2.0 theme. Making a more authentic look (see http://www.simplebits.com/) will make Drupal look more professional and classy. Motivation This project was proposed on the Drupal website (http://drupal.org/node/124067). I've installed Drupal several times already. One of the most time consuming things during deployment is tweaking the default theme or using it as a base for a new theme. That's why I think it is interesting to develop an additional core theme that doesn't only use a different style but also makes customization or using it as a base for a new theme easier. Project I will split up the project in the following parts: - Design a mock-up in Photoshop - Make an XHTML/CSS mock-up from the Photoshop version supported across most modern browsers - Implement the layout in a PHPTemplate theme - If possible and needed enhance certain areas with JQuery or the Drupal Color module Because many people have had their share of Web 2.0 or "kiddy" layouts I thought it would be interesting to use a more authentic look, similar to what Dan Cederholm did with his personal website SimpleBits (http://www.simplebits.com/) or Cork'd (http://corkd.com/). This style tends to make a website look more serious or professional and it will make a visitor feel more comfortable. Before making the actual design using a graphical tool I will outline the layout of the page and choose a color palette that is both modern and close to Drupal's current style. When that's finished I will start designing the mock-up for the main content types Drupal uses (main page, node, admin dashboard, forum, list of articles, generic blocks, etc.). Attention will be given to Drupal specific features and how to make them more usable (eg. primary/secondary navigation, search box, left/right column, etc.). Once the design mock-up is finished an XHTML/CSS version will be made. It's crucial that the XHTML is semantically correct and offers enough hooks for customizing the theme using only a CSS file (see http://www.csszengarden.com/). This should be applied to all the default content types and blocks Drupal offers. Next to that additional stylesheets will be included for mobile view or printing. A nice feature to add might be different stylesheets for a fluid, fixed or hybrid layout. The CSS files will be very well structured and class and id names will be chosen appropriately in order to ease quick customization of the theme. When the XHTML/CSS is done a PHPTemplate should be made, overriding most Drupal template hooks in order to make the theme feel consistent across all Drupal features and default modules. If time permits the new theme will use the same approach as Garland regarding colors. There will be a feature enabling Drupal webmasters to easily edit the theme's colors without knowing any XHTML or CSS. |
|
| Title | Taxonomy Manager |
| Student | Matthias Hutterer |
| Mentor | Nicholas Thompson |
| Abstract | |
|
A new module which provides a powerful interface for Drupal’s core taxonomy module for managing terms.
|
|
| Title | Extend Case Tracker Module |
| Student | Anthony Oliver |
| Mentor | Jeff Eaton |
| Abstract | |
|
Make Case Tracker Module more like a project manager.
|
|
| Title | Designing a new core theme for Drupal |
| Student | Buddhika Amila Sampath |
| Mentor | Theodore Serbinski |
| Abstract | |
|
The goal of this project is to build an aesthetically pleasing core theme for Drupal.
Despite the numerous elegant sites that have been created and beautiful themes developed, Drupal is perceived by many to be lagging behind other CMSs when it comes to 'look and feel'. One of the main strengths of Drupal could itself be the reason for this problem: flexibility. A generic theme will have to incorporate each aspect of Drupal whereas a typical site would only need 20% - 30% percent of these features. Also, designing without knowing the target audience, content and marketing goals is a difficult task, and the results may not be applicable to many situations. A good core theme would have to address the needs of applicability, customizability and flexibility to ensure easy adoption by the users. It will have to be usable, standards compliant, and accessible. Garland is a good example of how these goals could be achieved, and how effort put in to design could really pay off. It would be wonderful for both Drupal and Drupal users if there were more options to choose from, without compromising on the features. That's where a new core theme would be very useful. The project to create a new theme would be done in four phases: 1. Initial Research: I will need to educate myself better on the Drupal project itself, the processes, the designers and their views, as well as the requirements of a core theme. 2. Visual Design: Based on my initial understanding of the requirements, I will create the first mockup of the design. This would be improved through an iterative process where I would work closely with the mentor and the relevant experts and community members. As a relative newcomer to Drupal, I would need the guidance and assistance of Drupal designers to ensure the design meets the needs of the community. 3. HTML Template: The finalized mockup would be converted to an HTML template. I would use valid, semantically correct XHTML markup, and valid CSS. Drupal has good accessibility features out-of-the-box[1], so I will make sure we improve on them. 4. PHPTemplate theme: In the final phase of the project, I will work on converting the HTML template in to a fully-fledged Drupal theme. As in earlier phases, I would rely on the assistance of my mentor and other Drupal experts to make sure the project has a successful result. |
|
| Title | SVG Drawing support for Drupal |
| Student | Balazs Dianiska |
| Mentor | Simon Hobbs |
| Abstract | |
|
SVG is a modern vectorgraphic standard to handle graphics on the web. Drupal so far lacks both a general drawing API, and specific drawing APIs, like SVG, or GD. My goal is to implement
a) a general drawing module, a geometry library, upon which I am intending to build an b) SVG drawing API. Clearly these two are a bit separated fields, the SVG drawing will require a well-thought basic geometry library, the drawing module. ===Drawing API=== A general, well-thought drawing API can make it easier for later toolkits (GD) to build graphic applications for Drupal. This API will include descriptions and definitions of basic shapes, primitives (lines, shapes, text) as well as a "canvas management", the ability to handle multiple grouped objects. ===SVG toolkit=== I am looking forward to implement an SVG toolkit in Drupal, because I believe it has multiple features that this great CMS can use well. It is open, XML based, basically platform independent (though implementations might lack, but support is available in form of plugins for browsers where it is not built in), and vectorgraphic. Exploiting its capability for asynchronous transfer one is only limited by his/her fantasy what kind of graphically rich applications can be built upon it. Ranging from statistics display to geographic applications the limit is only the human mind. I personally also see a huge opportunity in helping the scientific community with this implementation - where the demand is often to search in big databases an interface displaying only the canged information can be extremely helpful. Providing new ways to display information and integrating it with Drupal CMS will make it easier for students to interact, to get involved in scientific projects, and also for research groups to interact and work together better. The SVG API will follow the 1.1 specifications, will have the functions for turning SVG on/off, handle the drawing and distorting of shapes. |
|
| Title | RSS/Atom Aggregation for Drupal Modules and Install Profile |
| Student | Aron Novak |
| Mentor | Ken Rickard |
| Abstract | |
|
Project description
There are at least five different modules in Drupal that deal with RSS/Atom aggregation and node creation in Drupal. All of these modules are slightly different with some sharing similar or the same parsers and others using the same third party parser. All of these modules may have something to offer, as well as may need the same missing pieces to become an ideal aggregator API. Work with the leech module itself proved the need for adaptive leeching - knowing how often to check a feed for new items based on the probability that the feed would have new items. This is needed because if you have 1,000 feeds and they are all checked on the hour every hour during cron, this causes problems. There are other modules that work to offer ways around this shortcoming, but this is just one example of where further improvement can be made. The project will include a review of features across this module pool, as well as consider ideas on how to improve some of the common problems these modules face. The end result will be the following: 1) A review of the existing aggregator solutions and a matrix of their features. 2) A consolidated aggregator module/API that takes the best features and aspects from the pool. This will answer some of the common challenges facing all aggregators, such as adaptive leeching, parser selection and capability, node creation, and feed item element handling (how to store which items within the Drupal architecture). 3) An install profile to assist with the installation of the aggregator module, as well as complimentary modules for running a news tracking website. An additional positive result, though not the focal point of this project, will be more insight into caching needs with websites that aggregate and store a lot of information. |
|
| Title | Scalability, Load Balancing, and High Availability |
| Student | Scott Hadfield |
| Mentor | Khalid Baheyeldin |
| Abstract | |
|
This project aims to provide new techniques for enhancing scalability and identifying bottlenecks in the Drupal project. In addition, I also hope to provide any resources necessary (including documentation, tools, and modules) to load balance Drupal across multiple servers and implement fail over servers.
The three core aspects of this project are as follows: 1. Develop a system to automatically load test Drupal sites. * Automatic generation of test data. There are a number of areas that may cause Drupal to slow down. Most modules will work smoothly until they have data they need to use. This tool will likely use and build on the generate scripts that come with the devel module to populate a site with test data. It will also incrementally add more data to the site, running benchmarks at each increment. This will help to identify modules that may work smoothly with a small amount of data, but degrade exponentially as data increases. * Build stress tests to run on the system. The stress tests will be targeted towards both specific modules and more general tests on an entire Drupal site. The SimpleTest module framework may be useful for building these tests. * Automatic testing of different combinations of modules. To determine which modules may be slowing down a site it can be useful to enable different combinations of modules to test against. This tool will automatically: 1. enable modules one at a time 2. enable each module by itself (dependencies will also be enabled) 3. test groups of modules that are related. This will be based off of dependencies and user specified rules. After each iteration or change to the site, the site will be benchmarked and a report will be generated. 2. Identify bottlenecks in Drupal core and submit patches to correct the issues. During testing of the above tools bottlenecks may be identified in Drupal core, core modules, and popular contrib modules. Patches will be written to help eliminate those issues. For more serious issues that can't be resolved with simple patches, recommendations will be made to resolve the issues. 3. Provide resources to allow administrators to setup Drupal to scale horizontally across multiple servers and use fail over servers. This will come in the form of documentation, tools, and patches to help administrators configure their sites. |
|
| Title | Drupal BitTorrent Tracker module |
| Student | Christopher P. Bradford |
| Mentor | Károly Négyesi |
| Abstract | |
|
The Drupal BitTorrent Tracker project looks to provide Drupal users the power of the BitTorrent protocol when moving large files from their website to their visitors. The main outcome of this project will be a BitTorrent “invisible tracker” that integrates with Drupal through a module. The module will allow for the addition and removal of torrents, IP address management (banning IP addresses or ranges) and statistical presentation concerning information about the tracker (current seeders, leechers, swarm speed, active torrents, etc.). Special emphasis will be placed on minimal database interaction and ease of use. A user of the website should be able to download a .torrent file and use their client of choice without the worry of tracker failure. The same ease of use should be available to the administrator who should be able to add and remove torrents as well as view statistics concerning the tracker in real-time. With this module, Drupal users will be able to offer secure, fast, and large downloads to their users.
|
|
| Title | Drupal automated staging toolkit project proposal |
| Student | Allister Beharry |
| Mentor | Rok Žlender |
| Abstract | |
|
The Drupal automated staging toolkit is a proposed set of code libraries, file schemas and parsers, and code generators, for automatically creating a Drupal site with specific module code versions, sample users and data, and a specific LAMP stack configuration for hosting the Drupal site. The toolkit also has the ability to stage this generated site on an existing physical server location, and also as a self-contained virtual machine consisting of a minimal Linux environment, required LAMP software, and the Drupal site.
The automated staging toolkit is designed to be part of an automated unit- and regression testing environment, by providing testers with a simple, fast way to automatically generate a complete Drupal site running specific code versions, and using specific LAMP server configurations. It is also intended for use as part of a performance and scalability testing environment by providing the ability to rapidly build and then benchmark the effects of different application, web and database server configurations on Drupal site performance and scalability. This toolkit will be used in the following way: 1. The tester creates or reuses an XML(or other structured) file using a schema describing the Drupal site code-tree, including modules installed/enabled/disabled, and the versions of each module to be used. 2. The tester creates or reuses an XML file using a schema describing the LAMP stack web server, PHP/application server, and database server configuration; e.g Apache vs. Lighttpd, mod_php vs.FastCGI, choice of op-code cache, MySQL vs. PostgreSQL, and so on. 3. The tester creates or reuses an XML file using a schema describing the sample users and content data the site will contain. 4. The parsers take each file and generate scripts in a lightweight language (Python or Ruby or PHP-CLI.) These scripts, when executed, use functions in the code libraries to download Drupal modules, generate database scripts and datasets, and write server configuration files. 5. Given a physical server target location, the Drupal modules, database scripts and server configuration files are deployed to the designated server location, to produce a new, ready-to-test Drupal site. Time and resource permitting, a builder in the toolkit will also use the generated Drupal site and servers' configuration as input to build a self-contained virtual machine image in Xen, VMWare, or potentially the Amazon EC AMI format. This virtual image can also be be used in testing environments, including advanced performance testing scenarios such as evaluating clustering, distributed database topologies, and alternative storage and computing models like Amazon S3 and Elastic Cloud. The ability to rapidly generate self-contained Drupal virtual machine images will also be extremely valuable to Drupal consultants and solution providers for marketing, prototyping and demonstrating Drupal solutions to potential clients, and large organizations and ASPs like CivicSpace looking to take advantage of the massive benefits of virtualization technology from VMware, Xensource, Amazon, and the like. |
|
| Title | SMS Framework |
| Student | William L. White |
| Mentor | Ian Ward |
| Abstract | |
|
The SMS Framework project will improve and expand the SMS technology integrated into Drupal powered applications and websites and make it easier to incorporate SMS elements into Drupal websites. To carry this project out, I will research existing SMS solutions for Drupal, identify shortcomings, and build a driver based API that can be ex-tended to work with common SMS service providers and integrated into Drupal core and contributed modules.
An improved SMS framework for Drupal will enable individuals and organizations to seamlessly and easily combine elements of mobile and online campaigns on their Dru-pal websites. This will be very helpful to nonprofit, advocacy, and political organizations. |
|
| Title | Auto Completion of links |
| Student | Gartheeban Ganeshapillai |
| Mentor | Kaustubh Srikanth |
| Abstract | |
|
Synopsis:
Although drupal is selfsufficient for any corportate site development, having to search and find the internal references while preparing documents is a drawback in using it for a site full of articles and documents like Wikipedia. My project solves that by looking for keyterms in the text, and listing them categorized by the relevant key terms. This enables the user to maintain the line of thought undistracted. Benefits to Community: I believe this will make drupal more user-friendly, especially document-writer-friendly and reduces the time spent in searching for internal references and let the user worry about the content than the connections. The project can be tested for its success based on the fulfillment of the requirements described above, compatibility with most of the browsers and the adoption of the service by the drupal community, which I never doubt. |
|
| Title | Statistics |
|---|---|
| Student | Federico Paparoni |
| Mentor | Richard Jones |
| Abstract | |
|
Statistics interface will provide a complete overview about informations published on the DSpace platform.
It will be possible to know all the stats related to the user visit, for example: - Number of hits per day/month - Number of pages per day/month - Popular pages - Number of hits per page - Number of hits per Community - Number of hits per Collection - Number of hits per Item Upon these informations it is possible to create different views. To provide these informations, there is a simple API, that can be used everywhere in the DSpace platform. The basic object for this API is LogEvent, a class that maps the standard informations for an event system. Informations about events are saved into the DB and then there different way to show these statistics, in a simple and configurable way. It will be saved also informations about user of the website, using MaxMind - GeoIP Java API (http://www.maxmind.com/app/java). All the informations collected by this application will available under different formats. At the URL http://wiki.dspace.org/index.php/Google_Summer_of_Code_Statistics is available detailed description of the project |
|
| Title | DSpace Versioning |
| Student | Robert Graham |
| Mentor | Mark Robert Diggory |
| Abstract | |
|
I will create a branch to the DSpace codebase representing the effort to support versioning among Items. Versioning here is a linear series of revisions and not various representations of the same content. This is a very commonly requested feature among users of DSpace and the whole effort is in line with the recommendations of the DSpace Architecture Review Group.
|
|
| Title | Improve multi-monitor support |
|---|---|
| Student | Benjamin Muskalla |
| Mentor | Kimberly Horne |
| Abstract | |
|
With the price of computer monitors dropping, more and more people choose to work in a multi-monitor environment. Working in this way can be very helpful when there are large quantities of information you need to process at one time. One of the best examples: software development. Working on projects in Eclipse on a dual or triple screen display is possible – but not that efficient as with other IDEs out there. Though useful, detached views become difficult to work with when you have many of them. Detaching multiple views (to move to to another screen) is an easy task – but to arrange them, you need to do it manually. It should be possible to have the same functionality that is exposed in the workbench: sashes!
Another common task for an application today is a fullscreen mode. As seen in other development environments, this can help to concentrate on the source code itself instead of being distracted by all the views, icons and other things around the editor area. Also, the size of the editor component can be improved by disabling the toolbar, statusbar and window border in fullscreen mode. This is not only useful with multi monitor setups but also for single monitor environments. |
|
| Title | Plug-in Dependency Visualization |
| Student | Robert Ian Bull |
| Mentor | Chris Aniszczyk |
| Abstract | |
|
Understanding dependencies between plug-ins in Eclipse is a complex task. The current plug-in dependency analysis tools available in Eclipse are restricted to simple tree views with drill-down support. Throughout this summer, I propose to add visualization support to the Eclipse Plug-in Development Environment (PDE) in order to help provide cognitive support to developers as they analyze their plug-in dependencies. I intend to complete the plug-in view that I started in the fall of 2006 by adding new dependency filters, improved navigation support, and the ability to highlight plug-in dependency analysis paths.
This project proposal serves two purposes. Firstly, in brings plug-in visualization to the PDE, and secondly, it provides exemplary tools for the Zest framework. Zest is an Information Visualization Toolkit for Eclipse. While Zest was initially developed to provide visualization support for Mylar, its usefulness is now being realized in several Eclipse projects. By creating exemplary tools based on Zest, this will improve the visibility of Zest and ultimately bring a lightweight visualization framework to the Eclipse platform. Deliverables: Complete the PDE View and add 3 plug-in filters: o Filter by JRE Version o Filter by Enabled / Disabled o Filter by Regular Expression (on bundle name) Add dependency path analysis (show why a plug-in is required by highlighting dependency paths). Add improved navigation support o Forward and back button support o Add search support for the list of show plug-ins Currently, views that depend on GEF cannot be shipped with the Eclipse platform. I intended to complete a full refactoring of the plug-in view to remove all GEF related dependencies, relying solely on Draw2D. Once this is completed, I will investigate the possibility of making the plug-in available in the Eclipse Platform (either as part of the SDK or as a separate download) along with the Draw2D jars. |
|
| Title | Eclipse Web Interface |
| Student | Michael William Robb |
| Mentor | Nick Boldt |
| Abstract | |
|
This project aims to add the ability to externally invoke commands in Eclipse via a web browser.
For example, this could enable a site to provide a link which would cause Eclipse to fetch and open a source code file in a single click. A sample link might look similar to the following: <a href="http://localhost:56789?command=open_file&filepath=http://someWhereOnTheWeb/foo.java">open this file in Eclipse!</a> Eclipse will listen for these requests and, when received, invoke the command in one of the currently running Eclipse instances. |
|
| Title | Provide an Eclipse IDE generation environment derived from a language grammar |
| Student | Miguel Garcia |
| Mentor | Ed Merks |
| Abstract | |
|
I plan to extend Chris J Daly’s Gymnast (described in Language Toolkits Technology Exchange, EclipseCON 2005) so that it supports:
a.1) generating EMF-compliant classes for Concrete Syntax Tree nodes. With that, using OCL (Object Constraint Language) becomes possible to check the well-formedness of CSTs before transforming them to ASTs. The author of such transformation may thus employ QVT-style technology, e.g. ATLAS ATL. a.2) generating an LPG grammar in addition to those already supported (ANTLR and JavaCC). a.3) generate a visitor to unparse a CST into a pretty-printed representation, re-using hints specified in the existing Gymnast grammar format. For example, sequence ifConstruct : “if” expr “then” expr “else” expr “endif” would result in unparsing following a similar layout. a.4) generate a text editor with usability features. The design patterns to generate have been harvested while implementing the Emfatic extension for EMF Generics. These usability features include: Outline view, Mark occurrences, folding, Hovers displaying declaration for a given usage, Live problem and warning markers, Navigable hyperlinks, “File New” wizard, AutoEdits such as SmartBrace (i.e. automatically completing with a closing terminal), User-provided templates, Syntax-aware Content Assist. Refactoring will be explored (at the very least, by updating usages-for-declarations) A common theme consists in making the most out of the input specification. For example, the type-checking rules for expressions in a DSL are usually not specified declaratively. OCL (Object Constraint Language) can uniformly be used to specify static semantics and type-checking rules, as shown in: http://www.sts.tu-harburg.de/~mi.garcia/pubs/2007/mdsdHeute/garcia-emfgen-2.pdf Tips on processing OCL are reported in my Eclipse Technical article (under review), at: https://bugs.eclipse.org/bugs/show_bug.cgi?id=167543 Once the extensions a.1) to a.4) have been implemented, an IDE for Gymnast will be bootstrapped with the Gymnast generator. Additionally, a case study will be undertaken to validate the approach, i.e. an IDE will be generated for one of: b.1) an ExecutableUML-style language but EMF-based b.2) EJB3QL, building upon the metamodel described in http://www.sts.tu-harburg.de/~mi.garcia/pubs/atem06/ EJB3QLpaper.pdf b.3) a human-readable notation for UML2 Preparing developer documentation (and community articles) is an integral part of the planned tasks. |
|
| Title | Framework to develop simple Eclipse plugin using PHP |
| Student | Toomas Römer |
| Mentor | Ahti Kitsik |
| Abstract | |
|
Framework to develop simple Eclipse plugin using PHP. Create a framework that could support developing simple Eclipse plugin using a PHP To Java bridge (Like Caucho's Quercus and other JSR 223 engines). Develop and document a sample plugin in PHP, so that PHP developers could create simple plugins.
The idea is taken from the Eclipse SOC 2007 Ideas page http://wiki.eclipse.org/index.php/Google_Summer_of_Code_2007_Ideas |
|
| Title | Improve Mylar's new users experiences |
| Student | Balazs Brinkus |
| Mentor | Mik |
| Abstract | |
|
Project title: Improve Mylar's new users experiences
Project description: The project's goal is to write a plug-in which presents for the new users Mylar from the basics to the every days use. And for the other users it will help too with the built-in help. The plug-in contains: * a welcome page which contains: * new & noteworthy information * tutorials * in the overview menupoint a link to the Mylar description text * cheat sheets which show the use of Mylar through examples: * each presentation of the 3 views (task list, repositories, activity) (properties and basic using) * focus working * connecting to the database and adding new repository (to all connectors) * adding new query * modifying query * opening, activating, synchronizing task * making and using local tasks * categorizing the tasks * filling the built-in help from the wiki page informations: * User Guide * FAQ * Tips & Tricks * Information for the developers: references, components description |
|
| Title | Java Executable Wrapper Plugin for Eclipse |
| Student | Zhang, Rui |
| Mentor | Gunnar Wagenknecht |
| Abstract | |
|
After we written a java application by Eclipse, we should type a command like "java myapp.class" or "javaw -jar myapp.jar" to run our application. Though we can write a .bat file on Windows or write a shell script on Linux to do the job, it feels not very convenience.
The aim of this project is to develop a plugin for Eclipse to wrap compiled Java applications and give out a excutable file. It is supposed to support both Windows and Unix-like Systems. There are some similar tools: 1.exe4j(http://www.ej-technologies.com/products/exe4j/overview.html). Exe4j can integrate Java applications into the Windows operating environment. It is a business software and it need to pay to get a license. 2.JSmooth(http://jsmooth.sourceforge.net/index.php). JSmooth is also a Java Executable Wrapper. It also creates native launchers on only Windows operating system. JSmooth is free software under GPL. |
|
| Title | Test Message Generator for the Eclipse Open Health Framework |
| Student | Srdan Bejakovic |
| Mentor | Marcelo Paternostro |
| Abstract | |
|
Currently, there are several large efforts to develop a comprehensive IT healthcare infrastructure that would allow interoperability and sharing of information within and across healthcare organizations and regions. The Eclipse Open Healthcare Framework (OHF) is an open-source approach to this problem that relies on Eclipse's tooling environment.
I propose to build a token-based XML generator that allows the mass generation of messages for test purposes, a project within the scope of the OHF. These test messages have to be manually generated right now, and providing this feature would help ensure that messages and their models are effectively tested before being officially released to healthcare application vendors. This testing is particularly essential in healthcare, where errors can cost lives. This project would extend the Message Instance Editor, an OHF tool produced by the Health Level 7 (HL7) V3 Eclipse Tooling group (H3ET). The Message Instance Editor is used by international standards bodies such as HL7 and governments (the UK National Health Service) to generate, edit, and validate healthcare messages that conform to the HL7 version 3 specification. Users of the Message Instance Editor have requested the ability to generate batches of example messages based on the schema-like constraints imposed by the HL7 Model Interchange Format (MIF). Therefore, my project would: 1. Create an XML representation of an example message template. 2. Create a new wizard that would allow a user to generate example messages based on the template and HL7 message models (from a MIF file). 3. Allow replaceable tokens to be defined within example message templates that are replaced by example data. 4. Allow configuration and declaration of these tokens. 5. Allow the user to configure the behavior of the batch message generation. |
|
| Title | WebDAV EFS Implementation |
| Student | Reid Holmes |
| Mentor | Gunnar Wagenknecht |
| Abstract | |
|
I will implement an EFS implementation for WebDAV to allow Eclipse platform users to use remote WebDAV repositories as mount-points for projects and files. This will benefit any user of Eclipse who wants the flexibility to store their files in this way. Being able to treat remote repositories as if they were local is beneficial to many development groups including web designers, server-application developers, and anyone creating Eclipse plug in update sites.
|
|
| Title | Mylar synchronous context sharing, based on Mylar and ECF integration |
| Student | Jevgeni Holodkov |
| Mentor | Mik |
| Abstract | |
|
This is about Mylar synchronous context sharing among team members by means of Mylar and ECF integration. The goal of such context sharing is to provide more seamless knowledge sharing process, allow sharing context synchronous even if the used connector does not support context sharing or no connectors used at all.
The synchronous context sharing means that it is possible to share context on fly with a friend who is currently online and you are discussing some issue. It will be possible to create a task for new context or assign this context to an existing one. Technically, the solution will use ECF to handle all communication details. I will try to employ current Mylar’s context sharing functionality. This solution will provide SWT-based user-interface for context sharing and I will also include the rainy scenarios handling, such as “no connection with friend” or “file resources are out of sync”. |
|
| Title | Eclipse search plugin: providing a better, faster, more relevant Eclipse search. |
| Student | Çağatay Çallı |
| Mentor | Francois Granade |
| Abstract | |
|
Background:
Searching is one of the most commonly used features of Eclipse. However, this feature has mediocre performance compared to text processors like VIM or Emacs. In some cases, like searching for a string in compressed Javascript files (the whole file is one big line), lack of a good search tool becomes prominent. Purpose: Aside from quirks in text search that need to be fixed, like the case of files that are not well-structured (e.g. compressed Javascript files in one line), other improvements can be done by integrating the search process with Google Code Search and other resources. Developing an Eclipse search plug-in that improves performance and relevance is the main concern. By proper integration with online code repositories, this tool will also speed up learning and code observations within Eclipse itself. Project Description: Inspecting and making use of Lucene, OpenGrok and other search tools and algorithms, I'm planning to create a plug-in that can speed up text-based search in Eclipse. When the search plug-in reachs maturity, I want to enable support for Google Code search and support for other possible code repositories. For this feature, I'm going to create a mechanism to add more repositories as search locations (example: adding new websites to Firefox search bar). These repository info files will be easy to compose and the plugin would enable composing such files. At last, I intend to support CVS code search. Project Schedule: Today to May 1 - I'm going to focus on research about existing defects, possible algorithms to apply and learning about Lucene, OpenGrok and other new solutions to the problem. I'll try to code crude prototypes of these possible solutions. May 2 to May 22 - After discussing possible solutions with my mentor, I'll identify the solution approach and organize myself to code that solution May 23 to July 16 - I at least expect to see a basic search tool that works fast and provides good results when it works (in the use cases I have finished implementing). After the midway evaluation of my mentor at July 16, I'll know which parts to improve from this point. July 17 to August 1 - In the light of my mentor's advice, I'll focus on fixing important weaknesses of the tool. Upon fixing these weaknesses, I'll try to prepare further documentation for other developers. August 2 to August 20 - I will be implementing prototypes of extra features such as integration with Google Code search and CVS code search support. As I plan to always keep myself focused on the correctness of core features of the plug-in, I will test these core text search features further. August 21 to August 31 - Upon receiving final feedback from my mentor, I'll polish the online/repository search capabilities of the plug-in in the first week of this period. In the remaning time, I'm planning to test,fix,document and discuss the beta version of the plug-in with the community. |
|
| Title | Add the ability to write plugins using jruby or groovy. |
| Student | Anton Arhipov |
| Mentor | Wayne Beaton |
| Abstract | |
|
Groovy is ideal choice for a seasoned Java developer for its speed of prototyping and flexibility for development. As in case of Eclipse support for Groovy plug-in development, the biggest benefit of on-the-fly plug-in code writing/changing, as one don't have to start a separate Eclipse instance while testing my plug-in under development. This would rapidly improve the speed of lightweight plug-in development.
This project aims to add ability to write plugins in JVM-based scripting language, like Groovy and JRuby. But it could be a starting point for any other JVM scripting language, like BeanShell or Jython. The main results to be reached: - An Eclipse extension/plug-in to (re)load (Groovy) scripts on the fly. - Command line console support. (This could look like in case Apache Derby ij plug-in) |
|
| Title | Support seamless debugging between JDT and CDT (Java <> JNI <> C) |
| Student | Mariot Chauvin |
| Mentor | Philippe Ombredanne |
| Abstract | |
|
Eclipse is an extensible framework to build modular applications, which relies on OSGi component architecture. Originally developed to provide an IDE extensible in terms of functionalities and supported languages with plugins, Eclipse can now be used as a Rich Client Platform (RCP). The success of the Java Development Toolkit (JDT) plugin has leaded the development of numerous plugins. For instance the C/C++ Development Toolkit (CDT) plugin allows developers to use it as IDE for project in C or C++ language. The use of Eclipse as a generic IDE is possible due to the notion of perspective (a perspective corresponds to a certain disposition of the graphical elements) which adapts the user interface to the kind of project.
Java Native Interface (JNI) is a programming interface to call native methods or to embed java virtual machine in native applications. JNI is often used to interact with existing native application, to add platform-specific functions, or to improve time-performance (by supposing native methods faster than java code). Currently, when users work on a java project using JNI and native code, they have to switch between perspective, which is not practical. Another point to improve is the debugging of this kind of project, by allowing developers to follow native method calls into native code and go back. * Goals of the project - create new or "mixed" perspectives to manage project using C/C++ and Java - add the possibility to follow native methods calls into native code * Roadmap - Announce the project and check the existing work (see http://cdtdoug.blogspot.com/2006/09/jdtcdt-cant-we-just-get-along.html). Get feedback from CDT and JDT community and discuss with them about the project [until May 28] - Implement the work on perspectives first and then the native method calls follow-up [until beginning or mid of August] - Integration and tests with the help of the Eclipse community |
|
| Title | Fixing Tor Server's Windows Buffer Problems |
|---|---|
| Student | Christian King |
| Mentor | Nick Mathewson |
| Abstract | |
|
Tor is an important tool for maintaining privacy on the Internet. Too keep the Tor network healthy, many servers are required. With many homes having ready broadband access, even relatively non-technical people have the ability to contribute. This bug effectively prevents these people from participating, cutting off a large source of servers for the Tor network.
I propose to fix this bug by adapting libevent to the Winsock API (instead of using select()) in such a way as to use overlapped IO and fix the buffering problem. As part of this process I will develop a stress tester (probably in conjunction with TorFlow) for use not only with this bug, but for regression testing and performance-based stress testing. These changes would be written in the languages required to interface with existing code - C for Tor and libevent, python for the stress testing client (with TorFlow), and documentation, coding style and testing standards would be maintained. For more information on this bug, see: http://wiki.noreply.org/noreply/TheOnionRouter/WindowsBufferProblems |
|
| Title | Distributed Storage for Tor Hidden Service Descriptors |
| Student | Karsten Loesing |
| Mentor | Roger Dingledine |
| Abstract | |
|
Tor provides a mechanism for responder anonymity via hidden services. As a part of these, Tor provides storage on its central directory servers to allow publishing and retrieving rendezvous service descriptors. This proposal suggests to replace the centralized approach by a distributed storage of descriptors to the larger set of onion routers. Benefits include (1) better load balancing which is vital for the further growing of the network, (2) a more scalable way to publish descriptors, and (3) extensibility of hidden services to features like human-readable names or client authentication. As possible drawback can be seen that new threats arise due to decentralization that need to be discussed and handled.
In this project a structure is applied to the network of onion routers, based on concepts known from distributed hash tables and consistent hashing systems. Every participating router is made responsible for a limited set of descriptors. It is not necessary to maintain an own routing table, but possible to rely on the router list managed by the Tor directory. Some amount of replication needs to be added to overcome node failures and untrustworthy routers. This prevents the worst security threats, as descriptors are signed and have a limited time-to-live. Thus, they cannot be forged or replayed. Preliminary measurements show that routers exhibit a very low churn rate which makes them a perfect field for consistent hashing. The purpose of this project is to extend the current Tor sources to a running prototype that contains a distributed storage of rendezvous service descriptor. |
|
| Title | Port gPXE to ARM architecture |
|---|---|
| Student | Alexey Zaytsev |
| Mentor | Michael Brown |
| Abstract | |
|
The gPXE, while designed to be portable, currently only
runs on the ia32 and the ia64 cpus. Yet it's still desirable to get it running on some of the other platforms, like the ARM. I'm willing to port the gPXE to the ixp42x cpu family, adding support for the Intel IXP42X Development Board and maybe a number other popular devices based on this cpu. |
|
| Title | 16-bit i386 backend for gcc |
| Student | Daniel Verkamp |
| Mentor | H. Peter Anvin |
| Abstract | |
|
GCC currently only supports generating 32-bit code for the i386 platform. Etherboot requires 16-bit real-mode code in some places, some of which is written in C. Currently, this is accomplished with a hack (.code16gcc), but this produces larger code than necessary. My proposed project is to add a 16-bit i386 backend to GCC to obviate the need for this hack and reduce code size.
|
|
| Title | porting Etherboot drivers to gPXE |
| Student | Udayan Kumar |
| Mentor | Martin Connor |
| Abstract | |
|
gPXE is a rewrite of Etherboot project with several major improvements. One of the goals, is to update Etherboot network interface card drivers to work with gPXE. This will require making API changes to allow existing drivers to work with the new gPXE API.
|
|
| Title | Reducing Code Size |
| Student | Holger Lubitz |
| Mentor | Michael Brown |
| Abstract | |
|
This proposal is based on the ideas for reducing code size which have been posted on the Etherboot Project ideas page.
The ideas presented there are a) using gcc function attributes where applicable to allow further optimizations, possibly looking into register parameters as well b) looking for symbols not referenced outside their object, making them candidates for either static declaration or elimination My first step would be setting up a code xref tool like LXR or OpenGrok, to get a better feel for the control flows and general structure, as well as the most used functions. Then the above ideas would be tested for their potential of code reduction. For the functions, this would probably mean going through the list one by one, looking if they are candidates for pure, const, regparm, maybe even noinline, nonnull or the like. As already mentioned on the ideas page, I expect a lot of experimentation in this phase to find out what helps and what doesn't. Time and resources permitting, as a third step general code profiling could help identifying functions with potential for further reduction in size. If those ideas turn out to be viable, the result should be a patch set to include the attributes and static declarations, which hopefully delivers a notable reduction of code size. |
|
| Title | XQuery API for Java |
|---|---|
| Student | Chérif B. YAYA |
| Mentor | Adam Retter |
| Abstract | |
|
The goal of the project is to implement a driver that enables developers to access an eXist Xquery engine from a Java application. The implementation will follow version 1.0 of the XQuery Api for Java which attempts to provide a common way for Java developers to interact with XQuery engines. Over the years, XMl has become the predominant data interchange format and the eXist library provides developers with an easy and powerful way to manage, store and query their XML based databases. I believe that an XQJ driver for the eXist library will prove to be very valuable for the open source Java community as well as the eXist community.
An eXist Database can be deployed essentially in two ways : either as en embedded library that runs in the JVM of the client application or as a standalone server possibly located on a remote host. A different XQJ driver is therefore needed for each one of those use cases. Deliverables : 2 XQJ driver packages for eXist engines ->A local connection driver to be used when accessing an embedded eXist database ->A remote connection driver to be used for remote standalone eXist databases |
|
| Title | VFANN ( Vector Fast Artificial Neural Netwoks) |
|---|---|
| Student | Vincenzo Di Massa |
| Mentor | Seth J Price |
| Abstract | |
|
The goal of this project is to develop a vector version of FANN which can take advantage of modern CPUs like those implementing SSE or similar technologies.
Another goal of the project will be to add utility apps/functions/scripts in order to make using FANN easier. A fann_trainer script or application will be in good shape at the end of the project and will be capable of training different kind of network with appropriate algorithms. If projects for a FANN GUI are accepted I'll collaborate with the other student in order to make the utilities well integrated. |
|
| Title | Self-Organizing Maps and Growing Neural Gas |
| Student | Zsolt Kira |
| Mentor | Steffen Nissen |
| Abstract | |
|
Competitive artificial neural networks have increasingly become popular for visualization and clustering of the large amounts of data existing in many scientific fields. They are also used for pattern recognition, image analysis, and many other applications. This project will add Self-Organizing Maps and a similar dynamic algorithm called Growing Neural Gas into the FANN library. The implementation will be coded so as to support extensions such as adding multiple learning rules
and neighborhood functions, and include features such as calculation of quantization error and other metrics. |
|
| Title | Native GUI |
| Student | Yusef Maali |
| Mentor | Seth J Price |
| Abstract | |
|
My background on the subject:
At my university, I've started to collaborate (as co-developer) to an open-source project: HuMoR. It is an intelligent video surveillance application, with a (working-in-progress) GUI to manage the HuMoR core. It is written using the QT libraries and, thanks to HuMoR, I have acquired a good knowledge of QT and its philosophy. Right now I have good skills in C++, QT coding and UI design. Using QT became possible to have also a real cross-platform native GUI, especially with QT4 (windows, linux, macOs). Goal: My objective is to create a user-friendly cross-platform native GUI using Qt4 libraries. |
|
| Title | Neural Networks on the GPU |
| Student | Lars Johan Samuelsson |
| Mentor | Seth J Price |
| Abstract | |
|
I will implement both representation of a neural network and the execution of it on the GPU as well as a training algorithm. This will hopefully speed up the FANN-library that already is a fast lib. To accomplish this i will use GLSL to maintain the platform independence.
|
|
| Title | An upstream-friendly l10n Web UI for Fedora |
|---|---|
| Student | Dimitris Glezos |
| Mentor | Karsten Wade |
| Abstract | |
|
The most important process of the Fedora Localization Project is the translation of Fedora resources (applications, documentation, websites, etc.) in various languages. Contributors identify a resource that needs translation, receive the respective `PO`-file, translate it, and commit the changes to our Source Code Management (SCM) system.
The system currently used allows translations of resources hosted on the same system but not on other systems, such as the main SCM of Fedora or remote SCMs. Our goal is to build a platform that will facilitate localization processes of the Fedora L10N Project and other l10n communities. I will pursue this by deploying a Web User Interface for translation statistics which will also give translators seamless access to upstream-hosted translation files. This automation will benefit both the Fedora L10N Project in terms of usability and the upstream projects in terms of translation completeness. The full application can be found at: http://fedoraproject.org/wiki/SummerOfCode/2007/DimitrisGlezos |
|
| Title | An offline package update/installation facility for Pirut. |
| Student | Debarshi Ray |
| Mentor | Sankarshan Mukhopadhyay |
| Abstract | |
|
I would like to develop an enhancement to Pirut that will enable users, who do not have the necessary bandwidth to download packages from the Internet, to install and update from packages downloaded on a different machine having better connectivity. This is inspired from one of last year's accepted proposals mentored by Ubuntu [1].
[1] https://wiki.ubuntu.com/OfflineUpdateSpec |
|
| Title | RV40 decoder |
|---|---|
| Student | Kostyantin Sergiyovich Shishkov |
| Mentor | Michael Melanson |
| Abstract | |
|
Real Video 4 is one of Real Video family codecs. It is believed to be based on some standard (H264?) or standard draft.
|
|
| Title | Matroska Muxer for libavformat |
| Student | David Robert Conrad |
| Mentor | Aurélien Jacobs |
| Abstract | |
|
Matroska is a container format that's capable of holding almost any combination of audio and video codecs. It has recently been gaining popularity. FFmpeg is perhaps the world's largest open-source multimedia solution, found at the heart of many media players. This project aims to write a simple Matroska muxer in C for FFmpeg's libavformat. This will better enable the creation of Matroska files from the many applications that utilize FFmpeg.
|
|
| Title | Video Filter API |
| Student | Robert Bingham |
| Mentor | Benjamin Larsson |
| Abstract | |
|
FFmpeg's libavcodec library has become the de facto standard library for video decoding and encoding in free software projects. Unfortunately, no similar standard library has surfaced for filtering and otherwise working with video once it has been decoded. Various projects (MPlayer [1], Xine [2], GStreamer [3], VirtualDub [4], etc) have implemented their own systems to various degrees of success. What is needed is a high quality video filter API - efficient, flexible enough to meet all the requirements which have led various projects to invent their own system, and yet easy to use or develop new filters with. FFmpeg is already well-known for its libavcodec. This proposal is to implement a high quality video filter library for FFmpeg, where it can be easily used by other video-related software projects.
1. http://svn.mplayerhq.hu/mplayer/trunk/DOCS/tech/libmpcodecs.txt?revision=15625&view=markup 2. http://xinehq.de/index.php/hackersguide#AEN864 3. http://gstreamer.freedesktop.org/data/doc/gstreamer/head/pwg/html/index.html 3. http://www.virtualdub.org/filtersdk |
|
| Title | E-AC3 Decoder |
| Student | Bartlomiej Wolowiec |
| Mentor | Justin Ben Ruggles |
| Abstract | |
|
AC-3 was created to support multi-channel high quality sound. It mostly contains five channels (Right front, Center, Left Front, Right Rear and Left Rear) and one special channel for low frequency effects, but the number of channels may be various. Since early 90s it have been used in many cinemas, it also used on DVD-Video and HD-DVD. Because of the popularity of this codec, it is very important to make good implementation of it in projects such as ffmpeg. And that's why I decided to work on ac3 decoder.
|
|
| Title | The JPEG2000 deocder and encoder |
| Student | Kamil Nowosad |
| Mentor | Loren Merritt |
| Abstract | |
|
JPEG2000 is an image compression standard. It was created to supersede the discrete cosine transform used in standard JPEG. The new algorithm is based on the wavelet transform. The lossless - by the use of reversible wavelet transform, and lossy - by the use of the CDF 9/7 wavelet transform. The main advantages of the standard are:
- superior compression performance (much higher than in JPEG, especially at high bit rates) - support progressive transmission by pixel and resolution accuracy, which is very useful when publishing images in the Web - flexible file format FFmpeg is an open source tool that can convert multimedia formats. It is highly portable. Most codecs it supports are coded from scratch to provide the best performance. It is widely used in other open source projects, such as mplayer, xine or videolan. The goal of my project is to implelement JPEG2000 encoder and decoder in FFmpeg, so that it can be used by the open source community. Although its advantages, the format has not yet become very popular. My project will surely help to change it. |
|
| Title | Dirac encoder and decoder |
| Student | Marco Gerards |
| Mentor | Luca Ugo Maria Barbato |
| Abstract | |
|
During this project I will implement a decoder and encoder for Dirac
for ffmpeg. |
|
| Title | Applying for the soc programme of ffmpeg |
| Student | Xiaohui Sun |
| Mentor | Baptiste Coudurier |
| Abstract | |
|
Implementing a MPEG TS/DVB Muxer, which comforming to the specification ISO 13818-1.
|
|
| Title | QCELP decoder |
| Student | Reynaldo H. Verdejo Pinochet |
| Mentor | Benjamin Larsson |
| Abstract | |
|
To write a libavcodec decoder for Qualcomm's 'Code excited linear predictive coding' speech/voice codec as is commonly found in 3g2 and mov files, using the reference source, shared by the company while developing it and the published standard. Efforts will be made for optimizing the resulting decoder to make it usable on constrained or low end hardware.
|
|
| Title | Improving Fityk GUI |
|---|---|
| Student | Diaa Mahmoud Sami Abdel-Ghani |
| Mentor | Marcin Wojdyr |
| Abstract | |
|
There's a lot of room for GUI improvements in Fityk, this project aims to fix existing issues, and add some improvements to make the GUI more usable and intuitive.
|
|
| Title | GNOME front-end to freebsd-update(8) |
|---|---|
| Student | Andrew Turner |
| Mentor | Joe Marcus Clarke |
| Abstract | |
|
I will build a front-end to freebsd-update using GTK+. It will be designed in
two parts: a daemon that waits for freebsd-update to find new updates and the front-end proper. The back-end daemon will find when there are updates available. It will then tell the front-end about the updates that will display them and allow the administrator to install them. The back and front ends will communicate over either a local IPC or a network connection. The design will allow for multiple back-ends on different computers to allow one front-end to update headless servers. |
|
| Title | Revise ports / package system database backend and implement unified interface |
| Student | Garrett Cooper |
| Mentor | Kirill Ponomarew |
| Abstract | |
|
What is FreeBSD?
From the front page <http://freebsd.org>: FreeBSD® is an advanced operating system for x86 compatible (including Pentium® and Athlon™), amd64 compatible (including Opteron™, Athlon™64, and EM64T), UltraSPARC®, IA-64, PC-98 and ARM architectures. It is derived from BSD, the version of UNIX® developed at the University of California, Berkeley. It is developed and maintained by a large team of individuals. Additional platforms are in various stages of development. How does it run? Using a unified and integrated kernel / userland, providing a large amount of functionality to a large userbase. For any applications not included in the base system (kernel / userland), the applications must be installed via an infrastructure called "ports", which are maintained by a group of volunteers. The ports system is constructed of multiple makefiles, predefined variables, and other items. A similar analog are packages, which are versioned tar files containing precompiled ports binaries, as well as system / userland precompiled binaries. Issues: Speed: There has been a great deal of discussion on the hackers at freebsd dot org list about the speed of the package / ports database being too slow (uses standard Binary Tree with BDB). One request (the primary one) is to take the Binary Tree based storage algorithm and convert it to a Hash Table format with BDB, which would greatly increase the search / insert time, to O(c) instead of O(log(n)) or O(n) in the worst case scenario. No unified frontend: There currently isn't a unified frontend in ports, requiring admins / users to install either management applications that require ruby (which depend upon perl, not in the base system) and tend to be slow, or a unix shell script version which provides ports management, but tends to break periodically. Base / ports dependencies break other ports: There are a number of different packages included in the base system as well as in ports, and there's some confusion in the underlying ports system when it comes to which installed system to use. Some examples are OpenSSL, OpenSSH, Kerberos 5, etc. There should be some simple virtuals / entries created to the underlying ports system to allow base and ports versions of libraries / applications from not conflicting with one another. |
|
| Title | Super Tunnel Daemon |
| Student | Matus Harvan |
| Mentor | Max Laier |
| Abstract | |
|
IP can easily be tunneled over a plethora of network protocols at
various layers, such as IP, ICMP, UDP, TCP, DNS, HTTP, SSH and many others. While a direct connection may not always be possible due to a firewall, the IP packets could be encapsulated as payload in other protocols, which would get through. However, each such encapsulation requires the setup of a different program and the user has to manually probe different encapsulations to find out which of them works in a given environment. The aim of this project is to implement the Super Tunnel Daemon, a tunelling daemon using plugins for different encapsulations and automagically selecting the best encapsulation in each environment. Should the environment change, the user would not notice the transition to a different encapsulation except for a small delay. Connections estabilished within the tunnel would seamlessly be migrated to a different encapsulation. In this way, mobility would be supported as well, even to the extent of changing between different physical network interfaces. New encapsulations could easily be added in the future using the plugin interface. The implemnation would be in C, use the tun(4) interface, multiplex between the tun device and the encapsulations with a select(2) and load plugins via dlopen(3). |
|
| Title | Rewriting lockmgr(9) |
| Student | Attilio Rao |
| Mentor | Jeffrey Roberson |
| Abstract | |
|
Rewriting lockmgr support for the FreeBSD kernel
Recent analisys on FreeBSD scalability, evicted a number of kernel bottlenecks that should be solved someway. One of the hottest cames from the heavy lockmgr(9) syncronization primitive implementation*. The project will be focused on rewriting lockmgr on a lighter basis, using memory barriers (atomic(9)) and a direct usage of the sleepqueue(9) low level interface. This is alredy an ongoing effort, but some foundraising would speed up the development. * the lockmgr code demonstred very fragile at relatively simple changes too |
|
| Title | Apple's MacBook on FreeBSD |
| Student | Rui Paulo |
| Mentor | Andre Oppermann |
| Abstract | |
|
Apple's MacBook computers are nicely designed and have neat
features that other laptops don't. While Mac OS X is a nice operating system, UNIX folks (like me) would prefer to run other operating systems like FreeBSD. This project aims to bring bug fixes and new drivers to FreeBSD that would help running this OS on this platform. |
|
| Title | Getting gvinum up to standards |
| Student | Ulf Lilleengen |
| Mentor | Lukas Ertl |
| Abstract | |
|
Ulf Lilleengen
lulf at stud.ntnu dot no Getting gvinum up to standards One year ago I sent a proposal to improve gvinum in FreeBSD. Although I did not get any sponsoring, I did a lot of work on it. Unfortunately, none of these changes has been imported into the code base due to lack of developers. One year later gvinum is even more important to get up to standards, because I have experienced even more users who have troubles with it. This is because it's not reliable enough and not correct enough for an old FreeBSD installation to be upgraded to the 6.x series yet. I want to change this. |
|
| Title | TCP/IP regression test suite |
| Student | Nanjun |
| Mentor | George Neville-Neil |
| Abstract | |
|
This project is about to produce a program to test some devices' network performability by emulating remote TCP endpoint. Based on prior work, the task may focus on designing test schemes and displaying the report on packet level in a comprehensive way.
|
|
| Title | bus_alloc_resources() Code Update for FreeBSD |
| Student | Christopher Davis |
| Mentor | Warner Losh |
| Abstract | |
|
Project Description
Currently, many devices in FreeBSD's source tree use excessively verbose methods of resource allocation and deallocation. Numerous calls to bus_alloc_resource() or bus_alloc_resource_any() are used to allocate resources, and subsequently, multiple calls to bus_release_resource() are used to free the resources after an error in allocation or when the device is detached. Recently, however, the bus_alloc_resources() and bus_release_resources() functions have been added. These simple wrappers around bus_alloc_resource_any() and bus_release_resource() both operate on the same resource description, so that much of the repetition once needed to allocate and free resources can be mitigated. My project is to update driver source code where necessary using the new functions to make the code related to allocation and deallocation simpler and clearer, while making other refinements as needed. I will patch and test as many drivers as I can during the Summer. |
|
| Title | FreeBSD "safety net" IO logging utility |
| Student | Sonja Milicic |
| Mentor | Lukas Ertl |
| Abstract | |
|
A kernel module that allows copy-on-write style logging of I/O requests and can be used as a "safety net" during critical file system operations.
|
|
| Title | Improve the FreeBSD Ports Collection Infrastructure |
| Student | Gábor Kövesdán |
| Mentor | Andrew Pantyukhin |
| Abstract | |
|
FreeBSD is a UNIX®-like operating system with lot of interesting and exclusive features. One of those is the FreeBSD Ports Collection, which provides easy installation, customization and management for third-party softwares. Official packages are also built from the Ports Collection. This proposal is about some new updates, immprovements and features for the Ports Collection infrastructure.
|
|
| Title | http support for PXE |
| Student | Alexey Tarasov |
| Mentor | Ed Maste |
| Abstract | |
|
Main purpose of this project - to write extendable (as much as possible - C) code wrappers to provided by PXE and UNDI APIs to support downloading of files via TCP-based protocols in preboot environment. Goal - to introduce code, able to download and prepare booting of FreeBSD kernel from remote server via direct connection or http proxy.
|
|
| Title | Graphical installer for FreeBSD (finstall) |
| Student | Ivan Voras |
| Mentor | Murray Stokely |
| Abstract | |
|
The current FreeBSD's installer, "sysinstall" is more than 6 years
old and way overdue for a replacement. This project will create a graphical install & setup application for FreeBSD which aims to make use of a live on-CD system and specifics of the FreeBSD system. |
|
| Title | Porting Linux KVM to FreeBSD |
| Student | Fabio Checconi |
| Mentor | Luigi Rizzo |
| Abstract | |
|
Linux KVM is a Virtual Machine Monitor, part of the Linux
kernel, that uses Intel VT-x or AMD-V extensions for x86 processors to create a full virtualization environment. This project will consist in porting Linux KVM to the FreeBSD kernel. Since Linux KVM has a structure similar to that of a device driver (actually, it is a device driver, from many points of view,) core kernel changes will not be required, and the final product of this project will be an external loadable kernel module, exporting an interface based on ioctl() calls to a device descriptor. Part of the project will be also the porting of the userspace client for that interface, a modified qemu that uses KVM for host execution. |
|
| Title | A Blogging plugin for Freenet |
|---|---|
| Student | Frédéric Rechtenstein |
| Mentor | Jerome Flesch |
| Abstract | |
|
Freenet is a tremendous project, but one of the biggest problem (IMHO) is the lack of useful and interesting content.
But after a reflection, this situation seems to be logical : If it's easy to insert or download a movie, currently it's hard for a common user to publish a site or a blog. On the web everyone can easily express himself in a CMS, Wiki, Blog, Podcast, .. On Freenet, the only solution is to create a Freesite, but a lambda user can't do because it requires to know HTML, CSS, etc. This situation may change with Freekiwiki, but a wiki is made for collaborative content, so it's not adapted for many usages like a personal site. |
|
| Title | Different growth models for routing/congestion control |
| Student | Vilhelm Verendel |
| Mentor | Ian John Cecil Clarke |
| Abstract | |
|
Many social systems (such as links on the Internet) have the small-world property, but also a power-law degree distribution. This means that some nodes have many more peers than others. This can be a risk for a network with respect to targeted attacks, but also something I think one has to partly accept in case that the Freenet system should allow for adding trusted connections just as in the real
world. It's hard to put constraints on this. I would like to take the existing work/simulations that have been done and see if it could be extended to a network that either has finer details or are in some sense more alike to the structure of either wider models or to the current generation process (setting up connections via an irc channel should for example give quite clustered networks with few long links, perhaps also with very varying amount of degrees of the nodes). Having a large number of connections may be relevant to study for avoiding bottlenecks in the network. |
|
| Title | DOS resistant link level encryption using JFKi key management protocol |
| Student | Srivatsan Ravi |
| Mentor | Florent Daignière |
| Abstract | |
|
The creators of Freenet tried to enhance the security of the system by envisioning all forms of DOS attacks. There still however exist some ways in which an attacker may affect the system through some variant of DOS. For my project, I will try to provide a DOS resistant link level encryption using the Just fast Keying(JFK) key management protocol.
Denial of service attack can be directed at Freenet by the attacker in several ways. 1.Insert a large number of bogus files into the network to attempt to fill the network’s storage capacity. 2. Distributed DOS attacks can be launched by the attacker by using several zombie systems to simultaneously launch smurf attacks( spoofed broadcast ping messages to flood the system) because there is nothing to prevent the attacker from using any number of ports on a single host pretending to be an extremely large number of nodes. 3. The attacker could also modify all messages that pass through him by generating false RequestFailed or TimedOut messages to DataRequests or sending messages with extremely large amounts of data. JFKi provides active identity protection for the initiator and no identity protection for the responder, whereas JFKr provides active identity protection for the responder and passive identity protection for the initiator. By superencrypting the authentication packets with the symmetric key in each node’s reference, we make JFKi resistant to the attacker. Link level encryption by means of the Just Fast Keying (JFKi) protocol significantly reduces the chances of analyzing network traffic when the communication link operates continually and carries a significant level of network traffic. JFKi will be DOS resistant because it will resist CPU/memory exhaustion attacks on the network, unaffected by Man in the Middle( MITM) attacks because nodes will authenticate other nodes and most importantly, protect the anonymity of the user which is the unique feature of the Freenet that sets it apart from other P2P architectures. The JFKi protocol will be implemented in Java (Freenet is written in Java) so that it can be incorporated into the Freenet source tree. Having studied the Freenet architecture and the several cryptographic algorithms in the past, I am confident of completing the task within the stipulated time. The original Freenet documentation is present here http://freenetproject.org/papers/freenet.pdf |
|
| Title | DVB CAM support |
|---|---|
| Student | Alessandro Decina |
| Mentor | Zaheer Abbas Merali |
| Abstract | |
|
The scope of this project is to add DVB CAM support to Freevo.
Kaa.record, the recording component used by Freevo, is based on the GStreamer framework so this will require adding the support to GStreamer and then integrating the work back in Kaa.record. When this project will be completed, Freevo will have a rocking DVB CAM support. Also all the other GStreamer based media players will be able to integrate this new feature with little effort. |
|
| Title | Improve Eclipse plugin of OCaml |
|---|---|
| Student | Soutaro Matsumoto |
| Mentor | Yoriyuki Yamagata |
| Abstract | |
|
There is an Eclipse plug-in for OCaml programming. The plug-in is a part of EclipseFP project(http://eclipsefp.sourceforge.net/index.html). However, the plug-in provides only a few features and looks being not maintained for two years.
I propose better plug-in, which provides following features. 1. Integrated build system, which recognize the dependencies between modules 2. Code editor, which provides simple code formatting and refactoring browser 3. Integrated unit-testing support |
|
| Title | Gaim/Pidgin MySpaceIM Protocol Plugin |
|---|---|
| Student | Jeffrey Connelly |
| Mentor | Sean Egan |
| Abstract | |
|
MySpace is a popular social networking site used all over the world. In May of 2006, MySpace released their own proprietary instant messaging program, MySpaceIM. The goal of this project is to reverse-engineer the MySpaceIM protocol and implement support for it in Pidgin's libpurple (formerly Gaim's libgaim) library, allowing Pidgin users to have full access to the MySpaceIM network.
A preliminary proof-of-concept Gaim plugin implementation is available at http://xyzzy.freeshell.org/gsoc/myspace-gaim-prpl-01.tar.gz, implementing the following: - Parsing most of the protocol - Logging in using RC4/SHA1-based authentication - Sending messages, by numeric userid or username - Receiving messages, currently only by numeric userid - Some buddy list support (show all users on buddy list as online, by uid) |
|
| Title | Certificate Manager and Improved SSL Support |
| Student | William Ehlhardt |
| Mentor | Ethan Blanton |
| Abstract | |
|
Gaim's SSL (Secure Sockets Layer) support is currently incomplete. Several protocols, notably the MSN and Jabber instant messaging protocols, use SSL to communicate securely with the chat server to prevent harvesting of password data, hijacking, and eavesdropping. However, Gaim's current solution to SSL support is something of a hack; in order to sidestep the problem of key management, Gaim simply "takes the server at its word" and does no certificate verification.
I propose to add a certificate management system to Gaim. This will provide increased security by allowing the user's Gaim client to keep track of the certificates of the services she uses, alerting her to unrecognized certificates, and allowing her to verify and add them to the trusted list. SILC (Secure Internet Live Conferencing), another secure chat protocol that Gaim supports, would also benefit from the addition of a key manager. If time allows, I intend to extend the certificate manager to be useful for SILC keys. PROJECT DELIVERABLES: (SILC-related parts somewhat optional) - A unified "Certificate Manager" interface within libgaim through which the various public-key-using systems can export key/cert management. - A corresponding "Certificate Manager" dialog for the GUI. - Appropriate extensions to the SSL and SILC interfaces to provide a protocol-specific "key management API" for each, through which the trusted keys/certs databases can be modified. - Management interfaces, implemented through the Certificate Manager interface, that allow the user to control the key/certificate stores of SSL and SILC. - (Possibly) A set SSL certs to ship with Gaim and initialize the cert store. |
|
| Title | Telepathy support for Gaim |
| Student | Will Thompson |
| Mentor | Robert McQueen |
| Abstract | |
|
Gaim is a popular instant messaging client with support for more IM protocols than most people have fingers. In recent times, it has been suggested that Gaim development has stagnated; for example, the MSN protocol implementation lags behind that of a number of other clients, and there is no voice or video support.
Telepathy is a communications framework built around DBus. Connections to IM servers, text conversations, and voice calls (for instance) can be implemented with a number of separate processes, interacting via the session bus. This approach allows each component to do one thing well, rather than requiring a single monolithic application to provide every piece of functionality. It also allows any new UI to reuse the existing connection managers rather than having to reimplement every protocol itself. Currently, there are only five released Telepathy connection managers. Some of these are said to be superior to Gaim's implementation of the same protocol, while others are more rudimentary. On top of this, Gaim supports a range of protocols which are totally unavailable within the Telepathy universe. I propose to implement: * a Gaim-based Telepathy connection manager, to provide Telepathy clients with access to the full range of protocols supported by Gaim. * a Telepathy protocol plug-in for Gaim, to give Gaim access to Telepathy implementations of protocols in addition to Gaim's own implementations. This would also allow other desktop applications to interact with Gaim's connections without needing Gaim-specific code in each application or application-specific plug-ins in Gaim. |
|
| Title | Gaim-Text Improvements |
| Student | Eric Polino |
| Mentor | Sadrul Habib Chowdhury |
| Abstract | |
|
=======
Overview A prioritized list of deliverables is as follows: 1. Shortcut Keys Overhaul 2. Sound 3. Logging Improvements 4. Buddy List Options 5. Documentation of my changes 6. Crashing bug fixes (if time permits) ======== Shortcut Keys Overhaul The shortcut keys need some serious work. I will build an independent interface made available with a command line option to catch basic keystrokes. To provide running customizations I add an interface within Finch to bind keystrokes to predefined actions. Finch will be able to detect both 8-bit meta and ESC sequences. If time allows I will also add the ability for Finch to detect that the user is unable to send commands due to key binding issues and then provide a way for it to grab a group of basic keystrokes to allow the user to navigate. ==== Sound I frequently run Finch inside a screen session in the background, and it is very frustrating when I miss someone who tried to talk to me. Since it's not a GUI and doesn't have the ability to pop up a notification, the best way to resolve this problem is with the use of sound. I will add the ability to customize sounds for different events, similar to many existing IM programs. I will also make sounds customizable on a per-buddy basis similar to how you can program custom ring tones for different people in your cellphone. ===== Logging The logging features are another feature I will improve. I will build on the same basic ideas found in Pidgin's logging tools. Though there are a few ideas I want to add. I will add the option to search through all conversations instead of just searching them one by one, or even searching them over a range of dates. There will also be the option to search from a list of logs from different users. From there we can add an array of search capabilities to better search the logs. =============== Basic Buddy List Options There are a few options to the buddy list that I think are missing. I will add the ability to hide/show empty groups and to hide/show buddy details. =========== Documentation I will document my work for users and developers in LaTeX and thus provide a way to output the docs in a variety of formats. ============== Crashing Bug Fixes If time allows I will work on some bugs that cause Finch to crash. Some of these are related to chatting over GoogleTalk and causing a segmentation fault when the program attempts to exit. |
|
| Title | Mono Loader (Part Duex) |
| Student | Eoin Coffey |
| Mentor | Gary Kramlich |
| Abstract | |
|
My name is Eoin Coffey and I'm applying to continue working on the mono-loader plugin for Gaim.
After the 2005 SoC I submitted my patches for a basic mono-loader to gaim and they were accepted and committed shortly thereafter. Currently the mono-loader is sitting neglected in the Sourceforge's shiny new SVN repository. I aim to fix that. The plan breaks down into improving the stability of the plugin, possibly improving mono to make the first task easier, and planning, generating, and packaging .NET bindings for Gaim. |
|
| Title | Stabilize and improve MSN support in Gaim |
| Student | Carlos António Vieira Silva |
| Mentor | Mark Doliner |
| Abstract | |
|
The main goal is to update MSN protocol and its features support in gaim, and producing quality code ready to be included in mainline gaim. The areas of improvement will be the MSNP13 branch completion and stabilization, SOAP handling simplification, direct P2P file transfers, and extra features supported by the MSNP protocol such as storing the display picture and personal message on the server, so it is the same everywhere the user connects.
|
|
| Title | Virtual Classroom over Pidgin |
| Student | Prekshu Ajmera |
| Mentor | Richard Laager |
| Abstract | |
|
The goal of the project is to design a virtual classroom plugin for gaim. The instructor can add the students as buddies in his own classroom group on gaim. Whenever the instructor runs the classroom, the students can connect to it to get benefits from his lecture .. The main features will be a white board where the professor can draw & write and chat facility(through gaim). He can also show them some videos if required.
|
|
| Title | Remote logging |
| Student | Shkutkov Michael |
| Mentor | Richard Laager |
| Abstract | |
|
Everyone know what does “IM” stand for? And almost all of us use messengers in everyday life. We can chat with out friends, parents, colleagues or even boss, we can just simply chat or have an important conversation – it doesn't matter actually. In the end, the only thing that matters is the information - only what we or our interlocutor typed. So it's rather useful and comfortable to have access to chat log anytime.
May be you think that it’s not a big problem. Let’s imagine you have one home computer and another home computer or your personal working place at university, work or anywhere. So you need to synchronize your logs (which can be very important). It's a very common problem of many IM users (I am not the exclusion). The goal of this project is to extend existing logging subsystem of Gaim, popular multi-platform instant messaging client. This extension allows to safely store your logs on different type of repositories and synchronize your logs with remote ones. With this extension you don't need to copy valuable information form messenger to external device no more. You can forget about mailing your own logs to your own mailbox to have access to them from some other place. With this extensions you can stop worrying about the hardware failures - because what ever happen with you computer, your logs will be safe. Another minor goal is to allow user to convert their IM message history to Gaim log. |
|
| Title | Full Text Indexes for Gallery2 Search |
|---|---|
| Student | Adam Pflug |
| Mentor | Felix Rabinovich |
| Abstract | |
|
The current implementation of Gallery2's search functionality suffers from poor performance, a problem particularly pronounced for large datasets because indexes cannot be used to improve efficiency. The solution to this performance and scalability problem is to use DBMS agnostic full text indexing for searches. Furthermore, the current search implementation does not support complex queries (such as queries containing boolean operators) or effectively support even basic relevance-based ranking algorithms. The use of a full text index and an enhanced query parser could offer improvements in both these areas.
|
|
| Title | Gallery 2 SQLite backend |
| Student | Brian Kirchoff |
| Mentor | Tim Almdal |
| Abstract | |
|
Gallery 2 currently supports a number of databases for storage backend including MySQL, PostgreSQL and Oracle. SQLite is a new flatfile database system that is fast, simple and easy to use and is now included by default in new PHP installations. By adding support for SQLite to Gallery 2 as a storage backend it increases the number of people who will be able to easily install and use Gallery.
Deliverables for this project: SqLiteStorage class that extends GalleryStorage Implements SQLite Version 2 using ADODB and SQLite Version 3 with PDO driver added to ADODB SqLiteStorage will have to handle ALTER TABLE which is missing from SQLite by making a new version of the table and copying all the data. Add SQLite to DatabaseSetupStep class in Installer Test and Pass all 2200+ Unit Tests Visit http://codex.gallery2.org/Gallery2:SoC-SQLite_Gallery_2_SQLite_Backend for more information about the project. |
|
| Title | Web Based Image Manipulation . |
| Student | UdayaKiran Ghattamaneni |
| Mentor | Jack Bates |
| Abstract | |
|
The idea of this project is to develop a 'Web based
Image Manipulation' module for Gallery. Gallery is a very good package for managing images.There are a lot of things which we can do with gallery.But surprisingly gallery does not come with many Image manipulation options.There are some basic operations like flip, rotate and resize.But it would be great if we could have a bigger set of image operations built into gallery so that even users without any image editing software on their computers can manipulate their images before they take prints. |
|
| Title | Media Metadata Extraction and Manipulation |
| Student | Camilo José Díaz Repka |
| Mentor | Russell Lee |
| Abstract | |
|
Improve the Current Exif Extraction G2 Plugin, adding database storage support(and searching) along with property editing for a subset of suitable items.
Currently G2 has an Exif plugin, which enables read-only access to embedded metadata in image files, this plugin also provides an admin interface to select which fields should G2 display on Basic/advanced view mode. Every time a user request to view an GalleryPhotoItem via the core.ShowItem view/controller, the underlying Exifer lib parses the original file Exif/IPTC Attributes, and the Exif block is embedded on the view, displaying the user-selected subset of the picture metadata. There are several drawbacks of this approach. One of them, is the amount of load that impacts the server when the underlying Exifer/JPEG libs parse metadata entries, something really noticeable on big files. Other drawback is the unability to search such parsed properties just from the database. I want to solve those current G2 issues, and provide additional functionality by implementing a base Metadata Interface, and two backend support modules for it, in a way that the backend can be chosen by the user, as already happens with the Graphical Toolkit. I also want to implement a MetadataEditor for Gallery, capable of setting metadata fields on a per-item and per-album basis, something similar to what the customfield module provides. Beside this, I want to extend the current Exif module capabilities to copy a selected field gathered from medatada to a GalleryItem field after adding new media to the Gallery. This will allow a G2 user the possibility to mirror any gathered metadata property to a user-selected property of a GalleryItem, replicating previous exif module functionality in a flexible, user-customizable way. There has been previous attemps to do this, however, no further advance has occurred since then, and the issue is still active on the tracker, being also one of G2’s most requested features. |
|
| Title | Propagating array data dependence information from Tree-SSA to RTL |
|---|---|
| Student | Alexander Monakov |
| Mentor | Daniel Berlin |
| Abstract | |
|
The RTL array data dependence analyzer was written specifically for swing modulo scheduling (SMS) implementation in GCC. It is overly conservative, because it uses RTL alias analysis to find intra- and inter-loop memory dependencies. It also assumes that the distance of an inter-loop memory dependence equals to one.
I propose to improve the quality of data dependence analysis on RTL via propagating the information from Tree-SSA dependence analyzer. The saved information will be used in construction of data dependence graph for SMS. It can also be used for other optimizations, e.g. scheduler. |
|
| Title | Fortran 2003 features for GCC |
| Student | Janus Weil |
| Mentor | Steven Bosscher |
| Abstract | |
|
I would like to contribute to the Fortran front end of GCC by implementing some missing features from the Fortran 2003 standard, primarily concentrating on the ones concerning object orientation. In particular I would like to focus my efforts on the implementation of:
- procedure pointers - type-bound procedures - (and possibly even more ...) Depending on the time it takes to reach the first two aims, I would try to implement some more Fortran 2003 features, where the object-oriented features would be on top of my list (e.g. type extension, inheritance, polymorphism, type-bound operators), since I think that the lack of object orientation is the most serious deficiency of Fortran 95. I chose the two primary aims because type-bound procedures are at the heart of object orientation, and procedure pointers are a good first step towards type-bound procedures. |
|
| Title | Open Mutliprogramming Interprocedural Analasis and Optimalizations |
| Student | Jakub Staszak |
| Mentor | Daniel Berlin |
| Abstract | |
|
My idea is Open Mutliprogramming Interprocedural Analasis and Optimalizations (OMP-IPA). Multithreaded programming has become very important and I think that GCC should focus more on this subject. OpenMP implementation in GCC is on very basic stage, and there is still a lot of things to do. In my opinion my project (OMP-IPA) may improve GCC's posibilities and fix some bugs.
|
|
| Title | Integrating OpenJDK's javac bytecode compiler into gcj |
| Student | Dalibor Topic |
| Mentor | Mark J. Wielaard |
| Abstract | |
|
The GNU Compiler for the Java programming language includes a front end for the compilation of source code to JVM bytecode. The original front end has evolved over time, to be eventually replaced in early 2007 by a front end based on integrating the Eclipse Compiler for the Java programming language in order to allow gcj users to utilize features from the Java 1.5 language specification in their code.
I would like to integrate the OpenJDK javac compiler, into gcj in the same way. That would allow gcj to easily track the next batch of Java programming language changes planned for Java 7 as they are introduced in the javac code base, as javac serves as the reference implementation for Java programming language (bytecode) compilers. The project would entail : 1. Making javac build and run on gcj & GNU Classpath, building upon the work done by Andrew Haley and Andrew Hughes. 2. Porting the GCCMain wrapper for gcj-specific behavior (compiler options, error output style, etc.) to wrap javac's functionality and integrating it into the gcc bootstrapping process. 3. Integrating gcj+javac into the gcj and javac regression test suites, in order to shake out and fix potential regressions in the jc1 bytecode-to-native-code translator in gcj, as well as the integration code. 4. Adding support for the stack map attribute in gcj, which was introduced in JSR 202 and implemented in javac for Java 1.6. 5. Rebuilding Fedora's, Debian's or Gentoo's Free Software Java programming language based packages using the gcj+javac combination in order to detect and fix potential regressions in real-world code. |
|
| Title | New static scheduling heuristic for GCC. |
| Student | Dmitry Zhurikhin |
| Mentor | Vladimir Makarov |
| Abstract | |
|
Most scheduling approaches consist of two steps: computation of sets
of available instructions at the current scheduling point, and choosing one of them to become the next instruction. This approach is used in GCC compiler in current implementation of list scheduler (known as Haifa scheduler) and new approach under developing – selective scheduling. While most activities aimed at improving scheduling quality are trying to increase number of gathered available instructions (such as above-mentioned selective scheduling, treegion scheduling, improvements of region formation), choosing step plays an important role too. Current implementation of scheduler uses static priorities, based on critical path heuristic, which is known to behave well while scheduling single basic blocks and become worse when expanding scheduling boundaries to extended basic blocks or regions. This project aims at developing a new priorities system, which would consider not only the critical path, but other possible exits from scheduling region and their probabilities. |
|
| Title | SDF Parser/Annotor for Icarus Verilog VPI Plugin |
|---|---|
| Student | yang ju |
| Mentor | Stephen Williams |
| Abstract | |
|
The SDF parser will parse SDF files, that are described in Standard Delat File format ( a generic SDF file, no FPGA or ASIC preference). It can be invoked by the '$sdf_annotate' system task and match paths with the specify paths actually available (via vpi) in the design.
This task is made in C and can be loaded as a VPI module, that is inoked by the VVP engine during the simulation time. The property EDA tool, Modelsim, from Mentor Graphics, is used to validating the implementation and a comparative report is attached by the end of project. |
|
| Title | Usability enhancement in Gtkwave |
| Student | Kermin Fleming |
| Mentor | Anthony J Bybell |
| Abstract | |
|
Debugging HDL circuit descriptions is a challenging task as many events in hardware systems occur concurrently. One of the best ways to debug such systems is by viewing the simulataneous changes in logical waveforms within the system using a waveform viewer. Gtkwave is an open digital waveform viewer commonly used in academic and industrial settings. I propose to fix some usability issues in gtkwave, such as reloading waveform dumps while gtkwave is running and improving inter-run compatibility of stored waveform configuration files.
|
|
| Title | Installation Wizard for Geeklog |
|---|---|
| Student | Matthew West |
| Mentor | Dirk Haun |
| Abstract | |
|
These days there are several different CMS and Weblog packages freely available for website owners to download and install. Because of this it is imperative that a software package create a warm and fuzzy experience for those who are installing and administering it. The current Geeklog installation procedure may be seen as daunting by novice website owners. The several steps that are involved in the setup process makes it likely that a user will become discouraged during the process, abandon the installation and move onto try other weblog software. Additionally, it is a hotspot for errors if a user makes a syntax mistake in the config file during the setup. My suggestion for a more automated process should solve most of those problems and present a more elegant installation experience.
|
|
| Title | Article plugin |
| Student | Damien Hodgkin |
| Mentor | Tony Bibbs |
| Abstract | |
|
Geeklog 2 is getting to a stable and usable state. The new Geeklog 2 core allows for most major functionality to be added in via a plugin structure.
Geeklog 2 needs a working plugin implemented to ensure all the various API's built into the kernel (SOAP, Event Management, etc) are working as designed. The core to most CMS engines is article management and as such Geeklog 2 needs an Article plugin. The Article plugin will allow users to post articles to be displayed on the front page of the site. It will be written in PHP, Xhtml and Xml. To accomplish the task of creating this plugin a core class will be written to house all the needed "main" functionality, such as submission functions along with any hooks to make it compatible with future plugins (ie. a media plugin). The finished plugin will deliver a very flexible article submission system, complete with richtext editor, SOAP inteface, AJAX (which will allow the plugin to be usable without javascript, but if the clients browser supports it will allow more advance enhancements), media hooks, options to configure how the article is displayed, and automatic article aging. |
|
| Title | Web services API for Geeklog |
| Student | Ramnath R Iyer |
| Mentor | Dirk Haun |
| Abstract | |
|
My proposal for SoC is to develop a comprehensive Web Services API for the Geeklog content management system. The purpose of this API would be to publish and update stories and comments using a desktop application, import data into the Geeklog system or export data into a standard or well-established format such as RSS or Atom. This would also entail a re-organization of Geeklog's code internally, and the development of an API layer to handle the flow of information between the web service, the website, plugins and the database.
|
|
| Title | Enhanced search strategy in Cytoscape |
|---|---|
| Student | Maital Ashkenazi |
| Mentor | David States |
| Abstract | |
|
Cytoscape is an open-source network visualization and analysis software.
A network is composed of nodes and edges. Those elements can have different values associated with them, known as attributes. The user can search and retrieve a list of nodes or edges according to a specific attribute’s value. Currently, The search is carried out one attribute at a time. To perform complex queries, involving multiple attributes, the search should be repeated for each attribute; then the result sets can be merged into a final result set. Wildcards can be used only for terminating a value. I will introduce an improvement to Cytoscape that will enhance the search capabilities to allow searching on multiple attribute fields with the use of logical operators and wild cards. The search interface includes a text line, into which the user types the query. The intuitive query syntax uses the form attribute:value. Logical operators (AND, OR, NOT) can be used between the query parts, resulting in a search on multiple attributes. The use of wildcards anywhere within the value will provide additional flexibility to the search strategy. |
|
| Title | Visual history of pathway modifications |
| Student | Martijn van Iersel |
| Mentor | Alexander Pico |
| Abstract | |
|
An important usability feature in wikis is the ability to examine changes made by others. The same principle goes for wikipathways.org. Simply showing an old and new version of a pathway side by side may work, but usability could be improved by giving better visual indicators of what has changed.
I intend to develop a standalone utility that takes two pathways in GPML format, calculates the minimal difference, and turns this into an SVG image that clearly visualizes the differences between the two pathways. I'd like to create at least two possible visualizations: transparent overlays and a two-pane color-coded layout. I've created mockup images of what I think this could look like here: http://ftp2.bigcat.unimaas.nl/~martijn.vaniersel/gsoc/ . I want to implement two different visualization styles simultaneously to get a better idea for what ideas are good and bad. User-testing should determine the best of the two and I want to make that part of my project. Subsequently I intend to integrate this application both into wikipathways.org and PathVisio. |
|
| Title | Pathway Editor for WikiPathways.org |
| Student | Thomas Kelder |
| Mentor | Kristina Hanspers |
| Abstract | |
|
++++ Pathway Editor for WikiPathways.org ++++
To facilitate easy and user friendly pathway editing, I propose to rebuild PathVisio to create an embedded pathway editor, that can be included in the WikiPathways.org web pages. A user should be able to activate this editor with a single mouse click making the editor start within seconds. The editor should be light-weight, user friendly and have no other dependencies than the user's browser. For more info see: http://conklinwolf.ucsf.edu/genmappwiki/Google_Summer_of_Code_2007/Thomas |
|
| Title | Graph layout library for GenMapp |
| Student | Nikolic Aleksandar |
| Mentor | Michael Smoot |
| Abstract | |
|
Graphs (networks) are one of the main utilities for visualization of biological data. Standard algorithms for graph layout are good enough for some applications, but knowledge of domain is sometimes a necessity for proper analysis of the represented data. Main purpose of this project is to combine advanced graph layout algorithms with semantics of represented biology data in order to get the best representation.
|
|
| Title | Collective Maintenance |
|---|---|
| Student | Andrey Falko |
| Mentor | Stephen Bennett |
| Abstract | |
|
Most work in Gentoo revolves around the maintenance of the ebuilds in the portage tree. This work is divided up amongst either individual maintainers or herds. An individual maintainer or a herd is responsible for committing bug fixes and version bumps for the packages that they officially maintain. A single maintainer or herd cannot take on more packages than they have time to work on. As a result, the number of packages that can be well maintained in portage becomes limited by the number of developers. Second, should a maintainer become absent, his packages will not be maintained. Sometimes users will submit ebuilds with version bumps for bug fixes, but not have them committed to the tree until the maintainer returns.
I propose a system that helps overcome these disadvantages. My project will not require a banishment of official maintainers and herds, as there are advantages to such a scheme. My project's goal is to allow Gentoo to expand its capabilities to better support a large number of packages. I propose to create a web interface where users and developers can collaborate on a list of packages maintenance tasks. The tasks in higher demand will be at the top of the list. Users can register, mark that they are working on a task, submit their work, and wait for a developer to review and commit their work. Developers can do the same, with the exception that they will not have to wait for another developer to commit their work. This interface will effectively allow users and developers to flexibly to take on tasks without needing to search for a maintainer or herd to do the task. This interface can allow for the ability to have packages in portage that are not maintained by a single herd or maintainer, but instead are maintained by the whole community. If an issue arises with such a package, the issue will be put on the task list, and solved by the large number of people who might care about the package. Another thing that the interface will allow is the ability for herds and maintainers to list tasks that they cannot do. For example, the kde herd is in need of more maintainers to fix a number of outstanding bugs. With the interface, the herd can submit the bugs and see a response from capable people who do not have time to be an official maintainer, but have the time to fix a bug or two. In sum, the interface will allow Gentoo to communicate specific work that needs to get accomplished to the community. |
|
| Title | GNAP cross compile support |
| Student | Philipp Riegger |
| Mentor | Jose Alberto Suarez Lopez |
| Abstract | |
|
GNAP (Gentoo Network Appliance) is a toolkit to build small
Gentoo-based distributions for embedded devices or old PCs. It consists of 3 packages: gnap, gnap-dev and gnap-ext (all in dev-embedded). Gnap provides the gnap_overlay script, which is used to build customized images (disk image or cd image). Therefore it takes a prebuilt GNAP core and "overlays" it with customized configuration files. Gnap-dev provides gnap_make which can be used to build customized GNAP cores and extensions for existing GNAP cores. Gnap-ext provides gnap_remaster, which is used to extend GNAP cores with extensions. It is easy to get a simple system running using only the gnap and gnap-ext package and GNAP is also flexible enough to allow the user to build complex images with all kinds of special software using gnap-dev. Unfortunately, all of them are only available for x86 and/or amd64. It is only possible to build images for x86 compatible systems. This is a big limitation, since lots of embedded systems are not x86 based, but ppc, arm, mips or mips64. And since GNAP can run off a 16 MB flash drive and is very customizable (a smaller gnap is possible, a totally different purpose is possible) it is interesting for all kind of devices. Or it could/would be, at least. The goal of my project is to integrate cross compilation support in GNAP, include support to build images on platforms different than x86/amd64 and to include support and create documentation for at least one specific embedded board. This probably also includes cleaning up the codebase, fixing bugs to get gnap working out of the box (the current gnap in portage needs some love) and maybe expanding/clarifying existing documentation. |
|
| Title | Robust Cisco-like configuration interface for GNAP-powered embedded distros |
| Student | ALEXANDROS STERGIAKIS |
| Mentor | Alexander Færøy |
| Abstract | |
|
Improve the usability of GNAP/Catalyst-based distributions by developing a Cisco-like CLI framework, as well as basic configuration-plugins for it. The goal is for this layer to be flexible enough as to empower other more high-level layers to sit on top of it.
Specifications: *Separation of the CLI as a system, from the code that enforces user configuration commands. *Modular architecture: New configuration commands and modules can be inserted/removed/updated at anytime on a running system. *Supports local (console) connections and remote (network) connections with optional authentication. *In-line scripting language embedded in the CLI interface, with ability to activate/deactivate. *System configuration for each configuration plugin is reflected internally in XML files. *Command output is natively XML, with later being XSLT (or otherwise) translated to human readable format to be displayed on the console. XML allows for easy layering with other Configuration Interfaces (such as Web-based or Remote GUI). *Integration with “GNU Screen” to support multiple parallel local CLI sessions. *Arbitrary configurable privilege modes, with arbitrary configurable commands associated to each of them (USER, EXEC, ...). A command can be registered in many privilege modes. *Optional authentication for each of the privilege modes. Hash-based authentication. *Arbitrary configurable configuration modes (configure terminal, router rip, interface eth0, ...) this resembles a tree directory structure with different command visibility at each node. A command can be registered in many configuration modes. *Superset of the functionality provided by a Cisco-router in terms of CLI versatility. *Real-time informational messages on the console in a push manner, for evens such as interface link state UP/DOWN. *Escape mechanism that allows the user to enter shell mode and conduct debugging, information gathering or manual tweaking of the configuration. *Optional component. The user must be able to deactivate it and be able to configure the system manually or by other means. While active, other means should be avoided, except if they can interact with the CLI API. *Bounded command length, or unbounded with the last element repeating arbitrary times (or limited by the handling function). *Finally some basic configuration plugins should be provided mostly as a proof-of-concept, and to encourage user community to contribute, and also as a guidance on how plugins should be implemented. |
|
| Title | equizApp - system that helps Gentoo Recruiters and mentors create and manage quizzes for new recruits |
| Student | Grzegorz Kulewski |
| Mentor | Christel Dahlskjaer |
| Abstract | |
|
Gentoo is a huge project with many developers and big and complicated infrastructure. All new developers must know how to inter operate with others without problems and collisions and how to fully use all tools and services before they are accepted and granted access into CVS repository and other parts of infrastructure. To make this even more complicated there are several kinds of developers (...) having access to different infrastructure and needing different knowledge (...) and skills.
Historically all this was checked by quizzes (sets of questions ensuring that recruits read and understood documentation). (...) Everything was coordinated by emails. This process of course does not scale too well. The biggest problem is that quizzes were too static (...). Also questions need to be adjusted as the infrastructure changes. Maybe even the whole process should be centrally managed by this system (...). The equizApp is designed to fix these problems and make everyone's life easier. The most important part of it will be the question and answers database. (...) The second part will be individual quiz generator (...) with some export options for ready quizzes (with answers or without). The third part (optional: if Gentoo Recruiters want it) will allow Recruiters and mentors to fully manage whole quiz process for the given recruit (...). I propose to do equizApp as an application driven by web browser (and possibly some scripts if needed), installed on some Gentoo server, written in PHP (...) or Python (...), using MySQL or PostgreSQL and integrated with Gentoo's LDAP for user authentication. Also I think it is good idea to use some framework to avoid mixing presentation with logic and bloating everything with heaps of (X)HTML code. Of course the requirements and design and especially feedback from Gentoo developers can change these plans. My goal is to keep it as simple as possible (KISS) so everyone will be able to change and adapt it as process it models changes (something that probably slowly happens anyway, as with all real life "business" processes). The most important part is the model of the whole process and workflow and right design that fits it. Then features can be easily added when needed. This way the application can serve well for many years with only minor improvements. |
|
| Title | SCIRE's job subsystem implementation for both the frontend and backend. |
| Student | Rodrigo Eduardo Lazo Paz |
| Mentor | Matt Disney |
| Abstract | |
|
Working with a large network of machines involves, among other tasks,
dealing with jobs in a comprehensive and as-simple-as-possible way. The job subsystem is one of the most complex parts of SCIRE, given that it has to deal with several scenarios that may turn a simple job into very frustrating experience. This SoC project aims at working on this subsystem so it can handle from simple tasks as jobs for a single machine to more complex duties as per-profile recurring jobs with error handling. This will be achieved trying to make client and client-server communication as simple as possible delegating most of the work to the server application. |
|
| Title | Python bindings for Paludis |
| Student | Piotr Jaroszyński |
| Mentor | Saleem Abdulrasool |
| Abstract | |
|
Create Python bindings, associated documentation and test cases for the Paludis public API, and allow subclassing of Paludis classes using Python.
Most current version of my application: http://dev.gentoo.org/~peper/soc/application.txt |
|
| Title | OpenGL support for GGI |
|---|---|
| Student | Raghavendra Narasimhan V |
| Mentor | Christoph Egger |
| Abstract | |
|
The basic operations on visuals, as defined by GGI, are intentionally limited. It's impossible to define an API for all possible graphic features because of the variety of hardware, and the fact that graphic needs are constantly evolving. Such an API would be bloated and quickly obsolete. The GGI answer is to implement only a simple set of universal features, and leave the rest for extensions.
In this project I start with an existing extension framework called libggigl.And extend it with OpenGL API, allowing GGI applications to easily use OpenGL for drawing. |
|
| Title | Improve XGGI by implementing some X extensions. |
| Student | Vikram Kumar |
| Mentor | Christoph Egger |
| Abstract | |
|
We can improve XGGI (the fork of X server which uses GGI at backend)
by implementing various latest developments in X. 1. Available X extensions should use libggi functions for h/w acceleration. 2. Update RandR support. 3. Implement Composite extension. |
|
| Title | Replace most core scripts with C versions. |
|---|---|
| Student | Carlos Rica Espinosa |
| Mentor | Johannes Schindelin |
| Abstract | |
|
The project goal is to replace most git scripts written in shell or perl languages, with a more portable and faster builtin C versions.
Many git commands are currently implemented as scripts, since they are easy to program. In order to run the program in other systems, a Bourne shell and a Perl interpreter need to be properly installed, resulting in a harder development and use on other platforms or systems. Many projects has been converted to builtin code already, and the structure of the code simplifies that task. At present, there are about 10 perl scripts and 32 shell scripts in the Git code implementing essential Git commands, like "git commit", "git merge", "git clone", etc. It has been estimated three days for converting the smaller cases, and a couple of weeks for the larger ones, so most of the scripts would be replaced with this project, allowing easier port of the program to other platforms. |
|
| Title | Evolution Data Server Backend for google calendar |
|---|---|
| Student | Ebby Wiselyn |
| Mentor | Harish Krishnaswamy |
| Abstract | |
|
With Google Calendar, you can create and add your schedules and your family and friend's , add events mentioned in Gmail conversations.You decide who can see your calendar and which details they can view. You can create invitations, send reminders and keep track of RSVPs right inside Google Calendar.
Enabling connectivity to the google calendar from evolution . The Aim is to create a google calendar backend that allows to read and write through the GData Interface.Evolution will have a offline read-only support google calendar , and a online read/write support . The Gdata provides a protocol for reading and writing data on the web. GData uses standard XML-based syndication formats either of Atom or RSS. It also has a feed-publishing system that consists of the Atom publishing protocol plus some extensions (using Atom's standard extension model) for handling queries.Client applications can view and update calendar events in the form of Google data API ('GData') feeds.Evolution can use the Google Calendar data API to create new events, edit or delete existing events, and query for events that match particular criteria. |
|
| Title | GStreamer plugins and extensions for multimedia content creation applications |
| Student | Sebastian Dröge |
| Mentor | Stefan Kost |
| Abstract | |
|
Currently the Gnome desktop is missing some great multimedia content creation applications. Jokosher is already fairly good but apart from that everything else is just in the beginnings.
This project will be mostly audio-oriented and would help Buzztard, Jokosher, Marlin and to some degree Pitivi to become better by providing a foundation in GStreamer. Some starting parts are already there but for example many audio effect plugins are missing and some GStreamer parts, although being there are half-implemented or suboptimal. The goal of this project would be to improve the current situation by providing some more audio effect plugins, finishing some unimplemented GStreamer parts and adding some missing elements. |
|
| Title | Brave New X11 World |
| Student | Pascal Schoenhardt |
| Mentor | Christian Kellner |
| Abstract | |
|
Brave New X11 World
With the changes to the X.org windowing system with version 7.3, a range of new possibilities is available for the Linux desktop platform in regards to input and display configuration. This Summer of Code project aims to take advantage of these changes to significantly enhance the GNOME Capplets for configuring input devices and displays. Upon the completion of this project, GNOME should be able to run entirely on hot-plugged input peripherals, with advanced options such as individual key mappings and settings on each device. GNOME users should also be able to easily detect all attached display devices, configure their resolutions, refresh rates, and relative positions, as well as store these settings in profiles, which can be changed at the press of a button. For a formatted, PDF version of this application, please visit the following URL: http://www.designerglasssigns.com/private/soc/application.pdf |
|
| Title | Extending the lockdown framework in GNOME and making it even more deployment friendly |
| Student | Sayamindu Dasgupta |
| Mentor | Federico Mena-Quintero |
| Abstract | |
|
One of the major features required in any kind of desktop deployment is the support for lockdown, where users are barred from performing certain actions (like, for instance, printing files, or saving files to disk). GNOME already has lockdown support in a few areas (especially the panel and the epiphany web browser). However, the file manager (Nautilus) does not have any kind of lockdown support at all, and good quality documentation and specifications for the lockdown features is also missing.
The proposed project will add lockdown features to Nautilus and to the GTK+ FileChooser (to ensure a consistent user experience, as well as complete implementation of relevant lockdown policies). The lockdown features would cover filesystem access and modification permissions. Moreover as a part of the project, I would implement a mechanism to define items which will be shown on users' desktops, such as links to common web sites, launchers for programs, or links to commonly-used files such as forms or reference material. I would also document how lockdown and preconfiguration work, which can be used as a reference for administrators and deployers. The last, but in no way the least item in the roadmap is a plan to create a spec for the proposed lockdown on Nautilus and the GTK+ filechooser (probably this should go to first :-)). The project will involve modifying various GNOME modules (Nautilus/GTK/GNOME-VFS/GNOME-Panel/GNOME-Desktop/etc), written mostly in C. The relevant GUI tools (Sabayon/Pessulus), which are written in Python will also be extended as and when required. |
|
| Title | PiTiVi, an Open Source Video Editor |
| Student | Brandon J Lewis |
| Mentor | Edward Hervey |
| Abstract | |
|
PiTiVi is an open source, non-linear, non-destructive video editor that shows great promise. While it is currently barely usable, it has the potential to be transformed into a robust, powerful media authoring tool. I want to help 'kickstart' the project by implementing the minimum set of features needed to attract a community of users, and be considered a functional video editor.
PiTiVi is designed to be flexible enough to offer at least two UI views, called 'Timelines'. Currently these are 'Simple', aimed at novice users, and 'Advanced', offering more professional features. Most of the features proposed here would be implemented in the Simple Timeline, and would include: editing and trimming support, project file load/save support, and transitions. Optional goals would include a media capture interface, jog/shuttle support, and contributions to the Advanced Timeline. |
|
| Title | Integrating Epiphany Bookmarks and Browsing History For GNOME-wide Access |
| Student | Imran Patel |
| Mentor | Xan López Saborido |
| Abstract | |
|
Synopsis
Most GNOME users access and discover new information using a web browser. The broad goal of this project is to develop a framework for Epiphany that will enable GNOME users to quickly, easily and accurately recall this information. To that end, this project will focus on three specific goals: 1. Develop a high-level design for unifying the storage, visualization and management of user bookmarks and browsing history. 2. Implement a robust and efficient backend store for bookmarks+history objects on top of an indexing framework like Tracker 3. Integrate the currently separate bookmark and history managers to create an intuitive User Interface (UI) for viewing, searching and managing bookmarks+history. If time permits, an optional goal is to provide a simple high-level wrapper API over Tracker's DBUS API (libtracker) for accessing and querying bookmarks+history from Epiphany extensions and other GNOME applications. Benefits to Epiphany and GNOME Epiphany currently has an excellent topic-based bookmarking system which is the best in terms of ease-of-use among all browsers available for GNOME. By integrating the current system with browsing history, this project will bring several useful and novel features to Epiphany: 1. Quick and easy interface for viewing, searching and bookmarking history items. 2. Powerful free-text search over entire "contents" of bookmarks+history URLs as well as filtering based on metadata attributes such as page visit date. 3. In the long-term, facilitate new Epiphany extensions and GNOME applications for visualizing and organizing bookmarks+history, e.g. Browseback [3] 4. A private trusted system (unlike online systems such as Google search history) that the user can rely on for increasingly common problems (e.g. “Where did I see it before?”) In addition to Epiphany, the GNOME desktop will also benefit immensely from a central object store for boomarks+history. An object store maintained by the browser itself will have more fine-grained and accurate metadata. This could be leveraged by desktop search tools for providing more relevant results. In addition, applications such as Deskbar could easily integrate handlers for bookmark+history search using the Tracker API (or the optional high-level API). |
|
| Title | Creating a new documentation editor for Project Mallard |
| Student | Buddhika Laknath Semage |
| Mentor | Donald Scorgie |
| Abstract | |
|
This project will implement a new document editor for the Project Mallard using Python and XML.
This new document editor is called Foie Gras and will be an asset for doc writers. Foie Gras will effectively hide the XML tags and will give the user the ability to focus more on the documentation task rather than having to divide their attention on both XML and documentation. |
|
| Title | Simple user-to-user file transfer without configuration in a LAN |
| Student | Marco Barisione |
| Mentor | Sjoerd Simons |
| Abstract | |
|
There are many solutions to share one or more files, from setting up a Samba share, to a personal directory in a HTTP or FTP server, they have one big common flaw: they do not “just work”. As a consequence people often use services relying on an external server (such as email and chat), or removable devices. In some cases it is not even reasonable to do server-based communication, as is the case of meshed networks.
Moreover systems like Samba or FTP are useful at home or work when you want to permanently share a folder but often people just want to quickly send a file to some specific person. For that you do not want to first put it in your shared files (making it available to everyone, which you might not want so you need a password on it etc.) and then tell your contact that he/she can find it there. Just right-clicking on a file and using "Send to" (through a nautilus-send-to back-end) to just send this file to that person is a lot nicer. An ideal system should automatically discover other users in the neighborhood, list them and let the user choose who to send files. The system should also work without any configuration, without the need to tell one’s IP address, and without requiring any operation from the administrator, such as setting up a server or configuring a service. I want to develop a program to satisfy those needs enabling users to easily send and share files over a LAN. My plan is to work on the telepathy-salut connection manager adding support for file transfers, on top of that I'm going to write an easy-to-use GTK-based GUI to show available contacts and to initiate and accept file transfers. The GUI should also manage authorizations in a user-friendly way, without bothering the user with technical details about the involved certificates. Recently Xavier Claessens, the author of gossip-telepathy, started to work on grapevine, a modular version of gossip using Nokia's mission control. A good idea would be to work on it adding file transfers capabilities instead of writing a separate GUI, this way other protocols could benefit of my work. |
|
| Title | Changing metacity into a window-and-pointer-manager |
| Student | Paulo Ricardo Zanoni |
| Mentor | Elijah Newren |
| Abstract | |
|
With the recent X Window System changes, a lot of features are being added, and
the whole world will need to adapt to these changes. One of these changes is the addition of multiple-pointer support in X.org 7.4, that will allow a whole new set of applications that were never made before, and will also make multiseat easier. When X.org 7.4 gets released people won't be able to make full use of its new features if there is no window manager that also manages multiple pointers. And to be able to use all of these new features, the window managers will have to be adapted. What I am going to do is to fully integrate metacity with MPX, write a document describing the new features that window managers should implement, and how to do it. The aim of this document is to help developers to implement multiple-pointer support on their own window managers. Also, in the process of adding multiple-pointer support to metacity, problems might be found and there might be the need of new features/protocol calls, so I will be able to detect them and report/correct them before xserver 1.5 is released. By the end of summer we expect to have a window manager that brings the new MPX features and a document that helps everyone integrate their window managers to work with MPX. |
|
| Title | Jokosher VoIP Integration |
| Student | Michael Sheldon |
| Mentor | Benjamin Thorp |
| Abstract | |
|
Podcasters often interview guest via VoIP, some even have their regular presenters communicating via VoIP when physically being in the same room is impossible. In these circumstances it would be useful to have VoIP integrated in to an audio editor, such as Jokosher. This would allow each person participating in the conversation to be recorded as a separate track/instrument, allowing for much easier mixing and editing of the resulting audio.
This would be achieved through use of the Telepathy communications framework, allowing Jokosher to make use of multiple VoIP protocols such as SIP and XMPP (as used by Jabber/Google Talk). I believe this feature would be unique amongst all Free and proprietary audio editors and would be useful to a large number of podcasters. |
|
| Title | gnome-bluetooth and bluez-gnome improvements and unification |
| Student | Tadas Dailyda |
| Mentor | Marcel Holtmann |
| Abstract | |
|
Synopsis
Overall project goal is to improve GNOME Bluetooth stack so that it has more functionality and all the features are easily accessible to user. Current gnome-bluetooth functionality would be made available from Bluetooth applet (BlueZ GNOME applet). Support for OBEX FTP server would be introduced and existing gnome-bluetooth code would be refactored. Gnome-vfs OBEX FTP module would be further improved. Benefits Currently there are at least three separate attempts at making Bluetooth experience in GNOME better: BlueZ GNOME apps, gnome-bluetooth and gnome-vfs-obexftp. This project would unify all of these (both code base and UI) as well as improve overall functionality. Success criteria * gnome-bluetooth code should be refactored to loose libbtctl dependency; * A working OBEX FTP server should be implemented; * All the Bluetooth functionality should be accessible from Bluetooth applet; * All configuration options should be available in Bluetooth manager. |
|
| Title | Enhance Mango to allow self-service of GNOME account data and streamline GNOME account setup |
| Student | Barış Çiçek |
| Mentor | Raphael Slinckx |
| Abstract | |
|
This project aims to automate account management in GNOME infrastructure. Currently a lot of things are handled manually. With this project account team will only trace the work flow of account creation and only do final decision.
|
|
| Title | art.gnome.org 3 |
| Student | Bruno Miguel Fachada dos Santos |
| Mentor | Thomas Wood |
| Abstract | |
|
The project is to develop version 3 of art.gnome.org(AGO).
The main objective of the AGO project is to be an artwork community server at users disposal. As such, Users are the ones who should decide what they want to see. They should have an user-centered experience and feel they are part of the community. Naturally artwork developers should also be encouraged to participate actively with their work. Without them there is no artwork. Thus, users should be able to comment and review developers works and consequently developers must be able to receive such feedback. |
|
| Title | Cross-Application Scripting |
| Student | Ori Bernstein |
| Mentor | Hubert Figuiere |
| Abstract | |
|
Currently, in the Gnome desktop, it is generally impossible to glue together applications in a manner similar to what AppleScript does. There are good examples of scripting within apps (see: Gimp's Script-Fu), but it doesn't allow the easy gluing together of applications, automating workflows such as "Insert data into Gnumeric, Create a chart in Gnumeric, save to file, and convert to EPS for use in LaTeX".
This scripting will be the counterpart, to technologies like Apple's AppleScript and KDE's Dcop, and hopefully will eventually interoperate well with DCop. The idea was inspired by Hubert, in this blog post: http://www.figuiere.net/hub/blog/?2006/04/16/397-desktop-scripting |
|
| Title | VoIP and video call client using Telepathy |
| Student | Elliot Fairweather |
| Mentor | Robert McQueen |
| Abstract | |
|
I should like to put forward a proposal to write a VoIP and video call client for GNOME based upon the Telepathy framework. I am a first year Computer Science undergraduate and have been an enthusiastic user of GNOME since my introduction to Linux four years ago. I have always wanted to contribute to the open-source software community and I believe that I now have the necessary foundation of knowledge and programming ability to do so. I have followed with interest the development of Telepathy and should like to create an application which will allow the GNOME community to benefit from the new opportunities presented by this project.
My application will provide a GTK front-end to Telepathy to allow audio and video calling via the XMPP protocol. I will create the client's UI by constructing new GTK widgets that will form part of the Grapevine project. Grapevine aims to gather together both Telepathy back-end functionality and UI components from which current and future GNOME applications may be developed. As well as being a showcase for the power of Telepathy, I hope that this client will be act as a proof of concept for these widgets by demonstrating how Telepathy may be fully integrated into the GNOME desktop through Grapevine. A simple interface for the setup and troubleshooting of both webcams and microphones will also be included. To get involved with two such great projects as GNOME and Telepathy would be most exciting for me. I think that such a project would be invaluable to me in my education as a programmer and that GNOME would be even greater by the inclusion of an application such that I have proposed. |
|
| Title | Gnome Scan NG |
| Student | Étienne Bersac |
| Mentor | Vincent Untz |
| Abstract | |
|
Gnome Scan aim to make scan as simple as print for both users and developers. Gnome Scan was started during the Google Summer of Code 2006. The project continued his development, including moving to Gnome SVN, distributing in Ubuntu/universe, translating in several languages.
However, Gnome Scan shows its structural limits : * Hard coded very limited processing (only rotation was implemented) * Hard coded scan option set (resolution, area, …) * Hard coded UI. The dialog wasn't build depending on device * No scan from file (useful for importing PDF with one image per page). * Some duplicated code * Quite buggy SANE handling. Also, since the beginning of Gnome Scan development, some other technologies have evolved : * HAL is receiving SANE support. SANE provide HAL fdi (in CVS) and HAL addon for monitoring buttons. * Gegl implement very nice and efficient processing pipline. Waiting for Gnome SVN account, i redesigned Gnome Scan in order to fil the lakes and take advantage over new technologies. This summer, i will implement Gnome Scan ng specification. |
|
| Title | WYSIWYG Documentation Editor for GNOME (Foie Gras) |
| Student | Szilveszter Farkas |
| Mentor | Shaun McCance |
| Abstract | |
|
SUMMARY
------- The GNOME documentation system is under reconstruction (Project Mallard). As part of this, there is need for a WYSIWYG editor that lets anyone (both authors and contributors) to create and modify documentations easily (codename: Foie Gras). |
|
| Title | Face detection and tagging feature for F-Spot |
| Student | Andrzej Wytyczak-Partyka |
| Mentor | Lawrence Ewing |
| Abstract | |
|
Within this project I would create a module for F-Spot that would make face detection on the pictures, and tagging of the detected faces possible. It would also give grounds to a future, automated system (developed after the SoC), which would give a new level of photo organization. Faces could be automatically recognized and sophisticated queries could be performed (i.e. integration with Beagle).
The following link contains the full proposal : http://facedetect-f-spot.googlecode.com/files/fspot-proposal.pdf |
|
| Title | Voice recognition applet to control desktop |
| Student | Raphael Nunes da Motta |
| Mentor | Nickolay Shmyrev |
| Abstract | |
|
The idea is to develop some features that will improve the usability in the Gnome Desktop. The goal is to implement a Desktop Voice Control System. The system consists in an application that will be monitoring the audio input( microphone ) and when a significant audio signal has been detected, the software catches, processes and recognizes the signal and then executes the desired action over the Gnome Desktop. In a set of actions could include maximize, minimize, close the active window; open a specific program; switching from one desktop to another; among others. The software will be implemented in C language in conjunction with CMU Sphinx, which is an open source tool, created to recognize and decode audio files in word list files. The software will be developed as a Gnome applet.
The original proposal is available here: http://live.gnome.org/SummerOfCode2007/Ideas |
|
| Title | Delimited File Importer |
|---|---|
| Student | Benjamin Leonard Sperisen |
| Mentor | Joshua Sled |
| Abstract | |
|
Some people already track the status of their finances with spreadsheets. They might, for example, keep a record of all withdrawals and deposits from a bank account in a spreadsheet and use the sum feature of their spreadsheet application to keep track of the balance. Such users may wish to migrate their data to GnuCash but would find the task of manually copying all of these entries into GnuCash daunting.
Virtually all spreadsheet applications can export to CSV format. Therefore, I propose the development of a dialog for GnuCash to import spreadsheets in the form of delimited files. The dialog will accommodate various forms of delimited files by allowing the user to specify the meaning and order of the columns in the file, the column delimiter, and the character encoding. It will attempt to be as transparent as possible by showing the user the consequences of each configuration change instantly. To minimize the work the user has to do, a guess at the file's format will be made in the hope of providing reasonable default settings. When the user is satisfied with the configuration, the user will click a button and the transaction data will appear in the user's account. |
|
| Title | Dogtail UI Test Harness |
| Student | Ahmed Sayed Hassan |
| Mentor | Joshua Sled |
| Abstract | |
|
The Aim of this project is to build automated Gui test suite for GnuCash, using dogtail, my proposal is not only building this test suite but also to make it an environment that make it easy to create, maintain, understand GnuCash test cases, and considering all precaution that should be considered for this type of projects, consider the best practice in those systems, The Test suite will also monitor the quality of the application, by monitoring e.g.the response time of the dialogs.
|
|
| Title | GRUB2 CD-ROM Boot Support |
|---|---|
| Student | Alexandru Roman |
| Mentor | Jeroen Dekkers |
| Abstract | |
|
The aim of this project is to implement CD-ROM booting support in GRUB2. First, an INT13 calls driver will be implemented to provide access to the boot image. This has the drawback that it relies on a relatively new compliant BIOS (some BIOSes are buggy). Second, a full ATAPI driver will be implemented to do the same function, hopefully on any setup (including older and buggy BIOSes).
|
|
| Title | User defined out of date decission for GNU make and persistent variables. |
| Student | Ramon Garcia Fernandez |
| Mentor | Paul Smith |
| Abstract | |
|
The purpose of this project is to extend GNU Make with user defined method for deciding when a target is out of date. Persistent will be also added because it is necessary to make this useful, for example, for using MD5 sums for checking if a source was modified since last compilation.
|
|
| Title | Mailutils: Add TLS capability to IMAP and POP client code. |
| Student | Wojciech Polak |
| Mentor | Sergey Poznyakoff |
| Abstract | |
|
I propose to develop GNU Mailutils[1] TLS encryption (Transport Layer Security) to all client-side code, particularly to 'mail' utility (IMAP and POP client) and Sieve filter. Client-side encryption will secure fetching/sending of e-mails from/to remote connections and will allow to use mail services which don't work without encryption (like Gmail for instance). I have already implemented TLS to the server-side code (pop3d and imap4d), which is now part of the Mailutils framework, as well as I did some other miscellaneous contributions. My work will be based on using GnuTLS library[2] as the encryption backend. GnuTLS is part of the GNU project.
References: [1] http://www.gnu.org/software/mailutils/ [2] http://www.gnu.org/software/gnutls/ |
|
| Title | Gnome/GStreamer Desktop sound integration for Java |
| Student | Mario Torre |
| Mentor | Mark J. Wielaard |
| Abstract | |
|
In the last years, Java has seen various efforts in the direction of Desktop integration, but the various implementations still lack important functionalities, and this is especially true on GNU/Linux and the other FLOSS systems, though luckily GNU Classpath is pioneering in this area, paying already a particular attention to the Desktop integration.
One of the area still uncovered by this integration is that of the sound editing/streaming. Many solution exist for native applications, but they are not accessible to java programs and in a standard way, and this lead to poor performance, duplication of code and an overall bad user experience, GStreamer is a versatile framework for creating streaming media applications, and is the default framework used by the Gnome Desktop Environment and by most distributions; javax.sound, aka Java(TM) Sound API, is a low-level API for controlling Input and Output of sound media and is the standard API for use by all the Java applications. GStreamer is so widespread as default and provide most of the functionality that the Java Sound API requires, that makes sense to implement javax.sound peer classes that natively use GStreamer as a backend for data transport and audio format handling, enabling so Java desktop application the access to Formatted Audio data and sound pipeline creation directly via Gstreamer. Part of the Goal is also to develop simple applications and Mauve Test classes, to show the validity of the project and the final results. |
|
| Title | GNU Hurd libchannel |
| Student | Fredrik Hammar |
| Mentor | Richard Braun |
| Abstract | |
|
The GNU Hurd needs a library that abstracts the idea of a character
device to ease the clean and efficient implementation of their corresponding translators. It has been recognized as needed for a long time and some tasks have been stalled because of it's lack. Not only could such a library enable quicker and cleaner implementation of many translators that directly corresponds to kernel implemented devices, such as keyboards and mice. It would also allow this for character devices that are layered on top of other devices. The goal of this project is to design, implement and document this library, which will be called `libchannel'. |
|
| Title | Generics support in Portable.NET |
| Student | Ivan de Jesus Deras Tabora |
| Mentor | Klaus Treichel |
| Abstract | |
|
The basic idea of this project is to extend Portable.NET to support generics in the C# compiler and the Portable.NET Virtual Machine based on the ECMA standard 334 and 335.
|
|
| Title | Graphical navigation/representation of knowledge base; and interfacing with other knowledge systems. |
| Student | Rakesh Pandit |
| Mentor | Nagarjuna Gadiraju |
| Abstract | |
|
My proposal is aimed at providing two functionalities to GNOWSYS. First
is to provide a model which can be used by a Web browser, Gnowser or an application to make concept maps of the knowledge base stored by GNOWSYS. Second is to provide a single unified framework for importing and exporting the knowledge base and its organization in RDF, OWL, XTM, CL, KIF, LISP, Prolog, CNL and other such languages for seamless interoperability. |
|
| Title | SyncML interface for phpGroupWare |
| Student | Johan Gunnarsson |
| Mentor | Dave Hall |
| Abstract | |
|
My idea is to design and implement a synchronization interface for the phpGroupWare project. External devices such as cell phones and PDAs will be able to keep a synchronized copy of parts of their phpGroupWare data, for example your calendar.
|
|
| Title | Key Value Observing and Bindings implementation |
|---|---|
| Student | Christopher Farber |
| Mentor | Nicola Pero |
| Abstract | |
|
I would like to finish GNUstep's Key Value Observing implementation and implement bindings. I am interested in this because KVO and bindings would lead to faster, easier application development, cleaner code, and bring GNUstep closer to compiling the majority of Cocoa code without modification.
Key Value Observing is necessary to implement bindings, and would increase the flexibility of GNUstep's KeyValueCoding implementation. Bindings support would eliminate the need for most outlets and controller code that deals with updating the status and value of UI controls while reinforcing the separation between Controller and View in the Model-View-Controller design pattern. As most modern Mac OS X applications take full advantage of KVO and Bindings, a GNUstep implementation would be a huge step toward source-level compatibility with Mac OS X. My work would include creating the NSController, NSArrayController, NSObjectController, and NSValueTransformer classes and adding bindings support for existing classes, for example NSTextField, NSPopUpButton, and NSProgressIndicator. |
|
| Title | Improving GNUstep AppKit components and the Text System |
| Student | Christopher Elsmore |
| Mentor | David Chisnall |
| Abstract | |
|
Improving the GNUStep AppKit components will help to develop GNUstep and increase compatibilty with Cocoa.
I shall be Implementing a modified NSBitmapImageRep class to write GIF, JPEG, PNG & PNM files. I shall also be producing implementations of NSDatePicker, NSLevelIndicator and NSCell classes. However the main body of the project shall be focused on examining, finishing, rewriting and generally cleaning up the whole Text System, and profiling it. This will benifit GNUstep by having more features in the framework, as well as a clean Text System, suitable for testing. |
|
| Title | Sockets for Google Web Toolkit |
|---|---|
| Student | Aleksey Lagoshin |
| Mentor | Dan Morrill |
| Abstract | |
|
During application development, fairly often appears a nessesity in sockets use. Applications written using
Google Web Toolkit aren’t the exception. Unfortunately, most of browsers are devoid of possibility to connect with other computers by means of sockets. So when such necessity appears, developers have to write a server-side implementation (Java Servlets, PHP, ASP.NET or something else), which could realize connection with other computers by sockets and transfer received data to a browser, using, for example, AJAX. Unfortunately, such solution has it’s own disadvantages because of the server-side can’t notify the browser of data receiving. Standard and somewhat slow decision: a browser is querying new data every n seconds. Also more interesting solutions exist, such as Comet and Continuation, but they also have some disadvantages. But the main shortcoming in such realization of socket support for browsers is the necessity to write a server-side, which will essentially load a server while numerous users use it. I suggest to realize socket support in Google Web Toolkit on a browser level using GWT Socket module. There are some means to realize it: 1. Java Applets 2. Macromedia Flash 3. XPCOM (Only for Firefox) 4. ActiveX (Only for Internet Explorer) Solution based on Java Applets. - Needs Java virtual machine and Java Plugin. - Could run on any platform in any browser supporting Google Web Toolkit. - It is possible to use wide Java capability. - Includes writing small Java Applet, which will fulfil connection by means of sockets. - Applet is easy enough to realize. Solution based on Macromedia Flash. - Needs installed Macromedia Flash plug-in in client's browser. - Could run on any platform in any browser supporting Google Web Toolkit. - It is necessary to write LiveScript code, which will fulfil connection by means of sockets. Solution based on XPCOM. - Doesn't need any additional plug-ins. - Could run in FireFox browser only. - Demands knowledge of XPCOM. Solution based on ActiveX. - Needs an ActiveX component, which will fulfil connection by means of sockets. - Could run in Internet Explorer only. - Demands knowledges in ActiveX component writing. Taking to account that Java and/or Flash are installed by almost every user, Socket module will include both these solutions. The module will be flexible enough in order to the developers’ possibility of adding solutions based on XPCOM and ActiveX, in case of need if necessary. The module will consist of Flash and Java applets, corresponding communication between applet and GWT, and clean enough interface for developers. Sockets module will essentially facilitate GWT based application development, which need a possibility to work with sockets. |
|
| Title | phpAspect eclipse plugin |
| Student | WIlliam Candillon |
| Mentor | Vanwormhoudt |
| Abstract | |
|
phpAspect is a PHP language extension to implement Aspect-Oriented Programming (phpaspect.org).
The goal of this project is to write a phpAspect plugin for eclipse in order to make people able to use phpAspect easily in their projects. This plugin will have the following features: * Support of phpAspect syntax * Embedding phpAspect * The vizualisation of cross references. * The vizualisation of advices into the business logic. * The vizualisation of code refactoring effects in the functioning of aspects. |
|
| Title | GWT for Gadgets/Widgets |
| Student | Tomasz N. Kolodziejczyk |
| Mentor | Kelly Norton |
| Abstract | |
|
Google's web toolkit is a great tool for writing large web applications that depend heavily on javascript, and since the primary functionality for gadgets is written in javascript it seems reasonable to use GWT to write gadgets. For my summer of code project I would like to extend GWT to make the process of writing gadgets in it less of a challenge. I would like to add functionality to ease the process of writing gadgets for multiple frameworks by allowing writers to focus on functionality rather then implementation.
|
|
| Title | Java API Compatibility Validator |
| Student | Aleksandar Pantaleev |
| Mentor | Miguel Mendez |
| Abstract | |
|
It is my understanding that the Google Web Toolkit would be much benefited by having a tool that "could examine two versions of a set of Java classes and report on interface changes that affect user code," as per http://code.google.com/p/google-web-toolkit/wiki/GWT_GSoC . I propose to complete such a tool within the timeframe of Google's Summer of Code 2007.
As a Ph.D. student in Software Engineering / Software Analysis and Understanding, I have ample experience with various algorithms and data structures relevant to analyzing object-oriented source code and runtime behavior. What is more, Java has been my first language of choice for implementing analysis tools, which is directly pertinent to the needs of the Google Web Toolkit. I am slightly puzzled by the suggestion to use Java reflection to solve the problem, as that is sub-optimal in my opinion, and in fact is a step that can be skipped. A better solution would be to employ direct comparison of the Abstract Syntax Trees (AST) of the two versions of Java classes, and report the corresponding differences. I propose to develop a tool that will: - Build the Abstract Syntax Trees of the Java classes in question. - Compare pairs of Abstract Syntax Trees to encounter any changes between two versions of a set of Java classes. - Report the identified differences in a concise structure that can be either examined by a human, or passed on to automated tools. Further capabilities can be included in the tool as suggested by mentors and as time permits. |
|
| Title | Network stack revamp: IPv6, ICMP, multicast, etc. |
|---|---|
| Student | Hugo Santos |
| Mentor | Axel Dörfler |
| Abstract | |
|
In today's world, where almost every bit of information is available online, where people communicate via the Internet and develop open-source projects in Internet communities, a stable and feature rich network stack is absolutely required. One, that besides supporting current technology, is able to adapt to future trends, including security and mobility. We want to provide the best experience to users, and within the open-source spirit by being connected allow them to be an integral part of new developments as well.
Haiku's current network stack, which is implemented in C++, is presently giving it's first steps. Some initial IPv4 support has been implemented, as well as some UDP and TCP. Although this initial code has been enough to complete some basic operations, some standard support is still missing. A few additional features could also be added to allow a richer experience, specially considering a future of mobile IP hosts communicating securely. Some of the crucial points to be dealt with presently, identified by both the development community and the author, include: * IPv6 support -- Although IPv4 is still the de facto Internet protocol, both enterprises and education networks are starting to migrate to this new Internet Protocol which introduces a larger address space, mandatory multicast and security (IPSec) and end-to-end mobility. * ICMPv4 and ICMPv6 support -- a host should both have a proper behavior in IP networks, generating errors whenever required, and be able to optimize it's communication by discovering the MTU between hosts, etc. * Multicast support -- IP multicast has a wide range of uses, from allowing applications to deliver their content to a large set of receivers with minimal effort and excellent scalability; to allowing new kinds of auto-configuration and discoverable services to be implemented, such as ZeroConf. * Stacked destinations / end-points -- to allow the usage of transparent security (IPSec) and mobility (Mobile IP). |
|
| Title | Create a thread scheduler with CPU affinity |
| Student | André Braga |
| Mentor | Axel Dörfler |
| Abstract | |
|
For this GSoC application, I intend to finish the design and implementation of an O(1) scheduler originally written as an Operating Systems class assignment. The approach used to select threads is pretty different from existing O(1) algoritms, and it has shown very promising results compared to existing O(n) algorithms and scheduling policies (as expected). Comparison with existing O(1) implementations is on the TODO list.
The design and implementation must be finished to take into account thread blocking, real time constraints and CPU affinity, and of course it must be benchmarked against the current O(n) Haiku scheduler and, preferably, also against other existing O(1) implementations, for example the one found in the 2.6 Linux kernel series and also the ULE and CORE series of FreeBSD schedulers. |
|
| Title | USB isochronous streams |
| Student | Salvatore Benedetto |
| Mentor | Oliver Ruiz Dorantes |
| Abstract | |
|
Isochronous stream is one of the 4 USB transfer type that is missing from Haiku. Devices like webcams or usb audio cards are based on this transfer type, and therefore it is not possible at the present time to use those type of devices.
Implementing it would increase the number of devices supported on Haiku. |
|
| Title | FireWire stack for Haiku |
| Student | JiSheng Zhang |
| Mentor | Jerome Duval |
| Abstract | |
|
IEEE1394(FireWire) is high speed, low cost Serial Bus suitable for use as a peripheral bus. Current Haiku operating system lack of support to FireWire. My work is porting FreeBSD FireWire stack with mass storage and DV support to Haiku. My work will focus on the following tasks:
1.Transaction layer driver. Asynchronous and isochoronous transmission support. Protocol standard: IEEE1394-1995 and IEEE1394a-2000 2.Link layer especially OHCI driver. Protocol standard:Open Host Controller Interface v1.1 3.Add support for DV cameras. Protocol standard:IEC61883 and SBP2 |
|
| Title | Package (.pkg) installer for the Haiku Operating System |
| Student | Łukasz Zemczak |
| Mentor | Ryan Leavengood |
| Abstract | |
|
The Haiku Operating System finally reached the point where binary compatibility with BeOS is no more much of a problem. The only obstacle left for the user to enjoy the goodness of this very important feature is the .pkg package format. Many applications made for the BeOS platform use and prefer this type of data storage. At this stage of development, the existence of a .pkg compatible package installer would be a powerful addition to the system.
PackageInstall will be a simple .pkg package installer. It will be mostly based on the BeOS default pkg installer, offering a user friendly, lightweight interface. It will be written in C++, using the Haiku API. |
|
| Title | Implement a precache algorithm along with aging policy for the file system caches |
| Student | Krishna Kishore Annapureddy |
| Mentor | François Revol |
| Abstract | |
|
Precaching is an important feature for filesystem caches. The performance of the applications at the user-end can significantly increase with proper precaching module in place. Haiku file cache has an API for precaching. But the current launch_speedup module is very basic and simple. No precaching is implemented. I propose to implement the precaching algorithm for launch_speedup module.
In Haiku the dirty blocks remain in VM until there is an explicit call to 'sync' system call. This might result in data loss because of power outages or sudden system crashes. In the light of the above issue I also propose to implement aging policy of the file system caches. |
|
| Title | Finishing linux 2.6 for h5000 devices |
|---|---|
| Student | Milan Plžík |
| Mentor | Anton Vorontsov Vladimirovich |
| Abstract | |
|
HP iPAQ h5000 series are older, but not rare devices, which are, except for their native operating system, capable of running linux. They are working very well when it comes to linux 2.4 kernels. But these kernels are already slightly older and more recent software doesn't seem to run without required modifications with them, e.g Hardware Abstraction Layer requiring sysfs will not run correctly without some sort of emulation layer.
There is also linux 2.6 kernel running on these devices, but there are still some things missing to make these devices ready for production use. Aim of this project is to complete 2.6 kernel support, ideally to A+ support according to handhelds.org evaluation. This includes support for virtually any device available on h5550 device, which is almost superset of hardware found in these devices. If there will be enough time, sleeve support could also be on plan, eventually even accelerated driver for mq1132 graphics chip. |
|
| Title | Darcs Conflict Handling |
|---|---|
| Student | Jason Dagit |
| Mentor | David Roundy |
| Abstract | |
|
The goal of this proposal is to redesign the way Darcs handles conflicts and automatic merging to solve the current practical and theoretical problems with conflicts. Informally a conflict happens when two patches cannot be automatically merged into one repository.
Darcs suffers from several flaws in the way it handles conflicts between patches. Improper conflict handling in Darcs results in problems such as exponential time required to merge changes or failure with an error message. When this happens the user is left to manually merge and patch their repository which frustrates users and defeats the purpose of version control tools. The problems with conflict handling were believed to be rare but large projects such as GHC have shown that conflicts are more common in practice than originally believed. It is commonly believed that improper conflict handling is the biggest flaw of Darcs and must be fixed as soon as possible so that Darcs may reach its potential. By using a graph structure to store the relationships between conflicting patches, less re-computation will be involved in each merge and the decisions the user has made in the past about previous conflicts may also be stored. Storing this data will allow Darcs to handle future conflicts efficiently and correctly. An important goal of this work is to maintain the current level of abstraction for the user. The user should be able to continue working with repositories as sets of changes. The modifications to the user interface should be minimal while the changes to the user experience should be great. |
|
| Title | Rewrite the typechecker for YHC and nhc98 |
| Student | Mathieu Boespflug |
| Mentor | Malcolm Wallace |
| Abstract | |
|
I propose to reimplement the type checker used in both the nhc98 and
YHC compilers, using Constraint Handling Rules (CHR) and based on work in the Chameleon project. * Motivation The current typechecker used in both compilers seems to be largely unmaintained, is difficult to understand and extend, and is occasionally wrong. Many common type system extensions to Haskell 98 remain unsupported. In light of the upcoming Haskell' report that is likely to extend the type system in a number of ways (eg MPTC+FD, rank N types [1]), it is becoming increasingly important to the maintainers that the capabilities of the type system remain up to date, and to provide a simple and easily extendable platform for further research and experimentation with type systems. From a larger perspective, it is important for the good health of Haskell as a language that we maintain a certain amount of variety in implementations and offer viable alternatives to GHC. The goals for the type checker are: 1. To be simple and easy to understand 2. Easy to extend 3. Provide good error messages. |
|
| Title | Generalizing Parsec to ParsecT and arbitrary input (ByteStrings) |
| Student | Paolo Martini |
| Mentor | Philippa Jane Cowderoy |
| Abstract | |
|
Generalizing the Parsec interface with a monad transformer for ease of use
for the programmer, and get the best out of the new fast ByteString IO layer. |
|
| Title | Shared Libraries for GHC |
| Student | Clemens Fruhwirth |
| Mentor | Simon Marlow |
| Abstract | |
|
The Glasgow Haskell Compiler (GHC) links the executables it produces statically to Haskell packages. This not only wastes disk space but also leads to an increased loading time for the program itself and GHC Interactive.
This application is about making GHC able to link to shared libraries of Haskell packages, reducing disk usage and loading time. Shared libraries are also shared in memory by Linux, hence the effective memory usage of a set of concurrently running Haskell programs is reduced. Requirements for shared libraries in GHC: 1. Build object code as relocatable PIC code. 2. Link PIC object into shared libraries. 3. Patch GHC to make use of this shared libraries when producing exectuables. |
|
| Title | Extending GuiHaskell: An IDE for Haskell Hackers |
| Student | Asumu Takikawa |
| Mentor | Neil David Mitchell |
| Abstract | |
|
--Introduction--
The success and penetration of a programming language or platform often hinges on the tools that are available for use with that language. For example, a widely cited reason for the popularity of Microsoft's .NET platform is because of the ease of use offered by the VisualStudio IDE. Even more obscure languages have benefited from a robust tool-set. Scheme, a language noted for its use in education, has Dr. Scheme[1], an IDE developed and used with the How to Design Programs textbook. Haskell itself has likely observed a boost in popularity with Darcs, a flagship product of the community that is used throughout Haskell development now. Given this, I propose to further develop GuiHaskell[2], an existing effort to develop a useful Haskell IDE. --Status-- At the moment, GuiHaskell is capable of running a Hugs and GHCI environment inside of it. However, one cannot switch between the two without editing the source and re-compiling. Most of the toolbar buttons are also non-functional. I propose to add the following capabilities within the three month allocation: * Capability of running main Haskell implementations, e.g. Hugs, GHCI, Yhc, nhc, Jhc, etc. * Functioning toolbars and menus. * Create a framework for linking the application with existing Haskell tools, e.g. debuggers, profilers, etc. The following features will be looked into and worked on if there is additional time (I estimate that there will be): * Profiling. * Cabal integration for building and installing packages. * Hoogle support. * Support for a debugger. * Syntax highlighting. * Simple editor integration: open up an editor separately and jump to the appropriate line on an error in the REPL. Hyperlink to the editor instead of embedding it. * Editor embedding: external editors can be integrated into the application using GTK's Plug and Socket widgets (see PIDA[3] for example). This would allow the use of vim and possibly emacs within the IDE (a desirable feature because it would decrease the learning curve for users of those editors). * Editor-pane and REPL-pane: DrScheme uses an interface where the main pane contains a standard editor that can save and open files and a secondary pane contains the REPL. When the evaluator is run, the file opened in the main pane is run and any functions or variables defined can be used from the REPL. This design would fit the Haskell development cycle as well. Here I will list some additional niceties that could be added to the project after the summer of code: * User's manual and in-depth documentation of features. * Expand IDE to include advanced features such as class/type browser panes and project management like other full-featured IDEs (e.g. Eclipse, VisualStudio, etc.) --Preliminary timeline-- Planning: Decide whether to extend PropLang, re-write using Gtk2Hs, or extend using Gtk2Hs. (I have taken the third approach in initial patches because it is easiest for now) Week 1-2: Support for adding multiple Haskell environment and the capability of switching between them. Week 3-4: Get menus and toolbars functioning to the level of WinHugs at least. Week 5: Investigate how to integrate external tools into the IDE. It may be helpful to look at the approaches of other IDEs (e.g. PIDA, Eclipse, etc.) as well. Week 6: Work on integrating cabal tools. Week 7: Work on integrating profiling tools. Week 8: Additional time for integrating cabal/profiling. Start on hoogle integration or syntax highlighting. Weeks 9 and beyond: Add additional features (e.g. editors, debugger, etc.) and streamline the existing ones (e.g. one-click operation). |
|
| Title | VideoIO |
|---|---|
| Student | Thomas Holzmann |
| Mentor | IOhannes m zmölnig |
| Abstract | |
|
VideoIO Framework for GEM
This framework should be implemented via a plugin architecture (the various i/o modules are to be loaded at runtime). It will be made available on all major platforms that are supported by pure-data: linux, os-x and windows. The following points should be realized: * read/write video from/to firewire * read/write from/to files with various de/coding libraries * evaluation of libraries and desicion which one will be used (quicktime, directshow, libxine, mplayer, aalib,...) * implementing Video4Linux Loopback Device |
|
| Title | latex plugin input/output for ikiwiki |
|---|---|
| Student | Patrick Winnertz |
| Mentor | Joey Hess |
| Abstract | |
|
I would like to write the latex plugin for ikiwiki, since I have to use latex very often for university (I use it to wrote my summaries).
Nice features would be: - add support for exporting the page to pdf via latex (or to native tex files) - add support to upload latex code which is then displayed on the side (good for chemistry & mathematics) (as img or html, I have to look what is better) Problems I see: - if people use packages which are not on the server (some chemistry packages are not yet available in debian/other distris) |
|
| Title | Wiki WYSIWYG Editor |
| Student | Taylor Killian |
| Mentor | Joey Hess |
| Abstract | |
|
The Wikiwyg editor will be integrated into ikiwiki allowing users to edit pages with the click of a button. It will allow them to edit wiki pages just like they were using a word processor.
|
|
| Title | Creating a gallery of a bunch of images |
| Student | Arpit Jain |
| Mentor | Alexander Wirt |
| Abstract | |
|
In wiki pages you are allowed to edit text and save it but nowhere it is allowed to add images and also display some of their information automatically. Ikiwiki has done some work in this area but it has huge scope for improvements. It will be very useful for users to be able to add or edit their images, comments etc:- with the same ease and efficiency as is done for text in a wiki.
I plan to implement automatic extraction and displaying of information like resolution, exif metadata in ikiwiki. I will also add functionality to create thumbnails, allow commenting using AJAX, rating and embeding watermark. Some Javascripts will be used to enhance the image browsing features in ikiwiki. There would no longer be need of a completely different site for uploading images like flickr. You can have your text documents and images at the same place in ikiwiki. Contact: http://www.arpitjain.com |
|
| Title | Text Improvements |
|---|---|
| Student | Gail Carmichael |
| Mentor | Richard Hughes |
| Abstract | |
|
My proposal contains various tasks that would enhance the user's experience of Inkscape's text tool, including addressing issues with font family variants, implementing advanced character insertion, legalizing flowed text, improving character and paragraph styles, and redesigning text user interface elements. A subset of these tasks will be completed at the discretion of the mentor, on a priority-per-item basis.
|
|
| Title | Live path effects in Inkscape |
| Student | Johan Engelen |
| Mentor | Aaron Spike |
| Abstract | |
|
At the moment, effects on paths are possible through the use of external extensions. These extensions are not 'live' in the sense that they are not interactive: if a modification to the effect is required, one has to recreate the situation before the effect was applied and run the extension again. Live path effects will make many of these extensions interactive and live on-canvas. For example the path along path effect will hugely benefit.
Within this project, the underlying infrastructure will be created as well as a common framework and a couple of effects, including a basic UI to apply these new live effects. |
|
| Title | 3D box tool for Inkscape |
| Student | Maximilian Albert |
| Mentor | bulia byak |
| Abstract | |
|
Even in the framework of 2-dimensional vector graphics and illustrating, it is often desirable to edit objects 'in a 3D fashion', for example when drawing perspective representations of 3-dimensional scenes (as technical illustrators would want to do), but also in a lot of situations when creating 'pure' artwork.
The proposed 3D tool will render this possible in Inkscape in a very intuitive and flexible way, by allowing the user to draw 3D boxes with arbitrary perspectives, freely move the vanishing points/perspective lines, move the boxes 'towards a vanishing point' (preserving the perspective), possibly rotate them 'in 3D', and many more things. Once this basic tool is available, its functionality can be used to implement a wide range of further enhancements with regard to 3D aspects (like extruding objects, drawing on inclined planes, etc.). See the accompanying web page http://www.rzuser.uni-heidelberg.de/~malbert for details. |
|
| Title | UI for SVG Filter Effects |
| Student | Nicholas Bishop |
| Mentor | MenTaLguY |
| Abstract | |
|
This goal for this project is to design and implement a complete user interface for SVG filter effects.
|
|
| Title | Raster Functionality in Inkscape |
| Student | Christopher Brown |
| Mentor | Theodore J. Gould |
| Abstract | |
|
Inkscape was built purely as a vector editor – a GUI, you might say, for SVG. But the need has arisen for raster capabilities within the Inkscape application. Previous to this capability, the user would have to perform such raster post-production in a different application, such as the GIMP or Photoshop. Often this may not be anything more complicated than a punch/explosion effect or a windswept filter. This can be accomplished by integrating these effects, especially those provided by ImageMagick, directly into the Inkscape interface. The results will not be SVG, unfortunately, but they will be bitmaps, as the user desires.
Mentor: Ted Gould |
|
| Title | Network Diagnostic Tool Enhancements |
|---|---|
| Student | Jakub Sławiński |
| Mentor | Richard Carlson |
| Abstract | |
|
I want to enhance the Network Diagnostic Tool (NDT) in several
directions. First of all, I want to design, test and implement the new detection algorithms awaited by the community. This include new duplex-mismatch detection algorithm and new congestion detection algorithms. I am going to create the semi-automated testing system to check new proposals. I will prepare the detailed reports from the testing phase and choose the best set of new algorithms for the integration with the NDT sources. The second area of development will be connected with improvement of the logging system. I will further modularize the logging system and create the possibility to use different logging front-ends. This include the databases and network-based protocols. Moreover, I will create the enhanced post-processing tool to allow administrators easily review the historical test results. I think this new tool should be written in Java using SWING to create the GUI. However, I'm opened for the possibility to write only text-mode post-processing tool. The third thing I would like to be done during the summer is the Microsoft Windows port of the web100clt. I know, that some administrators use this console tool for the scripting purposes. However, The I2util library used by the NDT cannot be compiled under the cygwin development environment. So the only options is to use different cross-compilation method, or modify the I2util problematic parts (IPv6 support). |
|
| Title | Chrolog Application(second try) |
| Student | Horia Vlad Balan |
| Mentor | Aaron Brown |
| Abstract | |
|
I would like to apply for the Chrolog project with Internet2. I intend to use my previous experience with TSC timers and clock synchronization in LANs in order to develop a user-space solution for obtaining fast, accurate timestamps within a known error budget. I would also like to improve the methods used in maintaining an accurate system time.
Note: This is my second version of the application, modified after receiving feedback. |
|
| Title | Defining network metrics on a qualitive perspective |
| Student | Fausto Vetter |
| Mentor | Jason Zurawski |
| Abstract | |
|
Network performance measurement in high speed networks is highly important once problems to users are alike to occur. It happens mainly because the expectations of the users are defined based on quality factors and network is measured based on quantifiable variables. This fact tends to difficult the way that the network performance is showed to the user of interest. Normally user is worried if he or she can download a file in a good quality or can understand a voice conference he or she is having with another user. The users expect to have the similar perceptions of the network when they are downloading a large size file or when they are using the Internet for multimedia communication, like voice, video or both together. They care about having similar quality they are used to consume on these kinds of services not served by data networks, like the quality of phone services served by the Public Service Telephony Networks (PSTNs) or the quality received on the television systems. The users are expecting to know if there is quality to run the application they want to run and not really if the network is having some specific delay or packet loss.
The problem for Network Operation Center (NOCs) operators is to discover which factors for each kind of traffic affects the quality perceptions of the user. The question is how to represent these variables in an easy way and in quality perception so NOC operators may easily act upon a problem and present to the user if the quality of the network is good for defined kinds of applications. Measuring metrics in an ad hoc mode is worthless. Alone, the network metrics represent only a big amount of numbers with no sense and no qualitative information interesting to end user may be obtained from them. These metrics need to be contextualized to the pattern of traffic they are meant. Using some kind of baseline technique, it is needed to create a pattern behavior of the metric on normal condition to be able to NOC operator to observe ranges of quality in these quantifiable variables. After this, the traffic should be qualified in ranges that will permit a NOC operator to inform the quality of that kind of traffic. Then, metrics may be correlated to observe how one metric influence others. |
|
| Title | JMX Implementation |
|---|---|
| Student | Andrew John Hughes |
| Mentor | Peter Donald |
| Abstract | |
|
The Java Standard Edition class library[1] for Jikes RVM is provided by the GNU Classpath project, which focuses on the creation of a Free Software[2] clean room implementation. As part of Summer of Code 2006, I provided Classpath with the necessary API interfaces and a VM layer for implementing java.lang.management, which allows the running virtual machine to be monitored and controlled either locally or remotely. This year, I propose to provide an implementation of the VM layer for Jikes RVM, where such code will enhance the collation of research results and provide a uniform layer for comparisons.
|
|
| Title | Adding JDWP and JVMTI support |
| Student | Eslam Ahmed Almorshdy |
| Mentor | Ian Rogers |
| Abstract | |
|
Abstract
======== JDWP & JVMTI are standards introduced by sun to uniform the way JVM[s] are debugged/queried. They are not mandatory nor do they form requirements to comply with the JVM standard. Here I propose to enable those standards in the Jikes Research Virtual Machine. enabling those standards would greatly help the development/research process of the Jikes RVM itself as well as the applications that runs on it. Keywords: ========= Debug protocol, Java, Virtual machine, JDWP, JVMTI. Motivation and Background: ========================== Jikes is a Research Virtual machine developed by IBM. Jikes was released as an open source project and follows open source development model. It lacks conformance to the JDWP/JVMTI standards. They are not part of the JVM specifications. |
|
| Title | Graph Coloring Register Allocator |
| Student | Alexey Gorodilov |
| Mentor | Ian Rogers |
| Abstract | |
|
Jikes RVM optimizing compiler was originally designed for Power PC. Having 32 registers, register pressure on Power PC wasn't a big issue but the performance of the register allocator was. Given spills and fills were rare the trade-off suggested that linear scan was a good register allocator for the Jikes RVM. When the Jikes RVM was made open source a new Intel back-end was added. On x86 number of registers had decreased from 32 to 8. x86 is architecture where the problem of graph-coloring register allocation is complicated by irregularities in the organization and use of the architecture’s register resources. I propose to implement Iterated-Coalescing Graph-Color Allocator with modifications for irregular architectures. This allocator uses interference graph to represent all program constraints.
Original proposal: http://alexeigor.googlepages.com/gsoc2007.pdf |
|
| Title | Vectorization |
| Student | jisheng zhao |
| Mentor | Ian Rogers |
| Abstract | |
|
Vectorization is an important optimization to enable parallel code
speedup within a single processor core. Currently, most mainstream general purpose processors provide support for vector/SIMD operations, such as MMX in Intel processors and AltiVec in PowerPC processors. Vector/SIMD operations are ones that perform a related function on multiple pieces of data in parallel. These operations can give important speedups for certain classes of application, such as multimedia programs. |
|
| Title | Extending the Nested Sets Model with "Hardlinked Nested Sets" |
|---|---|
| Student | Enno Klasing |
| Mentor | Louis Benton Landry |
| Abstract | |
|
Some of the most often requested new features for Joomla! are the abilities to
nest categories in an unlimited depth, and to place content into more than one category. The usage of the Nested Sets Model offers an elegant and efficient solution to this feature request. During this year's Google Summer of Code, I would like to extend the current Node Based Scheme libraries [1] – which implement a Nested Sets Model – with a feature which I call "Hardlinked Nested Sets". Often it is needed to place the same item into different parent items at the same time. This is a simple task when dealing with just one single item each time. However, as soon as one wants to duplicate a complete branch of items (e.g. for categories with sub-items in it), this task becomes a whole lot more complicated. Data integrity, execution time and the forming of valid routes to such sub-items are three major issues which need to be taken into account. * Data integrity should be achieved at the library level, so that whenever a node which has hardlinked duplicates is being changed, all duplicated nodes will be changed as well. The Nested Sets Model (which is used by the NBS) already performs non-atomic actions, and therefore requires transactions. So if all extensions use the provided libraries, data integrity can be guaranteed. * When the main functionality becomes implemented in the data-changing routines, the "Hardlinked Nested Sets" feature will have a very small impact on execution time of data reading functions, but requires a little bit more time for storing data. * Routes to such hardlinked sets should still contain the IDs or names of the original items (except for the item where the linked branch starts), to present unique IDs or names to the outside (important e.g. for human readable URLs) and inside (important for future ACL implementations). [1] http://code.google.com/soc/2006/joomla/appinfo.html?csaid=23A1F7A6CF74EC01 |
|
| Title | Email Interface for Publishing |
| Student | Nur Aini Rakhmawati |
| Mentor | Mateusz Krzeszowiec |
| Abstract | |
|
My idea for JOOMLA development is making of email interface for
JOOMLA publishing. Why is email interface needed ? Quickening and make it getting easier communications and news publication. This email Interface provides function as media a author to write article in JOOMLA site without requiring to visit the the website. When article the sent to website hence publisher will get the notification by his email whether there is new article that needs immediately reviewed and published. A publisher will visit to read the the article in website or can directly agree by email. Perhaps that idea is not really needed on country that provides high bandwidth and cheap internet payment. But it is important thing for countries that has limited bandwidth and expensive internet cost such as my country (Indonesia). For Indonesian people, it is prefer to check his email first than his website. Because it needs small bandwidth. |
|
| Title | Semantic Web Integration |
| Student | Charl van Niekerk |
| Mentor | Robert Schley |
| Abstract | |
|
Currently, the web can be a real challenge to those living with disabilities. Screen readers, Braille displays and other accessibility tools convey data but yet often fail to help the user understand that data. Visual cues such as colours, text formatting, layout, graphics, etc. help to convey certain meanings to the typical user but can easily leave others behind.
Also, many tasks that are currently being performed by hand can be automated. For example, when I view a web page with a person's contact details, I have to copy and paste the information into the relevant fields of my address book application in order to save it for easy reference. The computer should be able to know which information is where on the page and do this job for me with only one or two clicks. Web Standards and the Semantic Web are the W3C's solutions to these problems. The idea is to not only store data, but also some of the meaning that's associated with it. This will help the computer "understand" the data better and will enable it to not only convey this meaning to users in a customised fashion (in the case of disabled users) but also automatically do some tasks with the data not before possible. Correct user of technologies such as (X)HTML, Microformats and RDF that already exists today can create improved accessibility and automation for all kinds of users. And because these technologies are royalty-free open standards, they can be implemented and used by anybody in an inter-operable fashion. The project will focus on the improvement of the (X)HTML output from the Joomla core, going as far as possible to ensure that valid and semantic markup is used. Semantic Web technologies such as Microformats and RDF will also be utilised wherever possible in order to make an entrance into the semantic web. |
|
| Title | Geo-component for Joomla! |
| Student | Mickael Maison |
| Mentor | Andrew Eddie |
| Abstract | |
|
Google Summer of Code 2007 – Joomla! organization
Application of Mickael MAISON What about a Geo-component for Joomla!? What do I mean with Geo-component? Geographical information is becoming a key data on the Internet. Now many applications support KML/GeoRSS or geospatial tagging (Flickr, Google Maps/Earth, Drupal …). Because of its modularity Joomla! can become a Geospatial Content Management System (http://en.wikipedia.org/wiki/Geospatial_Content_ Management_System). With a Geo-component, I mean a component which enables the user to add geographical information everywhere in Joomla! it can be useful: - News/Posts - Comments - User profile Then all this data would be publish using GeoRSS and KML feeds How is the project composed? This project is composed of 4 main blocs: - The administration bloc: Where all the configuration will be accessible - The user bloc: Enabling an easy geo-tagging - The feeds management: KML, GeoRSS Simple and GeoRSS GML feeds - The creation of the adapted documentation. It will be provided as a FAQ or tutorial and will explain in details how it works. What are the benefits for Joomla!? Geographical data is becoming a key interest dataset. KML and GeoRSS are starting to be widely used (i.e.: the 22nd of March 2007: Google Maps support GeoRSS). Moreover these formats are being standardized by W3C and OGC and will form a significant part of the future web. Such integration will keep Joomla! one of the more up to date applications. Then holding geographical data of the users and of the content will enable the community to build new features like: - Search for users close to me - Groups of users based on locations - Languages options - Use Joomla! geo-coded GeoRSS or KML feeds in other applications - All the things the people will invent! Building this functionality will make Joomla! content more easy to integrate into mash-ups. Providing geo-coded content feeds will be an on-ramp for developers wishing to integrate such content into their own applications. I spoke about this project with Mikel Maron (the founder of GeoRSS) and he encouraged me to take this project forward. This functionality exists in projects such as WordPress and I am keen to see it in Joomla!. What is the roadmap? 1. Specification and introduction into the community My first goal will be to publish all the specification of the project in order to clarify each part and feature which I want to develop. In the same time I will start to introduce myself to the Joomla! community (until mid May) 2. Implementation: Then starting at the end of May I will implement all the features. I will use a logical order by starting with the administration part, continuing with the user part and finishing with the generation of the feeds. All these features have to be fully supported on all the common browsers (until mid August) 3. Testing and documentation I count on the Joomla! community to test and give feedback as soon as the modules will be developed. But I also plan to keep some time to perform tests in order to deliver the application working perfectly in all the case with all the common browsers. I also have in mind to provide documentation (I am thinking about a tutorial) of the module to enable people to extend it. What about me? I am Mickael MAISON a 21 years old student from the University of Teesside (Middlesbrough - UK). I am currently in the third year of a BSc Computer Programming which is a yearly internship. So I am working, as a technical consultant, until this summer in Ordnance Survey (surely the place where I get this passion about location and geospatial information). I have developed a Chat component for the IRC Network EuropNet.org last year and I have been following the Joomla! project for a little while now so I think the Summer of Code is a good opportunity to enter completely as an active member in the Joomla! community. |
|
| Title | Eclipse Plugin for develop Joomla's Component/Module |
| Student | Muhammad Fuad Dwi Rizki |
| Mentor | Laurens Vandeput |
| Abstract | |
|
Component and module is extension to Joomla. Every one can customize his CMS with add component or module into it. Developing this (component/module) is not trivial task. IDE (Integrated Development Environment) can help developer to do this work.
|
|
| Title | General content recommendation component for Joomla |
| Student | Faolan Cheslack-Postava |
| Mentor | Samuel Alexander Moffatt |
| Abstract | |
|
While manual content management and moderation has its established place in the world and on the internet, "web 2.0" has shown that there is extreme potential in algorithmic recommendation engines on both macro and micro scales. On a macro scale, it is clear from sites such as digg.com that the "wisdom of crowds" can be effectively utilized to filter content using the choices of many people to inform the content that will be similarly pleasing to many others. On the micro scale, there are a few sites such as reddit.com that demonstrate the possibilities of more personalized filtering still based on the wisdom of crowds. While the first steps have been taken in these areas there is much progress to be made.
The goal of this project would be both experimentation and implementation. While the basics of such a filter/recommendation engine are obvious, a general purpose solution requires more consideration in order to provide the desirable features in a way that works in many different environments and for different types of content. This project would aim first to implement the basic functionality of a recommendation system into a Joomla component. After the most basic functionality is implemented, more complex filtering and recommendation algorithms can be designed and tested. By the end of the project the goal would to have a Joomla component with basic digg like functionality as well as the option of more complex general filtering and personal recommendation based on content, context, and temporal considerations. |
|
| Title | Quadrilateral Remeshing |
|---|---|
| Student | Ian South-Dickinson |
| Mentor | Timothy M. Shead |
| Abstract | |
|
The goal of this project is to improve the Quadrilateral Remeshing K-3D plug-in
by using a different algorithm that requires less user input. The current implementation requires the user to specify extrema points on the mesh. The proposed alternative algorithm for the plug-in will create a quad-dominant mesh that is aligned with the principal curvature directions. |
|
| Title | CMake support for KDevelop |
|---|---|
| Student | Aleix Pol Gonzalez |
| Mentor | Matt Rogers |
| Abstract | |
|
The main idea of this project is to provide KDevelop 4 to deal with cmake projects so anyone can easily create their own cmake project. It would be great to have this feature because cmake is the official KDE 4 buildsystem and most of the KDE related projects will be using it. Being KDevelop the KDE default development environment CMake support would be an appreciated feature for the users.
|
|
| Title | Kalzium 3D Molecular Editor |
| Student | Marcus D. Hanwell |
| Mentor | Benoit Jacob |
| Abstract | |
|
Molecular visualisation is a very important area in both scientific research and education. Having good open source tools capable of producing high quality 3D images of molecules would be useful to students from high school, up to university and research level. There are very few open source tools capable of drawing and rendering 3D molecular structures. Ghemical[1] is one such application which when coupled with Jmol[2] is capable of producing publication quality images.
OpenBabel[3] is already used by many projects and allows programs to support a large array of chemical formats. Avogadro[4] is a new application and library satisfying a need in Kalzium[5] for 3D rendering of molecules as well as a wider need in the community for 3D molecular visualisation tools. Avogadro can already render 3D molecules and has basic molecular drawing facilities. It draws upon several libraries such as OpenBabel2, Qt 4 and Eigen[6] to allow rapid development. All core functionality is in the Avagadro library to allow other applications to easily use features implemented in the project. Avogadro is at an early stage of development but many basic features are already present. Avogadro will be extended to add support for custom atom/bond labels, implement POVRay[7] rendering of molecules for high quality ray traced image output and add the facility to export the 3D rendered scenes at user specified resolutions. Protein ribbon views, electronic charge and interatomic distances/bond angles would also be added as well as extensive bug testing with integrated user testing and feedback during development. Another goal is to move all calculation intensive processes (such as geometry optimisation) into a separate thread. This would maintain GUI interactivity during calculations and allow the program to display the molecule as its geometry changes. It would make more intensive calculations using the Avogadro program easier to implement and interact with. [1] http://www.uku.fi/~mthassine/projects/ghemical/ [2] http://jmol.sourceforge.net/ [3] http://openbabel.sourceforge.net/ [4] http://avogadro.sourceforge.net/ [5] http://edu.kde.org/kalzium/ [6] http://eigen.tuxfamily.org/ [7] http://www.povray.org/ |
|
| Title | Kontact Journal/Blog Support |
| Student | Mike Arthur |
| Mentor | Cornelius Schumacher |
| Abstract | |
|
Currently, KDE's Kontact provides basic Journal support. However, this cannot be currently posted remotely or any more than plain-text used in creating entries. This project would improve this Journal support, integration with the KBlog blog-posting library, adding a WYSIWYG editor and other desired functionality.
|
|
| Title | KAider, computer-aided translation system |
| Student | Mykola Shaforostov |
| Mentor | Adriaan de Groot |
| Abstract | |
|
KAider is a KDE4 KBabel (http://kbabel.kde.org/) replacement that I've started in January. (see http://websvn.kde.org/trunk/playground/devtools/kaider/).
My intention is to extend it to the state close to 'computer-aided translation system', i.e. tool that allows us translate more text in less time, and with higher quality. This includes following my 'maxima': majority (if not all) of actions must be accessible from keyboard, w/o using mouse, because it takes less time to press shortcut then to do things w/ mouse. All existing CAT systems don't support gettext format nicely, and don't have suitable interface (eg two panel one, like in Open Language Tools, doesn't suit for translating big paragraphs we have in .po files generated form docbook; if user wants to see context, it could be displayed in a special QDockWidget, with smaller font, etc) And, of course, they don't intagrate with KDE well. Short list of features (over what we already have in kde svn): -project management -context glossary (+sipping on google translate) -translation DB (QtSql) -mode for merging translations for editors (QA) -scripting API (kross) See http://techbase.kde.org/Projects/Summer_of_Code/2007/Projects/KAider and http://techbase.kde.org/Projects/Summer_of_Code/2007/Projects/KAider/Introduction |
|
| Title | Improve OpenDocument compatibility in KWord |
| Student | Pierre Ducroquet |
| Mentor | Sebastian Sauer |
| Abstract | |
|
The office application for a Linux desktop has been OpenOffice for more than 4 years. During this time, a lot of files were generated in the OpenOffice specific format. With OpenOffice 2, OpenDocument started being used. This standard is allowing an old dream to become real : be independent from your office application, use what you want to use, be free. Currently, OpenDocument support in KOffice is quite good, but far from perfect. There may be missing features in KWord / KSpread, or just errors in OpenDocumment support breaking a feature or adding differences, breaking compatibility...
The aim of this project, for me, is to be able to switch to KOffice for most of my work. It means that all the OpenDocument files I can find on my hard drive must be compatible with KOffice... |
|
| Title | Strigi: chemistry and biology support |
| Student | Alexandr Goncearenco |
| Mentor | Egon Lennert Willighagen |
| Abstract | |
|
Strigi [1,16], the fastest and smallest [2,3] desktop search engine introduced by Jos van den Oever, is a promising alternative to other tools like Beagle/Kerry [10].
Strigi combines stream-based content analysis with an abstract index interface [9]. The universal metadata extractor can hugely speed up the indexing phase of any desktop search engine. On top of that, it lets the Strigi daemon be ignorant about its storage backend. Currently clucene backend performs best. Jstreams classes used in Strigi allow reading arbitrarily deeply nested files (e.g. files in a zipped email attachment) with very low CPU and memory consumption. Strigi uses parallel analyzers that can extracts different types of data from a file in parallel. Strigi and jstreams are written in C++ with very few dependencies. KDE or any other, e.g. Gnome, applications can easily address Strigi through the DBus interface. Strigi could be integrated into core KDE4 components [7] in the near future. Its stream trough the analyzers metadata extraction system [14] has already been merged into the KDE metadata facilities. Porting of KFilePlugins is in progress [18]. This project aims on making KDE a productive environment for Chemistry and Biology. Strigi can help chemical information to be semantically marked up, and easily retrieved. Kfile-chemical, like all KFile plugins, are moving to jstreams directly now [15]. Kat chemical file data analyzers can also be ported. Format detection is done by chemical-mime. OpenBabel [12] complies with Chemical MIME [4,5] and will be used to convert chemical structures to InChI strings [17] for exact molecule search [19]. To extract chemical information from text documents, like PDF or HTML, chemical text mining tool OSCAR3 [20] can be used. You might want to look at Nepomuk [10], a group doing researching into the Semantic Desktop, which (among other things) aims to develop ontologies for metadata fields. Such will have to be developed for chemical metadata. Current status of KDE integration is presented in the report [8]. BENEFITS FOR KDE: - KDE4 will be the first chemistry aware desktop environment - example Strigi plugins for complex data mining - powertesting the Strigi framework - crossdesktop code reuse (benefits for other, e.g. Gnome, communities) - speedup expected after porting analyzers to jstreams - step towards the Semantic Desktop For references and up-to-date proposal visit http://neksa.net/dokuwiki/doku.php?id=strigi_chem_bio_support |
|
| Title | GPS support for Marble virtual globe widget |
| Student | Andrew Manson |
| Mentor | Inge Wallin |
| Abstract | |
|
I intend to give support for GPS devices within the Marble application, implementing a method of recording GPS data and loading saved information into the user interface keeping the interface as simple and user friendly as possible. I will also implement tracking of a GPS object that is in the meta layer. A secondary goal will be a basic implementation of support for open street map.
|
|
| Title | Amarok: Model/View implementation and usability improvements for playlist |
| Student | Ian Monroe |
| Mentor | Seb Ruiz |
| Abstract | |
|
At the heart of Amarok, the music player for KDE, is the playlist. Currently the Playlist class performs many functions. My proposal is give the playlist the tender love it truly deserves, by first making the playlist more modular and then redesigning its layout to improve its usability. The playlist is the central feature of Amarok, it needs to look good.
More details at: http://amarok.kde.org/wiki/Playlist_Redesign |
|
| Title | Kopete messenger plugin update |
| Student | Zhang Panyong |
| Mentor | Matt Rogers |
| Abstract | |
|
Windows Live Messenger 8.1 is widely used around the world, The protocol is MSNP15.
In last year's Soc MaYuan has supported the MSNP13 protocol for Gaim. The Kopete has done some work on implementing the MSNP13 in KDE4 trunks, but It's not functional, Based on messenger plugin, this project will implement a functional and stable messenger plugin for Kopete and update its protocol to MSNP15, introduce some new features such as Offline Message,Communicate with Yahoo Messenger, Roaming Contents... |
|
| Title | Step: interactive physical simulator for education |
| Student | Vladimir Kuznetsov |
| Mentor | Carsten Niehaus |
| Abstract | |
|
The goal of the Step is to make studying physics easier, more interesting and productive. It helps users to gain intuitive understanding of how physics works by allowing them to easily construct various experiments, interactively simulate them to see how they will evolve, adjust various physical properties to see what will change.
The underlying simulation engine of Step is available as separate library called StepCore and can be used for other projects which requires simulation functionality. Step is a KDE4 application, KDE libs have already made development of Step quite faster and more enjoyable. When Step will be ready it can perfectly complement the kdeedu module and extend the realm of kdeedu to the whole new subject. I've been already developing Step for two months. With help of kdeedu people, Step has its own section on edu.kde.org: http://edu.kde.org/step/ . You can look at it to learn more about Step, its current state and future plans. Currently Step still needs more features, polishing and (especially) GUI improvements to become actually useful for education and to be included in kdeedu module. As part of the Summer of Code I propose adding some of this features and improvements to Step in order to make it more useful and ready to become a part of the kdeedu. |
|
| Title | KWin -- Improved Xinerama Support |
| Student | Frederick Emmott |
| Mentor | Lubos Lunak |
| Abstract | |
|
Xinerama (and various implementations known also as e.g. MergedFB or TwinView) is an X server extension that merges two or more physical monitors into one large display. KDE already provides a decent support for Xinerama, but there is still room for improvement, in particular, different monitors are linked together even in cases when it might be more beneficial to have them independent, for example with virtual desktops.
I plan on improving support in this case, and general Xinerama issues under KDE, especially regarding multi-monitor full-screen mode in media players. |
|
| Title | Text-tool plugins for KOffice apps |
| Student | Fredy Yanardi |
| Mentor | Tomas Mecir |
| Abstract | |
|
This project aims to provide new plugins for the text engine of KOffice. The text plugins will mainly benefit KWord, but it is not limited only for KWord since the design of flake library allows component (shape) embedding in every KOffice application.Some of the text tools that are going to be implemented are:
* Bookmarks plugin * Uppercase Text (change text to all lowercase, title cased, or capitalized) * Text replacement: Use thesaurus to do text replacement for similar words, another example is text replacement by texting language. * Colorization plugin * An optional plugin that shows a word count in a docker |
|
| Title | Marble KML support and creating KPart. |
| Student | Murad Tagirov |
| Mentor | Torsten Rahn |
| Abstract | |
|
Marble is generic map widget to display geographical data. Currently is supports basic KML objects and acts as a basic Qt application. To become more useful and part of KDE EDU in my view it should has enhanced KML support and act as KDE component (kpart). My aim is implement redesigned support of KML objects and introduce more flexible architecture with realization of basic objects meet to KML 2.1 specification and to convert Marble widget to KDE component (kpart).
|
|
| Title | Enhance KPilot record based syncing |
| Student | Bertjan Broeksema |
| Mentor | Jason Kasper |
| Abstract | |
|
For a long time now kpilot is *the* application of the K Desktop Environment to sync your palm with the kontac framework. Syncing is done by so called conduits which sync handheld program data with the data of a desktop application. Most of the conduits are record-based, as in they check if records on the handheld are added/deleted/changed and update the application data and vice versa.
For now each conduit did the handling of records on its own way which makes bug-solving and maintenance in general a time consuming job. Because of this, and because whe decided to port kpilot to kde4 i'll implement a more generic way of record handling which can be used by each which is record based. I'll deliver the following products at the end of the project: * Sequencediagrams/classdiagrams * Implementation of the abstract record framework * (Re)implementation of a (new) conduit as proof of concept. With this project the conduits of kpilot which make use of this will become more maintainable. It will become easier to create new record-based conduits and i'll be able to help a hand on the porting to KDE4. |
|
| Title | Bluetooth Presence Manager (BtPM) and KDEBluetooth KDE4 port |
| Student | Juan González Aguilera |
| Mentor | Daniel Gollub |
| Abstract | |
|
Today, most people (at developed countries) carries some Bluetooth capable cell phone or, looking at the current supply at shops, they will very soon. Bluetooth is a wonderful technology that joins power efficiency with easiness, making things like file sharing, wireless hands free and so a child's game. Of course, Bluetooth is not an exclusive property of the handheld world, and it's easy to find USB Bluetooth devices in the 15€/10$ range, and many new computers include it by default.
In addition, Bluetooth management has been developed in the Linux world for some years, now we have the BlueZ stack integrated in 2.4 and 2.6 kernels providing a library to manipulate Bluetooth devices and a D-Bus interface with the same purpose. Also, KDE has gone it's way and has the KDEBluetooth project, which provides a DCOP interface to the underlying BlueZ DBus interfaces, but has one little issue, is not KDE4 ready. The first part of this proposal is to solve that problem. All this plots an scenario where a user arrival/leaving can be easily identified from Linux using few different ways. What if your computer pauses the music you are listening on Amarok, locks the screen and mutes the audio when you leave, and also unlock the screen, restart playing your music and opens your favorite mail program and a browser with your favorite tabs when you get back to range. This is a feature that has already been included in OSX through the Proximity application, or even on Linux with the command line tool bluemon, so this proposal includes creating a similar application called Bluetooth Presence Manager, BtPM, using KDE4, on top of the previous Bluetooth support works. |
|
| Title | Python Support for KDevelop4 |
| Student | Piyush Verma |
| Mentor | Andreas Pakulat |
| Abstract | |
|
KDevelop is an IDE that supports a wide range of Languages. Considering the fact Python is gaining widespread popularity as a programming language, the idea of my project is to bring decent Python support to KDevelop4.
At present time, the python support for KDevelop4 is in its infancy. The Language parser does exist for python but is not complete, it is quite basic and does not comply with python indentation rules. So developing a lexer that supports indentation (or porting existing lexer from ANTLR python parser) would be the first task. The next one would be to make python parser understand a subset of the language. Apart from that I plan implementing a Definition Use chain for Classes and methods and "Smart Highlighting". The Entire Project will have three milestones: - The Parser that is capable of reading predefined subset of python - Definition Use chain for classes/scopes/methods - "Smart Highlighting" The Language parser that exist for Python is just in its early stages and does support much of the functionality, so Considerable amount of work needs be done to add complete Python support to it. |
|
| Title | Making KOrganizer look more like a paper-based calendar: theming improvements |
| Student | Loïc Corbasson |
| Mentor | Cornelius Schumacher |
| Abstract | |
|
Today KOrganizer's theming interface, CalendarDecoration, is not widely used. Plugins using the interface have to be written in C++, and the functionality remains simple.
My goals during Summer of Code would be: - to allow for more features (background images, image/quote of the week/month, etc), - to write some example plugins (national calendars, "This day in history" links, ...), - to make it easier to write simple decorations for KOrganizer using a portable and easy-to-use format, which may be extended in the future (like the KDE themes). |
|
| Title | Music Notation support for KOffice |
| Student | Marijn Kruisselbrink |
| Mentor | Boudewijn Rempt |
| Abstract | |
|
In this project I will add music notation support to KOffice. This will be accomplished by writing a new flake shape, which will make it possible to use this new feature in all KOffice applications. The goals of my project will consist roughly of 3 parts:
* a way to show and print music in all koffice apps. * a way to edit this music notation * a way to load/save this in ODF files, either using a KOffice-specific file-format, or the 'standard' MusicXML format. |
|
| Title | KDEPrint -- add support for LinuxPrinting's on-line drivers query |
| Student | Gavin Beatty |
| Mentor | Cristian Tibirna |
| Abstract | |
|
Personal:
My name is Gavin Beatty. I'm 21 years old. I'm nearly finished 3rd year of my degree in Mathematics in Trinity College Dublin and I have been using Linux since Windows Millennium Edition ;) I have been a KDE user in all those years. My studies have included C++, computer networks, isometrized 3D graphing applications in C++ and game development (last two using SDL). My personal experience in this realm include coding QT 4.x applications for library management (search,status,reminders) and personal itches such as for easy ssh port forwarding (became quicker than monthly `man ssh`ing). I have professional experience working with one of the largest (and Scandinavian ;)) telecoms companies in the world. There, I wrote testing frameworks in Python, debugged in Java and used many devel tools such as Subversion, ClearCase and all the major IDEs. I teach C and UNIX to Junior Freshmans in the School of Maths in Trinity. My passions are for Python, C++, QT and open source. |
|
| Title | Java backend for Kross |
| Student | Vincent Verhoeven |
| Mentor | Sebastian Sauer |
| Abstract | |
|
Kross is a scripting framework that allows a program to easily integrate support for multiple scripting languages. Currently Python, Ruby and KJS are supported.
This project aims to integrate Java as another supported scripting language. Java is among the most used programming languages according to various sources[1], so supporting Java in Kross opens a lot of potential for programs using Kross as a scripting backend. This affects among others popular applications as KOffice, KWord, Krita and SuperKaramba. [1] for example "Programming Language Usage Graph" by François Labelle, http://www.cs.berkeley.edu/~flab/languages.html |
|
| Title | Improving the X RandrR extension support in KDE |
| Student | Gustavo Pichorim Boiko |
| Mentor | Lubos Lunak |
| Abstract | |
|
The X Resize, Rotate and Reflect (called RandR) is an extension that provides a way for applications to resize and rotate the root window of the display. In addition to that, the latest release of the extension (1.2.1) provides some additional features that are not yet supported by toolkits and desktop environments. One of the new features is the ability to deal with monitor hotplugging and zero or more outputs displaying arbitrary regions of the root window.
From the desktop environment point of view, it is necessary to have an application monitoring for screen change events and managing all the available outputs and CRT controllers. KDE already has an application that can handle RandR events and that can do requests when necessary. This application is called krandr. But currently it only handles RandR 1.1 requests, which is not bad at all, but being able to interact using RandR 1.2.1 brings many new possibilities for the KDE environment. The idea of this project is to add necessary infrastructure for RandR 1.2.x support in KDE and make the desktop environment react and interact well with RandR requests. |
|
| Title | Icon cache for KDE |
| Student | Rivo Laks |
| Mentor | Aaron Seigo |
| Abstract | |
|
To improve startup times of KDE applications, I plan to create an icon cache which would store all icons in a common location. This would eliminate the need to scan tens of directories for icon locations, thus reducing disk seeking. And as the cache would consist of only two files, it would often be wholly cached in the memory by the operating system, eliminating disk access completely.
Furthermore, the cache enables loading icons directly from SVGs, using any scale, as the SVGs need to be converted into pixmaps only on the first use. Finally, the cache would make it possible to support simple icon compositing, making it much easier for third-party applications to provide icons which always fit into user's current icon theme. |
|
| Title | Sahana Disaster data import through arbitrary spreadsheets, relational databases |
|---|---|
| Student | Hevafonsekage Joseph Priyanga Fonseka |
| Mentor | Chamindra de Silva |
| Abstract | |
|
This project is to develop a data import module for Sahana Disaster Management System. This module will enable the Sahana users to import data stored in different formats like CSV , XLS, ODS and XML in to the Sahana system. Also it would enable the Sahana system to produce reports in those formats. This module will be relay help full for new Sahana users to adopt Sahana in to there disaster management activities, and also enable Sahana to work with other data management applications.
|
|
| Title | Optical Character Recognition for Sahana Data Entry |
| Student | Omega Silva |
| Mentor | S.M Ravindra De Silva |
| Abstract | |
|
Abstract
-------- In disaster situations, the most common method of collecting information from the victims is by filling paper based forms. To use that information in a disaster management system like Sahana, they have to be typed in to the system, which is highly inefficient and delays the response time in a disastrous situation. The intension of this project is to provide an optical character recognizing tool which can recognize hand written English characters and save the data to Sahana database. The scope of the project will be limited to identifying English letters, numerical characters and other commonly used characters. Implementing the OCR tool in the server side is not a good option as optical character recognition is a highly processor centric task, and will overload the servers and waste the network bandwidth while uploading the images to the server. So it should be implemented as a stand-alone application that runs on the client side. The input to the tool is an image of the paper form, scanned from a normal desktop scanner. Since the OCR is to recognize hand written characters, AI techniques in the form of Neural Networks should be used. Neural networks are vastly used in OCR applications, since once trained well, they give results with high accuracy even in cases where high noise is present in the image. The characters in the input image have to be segmented and re-sampled before feeding it as the input to the neural network. The image processing part should also be efficiently handled. To minimize the errors in the final output, the paper form has to be designed to make it easier to segment the characters and thus minimize the errors in the input. The project is intended to be developed using C and C++, on Linux platform. Porting to MS Windows is also considered. |
|
| Title | Extending KBFX the next generation Desktop resource launcher for K Desktop environment (KDE). |
| Student | Lahiru Lakmal Priyadarshana |
| Mentor | Siraj Razick |
| Abstract | |
|
Extend and Improve the latest KBFX 0.4.9.x branch of the menu. I hope to make KBFX even more user friendly, by flat indexed menu which can be ported to run on the upcoming major release of KDE, KDE 4.0.
“A Desktop resource launcher” hearing that may draw an image of a regular menu in your mind, which will load all the entries it has; such as all applications installed, administrative tasks, accessories, utilities etc... It is true that you may not interest in this image, because regular menu is sort of a mess and it is time consuming, since it has all the items and we have to find out what we need. So it takes time according to the loading speed and the time taken for searching relevant items. Think about a menu or in other words a Desktop resource launcher which shows only things or tasks that we should do, as its' entries.. And a menu which can be customized without editing the core part..! The extended KBFX menu will be full filling this need using Task Oriented Menu (TOM) concept. TOM can load only some selected entries as 'things to-do'. These entries will be defined in an XML file and the XML can be loaded to the menu via a tom-plug-in. There can be a baseXML for Office and Internet tasks, mulitimeadiaXML for Graphics and Multimedia, an XML for Games and also another XML for Administrative tasks. Users can modify their TOM by loading these XMLs via a tom-plug-in or even loading their own XMLs. This will allow multiple users to have different menus with their specific 'things to-do' list, in a single computer. My main goal is to give life to this TOM in this summer, with lot of additional features like better keyboard support. And it will be eye candy. |
|
| Title | Sahana GPS Interface |
| Student | Selvamanickam Sriganeshan |
| Mentor | Mifan Careem |
| Abstract | |
|
Introduction
Global Positioning System (GPS) is a satellite system that provides highly accurate location with the use of special GPS receivers and their augmentations. This accurate GPS data is of limited use by itself, unless it is coupled with a powerful visualization tool like the Geographic Information Systems (GIS). The GIS is a widely accepted visualization tool that presents data in a graphic form, which is a convenient and effective means of communicating complex information. These systems also have loads of relevant spatial and non-spatial data existing as different layers of information that can be expressed as a map. Thus, the integration of GPS and GIS brings into existence a powerful tool that has location and visualization aspects that can be put to effective use in the context of a disaster . The aim of this project is to develop a platform independent GPS interface to the Sahana disaster management system,which ultimately produces a strong integration of GPS and the existing GIS features of the Sahana system. This GPS/GIS integration would enable Sahana to communicate with GPS receivers very easily and efficiently allocate resources, model risks, and direct emergency response,relief,rescue,rehabilitation and recovery personnel. Deliverables of the Sahana platform independent GPS interface 1>Administrative interface to GPS devices -specifies the type and model of the GPS device,synchronizes the datums of maps and GPS device's,specifies ports,baud rate,etc 2>Format conversion interface -converting way points such as in Universal Transverse Mercator (UTM) to latitude and longitude and vice versa and many more format conversions. 3>The Import/Edit from GPS interface -imports waypoint/routes/tracks from the GPS device to the SAHANA system and provides the option to edit them. 4>The Export to GPS interface -exports waypoint/routes/tracks from the SAHANA system to the connected GPS device 5>The GPS map export interface -converts maps to GPS device compatible formats and exports those maps to GPS device. Tools Java is to be used to as the programming language for this project as it achieves platform independence and NMEA compatible GPS receivers are assumed to be used in connection with the SAHANA client as NMEA is the standard GPS device protocol. USB/Serial, bluetooth/Serial converters(software) are to be used to connect GPS devices through bluetooth and USB to the Sahana client. Java communications API 2.0/3.0 and jUSB are to be used to access ports. |
|
| Title | Complete AJAX library for Sahana |
| Student | Ishan Udyana Liyanage |
| Mentor | S.M Ravindra De Silva |
| Abstract | |
|
This project would be an attempt to provide AJAX (Asynchronous JavaScript and XML) support for Sahana. The current implementation of Sahana deals with AJAX little bit. AJAX can use to create better, faster, and more user-friendly web applications. There are lots of areas (modules) in Sahana that AJAX can be applied effectively. Therefore this project is important for Sahana to be able to perform efficiently and more user friendly way.
|
|
| Title | Sahana Meta data based dynamic report generation (tables, charts and Sahana Meta data based dynamic report generation (tables, charts and Sahana Meta data based dynamic report generation (tables, charts and maps) |
| Student | Agnieszka Kulikowska |
| Mentor | Mifan Careem |
| Abstract | |
|
I see this product as similar to pivot tables in Excel or as more advanced, like reports in one of Business Intelligence tools (Crystal Reports, Business Objects, Pentaho). Request is to allow use it via web interface. Hence my idea is to apply R statistical system (http://www.r-project.org) which can be integrated with virtually any other language (e.g. with Java via RServe). I would like to communicate with R from PHP level using R-php (http://dssm.unipa.it/R-php/). R will deal as computational engine. As platform for interface can deal Rpad (http://www.rpad.org/Rpad/) too. A simple example of dynamic report generator can be found at http://www.rpad.org/Rpad/DataExplorer.Rpad.
Pivot tables supported with drag and drop technique will be applied (thanks to Rpad). Huge graphical data presentation possibilities of R statistical system will be applied. We can think of generation of pdf reports too. R can access almost any database. MySQL databases can be reached via RMySQL interface library. Of course, we do not have to use R and we can support pivot tables and dynamic reports with direct use of database queries from PHP level. We can apply mixed approach too: simple queries directly using SQL queries, more computationally complex (or statistically advanced) using R system. Sahana allows tight GIS integration (Google Maps), hence it could be applied to some very simple geographical visualizations. More advanced generation of maps could be needed, e.g. in case when we would like to visualize population density with colors. Such other approach to generation of maps could be supported by R too (it has several packages allowing this) but for greater flexibility GRASS GIS software (http://grass.itc.it/) could be used. It can be accessed via GRASS package for R. I am not sure if application of such advanced GIS system in Sahana is necessary / needed / possible. It should be investigated while beginning part of the project. The solution with use of R system will allow us to easily expand analytical possibilities when advanced needs will appear. I think that is really worth considering. I suggest to exclude geographical visualizations and pdf reports from scope of the project. Application of several tools may consume too much time and technical difficulties can cause project failure. |
|
| Title | Effective Localization for Sahana |
| Student | Leevanage Pium Prabath Kumarasinghe |
| Mentor | Isuru Samaraweera |
| Abstract | |
|
Once a disaster occurs anybody should be able to download the opensource software and adapt it to their geographical location as quickly as possible.So adaption of the language to the geographical location definitely ease the disaster management process by enabling volunteers to use the sytem from their mother tongue and acclearate the data capturing process.
When disaster happens lot of volunteers are speaking and understand there mother tongue. If we can make effective localization for Sahana which take to translate the site less than one day that would be very much helpful. Localization should be user friendly because translation are done by translators who are non technical person, to translate site if we required translator and technical volunteers that would be a problem. We can make localization module like this when user switch to Sahana localization mode they able to translate words while they are looking at the Sahana site. For instance if user want to translate 'Sahana Disaster Management System' into there language they can highlight that word phrase and press enter then they get text box saying please type translate word. After translation done when they say apply for particular module then we are creating *.mo file internally. |
|
| Title | Bassa, A Policy Based, User Driven, Content Caching/Sharing and Distribution System. |
| Student | Wathawana Vithanage Wathsala |
| Mentor | Chamindra de Silva |
| Abstract | |
|
Bassa is a new project, that aims to build a policy based content caching, distribution and sharing
system that is fully transparent from the web users' perspective. The ultimate goal of the project is to build a system that will efficiently utilize the available bandwidth in a timely manner using Quality of Service (QoS) and efficient bandwidth throttling. As an added benefit, the system will also be extended to provide a rich web 2.0 interface called GADisk, that enables anyone to share their downloaded content such as multimedia/documents/entertainment. Therefore Bassa can be considered as a next generation proxy server extension that is capable of enhancing an existing proxy server to efficiently schedule and download content. It is primarily implemented using the C language for better portability and efficiency. |
|
| Title | Fund Management Module for SAHANA |
| Student | K H D KUMARASIRI |
| Mentor | Isuru Samaraweera |
| Abstract | |
|
In a disaster the whole community work together and try to mitigate the effect of the disaster situation.Huge amount of funds flows in and some times the amount may be more than required.If they are not properly managed it may lead to another disaster.Funds should be managed very carefully and requires high degree of professional skill.it is very costly and time consuming task.In a disaster, time and money will be the most scarese resource.
As a solution to the above problem the Fund Management module will automate the fund management process.This will manage fund distribution process centrally and allocate correct and appropriate funds to correct places at the correct time.furthermore this will include an accounting statement generation submodule and several financial and non financial reports. |
|
| Title | Google Summer of Code Application. |
| Student | Dinishika Nuwangi Weerarathna |
| Mentor | Darmendra Pradeeper |
| Abstract | |
|
Package Manager Module:
----------------------------------------------- There are number of modules available in SAHANA. If we take a user he will not need all the modules. There are so many functionalities are included in to the whole system and those functionalities are embedded in to the different modules. For example if any user wants to make a request, the request management module will be the expected one. In this case it will be convenient to user if he allow to manage the system by selecting only the appropriate modules they want. A good system would have to address the needs of usability, customizable and the accessibility since it improves the ability of make the task easy. Package Manager Module is the best selection to achieve those goals without affecting current usability of the existing system. By addressing the Package Manager module user will be able to select only the appropriate modules and select the themes according to their preference. |
|
| Title | IOLib |
|---|---|
| Student | Luís Manuel Borges de Oliveira |
| Mentor | Robert Edward Brown |
| Abstract | |
|
IOLib¹ is an effort to create a library for Common Lisp applications
doing high-performance network I/O whose ultimate goal is to provide a framework for doing event-driven multi-protocol network programming not unlike the Twisted² and POE³ libraries for Python and Perl, respectively. With this goal in mind, this project proposal includes work on a C groveler targeting CFFI, a POSIX layer, a Win32 layer, a multi-platform sockets API, an event notification API and an I/O multiplexer. ¹ <http://common-lisp.net/project/iolib/> ² <http://twistedmatrix.com/> ³ <http://poe.perl.org> |
|
| Title | CL-ObjC. A bridge between Common Lisp and Objective-C |
| Student | Luigi Panzeri |
| Mentor | Edward Marco Baringer |
| Abstract | |
|
CL-ObjC is a portable Common Lisp / Objective C bridge, whose ultimate
goal is to be able to build Cocoa applications on Mac Os X by using Interface Builder to design the GUI and then implement any required code entirely in Common Lisp. At this time the CL-ObjC project state is very experimental though the source code already written demonstrates his ambitious final goal can be easily achieved. Common Lisp is an high level programming language supporting a combination of imperative, functional and object oriented programming paradigms, compiled code, dynamical safe and strong typing, and extensible with macros. Several libraries and tools available for Common Lisp are often conceived to be used from the REPL (the command-line traditional interface). As a matter of fact this way of use, though powerful for an experienced lisp user, put little barriers up for newcomers. Having a tool to easily build modern, well-integrated with the OS and beautiful graphical user interfaces, will help lower the impedance to entry for new Common Lisp developers, and so will be helpful in advertising the whole Common Lisp community. CL-ObjC is a Common Lisp library that aims to help users writing GUI for their domain-specific applications, using all the features of the Cocoa framework, and all the power of an industrial strength lisp language, like interactive development through REPL. Actually CL-ObjC aims to provide the following features: * access to the Cocoa Objective-C based APIs using CFFI to guarantee portability among Common Lisp implementations; * Documentation, simple examples (Hello World, widgets demo), and a demo of a Common Lisp library (e.g. cl-skippy). * close integration with the Interface Builder; * multithreaded execution in order to recompile and eval lisp code typed at the repl; * CLOS (Common Lisp Object System) and macros interface for low level features of the Cocoa Framework, in order to provide a more functional and Object Oriented interface to them. At this time, a accurate TODO list is available for the project, including the steps to implement the former features in the order. My project proposal concerns in the initial stage the completion of the first two features, including the refactoring of the existing code. Then we will add examples and documentation to consolidate the work. In the last phase, depending on how much time is available we'd choose between the last two features. |
|
| Title | Music interchange format support for Gsharp |
| Student | Brian Gruber |
| Mentor | Christophe Rhodes |
| Abstract | |
|
Functionality will be added to the Gsharp score editor allowing the importing and exporting of MusicXML files. With support for this interchange format, users of Gsharp will be able to integrate it into a work environment that includes a bevy of other music software.
|
|
| Title | NXTLisp - a Common Lisp library for the NXT Mindstorms platform |
| Student | Milan Cermak |
| Mentor | Frank Klassner |
| Abstract | |
|
The aim of this project is to write a Common Lisp library for the Mindstorms NXT platform. It would provide a facility to write NXTLisp programs to run on NXTs, remotly and simultaneously control one or more NXT agents or set up a network of NXTs that communicate with each other.
Mindstorms NXT is a programmable robotics kit produced by Lego. It is commonly used by universities and hobbyists around the world. The base kit is extensible by various sensors and components thus making it a perfect platform for learning and experimenting in various IT-related fields like AI, robotics or multiagent environments. |
|
| Title | LLVM Mips Backend |
|---|---|
| Student | Bruno Cardoso Lopes |
| Mentor | Chris Lattner |
| Abstract | |
|
Mips is a RISC processor architecture known for it's simplicity.
LLVM compiler infrastructure currently does not generate machine code for Mips architecture machines. The project goal is to implement the Mips backend support on LLVM and enable Mips machine code generation. |
|
| Title | Using LLVM as a backend for QEMU's dynamic binary translator |
| Student | Tilmann Scheller |
| Mentor | Paul Brook |
| Abstract | |
|
The goal of this project is to modify the QEMU dynamic binary translator to use components of the LLVM compiler infrastructure to turn it into a highly optimizing dynamic binary translator in order to increase the performance of QEMU even further. Instead of directly emitting code for the host architecture QEMU is running on, the target code is first translated to LLVM IR, then a selection of LLVM's optimization functions are applied to the IR and the LLVM JIT is used to generate code from the optimized IR for the host architecture. Since the translation to LLVM IR, the optimization and the code generation comes at a cost of an increased execution time, it's not feasible to apply this process to any piece of code, else the execution time would be even lower. Especially since on average a program spends 90% of its time within 10% of the code it is critical to get these 10% to execute fast, for the other 90% of the code parts might only execute once or only a few times and the extra time spent to generate the optimized code would not pay off. Therefore the idea is to identify the "hotspots" of the program. The most simple way is to count how many times a piece of code has been executed and performing an optimizing translation once a certain threshold is hit or falling back to the current binary translation of QEMU if not. Another approach could be to instrument the target code at LLVM IR level to get an execution profile (LLVM already contains support for profiling) and use it to identify hotspots and to be able to perform profile-guided optimizations during runtime. Possibly a combination of both approaches will lead to the biggest overall performance gain. Detailed speed measurements will be performed in order to evaluate the efficiency of the different approaches, especially in comparison to the approach currently used by QEMU.
|
|
| Title | Proteomics and Metabolomics Data Processing System: |
|---|---|
| Student | Jared Flatow |
| Mentor | Pan Du |
| Abstract | |
|
The MassSpecWavelet package in the Bioconductor provides a novel way of performing highly accurate peak detection on Mass Spectrometry data. The package utilizes Continuous Wavelet Transforms to find peaks in the data at various resolutions.
The CWT filtering used can be performed on any 2-dimensional dataset, however extensions need to be made to the package to allow it to read in a wider variety of data formats. In particular, the authors would like to be able to support LC-MS/MS data, mzData and NMR metabolomics data. Other modifications also need to be made to the existing data structures so that the provided functionality can more readily be shared with other packages in the Bioconductor. In addition to these extensions, the authors would like to see a suite of standard signal processing tools to give users the ability to filter and analyze the data in multiple ways. Another idea along these lines would be to provide a matched filtering algorithm to allow users to compare unknown datasets with known ones. |
|
| Title | Adding GC-MS and LC-MS metabolomics support to MassSpecWavelet |
| Student | Michael Lawrence |
| Mentor | Pan Du |
| Abstract | |
|
A common source of metabolomics data is chromatography mass spectrometry. Adding support for this type of data to the MassSpecWavelet package will require adapting and expanding the package to consider the chromatographic time dimension.
A separate peak detection algorithm may be required for chromatographic peaks, since their shape differs from that of mass spectral peaks. Chromatographic peaks often overlap, necessitating a deconvolution procedure. Also, the large degree of temporal shift between samples requires aligning them by retention time. The identification of metabolites is especially challenging in gas chromatography, where each metabolite is fragmented into multiple ions. The individual ions must be grouped together for identification. The new version of MassSpecWavelet must address all of these issues. To avoid reinventing the wheel, the package should be integrated with existing software for metabolomics, such as the xcms Bioconductor package, where appropriate. It would also be beneficial to make the MassSpecWavelet package generally more adaptable and more accessible to biologists. This would involve improvements along three axes. First, the design should be based on a modular, extensible data analysis pipeline. This would enable expert users to adapt MassSpecWavelet for specific needs. Second, MassSpecWavelet should visualize results and algorithm diagnostics with interactive graphics that promote open-ended exploration of the data. Every dataset is unique and requires a flexible means of visualization in order to detect problems and to discover the unexpected. Finally, a graphical user interface (GUI) should be provided so that biologists are able to use MassSpecWavelet without spending valuable research time climbing steep technical learning curves. Adding metabolomics support to MassSpecWavelet is the priority for this project. General improvements will only receive attention when they directly support the metabolomics efforts. |
|
| Title | Google Gateway to Genomics Literature |
| Student | Adrian Schönig |
| Mentor | Warren A Kibbe |
| Abstract | |
|
SYNOPSIS
G3L or Google Gateway to Genomics Literature is a website, which provides access to recent scientific data and research articles in a visual manner, that focuses on a clear representation of what is new and what is popular among the users - all without scrolling. BENEFIT & PROJECT DETAILS Inspired by Newsmap (http://www.marumushi.com/apps/newsmap/newsmap.cfm), G3L immediately attracts attention by its visual appearance. Items on the website are arranged over the whole screen, taking advantage of current high-resolution or widescreen displays, while assuring readability and a clear design. Depending on the popularity among the readers and on its age, items are be highlighted, e.g. by increasing the font size of the heading or applying different colours. The data for the website is collected by spiders, that retrieve and parse web content from various relevant internet sources. The different sources are used to provide the grouping for the articles. The website is developed using the Ruby on Rails (RoR) framework and a MySQL database. This allows for an open and modular style of programming, while using AJAX techniques to provide an easy and attractive user experience. This is, in particular, used to load details for a particular item on the screen upon request by the user. |
|
| Title | GeneQuad summary for GeneRIF using N-Gram Markov Model and other techniques |
| Student | Daniel Baggio |
| Mentor | Pan Du |
| Abstract | |
|
- Goals and Project Interest for 2007 SoC
I am primarily interested in the GenQuad project. The goal of this project is to summarize the function of each gene using four keywords. The source of information to find which words will be used is mainly "geneRif" (ftp://ftp.ncbi.nih.gov/gene/GeneRIF/generifs_basic.gz). Since this file records almost 500,000 descriptions, some approaches will need to be tested. A good approach is to use the Word Level method, so that word properties, stop-words, stemming, frequent N-Grams and Thesaurus techniques may be applied. The weight of each one of them will need to be measured, and a gold-standard will need to be defined. Since professionals from the field are the ones who can better evaluate what is a good summary for the genes, some feedback from them might be needed. One technique that will receive more focus is the "Frequent N-Gram" one. Since it has an easy dynamic programming algorithm, and yields to good results in other areas, this technique will be deeply explored. Another apprroach would be using "Approximate N-Gram Markov Model" (http://nlg3.csie.ntu.edu.tw/conference_papers/qualic1994b.pdf), which describes an O(n) algorithm for such implementation. The quality of both algorithms must be evaluated. In the word level field, we also want to determine whether CAP algorithms are suitable. Implementing such algorithms and comparing to the gold-standard may prove it. One paper used to get some previous experiences will be (http://www-nlpir.nist.gov/trec/pubs/trec12/papers/ntu.genomics.pdf) Another interesting field would be exploring the Document Level. Topics such as Summarization, Single Document Visualization and Text Segmentation algorithms will be used to evaluate if techniques in this field are suitable for the task. During my research, I will examine open source text mining tools so that previous work may be added in short period. Main Text Mining tools studied will be GATE(http://gate.ac.uk/), WEKA (http://www.cs.waikato.ac.nz/ml/weka/), MALLET (http://mallet.cs.umass.edu/index.php/Main_Page) and LingPipe (http://www.alias-i.com/lingpipe/). Besides all the research work, I intend to provide the results in a web-enabled database, for easy query retrieval, using AJAX technology. Since I’ve had a lot of experience in a software factory, these approaches will be quite straightforward. |
|
| Title | Automate and beautify creation of universal binaries for ports that need to be built more than once and then run lipo on |
|---|---|
| Student | Elias Pipping |
| Mentor | Markus Weissmann |
| Abstract | |
|
In order to allow for complex, non-standard, or configure-lacking ports to built universal binaries, often configuring and compiling for a single architecture is required, once for every requested architecture (2 for 32bit u.b., 4 for 32bit+64bit u.b.). After every such run, the output needs to be backed up to a temporary location. Once that is done, lipo needs to be run on all those files.
Openssl is the first port that allowed for building u.b. in such a way, everything from line 50 on deals with u.b.. http://trac.macosforge.org/projects/macports/browser/trunk/dports/devel/openssl/Portfile I'd like to automate and beautify such universal variants through functions, as described here: http://trac.macosforge.org/projects/macports/wiki/SummerOfCode#Task8:Portfiles e.g. functions for lipo and backing up are needed. |
|
| Title | Port isolation while building |
| Student | Eugene Pimenov |
| Mentor | Paul Guyot |
| Abstract | |
|
I'm going to implement building port in isolated environment. I'll add to inject library ability to reject attempts to read file, so program will se only ports which was wrote in portfile.
Now inject library communicate with tcl code and can log read attempts. We need to add backward communication. So inject library should ask read-abiltiy for every file. To reduce performance penalty we need to cache on library side. |
|
| Title | New Repository Backend |
| Student | Chris Pickel |
| Mentor | Paul Guyot |
| Abstract | |
|
A universal need of package managers such as MacPorts is the ability to track dependencies between packages and determine if one package needs to be installed to support another. There are, however, some important deficiencies in the MacPorts dependency resolver, and in fact, in package managers in general. I propose to address these issues in MacPorts by designing a new repository backend for tracking ports, and an appropriate suite of functions to query it.
This backend will be capable of tracking a wider range of requirements: in particular, it will let packages request particular variants and versions of other packages. This is important to the MacPorts project because it will improve the reliability of the dependency system. Additionally, the dependency graph will be represented in such a way that it will be possible to identify stages of installation that can be performed simultaneously. This is important because, as processors tend towards parallelization, it will be necessary to split the process of installation into concurrent tasks. |
|
| Title | GeoClue for Maemo |
|---|---|
| Student | Jussi Kukkonen |
| Mentor | Henri Bergius |
| Abstract | |
|
Location-awareness would open various new possibilities for Maemo-based
devices. Examples of such possibilities include a camera application that automatically tags pictures with a 'taken at' address or an automatic timezone setting. At the moment adding location-awareness to applications is so difficult that only specialized applications, like gps-map software, do anything at all based on the users location. The goal of this project is to provide Maemo application developers with a easy to use API for basic location-services, like acquiring current coordinate position or street address. To reach this goal I plan to package the GeoClue library for Maemo and to develop the necessary user interface to make GeoClue functional from the end-user perspective. Links: http://geoclue.garage.maemo.org/ -- Project home http://vilunki.wordpress.com/ -- project blog http://maemo.org/ -- Maemo home http://geoclue.freedesktop.org/ -- Geoclue home |
|
| Title | Japanese/Chinese handwriting recognition on Maemo |
| Student | Mathieu BLONDEL |
| Mentor | Makoto Sugano |
| Abstract | |
|
A project was recently added on "garage" [1] to add the CJK (Chinese, Japanese, Korean) support on the Maemo platform. With about 1.5 billion people using CJK in the world, this allows the Maemo platform to target a much broader population.
However, a feature which is extremely common in the PDA with a touchscreen is still lacking: handwriting recognition. Handwriting recognition is useful when people want to input a character that they cannot read and thus cannot input with the standard input method. This of course often happens to foreigners learning CJK but also to native speakers when it comes to unusual characters. That is why handwriting recognition makes so much sense for Japanese/Chinese PDA. Other possible applications of handwriting recognition include dictionaries and character (kanji) learning games. This Google Summer of Code project aims to add support for Japanese/Chinese handwriting recognition using tomoe. [2] Focus will be on performances and smooth integration with the current input system and latin character recognition. [1] https://garage.maemo.org/ [2] http://tomoe.sourceforge.jp |
|
| Title | Working on implementing simplified NGS |
|---|---|
| Student | Erik Dalén |
| Mentor | Lukáš Lalinský |
| Abstract | |
|
The purpose of this project is to implement the simplified NGS scheme specified at:
http://wiki.musicbrainz.org/LukasLalinsky/NGS The goal is to reach at least step 5 on that roadmap. |
|
| Title | Improved BPM detection |
|---|---|
| Student | Micah Lee |
| Mentor | Albert Santoni |
| Abstract | |
|
The purpose of this project is to analyze and improve upon the beat detection algorithm implemented in mixxx. The project will begin by analyzing Mixxx's implementation of the "Real-time beat estimation using feature extraction" method for areas where the current code could be improved. Then, research will be conducted to determine what other methods/libraries are available for real time beat estimation. Using the results, either the current implementation will be improved upon or at new method will be implemented.
|
|
| Title | LADSPA Support in Mixxx |
| Student | Paweł Bartkiewicz |
| Mentor | Albert Santoni |
| Abstract | |
|
LADSPA [1] is an acronym for Linux Audio Developers Simple Plugin API. It is a standard for audio processing plugins, mainly filters and effects. Currently, many free software projects benefit from using these plugins, which let the users apply both simple and advanced effects to their audio signals without forcing developers to spend time implementing filters which already exist. The spare time can then be assigned for implementing other features, perhaps more innovative. Despite the name beginning with "Linux", so far LADSPA is the most cross-platform widely adopted solution for audio plugins.
At present, Mixxx is offering only a built-in flanger effect. Therefore the goal of my project is to implement support for LADSPA plugins within Mixxx. [1] http://www.ladspa.org |
|
| Title | Interactive Wiki Maintenance with Jabber/XMPP |
|---|---|
| Student | Karol Nowak |
| Mentor | Alexander Schremmer |
| Abstract | |
|
Nowdays, wikis are widely used as tools for fast and efficient sharing
of knowledge, that in contrary to other forms of Internet communication (like IRC or IM networks) offer persistence and encourage collaboration by providing full access to the information. Various means of control are used to keep the content from being corrupted either by malicious users or plain mistakes. These include full logging, tracking of changes and author/admin notification systems. A common use pattern also includes using 'talk pages' to discuss changes being made to the content. I find email notification systems slow and not interactive, and as a natural consequence of this, I believe that developing means of interactive, Jabber/XMPP-based content handling might greatly improve the usability of the MoinMoin project. This would include: Jabber/XMPP notification of subscribed users (useful to fight spam or keep track of changes made to heavy-traffic pages), simple editing options like adding a comment at the end of the pages (again, tremendously useful for talk pages as all the user has to do, is write a reply in the IM client) and efficient anti-spam fighting measures (an option to revert a particular change with one command). This functionality should be implemented in a separate daemon, to reduce latency and overhead of networking operations. Progress is being tracked here: http://jabba.pl/grzywacz |
|
| Title | Automatic classification of wiki pages and extending security system. |
| Student | Marian Neagul |
| Mentor | Reimar Bauer |
| Abstract | |
|
Project Description
The Classification Feature will provide MoinMoin the ability to automatically group related wiki pages based on user feedback and to implement new actions (notification) when new content is added. The project should implement state-of-art algorithms like: Bayesian classification, Support Vector Machines or Artificial Neural Networks. The other features that I am interested would help to provide a more secure and usable MoinMoin. Project Motivation Currently, MoinMoin does not provide a way to classify wiki pages based on their content and these feature would allow big MoinMoin installations to provide supervised or unsupervised text classification. |
|
| Title | Windows.Forms.Designer |
|---|---|
| Student | Ivan Zlatev |
| Mentor | Miguel de Icaza |
| Abstract | |
|
=== Introduction ===
Hi! Firstly a bit about myself. I am a second year BSc. Software Engineering student in the University of Hull, UK. I've been interested in .Net since I got my .Net 1.0 Beta 1 CD and I've been following the Mono project for almost 2 years now. Event though Mono has quite a decent Windows.Forms support, being actively worked on, as a Mono and also a GNU/Linux user and developer I am not able to design Windows.Forms interfaces, nor edit alreadyexisting ones in a visual and pleasant way. I've been researching on the topic since summer 2006. === Summary === This project is targeting at: 1) Providing an implementation of the .Net 1.1 and .Net 2.0 Design-Time stack for the Mono Class Library, mostly hosted in the System.Design assembly and .Design/.Design.Serialization namespaces. The stack consists of: * A DesignSurface (Host) * Windows Forms Designers * ASP.NET Designers - not targeted by this project. * Serializers It should be noted that SharpDevelop relies on this stack. 2) Integration in MonoDevelop to enable: * Designing Windows.Forms interfaces * Full forward and backward compitability with Visual Studio generated interfaces. === Status and TODOs === The project is hosted at http://monodt.i-nz.net and managed via Trac and Subversion. It currently provides an initial .Net 2.0 ready implementation of the DesignSurface and .Net 1.1 ready core Windows.Forms designer stack, which allow dragging and droping, selecting and resizing controls. Initially development was done on Windows and MS.Net, but after 2 bugfixing cycles, which introduced about 15 bugfixes and patches in the Mono Class Library related to Design-Time behaviour the code works fine on Mono and the development has moved to Linux/Mono. TODOs are: * Improve selection, drag and drop and resizing behaviour and design * Implement the Serializers * Merge with Mono's class library * Implement the specific Windows.Forms designers per Control basis. * Update core designer stack to .Net 2.0 * MonoDevelop integration * Extensive testing |
|
| Title | FastCGI ASP.NET Server |
| Student | Brian Nickel |
| Mentor | Marek Habersack |
| Abstract | |
|
Very few web servers are supported by mod-mono-server, namely, XSP and Apache. More servers support FastCGI, either internally or through a module, including Apache, Microsoft IIS, Netscape, SunOne, and others. As such, a FastCGI mono server could improve mod-mono-server's market share.
The primary target is: 1. A FastCGI bridge to XSP, similar to mod-mono-server. 2. A configuration page (aspx) and a web service to adjust or reset the server's configuration remotely. 3. Create sample configurations for common server setups, prioritizing based on market shares. Secondary targets (as time permits) would be: 1. Creating a test program which determines the optimal FastCGI settings for a given computer. 2. Configuration software which uses the configuration web services, console, Gtk#, and/or Windows.Forms 3. Implement a FastCGI 1.0 authorizor, so that HTTP Authorization could be handled through through mono. |
|
| Title | WYSIWYG Editor for Monodoc and MonoDevelop |
| Student | Hector Enrique Gomez Morales |
| Mentor | Mike Kestner |
| Abstract | |
|
The Mono Project is one of the fastest moving open source projects, this a very good
thing but the work done in the area of Documentation is lacking and the amount of documentation to be reviewed or created is huge. So to close this increasing gap an application that helps in the creation and edition of documentation with a very low learning curve is not only good but a necessity for the project. So a WYSIWYG Editor will be integrated into the Monodoc application that will make it easy to edit the documentation, there will be an option in Monodoc to enter Edit Mode that will present to the user with 2 panels: one panel with a "Documentation Palette" (in style of the Dia palette of the widgets palette in Monodevelop) and another panel where the document will be shown. The user will drag elements from the palette and drop them in the document and the editor will restrict the drop of certain elements depending in the visual context of the area where the user is trying to drop the element. This functionality will be abstracted so that it can be used for a plug-in for MonoDevelop, so that any ECMA documentation is associated to the editor. |
|
| Title | Gendarme project development |
| Student | Lukasz Knop |
| Mentor | Sebastien Pouliot |
| Abstract | |
|
The aim of this project is to make a substantial contribution to the Gendarme project, akin to Microsoft's FxCop or Java-based FindBugs, for performing static code analysis. Static code analysis means inspecting code without running it - in case of ECMA CIL resulting in inspection of the code after it has been compiled to intermediate language. Static code analysis is a powerful tool for developers who strive for high quality of their code. Although it can not replace human code reviews, it is invaluable in pinpointing bad practices, finding omissions or common mistakes.
|
|
| Title | MonoDevelop Database Improvements |
| Student | Ben Motmans |
| Mentor | Miguel de Icaza |
| Abstract | |
|
MonoDevelop currently has some tools to allow browsing of databases inside the IDE and an editor to write SQL queries. However, these features are currently very basic and could use some serious improvements.
During the summer, I would like to add the following features to MonoDevelop: * SQL parsers to provide syntax checks and code completion * Graphical database overview * Graphical Database designer * Database unit tests * ... |
|
| Title | On WCF, NetPeerTcpBinding and PeerResolvers |
| Student | Marcos Cobeña Morián |
| Mentor | Atsushi Enomoto |
| Abstract | |
|
It's been now more than 5 years since I started playing with Mono. .NET platform has become in those last ones one of the most powerful tools for developers from a large variety of architectures, thanks to the existence of Mono Project, which has made possible a true fact as portability is.
Today, we live in a connected world where communications play an important role on this exciting 'second life'. WCF is one the doors to the very close future so it's worth to work on a robust base for this technology, and even more exciting inside a community as the one Mono has. That's my application: to help on improving WCF, and work on WCF core to allow Mono keep on climbing as in some other areas currently does. |
|
| Title | Ribbons Widget |
| Student | Laurent Debacker |
| Mentor | Mike Kestner |
| Abstract | |
|
Build a Ribbons widget similar to the ribbons found in Office 2007. The widget would be written in C# targeting Gtk#. This includes the tabs, the ribbon below the tab, groups, and both large and small buttons. Both button format would support drop-down menu with more actions. If the ribbon is not large enough for all groups, some groups will be minimized to a single button which can be used to display a drop-down menu with the real content of the group.
|
|
| Title | MonoTorrent Gtk# GUI |
| Student | Jared Hendry |
| Mentor | Alan McGovern |
| Abstract | |
|
This project aims to take advantage of previous SoC work on the MonoTorrent library and interface. Currently there is a very limited Gtk# client developed using MonoTorrent but severely lacks the regular options a user would expect from a BitTorrent client.
I intend to further develop the existing MonoTorrent gtk-sharp interface and provide GNOME with a feature complete BitTorrent client to compliment the other quality applications available to GNOME users(Banshee, F-Spot, Tomboy). I am keen on seeing the MonoTorrent Gtk# GUI standing beside KTorrent and uTorrent. |
|
| Title | Gendarme Tasks |
| Student | Nestor Salceda Alonso |
| Mentor | Sebastien Pouliot |
| Abstract | |
|
The purpose of this tasks are the following:
* Create 2 new runners, one for Gtk# and other for Managed Windows Forms, for help developers to create / edit / customize the rules.xml file. And help the running detection process. * Create a set of new rules for detect bad smells in the source code, for example the smells in the Fowler's book called 'Refactoring: Improving the design of existing code'. These smells are, duplicated code, long method, large class, long parameter list ... * Set of new rules for check code guidelines, for example the mono ones. We can check casing and other stuff, and document it. Help contributors to add value and send patches and gendarme and the rules check some code guidelines, and warn from rule violations. * Rules for get synchronized the classes, and namespaces. For example, if you only use a class and put the using directive; and then you give up use the class, the using directive could be written in top of the code and you don't need use this namespace. * Integrate Gtk# runner with Monodevelop. This is the perfect complement for Monodevelop, you are developing an application; and then, you could check the rules with only check a button. I will take the Gtk# widget and embed into Monodevelop. * I'm an open minded people, and I could write some new useful tasks if I have more ideas or suggestions. |
|
| Title | Adding C/C++ support in MonoDevelop |
| Student | Marcos David Marín Amador |
| Mentor | Michael James Hutchinson |
| Abstract | |
|
My goal is to create a MonoDevelop Add-in that adds support for C/C++.
* Create a new C/C++ project * Choose project template (Console Application, Dynamic Link Library or Static Library). * Load a previous C/C++ project * Add existing and new files into the project * Configure global C/C++ options (Compiler, include paths, bin paths, lib paths). * Configure project specific options (extra compiler arguments, project specific include paths, project specific bin paths, project specific lib paths, code generation, output, pkg-config extra arguments). * Pass project's references to pkg-config. * Code completion using ctags (similar to the vi implementation, but with a more modern feel to it). 75% of the time will be dedicated to implement and improve as much as possible code completion, since the rest doesn't take that much time and I really want a powerful code completion implementation. If I finish this before GSoC finishes I will work on integrating with autotools. |
|
| Title | Banshee - Porting Banshee to Windows |
| Student | Scott Peterson |
| Mentor | Aaron Bockover |
| Abstract | |
|
Banshee is a music playback and management app for the GNOME desktop built on the Mono runtime. Capitalizing on Banshee's platform-independent design, this project will fully port the program to the Windows desktop. In addition to providing our Windows brethren with the best open source music player ever, this project will forward the effort to test Mono/Windows compatibility in an important direction: bringing a Linux application to Windows. Major work will include porting hardware support, CD-Burning, and media playback to Windows. At the conclusion of this port, Banshee should support Windows as a stable build target for many releases to come.
|
|
| Title | Gendarme: The problem finder |
| Student | Nidhi Rawal |
| Mentor | Sebastien Pouliot |
| Abstract | |
|
As mentioned Gendarme contains a couple of rules but lacking simple rules that are very important for good performance and correctness of the program. I am planning to implement some simple rules in Gendarme regarding naming conventions as well as rules that will help
improve performance, correctness, remove dodgy behaviour and also detect inefficiently written code in the program. I'll implement 13 simple rules regarding naming coventions that can be added to the category "Gendarme.Rules.NamingConventions" which can be created and 22 normal rules out of which some can be categorized into "BadPractice" or some other more general category. Some rules can be added to existing "Gendarme.Rules.Correctness" and "Gendarme.Rules.Performance" categories. And for some rules new category "Gendarme.Rules.DodgyBehavior" can be created. As required, I'll be using C# to implement the rules. I have chosen C# among other .Net langauages because I have prior exposure to C#. |
|
| Title | User Management Improvements |
|---|---|
| Student | Andrei Băutu |
| Mentor | Yu Zhang |
| Abstract | |
|
I want to add some features to Moodle that will make user management easier and faster. Most of these features are inspired by the phpMyAdmin application which allows operations to be performed on a single entity (e.g. table) through a single click, but it also allows same operations to work on groups of entities (after selecting the group members and the required operation). Other features that will be added or improved in Moodle are related to user accounts import/export. I recently needed to copy some user accounts from one Moodle installation to another one (both using the same Moodle version) and it was quite a task. I will also implement the ability for professors to attach notes to user accounts, and to course creators to specify the time for manual enrollments.
|
|
| Title | Extending and Improving Quiz Questions |
| Student | Adriane Boyd |
| Mentor | Tim Hunt |
| Abstract | |
|
I propose to update Moodle to add several new types of quiz questions and to update the student and teacher interfaces for a number of existing question types to make them easier to use. The new types of questions would include click on an area of an image, Likert/opinion scale, and file-upload response questions. The Likert and file-upload questions can be adapted from other types of activities already available in Moodle. A new ordering question type would be created separate from the existing matching question type to allow more flexibility in the student interface and grading options. New drag and drop student interfaces would be created for both ordering and matching questions with a fallback similar to the current matching question type. Matching questions and the multi-select option in multiple choice questions would be updated to include more grading options and a graphical user interface would be developed to improve the teacher interface for cloze questions.
|
|
| Title | Command line installer and upgrader for Moodle |
| Student | Dilan Anuruddha K |
| Mentor | Penny Leach |
| Abstract | |
|
This project will make possible to install and upgrade Moodle using command line interface. Functionalities will be the same as that are given in the web based installation of Moodle. Scripts are to be done in PHP. All the scripts will support platform that will support PHP.
|
|
| Title | Epaile: Automated Grading for Computer Programming Assignments |
| Student | Arkaitz Garro Elgueta |
| Mentor | Nicolas Connault |
| Abstract | |
|
This project has the objetive to develop a plugin for Moodle, making it able to grade computer programming assignments automatically. This plugin is based in actual Assignment module, that gives us an easy way to allow students to upload any digital content for grading.
Epaile will make it easy to create new assignments and define the actions used to compile, execute, and evaluate student code. When students submit their solutions, Epaile will compile, execute and evaluate the code, acording with solutions defined by teacher. Initialy, Epaile will support Java and C++ programming languages, but it will be plugin based, so new languages can be added if needed. This application will provide to teachers the way to organize students grades and of course more free time, and to students the possibility to know their grade inmediatly, and also check their evolution in course. |
|
| Title | Messaging improvements |
| Student | Luis Filipe Romão Rodrigues |
| Mentor | Moodle |
| Abstract | |
|
I plan to do messaging improvements, this would include the creation of a messaging class that all modules should use and better configuration of how the user receives its messages.
|
|
| Title | Moodle – Social Networking Features |
| Student | Luiz Cruz |
| Mentor | Moodle |
| Abstract | |
|
Moodle is great tool for students and educators. It allows the creation of an effective online learning community, expanding the boundaries of education beyond regular classrooms. By adding social networking features to Moodle, the sense of belonging to a community in such an online environment would grow even stronger. Members would be able to describe and share their interests in a systematic way, increasing the potential for interactions among them. It would be possible for members to find, connect to, and share ideas with people having similar interests.
One way to make these types of interactions possible is to let users describe their interests with tags. The vocabulary of these tags would be created by the members of the community. When a member wants to describe one of his interests, he would search for tags that others have been using for that purpose. The tags a member has would appear in his profile, so that others would know what his interests are. Each tag would be linked to a page where there could be a description of it, a searchable list of members that have this tag and possibly some kind of collaborative tool (wiki, a forum or a blog). One other feature that would also be very helpful for moodle users to connect and stay in touch with peers would be a “friends list”. Social networking tools such as Facebook and Myspace have shown that this is a concept of great value to users. This feature would increase the involvement of users in the community, making them feel connected to it and to their colleagues. Members would be able to add friends to their list, which would appear in their profile. |
|
| Title | Moodle Voice |
| Student | Mayank Jain |
| Mentor | David Jesús Horat Flotats |
| Abstract | |
|
The objective of this project is to provide a Multimodal interface to Moodle so as to navigate it with voice with a VoiceXML enabled browser, such as Opera. Multimodal interaction provides the user with multiple modes of interfacing with a system beyond the traditional keyboard and mouse input/output.
Making Moodle voice enabled will help disabled people, specially blind and motor disabled, to interact with this great e-Learning tool. Not only that, but also this gives another input interface which can be used to interact faster with the application. I will be implementing voice navigation and form filling through voice. I will be using VoiceXML, an XML language for writing Web pages you interact with by listening to spoken prompts and control by means of spoken input, and customized scripts to implement the above functionality. Detailed Plan can be obtained from my website: http://mayankjain20.googlepages.com Contact @gmail:mayankjain20 |
|
| Title | Enable Roaming Support in Thunderbird |
|---|---|
| Student | Nick Kreeger |
| Mentor | David Bienvenu |
| Abstract | |
|
In a situation where a Thunderbird user has an installation at work and at home, there is a very obtrusive way of synchronizing personal settings such as mail filters and address book contacts. If a user wants to keep his or her personal settings consistent on both installations, the process would be very intensive and involve manual copying of the contents of the files between the installations.
My solution would give the user a synchronization feature that would transfer their personal settings between one or more profiles. The synchronization would store the desired information in an IMAP folder, and be passed back and forth between profiles to keep the data concurrent. Another option would be to implement the same type of synchronization in a server-less configuration. The type of synchronization would be carried out over an email message, and eliminate the need for IMAP server synchronization. |
|
| Title | Implementing cross-session download resume |
| Student | Srirang G Doddihal |
| Mentor | Dan Mosedale |
| Abstract | |
|
Abstract
========= This project consists of implementing download resume across different sessions of Mozilla Firefox, i.e if at all the browser was closed or the system itself was shutdown when a download was going on, the download can be resumed when the browser is started the next time. Firefox currently supports pause and resume within the same session. Currently there is no support for appending new data to the partially downloaded files. The project encompasses solving this problem also. With this project Firefox will have a feature that is available with only a few top download managers. Firefox users can rely on its native download manager in case of bad internet connection or frequent power failures. |
|
| Title | Link Fingerprints |
| Student | Edward Lee |
| Mentor | Gervase Markham |
| Abstract | |
|
Link fingerprints allow clients such as Firefox to check automatically the validity of a file and inform the user if the retrieved file is not as expected. The primary usage would be to ensure that files downloaded to users are exact copies of what the provider intends. But link fingerprints can also validate embedded page content (image sources, script files, object references) as well as other resources (html, xul, xpi).
|
|
| Title | JPEG2000 Support for Firefox |
| Student | Benjamin Karel |
| Mentor | Stuart Parmenter |
| Abstract | |
|
JPEG2000 is a standard for compressing photographic images. It produces higher-quality images at smaller file sizes than the current web standard, JPEG, but the only browser to offer native support is Safari. Because of this, it is unfeasible for web sites to use JPEG2000, since they must assume their images would not be rendered.
I propose to write a new extension that will add JPEG2000 support to Firefox. Hopefully this will be the first step towards seeing ubiquitous support for JPEG2000 on the web. The benefits of ubiquitous JPEG2000 support would be direct. If Google, for example, saves 150 GB/day in bandwidth by serving smaller JPEG2000 files from Images, it alone could save twenty seven thousand dollars a year in bandwidth fees. End-users benefit too, by downloading smaller images that look better than what the current standard offers. This project will be implemented as an extension for Firefox. This will allow any interested user to view JPEG2000 images inline, while at the same time avoiding unnecessarily large changes to Firefox's trunk source code. It may also spur advocates of other image formats to write similar extensions, thus further strengthening Firefox's ecosystem. The full proposal may be viewed here: http://eschew.org/projects/soc/2007/application.html I may be contacted at {my first name}@{the above domain} |
|
| Title | Microsummary Generator Web Service and Application Improvements |
| Student | Ryan Flint |
| Mentor | Michael D. Melez |
| Abstract | |
|
The goal of this project is to enhance the usability and discoverability of microsummary generators for users and provide features that enhance the abilities of generator and content authors to convey their information easily and in a format beneficial to their users. Through this project I intend to provide incremental improvements to the microsummary service itself as well as an open web service integrated into Remora to allow generators to be as easily distributed as extensions and themes. I also intend to upgrade my Microsummary Manager extension to make use of the new web service in order to provide users with visible notification within the UI of available generators for the page they're currently visiting.
|
|
| Title | Camino : Tabosé |
| Student | Jeff Dlouhy |
| Mentor | Stuart Morgan |
| Abstract | |
|
I will add functionality and eye candy to Camino by implementing Tabosé. Tabosé will make it easier to switch between tabs and see all the sites you currently have open. At WWDC ’06 Bertrand Serlet, Vice President of Software Engineering at Apple stated that at first, software needed function, then ease of use, and now needs a “wow factor.” Tabosé will be the feature that adds the “wow factor” to Camino.
|
|
| Title | Integration of Mozilla Thunderbird with Windows Vista Desktop Search |
| Student | Damitha Pahan Fernando |
| Mentor | Scott MacGregor |
| Abstract | |
|
The integration of Mozilla's popular Thunderbird mail client with Windows Vista's new index based search tool is a feature that the TB community has been requesting for sometime. The main goal of this GSoC project is to develop of a protocol handler for Windows Vista desktop search tool that will enable it to crawl through TBs messages and index them and eventually TB users will able to search within their messages through windows vista desktop search.
|
|
| Title | Firefox automation & Tinderbox integration |
| Student | HARISHANKARAN K |
| Mentor | Nagappan |
| Abstract | |
|
*Synopsis*
Firefox 3 automated smoke-testing using Linux Desktop Testing Project. Tinderbox integration of LDTP results. *Benefits to Community* Automated testing will result in finding the bugs in the new releases of firefox sooner and easier which in turn will help in fixing the bugs sooner. *Deliverables* I will be integrating tinderbox with ldtp. Test scripts for Mozilla Firefox. |
|
| Title | Title: MySQLXplorer: Enabling Keyword Search in MySQL Applications |
|---|---|
| Student | Mayssam Sayyadian |
| Mentor | James A. Starkey |
| Abstract | |
|
Internet search engines such as Google have popularized keyword based search. Applications in which plain text coexists with structured data are pervasive, examples of which are CRM and Knowledge Management applications among many MySQL customers. The simplicity of keyword search as a querying paradigm offers compelling values for data exploration. Specifically, keyword search does not require a priori knowledge of the database schema and its catalogs. The above is significant as much information in a corporation is increasingly being available at its intranet.
Currently, MySQL provides indexing and querying capabilities for textual attributes that incorporate information retrieval (IR) relevance ranking strategies, but this search functionality requires that queries specify the exact column or columns against which a given list of keywords is to be matched. This requirement can be cumbersome and inflexible from a user perspective: good answers to a keyword query might need to be 'assembled' 'in perhaps unforeseen ways' by joining tuples from multiple relations. Moreover, casual users, usually have little knowledge of formulating keyword queries using SQL extensions, not to mention they are - in many scenarios - more interested to discover unexpected answers that are often difficult to obtain via rigid-format SQL queries. MySQLXplorer operates on relational databases and facilitates information discovery on them by allowing its user to issue keyword queries without any knowledge of the database schema or of SQL. The system administrator will use a Web interface to specify the database and its desired tables to publish for keyword search. Then the typical user will connect to a Web application, with an interface similar to other Web search engines, to query the database. MySQLXplorer returns qualified joining networks of tuples, that is, sets of tuples that are associated because they join on their primary and foreign keys and collectively contain the keywords of the query. The answers to a keyword query are ranked based on their similariy to the keywords, how strong the keywords are correlated in every answer, and other properties that can be specified through the scoring API of the MySQLXplorer. |
|
| Title | MySQL Auditing Software |
| Student | Umair Mehmood Imam |
| Mentor | Sheeri Kritzer |
| Abstract | |
|
Project:
Development of a MYSQL Auditing Software. Modules: The separate aspects of the software are: 1). Netowrk Process : Monitoring of packets through a network of nodes 2). Graphs and Reports : Reports showing the statistics accompanied with the graphs 3). Administrative interface Building on the concept of the "poor man's query profiler" at http://forge.mysql.com/snippets/view.php?id=15 , this project entails developing a process to listen to network packets to find MySQL packets destined for a server, and keeping a copy of the packet to use in the auditing of what commands are sent to that MySQL server. This project can accommodate a light or heavy workload, and one or more students. The separate aspects of the software are: Network process: process to intercept network packets on a separate machine (in the same network range) for full access to information being sent to the database without causing any load on the MySQL server or interference with the queries. This process should also parse the queries and be able to store them in its own database. Graphs and reports: This module will show statistics and graphs. Administrative interface: This will take user input and write to the configuration file that the "network process", described above, will read to determine which queries to keep and which to not worry about. It will also configure the "graphs and reports" desired by the user All deliverables will be released under the GNU General Public License |
|
| Title | IPv6 network support |
| Student | Miloš Prodanović |
| Mentor | Brian Aker |
| Abstract | |
|
IPv6 network support
|
|
| Title | A PERL based Command Line Interface to a Topological Query Application for BioSQL in Support of High Throughput Classification and Analysis of LTR Retrotransposons in Plant Genomes |
|---|---|
| Student | James Estill |
| Mentor | Hilmar Lapp |
| Abstract | |
|
A biologically relevant classification scheme is at the heart of any study of the distribution and abundance of biodiversity. This statement holds across biological scales ranging from the taxonomies of complex vascular plants to the ontologies of the genes and transposable elements that the genomes of these plants contain. A robust and biologically meaningful classification scheme is thus the cornerstone of any analysis of transposable elements. As a biologist interested in the influence of infrastructural genomic features on the distribution and abundance of LTR Retrotransposons in plant genomes I am therefore developing the “RepMiner” application which takes a graph theory based approach to the classification and assembly of the repetitive fraction of plant genomes. The current results of this research have identified putative LTR retrotransposon families that have been previously been named as separate families under existing nomenclatural systems. Future application of this approach will allow for the assembly and classification of LTR retrotransposons from partial genomic data sets, and will provide the framework required to study the evolution of LTR retrotransposons across plant lineages and within genomes.
A current development need of the RepMiner approach is to convert these putative classifications into phylogenies representing the history of the individual LTR retrotransposons within these families. This research will generate a large number of phylogenies produced by multiple compute nodes and would require that these phylogenies be flexible to permutations in tree topology. This phylogenetic evaluation would therefore benefit from the use of a flexible SQL based phylogenetic database. My participation in the NESCent proposed topological query application would therefore fit into my individual research needs as well as produce informatics resources that are useful to the larger community. I believe that I am the best applicant to complete this project because: (1) I have experience as an open source developer in both PERL and SQL, (2) I have informatics experience as a researcher studying aspects of comparative biology at the genome scale that has contributed to peer reviewed publications, (3) the goals and timeline for this specific project are in line with my research goals over the next six months, and (4) I have an interest in maintaining future collaborations with the NESCent phyloinformatics working group. |
|
| Title | Ajax interface for the XRate command-line tool |
| Student | Lars Barquist |
| Mentor | Ian Holmes |
| Abstract | |
|
Mathematical and computational techniques have completely transformed the biological sciences in the space of a few decades. What were once largely qualitative, descriptive sciences have become more quantitative and mathematical in their approach to studying living organisms. Nowhere is this more evident than in the science of phylogeny.
XRate is a Unix command-line tool for the interpretation and analysis of stochastic phylo-grammars. Given multiple alignments and a phylo-grammar describing an HMM/context-free grammar encoding assumptions about mutation rates, etc., XRate will produce likely phylogenetic trees relating the the given alignments. It is my hope to develop an Ajax front-end for this tool over this summer. |
|
| Title | Multi-language bindings to the C++ NEXUS Class Library |
| Student | Carlos David Suárez Pascal |
| Mentor | Mark Holder |
| Abstract | |
|
NCL (https://sourceforge.net/projects/ncl) is an open source library created for reading and writing of the NEXUS (http://en.wikipedia.org/wiki/Nexus_file)bioinformatics format allowing easy integration of NEXUS in open source applications. NCL supports most of the standard characteristics of NEXUS by means of a object oriented callback-driven design. One drawback of NCL is the non-existing and non-planned extension of NCL to scripting languages such as Python, Perl and Ruby. The goal of this SOC proposal is the development of bindings for these scripting languages employing SWIG, the Simplified wrapper and interface generator, which is an open source tool designed to facilitate the development of extensions from C/C++ to another languages.
This proposal, if it is selected, will deliver bindings of NCL for the three languages mentioned (Python, Perl and Ruby), providing a way for rapid prototyping and easy development of applications supporting the NEXUS format. |
|
| Title | Phylogenetic & haplotype displays for GBrowse |
| Student | Hisanaga Okada |
| Mentor | Lincoln Stein |
| Abstract | |
|
As genomic data from an increasing number of species become known and annotated, the demand to efficiently manage and display the data will increase. The Genome Browser is an intuitive way to display information for one organism by stacking different tracks of information along the sequence in a genome. To further add to this, it is proposed that genetic haplotypes, multiple sequence alignments and phylogenetic trees be added as new information tracks to the browser. It will be envisioned that genomic data for a number of specific tracks for a number of species can be efficiently and intuitively by weaved together giving greater insight to the phylogeny of different organisms.
The proposed timeline and order of activity would be the following: 1) Break down the single image down to its individual tracks. * Have each track write to a single image * Using AJAX, have each track write and display to the web front only when requested 2) For a single organism, add subsets of other organisms’ tracks that have orthologs. * Cache ahead of time sections of a genomes that are related to another organism’s genome sequence / coordinate / gene ortholog * or create a easy to use and update tagging system that refers one point of a genome to another * For a list of related organisms, find a section of their genome that relates to the main organism * Display the appropriate tracks for that organism parallel with the main organism 3) Add the phylogenetic tree viewer * Cache ahead of time how the phylogenetic tree will be organised (TreeJuxtaposer?) * Display sections of the phylogenetic tree 4) Add the multiple sequence alignments viewer * allow zooming in of a particular sequence possibly for a separate display * align with sequence data for other related organisms on different but parallel tracks |
|
| Title | Developing user-oriented, standards-based phylogenomics tools: PhyloSOAP and PhyloWidget |
| Student | Gregory Jordan |
| Mentor | William H. Piel |
| Abstract | |
|
This project aims to apply the standards, tools, and philosophy of modern web services design to a small area of bioinformatics, that of storing, querying, and editing phylogenetic trees. I plan to build upon available open-source bioinformatics libraries (such as Bioperl and Biojava) and data sources (the various taxonomy, ontology, and sequence databases) by creating two new tools: first, a web service for storing and retrieving phylogenetic tree data, and second, a web-based UI component that can utilize the web service to store, edit, and query phylogenetic trees created and modified by the user.
By implementing its functionality using standardized technologies such as SQL, SOAP, and AJAX, this project will explore the ways in which the bioinformatics community can benefit from the large investment of time and resources put into developing the wealth of web standards available today. Specifically, I plan to (a) create a useful tool for phyloinformatics and (b) demonstrate how the specialized use of Web standards and user-oriented design can create a simple, effective, and modular tool for bioinformatics researchers. A brief outline of the project is as follows: 1. Create a web service for storing and querying phylogenetic tree data. a. Use a BioSQL backend for efficient storage and querying of phylogenetic trees. b. Include the capacity for topological queries (see Wang et al. 2005). c. Use Bioperl or Biojava to create a REST- or SOAP-compliant interface to the PhyloSQL backend. d. Evaluate the service for its speed and memory efficiency. 2. Create a web-based front end that allows one to query and manipulate trees stored in the database. a. Research the most desirable language and toolkit (AJAX, Flash, or Java). b. Identify commonly-used manipulations on phylogenetic trees. c. Create a dynamic web-based user interface for creating, editing, and storing phylogenetic trees. d. Document the UI and provide an API for its use and extension. 3. (if all else goes well) Generalize the concept: create a code framework for database-driven, standards-based bioinformatics widgets. |
|
| Title | Visualizing Phylogeographic Information |
| Student | Yi-Hsin Erica Tsai |
| Mentor | David Kidd |
| Abstract | |
|
Phylogeography has enjoyed an explosion of data from research on migration patterns of organisms to studies of population genetics and population structure. However, there is still no easy way to generate maps of DNA haplotype frequency data. Imagine a map with all sample locations marked, and centered on each location a pie (or stacked bar) chart is visible showing the frequency of each haplotype within the population. The size of each pie is proportional to the amount of samples genotyped in that population. Often these maps are drawn by hand in Adobe Illustrator or other difficult to use, proprietary map drawing programs (e.g. ArcGIS). In addition, this procedure becomes unfeasible with larger data sets. This method does not lend itself to viewing and analyzing multiple data sets simultaneously as is becoming more common in comparative phylogeography. I propose to develop a software package that implements such a viewer. This program would have broader applications than just to genetic data, any sort of frequency based information with a geographical component (e.g. % of sunny, rainy, snowy days) could be visualized.
The product would be a web based application with ties to Google Maps or Google Earth. The web application would include a data manager that would export to KML. The KML would be used within the browser for visualization using Google Maps or could be exported to integrate with Google Earth. I envision three main components to develop. First, the data manager is needed to import, edit, and export data. Second, a visualization tool will generate the phylogeographic maps. Third, the visualization tool will be expanded to display multiple datasets simultaneously; for instance to compare haplotype frequency distributions of multiple loci or haplotype frequencies of multiple species. This program will allow manipulation of data within the application (e.g. grouping all rare haplotypes together, or only showing a subset of the populations) to generate new phylogeographic maps without need for creating and loading new input files. The goal for the program is to allow for easy visualization of phylogeographic data on a map and to facilitate subsequent spatial data analysis. This software could be extended to calculate population structure parameters, such as Fst, Da, and isolation by distance. It could also be developed to compute more sophisticated spatial statistics or perform tests of congruence among datasets. |
|
| Title | Implementing a web interface for command line-based bioinformatics tools. |
| Student | James Leung |
| Mentor | Suzanna Lewis |
| Abstract | |
|
This project aims to construct a web-based interface for the xrate tool. Given that the intended audience of xrate includes biologists who are both comfortable working in a Unix environment and those who would much rather work in a GUI or even a web-based environment, the "wrapping" of xrate in an attractive and intuitive interface would allow xrate and other similar tools to access a far larger user base. Ultimately it is hoped that such an interface would then be portable enough to be used on other similar tools to allow for easy deployment of any command line based bioinformatics utility.
|
|
| Title | Biodiversity conservation algorithms and GUI |
| Student | Klaas Hartmann |
| Mentor | Tobias Thierer |
| Abstract | |
|
Conservation managers are faced with the problem of having many species that are in need of conservation but limited funds to allocate to them. This raises the question of which species should be protected. One framework for prioritising species for conservation is the Noah's Ark Problem (NAP). The NAP combines a phylogenetic tree for the species of interest with species specific survival probabilities and conservation costs. The aim of the NAP is to allocate conservation expenditure such that future expected biodiversity is maximised. This results in a computational difficult problem -- the general problem may be NP hard -- however several algorithms have been developed by myself and others to solve variations of the NAP with particular parameter restrictions.
At present no package is available that implements the various algorithms for solving the NAP. The only implementations that exist have been written for individual algorithms by a range of researchers in a range of languages. This severely restricts the application of these results to real conservation problems -- particularly as those people interested in applying these methods (eg. conservation managers) often have little mathematical or programming background. This project will implement the various algorithms for solving the Noah's Ark Problem, thereby encouraging future results to become available in the same package. A GUI will be built on top of this implementation that enables non-programmers to apply these methods and compare species prioritisations with those produced by related simple indices. This will create a common package where researchers can implement algorithms and end users can apply these results to their problems. BioPerl forms a good basis for this project as many related species specific indices are already implemented in Bio::Phylo. This project will produce species prioritisations from Bio::Tree::TreeI compatible objects and conservation information (eg. survival probabilities) using algorithms developed for solving the Noah's Ark Problem. The GUI will be cross platform deployable and easy to install. Good documentation will be produced that thoroughly describes the implemented algorithms and indices. Mentors: Tobias Thierer, Rutger Vos |
|
| Title | Porting ZFS |
|---|---|
| Student | Oliver Gould |
| Mentor | Dieter Baron |
| Abstract | |
|
Sun Microsystem's Zettabyte Filesystem (ZFS), since Nov 2005, has
proven to be a major breakthrough in filesystem technology, supporting features such as disk pools, snapshots, 'unlimited' scalability, and various other performance improvements over prior art. Such advancements will make ZFS a major force in industry in coming years. A BSD-licensed implementation of ZFS is utterly impractical within the constraints of Google's Summer of Code (SoC). However, porting the CDDL'd ZFS implementation present in OpenSolaris is feasible. In particular, Pawel Jakub Dawidek has been able to port a significant portion of ZFS to FreeBSD. His work provides a good basis for porting ZFS to NetBSD. Furthermore, OpenSolaris has published a high-level roadmap for porting ZFS to other platforms. This outlines a path for success, which I shall follow. The primary objectives of this project are: - A functional zpool implementation - Documentation and plan for future development Secondary objectives include: - /dev/zfs - libzfs - ZVOL |
|
| Title | Running Kernel File Systems in Userspace |
| Student | Antti Kantee |
| Mentor | William Studenmund |
| Abstract | |
|
The goal of the project is be able to compile the same file
system code both for userspace and the kernel. This will provide several benefits mostly related to helping development of new file systems, but also benefit in testing existing file system code. A similar idea is running the entire operating system as a process, but it will not provide complete isolation especially in test cases for the implementation under test. As the project is highly nontrivial, the initial goal is to be able to run the same ffs codebase both in the kernel and userspace. The obvious long-term goal, which will be very closely kept in mind, is an environment to run all file systems in kernel- or userspace. Also, this environment should be constructed in a fashion where code duplication and maintenance overhead is minimized as far as possible. The initial plan is to start adapting the NetBSD puffs interface to be able to link in-kernel file systems to and then start solving issues with emulating the "bottom end" of file systems. |
|
| Title | Improving the pkgsrc build system |
| Student | Jörg Sonnenberger |
| Mentor | Johnny Lam |
| Abstract | |
|
The pkgsrc infrastructure has currently three majors issues:
(a) It is impossible to build packages for other architectures. (b) For bulk builds, it is not possible to utilize more than one CPU in a safe manner or distribute builds across a cluster. (c) There's no infrastructure for automatic notification of maintainers when builds failed or to trace the state of a package over time and platforms. The first item is a requirement for moving to modular Xorg from pkgsrc for NetBSD itself. It is insane to try to support full cross-compilation for all packages, but can be done for a restricted subset like Xorg. The second item is about faster bulk builds, resulting in more up-to-date binary packages and better response times for developers. The third item is also important to help developers trace the state of the tree and avoid introduces issues over and over again. To address (a) I want to extend the tool frame work to deal with native vs. host dependencies. It is desired to add support for usin the buildlink3 framework with not-installed packages to allow full non-privileged builds. For (b) I want to either cleanup the existing Python-based prototype of the alternative bulk build system to make it ready for general deployment or implement the core components in C for higher portability. For (c) a combination of more intelligent output from the tools in (b), indices and query tools is planned. |
|
| Title | Hardware monitoring and HAL port |
| Student | Jáchym Holeček |
| Mentor | Quentin Garnier |
| Abstract | |
|
To quote from http://www.netbsd.org/contrib/soc-projects.html#hal
Almost all operating systems provide a way to notify userland of hardware changes. E.g. a new USB device was connected, a CD-ROM was inserted in a drive, a PCI Express card has been removed, etc. Unfortunately, there is no such functionality in NetBSD, which means that it is not really usable on systems where automation on hardware changes is desired. The most obvious example are desktop systems where one wants hardware to be managed transparently. This project aims to bring NetBSD in sync with other operating systems by implementing kernel event notification framework and a userland deamon to observe events and dispatch actions as configured. Events originate in the kernel (individual devices, autoconf(9) framework) and flow towards userland via a character device interface. NetBSD port of Freedesktop's HAL package will be created and provided in Pkgsrc, resulting in better integration between the base system and existing desktop environments -- KDE and GNOME are already available to NetBSD users. Kernel part of the project includes enhancements to the autoconf(9) machinery that are believed to be beneficial for other uses as well. |
|
| Title | Project Lobster enhancements |
|---|---|
| Student | Steven Robertson |
| Mentor | Ugo Riboni |
| Abstract | |
|
The OSD is an embedded media client and server, designed to blur the line between the computer and home entertainment for all kinds of multimedia. Although many comparable platforms exist in this category, to this applicant's knowledge the OSD is unique in being both embedded and open-source. Leveraging this trait will transform the Neuros OSD into a platform with an unmatched level of functionality and compatibility. Ideally, the software developed by Neuros to run on the OSD would provide a common platform for the creation of a variety of community-driven tools and customizations, enabling seamless extensibility for users without sacrificing the integrated user experience of an embedded, application-specific device.
Lofty goals, indeed. Unfortunately, the current state of the OSD's software libraries and development environment makes casual development difficult and uninviting. The existing community acknowledges this. In addition to an ongoing refactoring of much of the existing code to adhere to newer, more effective programming paradigms, there are a few efforts, known collectively as Project Lobster, to create an easy-to-use interface to the OSD's functionality from the lightweight scripting language Lua. Most of these focus on creating simplified bindings for the libraries currently in use at the time, although a few have different goals, such as adding the ability to provide additional menu entries within the OSD's "main app" (in which most functionality currently resides) without having to modify and recompile the (monolithic) program. This project will enhance the level of completeness of Project Lobster. In particular, this project aims to provide plugin functionality to the main application. For more information on Project Lobster, see this page: http://wiki.neurostechnology.com/index.php/Project_Lobster |
|
| Title | ARM/DSP bridge |
| Student | Christiaan Baaij |
| Mentor | Adam Torgerson |
| Abstract | |
|
Project Title
------------- ARM/DSP bridge Synopsis -------- A combinations of userland tools and a linux kernel module to run code on the C54x DSP of the DM320 architecture. Project Details --------------- Currently, the Neuros OSD only makes use of the DSP through closed source libraries that handle the encoding and decoding of video data and the playback of PCM data. The purpose of this project is to write a new interface between code on the ARM side and code on the DSP side. The current vendor of the closed source binaries has not released any specification on their interface and therefor the new interface will not be compatible with the current vendor code. The overall design of the project is the following: - Linux kernel module: Implements device interfaces to the DSP. For a very basic bridge/gateway at least two device interfaces should be present: * DSP control device that is able to reset the device and make it execute the code in the DSP program memory * DSP memory device that provides access to the DSP memory space for the userland application. - Userland application: A control utility for ARM/DSP bridge. Allows the user to load a DSP program and control DSP reset. The most minimal implementation of the project would allow the user to write a program for the DSP that is only able to get data through it's on-chip RAM (which also resides in the ARM memory space). Features that should be added to this minimal implementation before the end of Google Summer of Code: - Messaging service to allow communication between code on the ARM side and the DSP side. (Most likely an interrupt-driven routine). - Allocation of external memory for the DSP (internal RAM is somewhat limited). |
|
| Title | Nmap Scripting Engine -- Infrastructure |
|---|---|
| Student | Stoiko Ivanov |
| Mentor | Diman Todorov |
| Abstract | |
|
During the last SoC Nmap was enhanced by a Scripting Engine, which gave
the opportunity of developing tests on remote hosts or services, in order to get more information about them. While being fairly complete, and easy to understand, these scripts for the main part consist of copied boilerplate code. The aim of this project is to enhance the scripting engine by several nifty features, which would obsolete the copying. Furthermore scripts will become more concise and through this easier to understand. Documenting (the code itself and providing an api and examples) constitutes an major part in the project, because only if the Nmap-users out there know how easy script writing is, they will use it. |
|
| Title | Feature Creeper and Bug Wrangler |
| Student | Doug Hoyte |
| Mentor | Fyodor Vaskovich |
| Abstract | |
|
As I successfuly did last summer for SoC, I propose to work on adding features, fixing bugs, and assisting in other Nmap SoC projects.
|
|
| Title | Feature Creeper / Bug Wrangler |
| Student | Kris Katterjohn |
| Mentor | Fyodor Vaskovich |
| Abstract | |
|
== Top Project Choice (If choosing one from the Nmap ideas page):
'Feature Creepers / Bug Wranglers' == Are you willing and able to do other projects instead? 'Slacker' looks pretty nice :) |
|
| Title | Feature Creeper/Bug Wrangler |
| Student | Edward Bell |
| Mentor | Fyodor Vaskovich |
| Abstract | |
|
Working on a selection of smaller features (common port list/moving massping/port state reasons) and fixing bugs.
|
|
| Title | Custom Memory Heaps and Object Allocators |
|---|---|
| Student | Timothy John Kelsey |
| Mentor | Steven Streeting |
| Abstract | |
|
I will add a number of additions to the Ogre 3D engine via integration of custom manageable memory heaps for both debug and release builds. Allowing for more in depth memory debugging and the use of per object family heaps to improve handling of small object allocations. Overall resulting in a user controlled memory model for Ogre 3D.
|
|
| Title | Emulating Lesser Hardware Capabilities |
| Student | Juozas Gaigalas |
| Mentor | Daniel Wickert |
| Abstract | |
|
Most 3D applications are expected to work on a large variety of machines with widely different hardware capabilities. OGRE is designed with this expectation in mind and includes a simple, but effective mechanism for automatic fallback from advanced to simple graphics techniques (depending on the capabilities of user's graphics card). Although this mechanism is a gift for the end users, it makes things very difficult for the developers of OGRE applications. That is because testing both the advanced and simple techniques at the same time is very hard. There are two options for doing it: modifying the render system code/material definitions to trigger the use of each "level" of techniques and running the same program on several different machines. The second option may not be available to many users of OGRE, while the first option is repetitive, time consuming and error prone. A better solution is to add a new option to OGRE that lets developers force the GPU fallback mechanism. This can be done by emulating the capabilities of less advanced GPUs. With this option testing what an OGRE application will look like on different video card should be as simple as changing a single line in a configuration file and restarting the application. This project does not add any cutting-edge features to OGRE. Instead it makes OGRE more developer friendly by saving developers' time. This means more community growth and more contributions to the OGRE project. Which means more cutting-edge features.
This proposal suggests how to implement this emulation feature in three months. The proposal is split into four parts: interface, which defines how this feature can be used in OGRE applications, implementation, which suggests how this feature could be programmed, a preliminary test plan and the timeline/deliverables for implementing this feature. |
|
| Title | Ogre Material Editor |
| Student | Brian Hudson |
| Mentor | Casey Borders |
| Abstract | |
|
In Ogre, all aspects of an objects visual appearance are encapsulated in a Material. The Ogre Material Framework is a robust system allowing the programmer to define one or more rendering passes and optionally techniques for degrading gracefully based on a number of factors such as system hardware and/or level of detail.
The goal of this project is to develop an editor for Ogre’s Material Framework. The Ogre Material Editor will provide the developer with Material Script and Shader editors, and allow them to enable/disable Passes and Techniques enabling rapid prototyping of new Materials. The Ogre Material Editor will be similar in appearance and functionality to the ATI RenderMonkey™ Toolsuite. |
|
| Title | Game Development Infrastructure |
|---|---|
| Student | Lincoln Quirk |
| Mentor | Kent J Quirk |
| Abstract | |
|
PyGame needs to work well on the XO in order for developers to have an easy time making games. Right now it doesn't work well, and this project will make it work through whatever means necessary.
Requirements: - A robust, platform-appropriate API that facilitates game programming in Python and PyGame on the XO. - A good-looking, well-performing demonstration game ported to the XO platform. - High-quality XO-specific documentation including examples. |
|
| Title | Easy Game Toolkit |
| Student | Patrick DeJarnette |
| Mentor | Kent J Quirk |
| Abstract | |
|
While Pygame is extremely flexible for game development, it can be expanded by creating libraries that focus on simpler constructs commonly found in games. This would reduce the learning-curve of Pygame, especially if children are the intended target, and also quickens game development. Below, I outline some ideas that are far from final, but should give some indication of the initial direction I would take if accepted. These libraries would not be designed solely for the examples below, which merely illuminate certain aspects of the libraries. One idea is the concept of a particle class that has defined shape, position, velocity, and angle can be used to simplify many games in Pygame. One could then add further properties as pairs that represent events and consequences. Examples of events include pressing or holding a key, collisions, global time events, and interval time events, while consequences alter properties of particles. For example, dual-player Pong could be considered as three particles, two of which, the paddles, are similar and have legal events corresponding to up and down keys. One can further simplify by including a general collision detector in the libraries, probably | |