Projects (September 2014)

Overview

NOTE: This is a tentative project list and is subject to change.

This term UCOSP is happy to be partnering with 8 projects:

  • Markus: Web-based grading platform.
  • UMPLE: UML modeling and programming tool.
  • BB10 Phonegap: Mobile app platform.
  • Formulize: Database, reporting and workflow management system.
  • Eclipse Orion: Integrated development environment.
  • Review Board: Code review tool.
  • Freeseer: Screen-casting tool.
  • Waterbear: Online development environment.

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, C++, 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, C++, 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

 

PhoneGap/Cordova Plugins for BlackBerry 10

BlackBerry 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 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 term BlackBerry is focused on PhoneGap/Cordova compatibility and our next version of the WebWorks SDK will be powered by Cordova. With the open source community we will be working on porting native plugins from iOS and Android, and writing new ones for BlackBerry 10. Students should be familiar with C++ or JavaScript development, though they do not need to be experts with both. We will work in pairs and teams to round out the necessary skill set.

 

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. Integration plugins for WordPress and Joomla have also been created (by previous UCOSP students!).

Who uses Formulize?

Formulize is used by organizations around the world, for a variety of purposes, from tracking the 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 on GitHub.

What will students learn?

Students will have extensive exposure to PHP of course, and related web technologies. Students will be tasked with fixing problems and adding features to Formulize. We follow a specific process in our GitHub repository, to record code changes, documentation and Selenium tests all together. The tests are run automatically by our continuous integration system, based on Travis-CI and Sauce Labs. Students will have to develop documentation for their features, as well as verification tests in Selenium, before their code will be merged with the master branch. This should give students a deeper understanding of the role of software engineering in the larger process of maintenance and deployment of software.

Learn more about Formulize:

 

Eclipse Orion web and mobile icons and images

Eclipse Orion is a growing open source, entirely web based, software development environment that has been built into products from IBM, HP, VMWare, Firefox and others.

Orion is designed to run in any browser, but at the moment Orion’s images and icons don’t scale as they should, to look pristine on very high density displays. The Orion team has been grooming a set of icons that would work well as a web font to help them scale well on different screen sizes.

This project is a great opportunity for a person to understand to learn more about real life mobile image management, web fonts, font theory, the strengths and drawbacks of alternative approaches, how to evolve a living set of icons in an open source project, and how to enable consumers to style them as they wish.

The project focus would initially be around the icons, but would look at other images used in the Orion project websites too – for instance login page images.

Desirable skills: Visual Design, Illustrator, Photoshop, CSS3, JavaScript

Difficulty: 6/10

Eclipse Orion defect backlog takedown

Eclipse Orion is a growing open source, entirely web based, software development environment that has been built into products from IBM, HP, VMWare, Firefox and others.

The goal of this student project is to assess the most recent defects in the Orion project impacting quality and user experience and to implement solutions. The solutions will range from pure client side development in JavaScript, CSS3 and HTML5 to working on our Node.js server in JavaScript or our Java Server.

The student will continually be running on a fork of the master branch of the Orion client and provide pull requests for defects that they have been assigned. The ultimate goal is to submit a significant amount of successful patch requests over various areas of Orion including the editor, search, Git support, Node.js implementation, and Java Server to become a committer on the Orion Project. The student will be evaluated on the quality of the solutions, documentation changes if required, and test case updates or additions related to the defect addressed.

Desirable skills: JavaScript, HTML5, CSS3, Node.js, Java

Difficulty: 8/10

Review Board

Review Board is a powerful web-based code review tool that helps developers do peer review as they write code. Review Board is used by thousands of software companies including Twitter, Yahoo, and VMware, as well as many open-source projects like Apache and KDE.
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, jQuery, and Backbone.js. 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.
Some possible projects include:
  • Building a workflow for reviewing images and other binary files that are part of a code change. This involves integrating several existing pieces of functionality and building the glue to turn it into a smooth user experience.
  • Making improvements to Review Board’s extensions infrastructure, which allows third party developers to build features that aren’t generic enough to be part of the product.
  • New kinds of integration with other services, such as deeper bug tracker integration, an adapter for GitHub pull requests, or allowing users to log in using Mozilla Persona.
  • Building a user “trophy case” and adding new kinds of achievements.
For a full list of project suggestions, check out our wiki: Student Project Ideas
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.
For more information, see the project web page at http://reviewboard.org, or our students blog at 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

Waterbear

Waterbear is a toolkit for creating drag-and-drop programming languages, with some example languages you can play around with and learn from. The goal is to make it easy to wrap existing languages with Waterbear blocks to create draggable, snappable syntaxes for them. Waterbear’s system of draggable, snappable blocks are built using clean HTML5, CSS3, and Javascript. The Javascript playground for Waterbear allows you to create Waterbear scripts, see the Javascript it will generate, and run it right in the browser.

Projects:

* As the Waterbear foundations stabilize, we need to rework the interactive development interface (IDE) to make it friendler, more powerful, and easier to use.
* Creating demos which use the blocks to showcase different programming tasks.
* Creating new block-based teaching languages using a subset of the blocks, or by wrapping a different language (such as Python or Lua).

In addition to the projects listed above, some past projects that have been involved in UCOSP (and may return this fall) include:

Prediction.io
Openstack
Pouch.db
MongoDB
Mozilla Firefox O/S
Mozilla Marketplace
Freeseeer
Orion
GeoGit
GeoTrellis
JTS
Kotlin
Socket.io
Ruby on Rails
App Inventor
Review Board
Waterbear
Formulize
HHVM
Wikimedia
Umple
Blackberry