Skip to main content
Jump to: navigation, search

Difference between revisions of "Google Summer of Code 2020 Ideas"

Line 121: Line 121:
==== Topic 3: Bugfixes and Tool Updates ====
==== Topic 3: Bugfixes and Tool Updates ====
Update legacy applications e.g. regarding most recent model changes. Specific
Update legacy applications e.g. regarding most recent model changes, in particular:
* Task Visualizer: Remove circular dependency introduced in [ this commit]
* Task Visualizer: Remove circular dependency introduced in [ this commit]

Revision as of 08:48, 13 March 2020

Please see our main Google Summer of Code page for participation information.

Help Wanted

Any issue listed as helpwanted is a potential GSoC project idea.

  • 552710 Add External JARs selection ignored when creating a new project
  • 552270 [Code duplication] many helper methods for processEvents in test-cases
  • 552243 Security warning for unsigned content dialog should not use an error icon
  • 551573 Reduce space waste in compare editor
  • 551043 Target editor does not resize well
  • 550898 Allow to create subfolder in the New File wizard
  • 550816 Fix process monitoring bugs in PDE
  • 550783 Replace deprecated LogService usage inorg.eclipse.e4.ui.internal.workbench.Activator
  • 550641 Cheat Sheets for Hello World application is wrong
  • 550483 Add filter icon to project explorer toolbar
  • 550154 Use TableViewer in QuickAccessContents instead of Table
  • 550099 Closing the tree in Project Explorer should scroll to the correct top level element (Project)
  • 550078 a "search for dependency and add to target-platform" quickfix
  • 549952 [evaluation] Add support for evaluating expressions with anonymous class instances.
  • 546992 Run As > Java file for non-ICompilationUnit Java file with JDK 11
  • 546857 [code mining] skip parameter names for library method with no source information
  • 544529 [content assist] Asynchronous content assist completion doesn't keep selected proposal in CompletionProposalPopup

A complete list is available here.

Other ideas

Project team member and potential mentors, add your content here. The format suggested below is just an idea. Play with the layout, but please don't mess with content provided by other projects. Please be sure to follow branding guidelines (e.g. "Eclipse Dash", not "Dash"). Putting things in alphabetical order seems like a fair thing to do. Links to content hosted elsewhere are fine, but bear in mind that this page will likely be the main point of contact for people who are not already inside your community.

Example Project idea

Description of the Example Project idea with links to more information, bugs, and other useful content.

Specific work that this could involve includes:

  • Bullet list of specific
  • objectives

Possible mentors: Somebody Mentor

Eclipse 4diac

Eclipse 4diac is an environment for programming distributed industrial process measurement and control systems according to the IEC 61499 standard.

Topic 1: Add OCL for Detecting Model Inconsistencies in 4diac Models

Eclipse provides a OCL (Object Constraint Language) infrastructure. This allows to specify generic constraints a model has to fulfill. This can be utilized in Eclipse 4diac to add checks for issues and inconsistencies in the models developed in 4diac.

Skills required: Java, eCore, OCL beneficial

Possible mentor: Alois Zoitl

Topic 2: Generation of Unit-test code out of the component specification

IEC 61499 Function Blocks form componentized units of code. In order to improve code quality on these library elements, they have to be thoroughly tested. A well-known method for this is unit testing. Frameworks like JUnit, Spock, or Fitnesse are interesting starting points for a IEC 61499 Function Block test framework. The goal of this project is to include test specification into Function Block descriptions to create portable tests and improve library code quality on an uniform basis over all compatible IEC 61499 frameworks.

Skills required: Java, EMF

Beneficial skills: JUnit, Xtend, Groovy, Spock, C/C++

Possible mentor: Martin Melik-Merkumians

Topic 3: Extend 4diac FORTE with the Production Performance Management Protocol from Eclipse Unide

The Eclipse Unide project defines the Production Performance Management Protocol (PPMP), with which production systems can report on machine status and product status. As Eclipse 4diac is used to program production equipment it would be great that we natively support the PPMP so that Eclipse 4diac users can utilize it in their applications.

Skills required: C++

Possible mentor: Alois Zoitl

Topic 4: Manage 4diac FORTEs with Eclipse hawkBit

Eclipse hawkBit provides the infrastructure to manage and update a larger number of devices. This is a feature which would be extremely helpful for managing a set of 4diac FORTE based devices. As part of this topic it should be investigated what is needed on 4diac FORTE to interact and integrate with Eclipse hawkBit and to develop a first proof of concept.

Skills required: C++

Possible mentor: Alois Zoitl

If you have any questions, feel free to ask them on to the 4diac mailing list.

Eclipse APP4MC

Eclipse APP4MC is a platform for engineering embedded multi- and many-core software systems. The platform enables the creation and management of complex tool chains including simulation and validation. As an open platform, proven in the automotive sector by Bosch and their partners, it supports interoperability and extensibility and unifies data exchange in cross-organizational projects. APP4MC is one of the results of the ITEA3 Amalthea and Amalthea4Public research projects.

What is Eclipse APP4MC?

Click here to get a quick overview of how Eclipse APP4MC and Capra can help you manage timing, scheduling and traceability in a multi-core environment.

How should I apply?

If you are interested in any of these topics, please...

  • Download and extract APP4MC
  • Open the Tools-Examples (File -> New -> Example -> APP4MC Tools Examples -> Java Example)
  • Modify the file so it will output some information about the model, e.g. the number and name of tasks
  • Create a GitHub account (in case you don't yet have one) and upload your results
  • Contact us via the APP4MC mailing list. Don't forget to attach the Link to your GitHub repository.

If you have any questions, feel free to ask them on to the APP4MC mailing list.

Topic 1: Simulating APP4MC Models

Eclipse APP4MC integrates the Amalthea System Model that allows, among others, describing the structure of software. In order to verify the timing behaviour of the described systems, your task lies in supporting the visual assessment by e.g. simulating the system (e.g. executed runnables and tasks) and generating the resp. BTF trace.

(Skills required: Java, understanding BTF beneficial)

Possible mentor: Lukas Krawczyk

Topic 2: Response Time Analysis+

Response time analysis was tackled to some extent in a GSoC project 2019 Code can be found here. Many open topics can still be addressed in new work such as cache-related preemption delays (CRPD), limited-preemptive scheduling or G-EDF / LLF scheduling. Also, model checking or compositional analysis could be used as an alternative to current analytical approaches. The priority assignment problem is also a problem that, right now, is not yet covered in any AMALTHEA-based open-source implementation. Your possible mentor has lots of literature references - so please get in touch :-)

(Skills required: Java)

Possible mentor: Robert Höttger

Topic 3: Bugfixes and Tool Updates

Update legacy applications e.g. regarding most recent model changes, in particular:

  • Task Visualizer: Remove circular dependency introduced in this commit
  • OpenMapping: Fix DSE Optimization approaches (Energy Minimization, Load Balancing ILP- and GA, Greedy Heuristic)

(Skills required: Java)

Possible mentor: Lukas Krawczyk

Eclipse ChemClipse

ChemClipse is a software used in chromatography, spectrometry and spectroscopy. Among others, it supports to read mzXML files.

The source code is located here and can easily be cloned:
If you are interested in one of the topics you have to apply on the mailing list.

Topic: Extend support for mzXML, mzML

Reading mzXML data works already. An export option shall be added. It's the same for other known XML formats like mzML.

Skills required: Java, XML processing

Possible Mentor: Philip Wenig

Eclipse SWTChart

SWTChart is a powerful library to create charts and display data using SWT. It can be easily used in Java desktop applications. Only a few lines of code are necessary to create interactive and feature rich charts:

public class MyChart extends MassSpectrumChart {
	public MyChart(Composite parent) {
		super(parent, SWT.NONE);
	private void initialize() {
		IChartSettings chartSettings = getChartSettings();
		List<IBarSeriesData> barSeriesDataList = new ArrayList<IBarSeriesData>();
		IBarSeriesData barSeriesData = new BarSeriesData(SeriesConverter.getSeriesXY(SeriesConverter.BAR_SERIES_1));

The source code is located here and can easily be cloned:
If you are interested in one of the topics you have to apply on the mailing list.

Topic: Extending the export options

Many export options are contained already, e.g. to export to bitmaps as well as to scripts. The R script option is really helpful, especially when preparing scientific charts for publication, but it needs improvements. As the data is stored in a generic way, many different export options can be implemented. The following improvements are needed:

  • Improving/optimizing *.svg export for Inkscape
  • Extend the R-script export
  • Improve the *.png and *.jpg options using the display
  • Create bitmaps natively (no restriction regarding resolution and size of the display)

Skills required: Java, SWT

Possible Mentor: Philip Wenig

Eclipse Che

For any questions/comments/interests, we have a dedicated Mattermost channel:

Topic 1: Co Editing

Last year, Rijul started to write a VSCode extension to enable Atom Teletype Co-editing feature in VSCode and Eclipse Che 7. We made great progress but we still have work to do to achieve a full featured Co-editing experience.

  • Done: Joining a teletype portal
  • TODO: Enable the editor sync
  • TODO: Deal with users and authentication
  • TODO: Show cursors of each participants
  • TODO: Run a Teletype server in Che as a sidecar container
  • Explore different alternatives: write a Theia browser extension to achieve that rather than a VSCode extension.

This is a complete rewrite of what had been done previously in Che6 and GWT editor

Possible mentors: Sun Tan or ping me in mattermost

Eclipse Hono

Eclipse Hono™ provides remote service interfaces for connecting large numbers of IoT devices to a back end and interacting with them in a uniform way regardless of the device communication protocol.

Topic 1: Create a new protocol adapter

Hono currently has protocol adapters for HTTP, MQTT, AMQP 1.0, Kura, CoAP, LoRaWAN, and Sigfox. As Hono is an IoT messaging abstraction layer, there is room additional protocol adapters.

It is not a requirement to implement the actual protocol. It is perfectly fine to re-use a, license compatible, open source implementation of that protocol. However that fact should be part of your project proposal.

Possible mentors: Jens Reimann

Pre-requisites & required skills:

  • Know Java and optionally asynchronous programming pattern (specifically vert.x)
  • Some basic knowledge about the protocol you want to implement
  • Create a project proposal with a basic outline how the protocol would map into the Hono architecture

Required tasks:

  • Create a basic implementation of the protocol adapter: at least implement "telemetry" and "event" APIs.
  • Extend existing integration tests to cover the new functionality
  • Create and document some "demo"/"debug" tooling for manual testing (may use existing tooling)

See also:

Eclipse IoT Packages

IoT Packages is an effort by the Eclipse IoT working group, to create easy to deploy Eclipse IoT based, end-to-end scenarios, on top of Kubernetes and Helm.

Topic 1: Enhance existing Cloud2Edge package

The first package consists of the three Eclipse projects Hono, Ditto, and Hawkbit. It would be great to have an additional Eclipse IoT project in the mix.

Possible mentors: Jens Reimann

Pre-requisites & required skills:

  • Have some basic knowledge of Kubernetes and maybe Helm
  • Identify a suitable Eclipse IoT project
  • Describe how this would fit into the architecture of the existing package

Required tasks:

  • Create the required helm charts
  • Enhance the overarching package helm chart
  • Enhance the existing documentation and walk through, to include the new functionality

See also:

Topic 2: Create a new package

The first package consists of the three Eclipse projects Hono, Ditto, and Hawkbit. And it would be great to have another package.

Possible mentors: Jens Reimann

Pre-requisites & required skills:

  • Have some basic knowledge of Kubernetes and maybe Helm
  • Identify at least two suitable Eclipse IoT project
  • Propose an architecture for then new package

Required tasks:

  • Create the required helm charts
  • Create the overarching package helm chart
  • Create some basic documentation/tutorial on how to work with this package

See also:

Eclipse Vert.x

For any questions, check out the Gitter channel or the Vert.x Mailing list.

Service Proxy refactoring & Protobuf support

This project consists in refactoring the code generation logic inside vertx-service-proxy module and implement the Protobuf encoding for event bus services.

For more informations please visit our wiki page about it: GSoC project proposal: Service Proxy refactoring & protobuf support

The project will be an opportunity for you to learn how to do code generation in Java and how to interact with Protobuf.

Skills required: Java

Possible Mentor: Francesco Guardiani & Paulo Lopes

Eclipse Capra

Eclipse Capra is a traceability management tool. It allows the creation of trace links between arbitrary artefacts, provides features to edit them and keep them consistent, and visualise the relationships between them. This includes traceability matrices and graph visualisations that are helpful for reporting and change impact analysis.

Topic 1: Traceability visualization

Currently Eclipse Capra uses plantUML to support visualisation of trace links in form of a graph view and a matrix view. While these are the two standard traceability visualisations, we interested in exploring other visualisation options, and therefore exploring the possibility of using java script libraries such as D3js. In this work the student will perform the following:

  • Explore possible visualization libraries that are compatible with Eclipse capra
  • Implement a prototype with one or two of the libraries.

Topic 2: Support collaboration features

Studies have shown that it is beneficial to support collaboration on the trace links level. Collaboration features include features like commenting on the link and voting on the trace links. In the work the student will perform the following:

  • Explore which collaboration features are useful
  • Extend the trace model so that it supports additional collaboration data e.g., comments
  • Investigate how such a model can be used in a collaborative environment e.g., on a git repository

Topic 3: Add analysis capabilities

Currently the visualization of trace links only shows the traceability links for a selected element with no metrics. In this work we want to add metrics such as centrality. We also want to generate useful statistics based on the links e.g., minimum, maximum and average centrality and so on. In this work the student will perform the following:

  • Investigate which metrics are useful
  • Implement a selection of metrics
  • Implement a corresponding visualisations to show the metrics

Topic 4: Smart trace link suggestions

Traceability links can be derived by observing how people work with certain files. In this work we are interested to have the capability to suggest trace links based on activities in the work space. E.g., Listening to which files have been worked on together for a certain time period. In this work the student will perform the following:

  • Implement a prototype that suggest trace links to the user

Skills required: Java

Possible Mentors: Salome Maro Jan-philipp Steghöfer

Eclipse Kura

Eclipse Kura™ is an extensible open-source IoT Edge Framework based on Java/OSGi. Kura offers API access to the hardware interfaces of IoT Gateways (serial ports, GPS, watchdog, GPIOs, I2C, etc.). It features ready-to-use field protocols (including Modbus, OPC-UA, S7), an application container, and a web-based visual data flow programming to acquire data from the field, process it at the edge, and publish it to leading IoT Cloud Platforms through MQTT connectivity.  

Topic 1: TensorFlow for Java in Kura 

TensorFlow™ is an open-source software library for high-performance numerical computation.    This proposal requires you to acquire a basic knowledge of TensorFlow for Java and Eclipse Kura, in order to be able to wrap TensorFlow as a Kura bundle, exposing APIs that can be leveraged by other user applications.    The resulting bundle should:   

  • enable the user to train the neural network  
  • Provide APIs that can be used by other applications to feed with new data the TensorFlow processing.  

The integration should be completed by the creation of a specific Kura Wire component that has input ports for receiving messages from other Wire components, feeding the TensorFlow neural network. The Wire component is expected to have output ports for providing messages for downstream components in the graph that, for example, can publish messages to a remote cloud platform.   The student should design and set up a real-world use case example (i.e. predictive maintenance on vibration monitoring anomaly detection) where, using a Wire Graph, the data retrieved from the field, using industrial protocols, is processed by TensorFlow and produces an alert message when unexpected behaviour is found. This alert message can then be published to a cloud platform.

Possible mentors: Matteo Maiero

Topic 2: Eclipse Kura on GraalVM 

Experiment the possibility to run Eclipse Kura or part of it onto a GraalVM, leveraging the optimization features supported by this alternative VM. The student should work to enable the OSGi stack of Kura to run on GraalVM, providing a complete analysis in terms of features leveraged and eventual improvements achieved.

Possible mentors: Matteo Maiero

Back to the top