Skip to main content
Jump to: navigation, search

Google Summer of Code 2016 Ideas

Revision as of 05:04, 19 February 2016 by Kai.openhab.org (Talk | contribs)

Existing bugs marked "helpwanted" are a good source of project ideas.

Warning2.png
Feel free to contribute the discussion on an Eclipse bug. Keep the discussion on bugs technical. The bugs are not a good place to talk about Google Summer of Code participation. Use the soc-dev mailing list for that.


Rules

  • Be creative
  • Be specific: what do you want to be implemented
  • If you are willing to mentor those ideas, add your name and email to the idea.
  • GSoC project ideas should align with an existing Eclipse project
  • If you're an interested student, add your name and email next to the idea. It is ok to have several students interested in one idea.
  • Aspiring students and mentors need to register and submit their proposals on Google´s Melange

Mentors info

If you were a mentor last year then you are automatically in the list this year (the GSoC site may require that you re-register, but we think of you as "in").

Note that we only accept as mentors people who are known to us. This includes Eclipse committers. If you would like to be a mentor, please either introduce yourself to the group using the soc-dev mailing list, or send a note to Jelena.

Ideas submission

Idea proposal should contain the following information:

  • project title, like "WTP - Improve auto-complete in xml editor"
  • description with links to bug reports, project wiki pages, etc
  • Reporter: who submitted idea (optional e-mail)
  • Possible Mentors: who would like to mentor the students
  • More info: other links or e-mail
  • Eclipse Project: link to main eclipse project that improvement is targeting
  • Potential students: who is interested (with optional e-mail). This one completely informal, to actually be interested you need to submit the proposal. Contact the idea owner or possible mentor to get some details before submitting it.

Ideas

These are some ideas. Students feel free to base your GSoC proposals on these ideas (note that you are more likely to find a mentor for an idea that has been proposed by a mentor). Some of these ideas can be factored into multiple projects; a GSoC project proposal can work on parts of these ideas (i.e. you don't necessarily have to do it all).

Package Drone: Implement new repository adapters

Package Drone is a Java/OSGi based software artifact repository with a focus on OSGi.

Although the focus of Package Drone is on Java and OSGi, there are a few repository adapters already which support other repository systems like RPM/YUM, DEB/APT or NPM.

There are lots of other repository systems out there like NuGet, Docker, Python … which could be added to Package Drone. For adding a repository system to Package Drone there is a remote interface required (like a servlet accepting new binaries), meta data extraction from the uploaded content and finally another remote interface for serving these artifacts.

This task would including selecting a repository system, identifying the different use cases and implementing the default use case of this repository system into Package Drone.

To get in touch with the project see the GitHub repository eclipse/packagedrone or contact Jens Reimann. Package Drone is an OSGi (Equinox) application written in Java 8. It uses Jetty, JSP and Bootstrap as Web UI.

Possible Mentors: Jens Reimann

Interested Students: Pubudu Fernando

Package Drone: Create a REST-based API

Package Drone is a Java/OSGi based software artifact repository with a focus on OSGi.

As of now Package Drone does not really provide an external API to the system. Of course a decent, state-of-the-art, fancy API definitely is a must-have.

This task would include selecting a REST framework which can be used within OSGi and possibly the OSGi HTTP Service. Defining and implementing a few basic APIs. Covering the aspect of authentication and authorization. Providing a few automated unit tests for the API. Optionally providing a client implementation either in Java or any other programming language (as a library and as a command line tool).

Existing Java REST frameworks should be considered for this task and evaluated for implementation. Also in regards to the Eclipse IP policy.

Also see:

To get in touch with the project see the GitHub repository eclipse/packagedrone or contact Jens Reimann. Package Drone is an OSGi (Equinox) application written in Java 8. It uses Jetty, JSP and Bootstrap as Web UI.

Possible Mentors: Jens Reimann

Interested Students: Imaculate Misha

Interested Students: Shashank Motepalli

Package Drone: Mirror artifacts on cloud storage

Package Drone is a Java/OSGi based software artifact repository with a focus on OSGi.

Package Drone does store binary artifacts on the local file system. When artifacts are requested by HTTP requests, these are served from the local file system to the client.

The task would be to enhance Package Drone in a way that artifacts get uploaded to some cloud store like Google Cloud Storage or Amazon S3 in addition or as a replacement to the local file system. When artifacts have to be served to a client the server will send a HTTP redirect (if possible) instead of streaming the binary data.

Of course binary management on the cloud storage has to be managed by Package Drone in a way that transactional update still work, that consumers of the data which require a stream instead of a HTTP requests still work and that storage space gets cleaned up at some point.

To get in touch with the project see the GitHub repository eclipse/packagedrone or contact Jens Reimann. Package Drone is an OSGi (Equinox) application written in Java 8. It uses Jetty, JSP and Bootstrap as Web UI.

Possible Mentors: Jens Reimann

Package Drone: Gather and store metrics for artifacts

Package Drone is a Java/OSGi based software artifact repository with a focus on OSGi.

Package Drone stores and serves binary artifacts. For some parts the "current" statistics can be generated. Like the number of artifacts, the number of bytes etc.

For gathering long term in information Package Drone should be enhanced for having some sort of metric storage, which can in addition render nice charts in HTML. Information should be stored over time and adding new metrics inside Package Drone should be easy. Also should there be an internal API for reading metrics.

In addition a few new metrics should be implemented, like number of downloads, number of logins, time for processing, ...

If possible time series storage and HTML charts should not be implemented completely, but appropriate open source solutions should be integrated.

To get in touch with the project see the GitHub repository eclipse/packagedrone or contact Jens Reimann. Package Drone is an OSGi (Equinox) application written in Java 8. It uses Jetty, JSP and Bootstrap as Web UI.

Possible Mentors: Jens Reimann

Package Drone: Implement a secondary index

Package Drone is a Java/OSGi based software artifact repository with a focus on OSGi.

At the moment Package Drone stores all information in-memory and on disk. But without generating any index information with that. It is planned to implement some indexing at a later time.

For this task a secondary index for user interaction should be implemented which takes in account all data gathered and extracted by Package Drone in order to manually search for artifacts. This search should also be integrated into the Web UI.

As a backend for indexing we had Apache Lucene/Solr in mind. But this was only a first guess. Maybe there is a different open source solution for this task.

To get in touch with the project see the GitHub repository eclipse/packagedrone or contact Jens Reimann. Package Drone is an OSGi (Equinox) application written in Java 8. It uses Jetty, JSP and Bootstrap as Web UI.

Possible Mentors: Jens Reimann

EASE: Add support to sign and verify scripts

EASE is the scripting project for eclipse. It allows to execute scripts from local and remote resources. To increase security (especially for remote scripts) we want to support script signing and verification.

Your task would be to

  • create a signing mechanism for scripts (arbitrary text files)
  • verify signed scripts upon execution
  • provide preferences to enable/disable execution of unsigned scripts
  • provide UI to warn users of unsigned scripts/invalid signatures

When you think of applying for this project, you should have experience on signature creation and verification. Further it would be beneficial to get accustomed to EASE.

If you are interested, you need to introduce yourself on our mailing list which you find on the project page.

Possible Mentors: Christian Pontesegger

EASE: Support generic script keywords

EASE is the scripting project for eclipse. It allows to execute scripts from local and remote resources. Users may write their own scripts and augment them with keywords, that trigger custom actions, eg bind scripts to dynamically generated buttons in toolbars or menus. Currently the keyword mechanism is limited to fixed keywords. The idea is to allow users to add their own keywords and also allow them to detect, change and react on them.

Your task would be to

  • create a UI for the Properties view to display and change keywords of a script
  • change the current Publisher/Subscriber pattern for keywords to use the event bus of eclipse
  • Adapt current keyword listeners for toolbars to use the event bus
  • provide a new keyword handler to enable scripts to run at a certain time, like a cron job.

When you think of applying for this project, you should be familiar with the usage of EASE scripts, so you should know about the keyword mechanism and what it does. Further playing around with the event bus might be helpful.

If you are interested, you need to introduce yourself on our mailing list which you find on the project page.

Possible Mentors: Christian Pontesegger

Interested Students: Jayamine Alupotha, Vidura Mudalige

Vorto: Graphical IoT System Modeling Tool

Vorto is an IoT toolset for eclipse that allows users to describe characteristics and services of real world devices in a technology agnostics language, so-called information models. The information models are hosted in a centralised Information Model Repository. Vorto Code Generators then translate the information models into platform - specific code.

Your task would be to create a graphical modelling tool that allows users to describe an IoT system by binding information models (and thus devices) with various re-useable building blocks, e.g. MQTT, Kura Gateway, IPhone, etc, similar to Bit-reactive's modeling tool. The model is input for Vorto Code Generators to create platform - specific code for the IoT system. The Code Generator Implementations are not scope of this task.

To get in touch with the project source code, please check out the source code repository on Github (https://github.com/eclipse/vorto).

Possible Mentors: Alexander Edelmann

Vorto: Web-based Editor to describe IoT devices

Vorto is an IoT toolset for Eclipse that allows users to describe characteristics and services of real world devices in a technology agnostics language, so-called information models. The information models are hosted in a centralized Information Model Repository. Vorto Code Generators translate information models into platform - specific code.

Your task would be:

  • Implementation of a web-based IoT Information Model Editor using Eclipse Xtext that can be directly reached from the Information Model Repository. The editor should have syntax highlighting, code-completion and model validation features, similar to the Eclipse-based Vorto toolset.
  • Allow users to save their models in draft state in a development workspace of the Information Model Repository.
  • Allow users to publish models in completed state to the release workspace of the Information Model Repository.

To get in touch with the project source code, please check out the source code repository on Github (https://github.com/eclipse/vorto).

Possible Mentors: Alexander Edelmann

Interested Students: Aaron Cho

ChemClipse: Chemical Pattern Recognition

ChemClipse is an open source framework for chromatography/mass spectrometry. It aims to be an alternative for analytical chemistry in the same way as LibreOffice is for office suites. It is based on Eclipse RCP technology and can be extended by plugins in many different ways. We will have a look at the topics:

  • Statistics and machine learning
  • Chemistry and Life Science

Students will learn how to use different technologies like SWT, Eclipse e4, Dependency Injection, Event Broker, OSGi to create functionality that extends the ChemClipse framework as well as Maven/Tycho and JUnit to enable automated tests and builds. We will explore real world data sets, e.g. wood or whisky samples, for statistical analysis and machine learning purposes. The goal is to characterize unknown samples in a similar way pictures are classified by machine learning algorithms. Therefore, we will re-use existing libraries (e.g. Apache Math, EJML, ...). Moreover, we will write code to extend and improve existing functionalities in the PCA (Principle Component Analysis) plugin. Nowadays, analytical chemistry is already an important technique in many areas. Moreover, it will become more important when it comes to analyze healthcare data or to protect our environment.

Please follow the tutorial how to check out the source code: https://wiki.openchrom.net/index.php/Development

Possible Mentors: Philip Wenig

Interested Students: Rafael Aguayo

Eclipse SmartHome: Integrate with Google's Physical Web

  • Description: Google's Physical Web is a new approach to make things easily discoverable and usable based on proximity information. As Eclipse SmartHome deals with many "Things", it would be nice to smoothly integrate with the Physical Web, i.e. an Eclipse SmartHome instance can announce itself and could potentially make subsets of things available based on the user's location. The project could also target openHAB 2 and its Android app and iOS app, where BLE beacon support could help on indoor location and writing urls to the beacon.
  • Proposal Focus: A project proposal could include the following features:
    • An Eclipse SmartHome instance (e.g. the openHAB 2 runtime) should announce itself through mDNS in the local network. Any smartphone that is in the same network and has the Physical Web app installed should directly find the instance and open the web client (Eclipse SmartHome Classic UI) of it.
    • A concept for persons and locations should be introduced, which allows tracking user locations, so that rules can compare and relate user and beacon locations.
    • BLE beacons could be programmed with (local) URLs that are location specific (e.g. "living room") and which open the web client with this context, i.e. directly display the page for the living room. As this uses local URLs, this obviously only works for smartphones that are on the local network.
    • As an extension, the BLE beacons could use public URLs that point to https://my.openHAB.org (or some other reverse proxy mechanism), which can provide access to certain functionality for guests that are NOT on the local network. The tricky part of this is how to ensure the proximity of the guest (it should only provide access, if he is physically present). The beacons might have to broadcast a temporary access token with the URL that needs to be validated by the reverse proxy service.
    • As openHAB 2 is the main open source solution that uses Eclipse SmartHome, its native smartphone clients could be enhanced to directly support the Physical Web: BLE beacons could be directly programmed with a location-aware URL (similar to programming NFC tags) through the smartphone app.
    • Additionally the native apps could use the BLE beacons to determine the current location of the user (at the granularity of a room, if there is at least one beacon inside) and provide this information to the runtime, so that rules can make use of this information for context-aware use cases.
    • Last but not least, the last two features can be combined: The smartphone app (in the background) reports the user location to the runtime, which in turn sends local mDNS (or global BLE) announcements for the room or even for relevant devices within this room.

Back to the top