Skip to main content
Jump to: navigation, search

Google Summer of Code 2016 Ideas

Revision as of 06:48, 17 February 2016 by Philip.wenig.openchrom.net (Talk | contribs) (Ideas)

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

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

Back to the top