Projects (January 2013)

Markus

MarkUs is a web-based grading tool built with Ruby on Rails. The primary goal of MarkUs is to make it easy for graders to read and annotate students’ code. Graders also fill in a marking scheme or rubric created by the instructor.  Annotations may be saved for later reuse.  Students submit their code using either the web interface or using standard Subversion tools, and can form their own groups when allowed by the instructor. As MarkUs grows, we continue to add more useful features including a REST API that allows some operations on MarkUS to be scripted, a remark request system, more reporting, and support for PDF annotations.  We are also working towards integrating a testing infrastructure that would allow students to run instructor created tests on their submission and get realtime feedback.

Students working on MarkUs will learn basic web application development technologies using Ruby and Rails.  MarkUs is hosted on github so students will become familiar with Git and the process we use when working on the code. Because MarkUs is used by several thousand students in more than 4 universities (on 3 continents!), we take code quality seriously.  All code submissions go through a code review, so the first task that students are asked to complete is fixing a trivial bug so that they become familiar with the code review process.

Potential projects for the coming year include:

1) The highest priority is preparing for a release using Rails 3. (Students with prior Rails experience would be a huge asset in working on this problem.)

2) Enhancing and fixing the remark request system. Our first use of the remark request feature uncovered some showstopper bugs, and some significant UI design issues.

3) Enhancing the grade entry table. MarkUs includes a simple table that can be used to entry grades for tests or labs for example.  It works reasonably well, but is missing some features.  For example, it would be nice to be able to group students by tutorial section, or by TA grading their work.

3) Continuing to work towards implementing user preferences. The most heavily used view by instructors is the submissions table which shows which students or groups have submitted work, the date it was submitted, the repository name, the status of the submission, and other details.  In the interests of latency, we display a limited number of rows at a time, but instructors would like the option to display more or fewer rows and even to hide columns of the table.

4) Implementing some of the user requested features that have been on hold while we complete the port to Rails 3.  Many of these are recorded in the issue tracker.

5) Work on the port to Rails 3.1/3.2

More information: http://markusproject.org/ and their blog, http://blog.markusproject.org/

Umple

Umple is an open source toolkit whose objective is to merge UML modeling and programming into a single activity. Umple can be used in several ways: It can be used as a textual language for UML. It can also be used as a programming-language pre-processor, allowing UML concepts like associations and state machines to be added directly to Java and PHP. In addition, Umple allows drawing UML diagrams online and generating code directly from those diagrams. It is the goal of the Umple team to have large numbers of programmers and modelers incrementally adopt Umple. The barriers to entry are low, since using Umple can be done in a minimal way, without disrupting the existing model or code. Umple is an open-source project hosted on Google Code.

You will have the opportunity to learn some or all of the following:

  • Model-driven design using UML
  • Test-driven development using JUnit
  • Programming in Java, Umple, PHP and/or Javascript
  • Compiler design including parsing and code generation
  • Web site design (of the UmpleOnline tool)
  • Eclipse plugin development (of the Umple plugins)
  • A variety of other libraries and tools
  • Agile open source development with continuous integration

The exact set of skills you will employ depends on the task(s) you choose to work on.

More information: http://www.umple.org
Suitable student projects: http://projects.umple.org

 

HTML5 Applications with BlackBerry

Research In Motion is embracing application development with HTML5 and seeking to push the boundaries of what can be accomplished with web technologies on a mobile device. Our goal is to be the premier platform for the mobile web, with the most compliant, high performance, hardware accelerated Webkit engine we can create. We are rounding out the development experience with emulators, simulators, live Web Inspector debugging, support for all major frameworks, and we’re doing all of this in the open on Github.com under the Apache 2 license. This is your opportunity to join us in contributing to Open Source software and we have a wide variety of places to participate.

Projects will be flexible based on student skill sets, and examples are:

  • Working on our bbUI.js framework which provides a native look and feel to HTML5 Web Applications, and developing additional resources such as a boilerplate starting point with application templates, or cutting edge examples of UI design using hardware acceleration and other native capabilities. This would require primarily HTML5, CSS and JavaScript skills.
  • Contributing extensions to the BlackBerry WebWorks SDK and/or Apache Cordova to expand the low level native APIs that can be accessed by web developers. Students familiar with JavaScript and either Adobe AIR or C++ will be able to get involved here.
  • Participation in a variety of open source projects from frontend frameworks and WebGL to core architecture libraries and everything in between. We are actively involved with all the major projects and quite a few of the minor ones.

Students can expect the opportunity to contribute code to major projects using the most current tools and techniques. All projects will be public on Github.com and involve working with a distributed community of developers from around the world. Checkout http://blackberry.github.com/ to see an overview of our current open source projects.

 

Formulize

Formulize is a tool for making data management systems on the web. It has extensive support for modelling workflows, so that organizations can customize how users interact with the data that Formulize is managing. It is aimed at “power users” in not-for-profits and other organizations without large IT departments and resources, empowering them to create systems that would otherwise require custom programming to deploy.

The most basic operation in Formulize, is the creation of forms. Administrators can specify what elements should appear on the form, and also how different groups of end users should be able to interact with the form. From there, administrators can make custom screens that control how lists of entries in each form are shown to end users. Administrators can also control how different forms relate to each other, similar to describing table relationships in an ERD. These relationships then govern how data is queried from the database, enabling screens to display complex sets of information to users, rather than just entries from a single form.

Formulize can work as a standalone application, installed on a web server. Formulize can also be embedded within any PHP-driven web application on the same server where it is installed. A Drupal module has been created that supports extensive integration with the Drupal content management platform, including single sign-on for users.

Who uses Formulize?

Formulize is used by organizations around the world, for a variety of purposes, from tracking that status of housing renovations, to recording the activities of wilderness rescue teams. The lead developer of Formulize is Freeform Solutions, a Canadian not-for-profit organization that helps other not-for-profits with IT. Freeform has used Formulize with several past and current clients, including: Oxfam Canada, the Boys and Girls Clubs of Canada, the Ontario Association of Children’s Aid Societies, the Australasian College of Sports Physicians, and various social science research projects at the University of Toronto, McMaster University and the University of Western Ontario.

How is Formulize built?

Formulize is built primarily with PHP, but makes use of HTML and Javascript as well of course. jQuery is also used extensively in the more recent parts of the code base (the project started in 2004). Formulize relies on MySQL for database operations. Because it is a tool that you use to create other systems, rather than a tool that does something for end users by itself, there is a high degree of abstraction throughout the codebase, especially the parts that interact with the database. The code has to read configuration information specified by the administrators, and use that to dynamically generate all operations, including database queries. The newer parts of the codebase employ some object orientation. Older parts remain largely procedural. The codebase is maintained in SVN at Sourceforge.

How is the project organized?

Freeform Solutions generally follows an Agile Project Management methodology in all its work (Scrum with User Stories). The development work will follow this method, which Freeform has unique experience in carrying out through a virtual environment (Freeform Solutions is a virtual organization with full time staff, but no shared physical office).

What will students learn?

Students will have extensive exposure to PHP of course, and related web technologies. Students will also experience some real-world Agile processes. This term, among other general improvements, we would like to focus on better support for integrating Formulize with popular content management platforms. There are already modules for Drupal 6 and 7 that allow the publishing of Formulize applications inside a Drupal website. We would like students to help create a WordPress plugin and a Joomla component so it’s easier to integrate Formulize with those systems too, complete with single sign-on capabilities.

Formulize grew out of Freeform’s experience with content management systems, and is in fact built on top of a content management platform, so students will also be exposed to the principles of how website content management systems are built. Julian Egelstaff, lead developer of Formulize at Freeform Solutions, is an authority on open source content management systems. (https://www.google.ca/search?q=egelstaff+content+management+systems)

Learn more about Formulize:

 

Eclipse Projects

Eclipse is a community of open source communities. Technology from Eclipse is used to create the famous Eclipse IDE that is used by many millions of developers worldwide to develop software and applications in a number of languages.

The Eclipse Foundation is creating an innovative program to support organizations that develop products and services based on Eclipse technology. To enable this program, the Foundation requires technology to support developers collaborating over the long term (years and up to decades).

Working on these projects as part of UCOSP is an incredible opportunity to collaborate with some of the best and most talented developers in the world. It is also a great opportunity for visibility with many influential technology companies including IBM, Oracle, SAP, Google, Red Hat, and many more.

Project: Code2Cloud features (tentative)

Code2Cloud is a development environment providing many useful features to make developers productive. These include a code repository, build server, bug tracker, wiki, project meta data, code review, and more. It is very similar to the features offered by Github and goes a bit beyond.

This project was prototyped by Tasktop & VMWare. This project is to pick and implement a new feature to Code2Cloud such as:

  • LDAP Support
  • Gerrit support (for code review)
  • The ability to fork a project
  • The ability to fork an organization
  • Others features that we brainstorm

The technology is implemented in Java (Server) & Ruby (Administration UI). Some familiarity with Eclipse and the Eclipse community is an asset. Code is managed in git.

Difficulty: 7/10

Project: Enhance Nexus support for p2 repositories

Nexus is a build artifact manager developed by a company called Sonatype. It is the repository and distribution technology used by the famous Maven build engine. We’ll be working on the open source version of Nexus. The Eclipse Foundation plans to use Nexus for managing build artifacts. This system makes it easy for people to find and download components they want to re-use in their projects. It also lets projects upload components directly from their build.

This project will involve considerable interaction with the community and a lot of analysis and design as challenging problems are sorted. For example, there are differences between conventions used by Maven & Nexus and OSGi & p2 which is used by Eclipse. These differences are incompatible in some cases requiring us to figure out how to address them, or to decide to fully embrace/support/distribute to both (Maven repository & p2 repository) formats.

The Maven build engine, and Tycho plug-in will likely also need extension to allow it to calculate dependencies and find p2 repositories stored in Nexus.

The technology is implemented in Java (Server). Some familiarity with Eclipse and the Eclipse community is an asset. Code is managed in git.

Difficulty: 7/10

 

ReviewBoard

Review Board is a powerful web-based code review tool that offers developers an easy way to handle code reviews. It scales well from small projects to large companies and offers a variety of tools to take much of the stress and time out of the code review process. ReviewBoard is written in Python using the Django web framework.

Students working on Review Board will have the opportunity to learn about back-end web development using Python, and Django, as well as front-end development using HTML, CSS, Javascript and jQuery. Source control is managed via Git on GitHub. All patches are reviewed using Review Board, and students are expected to contribute to reviews for each other, as well as to other members of the development community.

Students will probably be working on the following projects:

  • Re-work the front-end to require less frequent page reloads. Publishing a review or comments or whatever shouldn’t reload the page. Nor should updating the dashboard.
  • Finishing pluggable review UIs for different mimetypes (this project is already started, and just needs someone to drive to completion).
  • Replacing the current screenshot review UI to be file attachment-based with the pluggable review UIs. It’d be cool to do image diffing here too.
  • Updating the repository management to support auto-configuration from a hosting service (basically, listing all repositories on a hosting service account, and letting you add a checkbox for each you want to add — there are workflow issues to solve here though)
  • Better bug tracker configuration and integration. Now that we have hosting service support, it might be nice to allow configuring a bug tracker that could be associated with repositories, and to extend our HostingService support to allow posting to the bug trackers via their APIs.
  • Automatic support for associating an SSH key with a hosting service. It would greatly simplify configuration on new setups.
  • Building new scripts for RBTools based on recent reworking of our Review Board client libraries.

 

Some experience using Python and/or Django, Javascript and jQuery would definitely be a plus. In our experience, Git is usually the largest stumbling block, so students comfortable with Git (or able to quickly get comfortable with Git) will likely have an easier time developing.

More information: http://www.reviewboard.org/ and http://reviewboardstudents.wordpress.com/.

 

Freeseer

Freeseer is a powerful screen-casting tool. It enables you to record from a various video and audio sources such as local desktop, usb, microphone, and other sources. It supports live streaming. It also provides rich meta data handling capabilities in which the speaker, title, event, and other meta data are encoded in the video files.

The Freeseer project is a project still growing rapidly and perhaps one of the best open source video screen casting tools available.

Freeseer is implemented in Python. Code is managed in git.

Project: Upload tool.

This project is to enable freeseer to upload videos to YouTube quickly and easily and automatically populate meta data fields from fields encoded into the video file during recording. Work was done on this tool previously resulting in a strong GUI. This project is to complete the work, test it, and ensure it works robustly.

Difficulty: 4/10

Project: UStream streaming support

UStream is a popular video streaming site. This project is to enable Freeseer to support it for video streaming.

Difficulty: 5/10

Project: Prerequisite cleanup

From time to time developers contribute code to freeseer that is experimental. Sometimes this code uses a particular third party library that made sense at the time but perhaps can be replaced with an existing library that Freeseer already uses thus making it require fewer external components. This project is to evaluate all prerequisites and remove them where it makes sense.

Examples:

Move rss import to qt https://github.com/Freeseer/freeseer/issues/175

Difficulty: 5/10

Project: Integrated video player

When recording talks at conferences, as part of training the team, we encourage them to watch videos in between talks to be able to make any adjustments needed. For example if the microphone is too high or low.

This project is to enable a simple option for recording technicians to watch the videos. See this thread: http://box674.bluehost.com/pipermail/freeseer_fosslc.org/2012-July/001443.html

Difficulty: 4/10

 

The Technology Explorer for IBM DB2

The Technology Explorer (TE) is a light weight, web based console for DB2 for Linux, UNIX and Windows. The Technology Explorer strives to be a teaching tool for all users of DB2 and is also used to demonstrate and prototype new interfaces for upcoming features. This has also had the benefit of making the TE a flexible and customizable interface for DB2 (Think phpMyAdmin meets Drupal or Lego for database administrators). Over the past few year there has been a number of requests for core features by contributors and core users of the TE that can not be contained by the IBM internal TE team.

Students should be comfortable working in PHP, JavaScript, JAVA, HTML and XML. They should also be familiar with databases concepts.  Database administration experience and knowledge of IBM DB2 or an aptitude for visual interface development would be an asset.

More information: http://sourceforge.net/projects/db2mc/