GSOC 12 Ideas

http://www.jboss.org/dms/GSoC/GSoC_commonbanner_1180px.png

 

 

All students & developers are welcome to participate in the Google Summer of Code 2012 program with the JBoss Community!

 

If you are a student looking forward to participate the GSoC 2012 with the JBoss Community, feel free to browse the growing idea list below. Please don't hesitate to contact the mentor(s) indicated in the proposal for any related clarification.

 

 

Administrators and Mentors

 

The following people have agreed to serve as administrators and/or mentors for the GSoC 2012 program. Sometimes there should be some backing up mentors to mentor if the original mentor get busy with something for a short time period. In such case we need help.

 

 

 

Idea Proposal Template

 

Please add your idea under one of the category headings using the template below. If there is no heading yet for your category, please add it as a level-2 heading.

 

Project name

 

Status: (Proposed or Draft)

 

Summary of idea:

 

Knowledge prerequisite:

 

Skill level:

 

Contact(s):

 

Mentor(s):

 

Associated project(s):

 

Notes:

 

Idea Proposals

 

Below is a list of the ideas that have been proposed for the GSoC 2012 program. The ideas are organized by category.

 

Category: Testing

Automate JavaScript tests in an integration environment using Arquillian

 

Status: Draft

 

Summary of idea:

 

The goal of this project is to make automation of JavaScript tests in an integration environment as simple as automating Java tests by tying into the Arquillian ecosystem. We also want to be able to achieve rapid development of those JavaScript tests in the IDE. Running the test suite in CI simply is important equally important to quick development turnaround.

 

We want to leverage existing test frameworks where possible. One possible approach is to create an Arquillian test runner for QUnit tests and use Arquillian Drone to handle controlling the browser. This stack integrates Selenium and QUnit tests so that QA does not need to configure the browser pool twice for Selenium and QUnit tests. To support quick turnaround in development, we can use another framework, JsTestDriver, to grab an existing browser session and reuse it. This avoids having to spawn a browser repeatedly.

 

When this project is complete, developer should be able to agree that running JavaScript tests in both the IDE and a continous integration environment is as simple as running Java tests.

 

Knowledge prerequisite: Java, JavaScript, IDE (Eclipse or IntelliJ), some familiarity with Arquillian

 

Skill level: Medium to High

 

Contact(s): Lukas Fryc, Aslak Knutsen

 

Mentor(s): Lukas Fryc

 

Associated project(s): Arquillian

 

Notes: More details can be found in the resources below:

 

 

The focus of this idea is running JavaScript only tests using JavaScript unit testing frameworks, not invoking JavaScript from Selenium tests, which is a separate idea.

 

Extend Arquillian to support Spring testing (beans and MVC controllers)

 

Status: Draft

 

Summary of idea:

 

Arquillian provides an extensible testing platform that can be used for testing any type of Java-based component. The initial focus for Arquillian was testing Java EE components, such as CDI beans, EJBs and JPA. However, Arquillian provides all the infrastructure and hooks necessary to make it an ideal testing platform for Spring applications.

 

It's already possible to test Spring beans using Arquillian by packaging the Seam 3 Spring library in the test archive and injecting Spring beans into the test by way of CDI. However, the use of CDI here is unnecessary, since Arquillian already provides an extension point for creating a custom "test enricher", specifically a dependency injection adapter. In the first phase of this project, the student will create an Arquillian extension that provides a test enricher that loads Spring and looks up Spring beans for Arquillian to inject into the test case. This functionality effectively emulates the Spring TestContext framework.

 

In the next phase of the project, the student will extend Arquillian to enable testing of Spring MVC controllers. This functionality is very similar to the Arquillian JSFUnit extension that enables testing of JSF inside the container. There is already some work that has been done for testing Spring MVC controllers using a Spring-centric approach in the Spring MVC Test project. This project can serve as a good model for what we want to achieve using Arquillian as the test platform.

 

Knowledge prerequisite: Java, Spring, Spring TestContext, some familiarity with Arquillian

 

Skill level: Medium

 

Contact(s): Marius Bogoevici, Dan Allen, Aslak Knutsen

 

Mentor(s): Marius Bogoevici, Dan Allen

 

Associated project(s): Arquillian

 

Notes: Refer to the following resources for more information:

 

 

Decouple GWT testing from Jetty and allow integration testing in any container

 

Status: Proposed

 

Summary of idea:

 

Currently GWT integration tests using GWTTestCase are coupled with Jetty. This limits guarantees of GWT integration tests, and increases the complexity of project setup, when Jetty is not the target deployment environment. The goal of this project is to decouple this test framework from Jetty and hook it up to the Arquillian test platform. By integration with Arquillian, it's possible to leverage the Arquillian container adapters to allow integration testing on any supported container (including Jetty).

 

In the next phase of the project, the student will tackle using ShrinkWrap micro-deployments for integration testing GWT. The lack of support for fine-grained, quick turnaround integration testing is a major missing piece of GWT. The GWT compiler could be forced to compile only portion of UI logic which could be tested in separation. This decreases time needed to compile deployment and allows testing units in separation.

 

When this project is complete, GWT tests will be much more flexible and efficient. It will be possible to run GWT tests on any container supported by Arquillian, tests will be more fine-grained, resulting in faster turnaround and developers will be able to experiment with other available Arquillian extensions for GWT testing.

 

Knowledge prerequisite: Java, GWT, some familiarity with Arquillian

 

Skill level: Medium to High

 

Contact(s): Christian Sadilek, Aslak Knutsen

Mentor(s): Christian Sadilek

 

Associated project(s): Arquillian, Errai, RHQ

 

Notes: See the following resources for more information about this project:

 

 

Integrate Sahi into Arquillian Drone for automated browser testing

 

Status: Draft

 

Summary of idea:

 

Arquillian Drone is an abstract layer over browser controllers such as Selenium, WebDriver and HtmlUnit that integrates with the Arquillian testing platform to automate browser testing. Drone provides extension points to allow any browser controller with a Java API to be supported. Many developers prefer Sahi over Selenium for testing rich web applications such as those written using GWT. The goal of this project is to add support for Sahi in Arquillian Drone.

 

Knowledge prerequisite: Java, Sahi or Selenium, some familiarity with Arquillian

 

Skill level: Low to Medium

 

Contact(s): Heiko Rupp, Karel Piwko

 

Mentor(s): Karel Piwko

 

Associated project(s): Arquillian

 

Notes: Sahi testimonial

 

Integrate Robotium into Arquillian Drone and Arquillian Android extensions for automated Android Application testing

 

Status: Draft

 

Summary of idea:

 

Arquillian Android extension is an integration layer between Android SDK and Arquillian. It allows you to start and stop Android emulators, connect real devices and install arbitrary packages, basically control Android Debug Bridge from Java environment. Currently, Android extension supports testing web-based applications via integration with Arquillian Drone and Selenium AndroidWebDriver.

 

Robotium is a framework based on top of Android SDK activity and  testing, which allows you to do a blackbox testing of the application running on an Android device. An activity represents a part of the application user can interact with in order to do something. Robotium resembles Selenium in many aspects.

 

Arquillian Drone is an abstract layer over browser controllers such as Selenium, WebDriver and HtmlUnit that integrates with the Arquillian testing platform to automate browser testing. Drone provides extension points to allow any browser controller with a Java API to be supported. Since Robotium allows "to browse" in Android applications, it can be used as a browser from Arquillian Drone.

 

This project can devided into two distinct phases. The first one focuses on decoupling InstrumentationTestRunner from Android SDK and integrating into Arquillian. This will allow running any Android integration tests directly in Arquillian. The latter phase is about adding Robotium into Arquillian Drone as a supported browser.

 

The goal of this project is to add support for native Android application testing in Arquillian. Using already established tool Robotium will let user focus on writing test logic, Arquillian will do the integration work. User will profit from much simpler configuration and possibly from integration with other Arquillian extensions.

 

Knowledge prerequisite: Java, Android testing, some familiarity with Arquillian

 

Skill level: Medium

 

Contact(s): Karel Piwko

 

Mentor(s): Karel Piwko

 

Associated project(s): Arquillian

 

Notes: Robotium, Android Activity Testing

 

 

Arquillian Persistence Extension: Scriptable data sets

 

Status: Draft

 

Summary of idea:

 

Key strength of Arquillian as testing platform is its extensibility. Arquillian Persistence Extension is one of many additions. Main rationale behind it is to remove boilerplate code needed to prepare database and make you a happy and productive programmer!

 

It uses DBUnit to populate test data. DBUnit is popular and mature tool aiming to help developers with data driven tests. It provides an abstraction to manipulate test data called DataSet (in the form of XML, Excel file or introduced by Arquillian Persistence Extension YAML and JSON). It represents a collection of tables (rows) used to seed the database. However it's static nature is not sufficient in many cases. Imagine testing time sensitive data. It could be really handy to have possibility of defining date as "three days from today" or having current time by simply invoking "now()" function. With the power of a scripting language at your disposal it should be achieved very easy.

 

The goal of this project is to extend Arquillian Persistence Extension usage of DBUnit and introduce concept ScriptableDataSet. By leveraging "Scripting for the Java Platform" (JSR 223) introduced in JDK 6 we can use plethora of languages to add dynamic flavor to our data driven tests.

 

Knowledge prerequisite: Java, some basic knowledge of scripting languages (JSR-233, could be Groovy, Python, JavaScript, Ruby), some familiarity with Arquillian.

 

Skill level: Low - Medium

 

Contact(s): Bartosz Majsak, Aslak Knutsen

 

Mentor(s): Bartosz Majsak

 

Associated project(s): Arquillian

 

Notes:

 

 

Arquillian Persistence Extension: Object-oriented way of defining test data in YAML or JSON

 

Status: Draft

 

Summary of idea:

 

DBUnit data sets are low-level, database oriented test fixtures. Hence it's often quite cumbersome to write them by hand. Especially when we have some relationships between entities/tables. The goal of this project is to introduce alternative way of describing test data in external, human-readable text files representing object structure (entities), not rows as it's in DBUnit case. Considered formats are YAML or JSON.


Knowledge prerequisite:
Java, some familiarity with testing techniques and frameworks such as JUnit or TestNG.

 

Skill level: Low

 

Contact(s): Bartosz Majsak, Aslak Knutsen

 

Mentor(s): Bartosz Majsak

 

Associated project(s): Arquillian


Notes:

 

Test data generation for Arquillian

 

Status: Draft

 

Summary of idea:

 

Combinator libraries such as Haskell's QuickCheck are designed to generate boundary test cases based on some assertions about logical properties that given behaviour should fulfill. The goal of this project is to provide such functionality for Arquillian-powered tests. Already existing solutions such as ScalaCheck, JCheck or Quickcheck could be leveraged to achieve it.


Knowledge prerequisite:
Java, some familiarity with testing techniques and frameworks such as JUnit or TestNG.

 

Skill level: Medium

 

Contact(s): Bartosz Majsak, Aslak Knutsen

 

Mentor(s): Bartosz Majsak

 

Associated project(s): Arquillian


Notes:

 

Mutation testing for Arquillian

 

Status: Draft

 

Summary of idea:

 

Mutation testing is a software testing method which is based on the idea of modifying source or bytecode in order to capture weakneses of your test suite. In other words using this technique you can test your tests! By applying different mutations, such as changing operators, variable names or throwing exceptions, to your test code you have a chance to locate issues in your code.

 

The goal of this project is to research the possibilities of integrating Arquillian with mutation testing tools such as PIT. Another angle would be to investigate how we can leverage Byteman in this context.


Knowledge prerequisite: Java, some familiarity with testing techniques and frameworks such as JUnit or TestNG.

 

Skill level: Medium to High

 

Contact(s): Bartosz Majsak, Aslak Knutsen

 

Mentor(s): Bartosz Majsak

 

Associated project(s): Arquillian


Notes:

 

Category: Tooling

 

Hopefully we'll have some more Forge ideas here soon!!

 

Implement a Plugin to add "Undo" functionality to Forge

 

Status: Proposed

 

Summary of idea: Implement a Forge plugin to decorate execution of all commands. If a command executed successfully, changes should be saved as a new revision in a git history branch. If commands the user should be prompted to ignore, or roll back all changes to the state before the command was executed. (See more details here: https://issues.jboss.org/browse/FORGE-320 ) This should behave a bit like a Git time-machine.

 

Knowledge prerequisite: Java, Git

 

Skill level: High to Very High

 

Contact(s): Lincoln Baxter, III

 

Mentor(s): Lincoln Baxter, III

 

Associated project(s): Forge (See below for more information.)

 

Notes:

 

Implement a Forge plugin to create RHQ plugins

 

Status: Proposed

 

Summary of idea: Implement a Forge plugin that helps generating RHQ plugins. This could be in a sort of standalone way (much like the existing rhq plugin generator) or better in a form that you can instrument your app, generated by Forge with code points that expose application metrics, that can then be picked up by the RHQ plugin.

 

Knowledge prerequisite: Java

 

Skill level: Medium to High

 

Contact(s): Heiko Rupp

 

Mentor(s): Heiko Rupp

 

Associated project(s): RHQ (see below for more information about RHQ), Forge

 

Notes:


BPMN2 based Web App for replaying and stepping through activity information captured from a business transaction executing within a SOA

 

Status: Draft

 

Summary of idea:

 

As part of the SOA governance initiative within jboss.org, we are developing service activity monitoring capabilities to capture the activities associated with business transactions as they execute across services within a SOA.

 

This information will include details regarding interactions between services, as well as details related to the internal tasks executed to achieve the business goal.

 

The BPMN2 Web App will use a Choreography model (describing the end-to-end business process) to represent the communications that occur between services, and a Process model per service to either (a) elaborate the internal logic implemented by each service, where that services is using a BPMN2 execution engine, or (b) the abstract externally observable behavior where the service is implemented using a different technology.

 

The user will be able to retrieve activity information regarding the execution of a particular business transaction instance, and observe how it executed across services (at the Choreography level), as well as being able to drill into the individual services (using the Process model representation) to examine further levels of detail.

 

Knowledge prerequisite: BPMN2, Java, GWT, SVG

 

Skill level: Medium to High

 

Contact(s): Gary Brown

 

Mentor(s): Gary Brown Jeff Yu

 

Associated project(s): Savara Overlord

 

Notes:

 

Category: Application Development

Replace old graphs in RHQ with GWT ones

 

Status: Proposed

 

Summary of idea: Replacement of old graphing with a new GWT implementation. This can be done with the help of existing graphing libraries for GWT. The replacement does not need to be 1:1, but there is freedom to implement different representations. A nice extension would be to be able to define a formula that translates the graph on the fly or where multiple metrics could be combined via formula.

 

Knowledge prerequisite: Java and GWT

 

Skill level: Medium

 

Contact(s): Heiko Rupp

 

Mentor(s): Heiko Rupp

 

Associated project(s): RHQ (see below for more information about RHQ)

 

Notes:


Design and implement a generic wizard on top of the REST api

 

Status: Proposed

 

Summary of idea: Design and implement a generic wizard on top of the REST api to create e.g. alert definitions or to start operations. This is part of a bigger picture to use RHQ as a data hub, where several clients can deliver and request data from. This means to have a web page that uses the HATEOAS principles to guide the user through the steps and options to create an alert definition or to start an operation

 

 

Knowledge prerequisite: HTHM, JavaScript, REST principles (perhaps Java to extend the REST api if needed)

 

Skill level: Medium

 

Contact(s): Heiko Rupp

 

Mentor(s): Heiko Rupp

 

Associated project(s): RHQ (see below for more information about RHQ)

 

Notes:

 

Implement a RHQ storage backend using Infinispan

 

Status: Proposed

 

Summary of idea: Implement a backend for data storage based on Infinispan (e.g. for metric data). Currently all (metric) data is stored in a relational database. With cheap memory, one could replace parts of this with alternative backend storage, that is memory based. Infinispan is a powerful data grid, which also provides the ability to run jobs on the local nodes, so that e.g. baseline computation can run on the Infinispan backend.

 

 

Knowledge prerequisite: Java

 

Skill level: Medium to High

 

Contact(s): Heiko Rupp

 

Mentor(s): Heiko Rupp

 

Associated project(s): RHQ (see below for more information about RHQ)

 

Notes:

 

Implement a big screen dashboard for RHQ

 

Status: Proposed

 

Summary of idea: Implement a "big screen dashboard" on top of the REST api. The idea is to have a huge screen, that shows many metric graphs (like those you see in the NASA control room when satellites are launched). The user should be able to select the graphs to be shown and also the position on screen. The graphs should be able to display multiple metrics and availability (and perhaps other indiators) and thus allow to give a quick overview over the system state. There already exists a prototype with the help of jQuery and D3.js

 

 

Knowledge prerequisite: JavaScript, HTML

 

Skill level: Medium

 

Contact(s): Heiko Rupp

 

Mentor(s): Heiko Rupp

 

Associated project(s): RHQ (see below for more information about RHQ)

 

Notes:

 

Implement an RHQ agent in Python

 

Status: Proposed

 

Summary of idea: Write a RHQ-agent in Python and make it interface with Matahari to pick up metrics that are provided by Matahari from Fedora or RHEL systems. The agent would talk to the RHQ server via the REST api and push metrics to RHQ etc. This agent will not implement the full functionality of the RHQ java agent.

 

Knowledge prerequisite: Python, Linux system administration, qpid

 

Skill level: Medium to High

 

Contact(s): Heiko Rupp

 

Mentor(s): Heiko Rupp

 

Associated project(s): RHQ (see below for more information about RHQ)

 

Notes:

 

Category: Security

 

SAML-based SSO in Ruby

 

Status: Draft

 

Summary of idea:

 

Create a module for Ruby on Rails apps (or a Ruby gem) to provide SAML based SSO. This project will be a separate module for PicketLink that is written in Ruby that allows Ruby apps to perform SAML based web SSO.

 

Knowledge prerequisite: Ruby, SAML

 

Skill level: Medium

 

Contact(s): Anil Saldhana

 

Mentor(s): Anil Saldhana

 

Associated project(s): PicketLink

 

Notes:

 

 

Participating Projects

 

You can find more information below about the participating projects.

 

AeroGear

 

 

Topic
Details
Project DescriptionProject AeroGear will be developing and integrating new mobile, native, and HTML5 based frameworks that solve the hard issues that enterprise developers care about - such as offline data synchronization, security, JBoss AS7 integration, and support across a broad range of devices. More info at http://www.jboss.org/aerogear/WhatisAeroGear.html
Project Websitehttp://www.jboss.org/aerogear
Project Logohttp://in.relation.to/service/File/22836
CategoryMobile/HTML5
MentorJay Balunas
Project IRCirc://irc.freenode.net/aerogear
Project Forumshttp://community.jboss.org/en/aerogear
Project Demo Links  (Youtube etc)https://community.jboss.org/en/aerogear

 

JBoss Forge

 

Topic
Details
Project Description

JBoss Forge is a core framework and next-generation shell for tooling and automation at a command line level; with APIs for integration in IDEs, exending built in functionality with plugins, and scripting for automating repeditive tasks, Forge is a tool every open-source developer should be looking at.

Project Websitehttp://www.jboss.org/forge
Project Logohttps://docs.jboss.org/author/download/attachments/11370498/Screen+Shot+2011-10-03+at+8.01.33+AM.png?version=1&modificationDate=1317654146000
CategoryTooling and Automation
Brief Description of the IdeaA plugin to enable "Undo" functionality in Forge, using the Git version control system
Expected Results

A Forge plugin to decorate execution of all commands. If a command executed successfully, changes should be saved as a new revision in a git history branch. If commands the user should be prompted to ignore, or roll back all changes to the state before the command was executed. (See more details here: https://issues.jboss.org/browse/FORGE-320 )

Programming / Knowledge RequirementJava, Git
MentorLincoln Baxter, III
Project IRChttp://webchat.freenode.net/?channels=forge
Project Forums / Mailing Listforge-dev@lists.jboss.org

 

TorqueBox

 

Topic
Details
Project Description

TorqueBox is a new kind of Ruby application platform that integrates popular technologies such as Ruby on Rails, while extending the footprint of Ruby applications to include built-in support for services such as messaging, scheduling, and daemons.

TorqueBox provides an all-in-one environment, built upon the latest, most powerful JBoss AS Java application server. Functionality such as clustering, load-balancing and high-availability is included right out-of-the-box.

Project Websitehttp://torquebox.org/
Project Logohttp://bob.mcwhirter.org/blog/assets/torquebox-logo.png
CategoryRuby
MentorBob McWhirter
Project IRCirc://irc.freenode.net/torquebox
Project Forumshttp://torquebox.org/community/mailing_lists/
Project Demo Links (Youtube etc)http://torquebox.org/podcasts/

 

Arquillian

 

Topic
Details
Description

Arquillian is revolutionary platform that greatly simplifies integration testing for Java middleware. No more mocks. No more container lifecycle and deployment hassles. Just real tests!

Websitehttp://www.jboss.org/arquillian
Logohttp://design.jboss.org/arquillian/logo/ui/images/success/arquillian_ui_success_256px.png
CategoryTesting
LeadAslak Knutsen
Project IRChttp://webchat.freenode.net/?channels=jbosstesting
Project Forumshttps://community.jboss.org/en/arquillian?view=discussions
Source Codehttps://github.com/arquillian

 

 

Topic
Details
Project Description

PicketLink is a pure open source Identity Management project that provides Single Sign On capabilities to web applications. Apart from support for SAML and WS-Trust, there is support for OpenID and OAuth standards in various manner.

Project Websitehttp://www.jboss.org/picketlink
Project Logohttps://www.jboss.org/dms/picketlink/images/picketlink-banner-1180px.png
CategoryIdentity Management and Security
MentorAnil Saldhana
Project IRChttp://webchat.freenode.net/?channels=picketlink
Project Forumshttps://community.jboss.org/en/picketlink?view=discussions

 

RHQ

 

Topic
Details
Project Description

RHQ is a systems management and monitoring suite that can be extended via Plugins

Project Websitehttp://rhq-project.org/
Project LogoRHQ-logo-wallpaper.png
CategorySystems management and monitoring
Brief Description of the Ideas

See proposals above

Programming/Knowledge RequirementJava required (except for 6) and GWT for the 1st idea
MentorHeiko Rupp, hwr@redhat.com, pilhuhn on irc, @pilhuhn on Twitter
Project IRCirc://irc.frenode.net/#rhq
Project Forumshttps://community.jboss.org/en/rhq?view=discussions
Project Demo Links (Youtube etc)http://rhq-project.org/display/RHQ/Videos

 

Resources