Google Summer of Code 2017 Ideas
- 1 Eclipse 4diac
- 2 Eclipse ChemClipse
- 3 Eclipse Dash
- 4 Capra
- 5 Eclipse RDF4J
- 6 EASE
- 7 EMF Forms goes AngularJS: A generic editor framework for the web
- 8 APP4MC
- 9 Eclipse CHE: Datasource plugin for Eclipse Che 5
- 10 Eclipse Kapua: IoT gateway simulation
- 11 Eclipse OMR
4diac is an environment for modelling and executing distributed real-time industrial control applications utilizing the modelling language defined in IEC 61499. For that 4diac provides as its two main components the Eclipse-based 4diac-ide as development and device management tool and an execution environment called FORTE for executing the models on embedded control devices.
Here are some of our project ideas:
- Generate documentation pages out of model components. In 4diac the main component elements already hold quite some information. However to find out what a component is doing and what it can be used for is quite hard. Similar to Java doc or Doxygen it would be great to generate HTML files for our model components based on the already available information.
- Mylyn integration for 4diac models
- Generation of Unit-test code out of the component specification
ChemClipse is a tool for chromatography/mass spectrometry. The combination of chromatography/mass spectrometry is often used in the area of forensics, for quality control as well as for life sciences. Chemical data is best suited to be used in combination with machine learning and statistics. Moreover, when it comes to machine learning, script languages like Python or R play a major role. Hence, we will have a look how to efficiently combine chemistry, machine learning and scripting as part of the GSoC initiative.
Here are some of our project ideas:
- Integrate a bridge from ChemClipse to R, see Bug 511955
- Improve statistics and the PCA functionality, see Bug 511956
- PCA on scans does not work, see Bug 499542
- PCA Editor 3d view, see Bug 486169
NOTE that this is basically a placeholder to give mentors an idea of how they might format a section of their own. This may actually survive as an idea to present to students, but--by way of expectation management--expect that it will disappear.
Eclipse Dash is a place where the community itself can collaborate on tools for community awareness and collaboration in support of our ultimate objective of committer quality and cooperation. This is very much a research project as we are not entirely sure what these tools will be.
Here are some of our project ideas:
- Update the IP cartoons and move them to the handbook bug 498290
Capra is a traceability management tool that enables creation, maintenance and visualisation of traceability links between arbitrary development artifacts such as requirements, design models, code, task tickets and so on. Since Capra is a product of a research and academia project, there are lots of interesting features that students could implement. Please browse on the list of features here, but the following have a high priority and we encourage students to look at these:
- Analyse the traceability models and create visual representations of issues, traceability statistics and so on. See Bug 510492
- Add collaboration features to the tool. See Bug 506906
For more information about this project, contact the project team via their mailing list.
Eclipse RDF4J is a framework for scalable processing of linked data in RDF. This includes parsing, writing, scalable database storage, reasoning and querying (using the SPARQL query language). RDF4J offers a set of Java libraries as well as a fully-fledged database server and several client UI tools to interact with RDF data. We're a small team who are open to fresh ideas and new contributions. People interested in doing a project with RDF4J are invited to browse through our issue tracker and look for anything marked "help wanted", or to submit their own proposal.
Here are some project ideas:
- Extend the SPARQL QueryRenderer utility to support more advanced SPARQL 1.1 features (subqueries, aggregates, etc.) #496
- Extend/replace the SPARQL QueryBuilder to a more user-friendly API and allowing more advanced SPARQL 1.1 features #71
- Add support for the SHACL (Shapes Constraint Language), a declarative language for specifying data validation constraints on RDF database #743
EASE allows to add scripting functionality to the Eclipse IDE. By providing script source locations we read script code and make it available in the UI. Such scripts may use special header keywords that trigger certain actions.
By introducing a new keyword for plugin dependencies, scripts could aid the user to install required components before run. A detailed description is given in Bug 511525.
Script location resolvers
We use parsers to fetch scripts from the file system or the workspace. A prototype for an http index file parser is available, too. It would be great to have parsers for source control systems like github, gerrit or svn to fetch scripts directly from such locations. See Bug 511528 Bug 511529 Bug 511530 for details.
The UI module of EASE allows to open/close views and to display some basic dialogs. For user scripts it would be interesting to create custom dialogs to query for user input. Such dialogs would typically be forms based. This task is about developing an interface to dynamically create UI dialogs with user defined content. There should be support for text input, checkboxes, radio buttons and file/folder selections.
The programming part of this task might be small, however we expect a clear and simple API here, so API development would be the main task here. The API should be simple and intuitive. It is not intended to copy the SWT API in the scripting layer.
If you are interested in this topic you should provide an abstract of the planned API on the mailing list before applying for GSoC.
EMF Forms goes AngularJS: A generic editor framework for the web
EMF Forms is an Eclipse framework to efficiently develop form-based UIs (see http://eclipse.org/ecp/emfforms/). It also provides a renderer for web applications called “JSON Forms”. JSON Forms transfers the concepts of EMF and EMF Forms to a JSON Schema and AngularJS based web stack. EMF Forms provides a generic editor component, which makes it very efficient to create editors a given data model. This is often used for the creation of developer tooling. However, it is bound to SWT and XML. The goal of this project is to provide this generic editor framework on the web stack of EMF Forms, too (JSON Forms). Instead of EMF and XML, it will consume a JSON Schema and a JSON file as input/output. This component would enable the efficient creations editors for the web based on a given JSON Schema and therefore support the development of tooling for platforms such as Eclipse Che or Orion.
- Possible mentor: Maximilian Koegel
- Interested student: Lucas Koehler
The Eclipse APP4MC project provides a platform for automotive tooling based on AUTOSAR compliant models and focuses on developments for multi and many core systems. A basic set of tools is available to support different design steps not only limited to the automotive domain. APP4MC therefore includes:
- A basis for the integration of various tools into a consistent and comprehensive tool chain
- Extensive models for timing behaviour, software, hardware, constraints descriptions etc. (used for simulation, analysis, and data exchange)
- Tools for automatic software parallelisation i.e. for optimising multi- and many-core architectures
- Examples, documentations, workflows, and more
A4MCAR: Multi-core Demonstrator
A4MCAR (project idea I) is a remote controlled electric demonstrative car that will not only be equipped with a multi-core microcontroller for actuation and sensing (real time tasks), but also with a Raspberry Pi 3 in order to address more complex applications such as image processing, web server streaming, and touchscreen UI interactions. APP4MC will be used for both low-level and high-level modelling including runnables, processes, and threads of the whole system for an accurate and precise system analysis. The student's efforts could address:
- Evaluating recent techniques in multi-core software development for scheduling, partitioning, and optimisation
- Design of an hardware structure for the A4MCAR
- Developing low-level drivers for multi-core micro controllers
- Administration of a Linux-based system on the Raspberry Pi 3 to be able to achieve
- image processing
- camera streaming
- sensor driving
- core utilization interface on a web server
- a touchscreen user interface for dynamical core and process management of A4MCAR
- Researching the kernel-level processes and profiling developed applications on instruction-level on both low-level and high-level controllers
- Developing necessary scripts to potentially distribute applications/processes given the inputs from APP4MC
- Modeling the system on APP4MC, based on the findings from profiled applications and evaluating the parallelization outcomes on controllers
Implementations would be closely related to Rover developments (Polarsys). Possible mentor: Robert Hoettger Interested student: Mustafa Ozceilikors
Eclipse CHE: Datasource plugin for Eclipse Che 5
Eclipse CHE is an open source developer workspace server and cloud IDE.
Previously we had a datasource plugin for Che3. See demo https://drive.google.com/file/d/0B9vGYZYE8V2xUF9XcHRTOG5oV0k/view?usp=sharing
To goal is to rewrite this plugin for Che5.
- Move the server part to a Che agent
- Find a replacement to Schema crawler which is LGPL and can't be used in Che
- Adapt UI
- Adapt datasource discovery to detect the Che runtime process rather than Docker runner
- Possible Mentors: Sun Tan
- Interested Student: Sudaraka Jayathilaka
Eclipse Kapua: IoT gateway simulation
Eclipse Kapua is a modular IoT cloud platform to manage and integrate devices and their data.
The goal of this project is develop one or more industrial IoT data models and simulate them in a way that they can be integrated into the already existing Kura (IoT gateway) simulator. The idea is to have a simulated data model (like a wind park, a train or anything else) which generates realistic telemetry data and which can be controlled through the cloud solution.
The tasks would be:
- Define a data model (e.g. wind park)
- Write a simulation, which runs continuously in either real time or accelerated time
- Integrate this simulation into the Kura simulation framework
- Maybe write a Web based UI for controlling the simulation from a different communication channel
- Possible Mentors: Jens Reimann
- Interested Student: Sudaraka Jayathilaka
Eclipse OMR provides reliable C and C++ high performance components (garbage collector, Just In Time compiler, platform porting library, asynchronous event handling, tracing, diagnostics, ...) for building all kinds of language runtimes such as Java, Ruby, Python, Lua, etc. These components were originally distilled and contributed from the IBM J9 Java Virtual Machine and made available for use in other language runtimes. The OMR project also includes a library called JitBuilder, which lets you create a JIT compiler for a new language relatively quickly.
Our ultimate goal is to build an open reusable language runtime foundation for cloud platforms in full cooperation with existing language communities. There are currently OMR based runtimes for Java (IBM J9), CRuby (Ruby+OMR Technology Preview), Lua (Lua Vermelha), Smalltalk (SOM++ with OMR), Rosie Pattern Language, Base9 (an ultra simple runtime for workshop-based learning about the OMR JitBuilder library).
Here are some of our project ideas :
- Port a (subset of a) new language or runtime to use OMR (e.g. Python,R, Julia, make a suggestion!) using the JitBuilder library
- Use JitBuilder to dynamically compile native code to accelerate some application (e.g. Apache Spark, NumPy/SciPy, or make a suggestion!)
- Valgrind support for the Garbage Collector and JIT memory http://valgrind.org/docs/manual/mc-manual.html#mc-manual.mempools
- Port JitBuilder interface to another language (e.g. Ruby, Python, make a suggestion!)
- Java bindings exist so you can write Java code to dynamically generate native code callable as a JNI method
- similar model could be applied to another language or possibly using SWIG to make JitBuilder accessible from more languages
- Port OMR to a new hardware platform (e.g. ARM64)
- Enhance Intel processor vector instruction support in the OMR compiler
- add support for 256- and 512-wide vector data types and enhance JitBuilder interface to handle different width data
- showcase with JIT compiled vectorized code!