Skip to content

SoCiS 2019

Marcos Cardinot edited this page Apr 10, 2019 · 3 revisions

ESA Summer of Code in Space 2019

Summer of Code in Space

Table of contents

  1. Introduction
  2. Getting in touch!
  3. Who are we?
  4. What do we expect from you during SoCiS?
  5. List of ideas
  6. Submitting your proposal

1. Introduction

ESA Summer of Code in Space (SoCiS) is a global program focused on bringing more student developers into open source software development. Students work with an open source organization on a 3-month programming project during their break from school.”

Who’s eligible to participate as a student in SOCIS?

You must be 18 years of age or older to be eligible to participate in SOCIS. For the purpose of this program, ESA defines a student as an individual enrolled in or accepted into an accredited institution including (but not necessarily limited to) colleges, universities, masters programs, PhD programs and undergraduate programs. You should be prepared, upon request, to provide ESA with transcripts or other documentation from your accredited institution as proof of enrollment or admission status.

Must read

2. Getting in touch!

You are more than welcome to contact us before submitting your proposal. In fact, a good way to increase your chances of being selected is to have good communication. So, if you are considering Evoplex for SoCiS'19, you should introduce yourself in the mailing list, and use the chat to discuss your ideas, ask questions etc.

So, if you have any question, suggestion or ideas: please, contact us!

3. Who are we?

Evoplex is (mostly) maintained by students and scientists of the National University of Ireland Galway. The project was started by members of the Computational Intelligence Research Group, who could not find any other FLOSS option available to fit their needs. We are friendly, cooperative and relatively informal. We will take your work with respect and appreciate the time that you will spend on Evoplex since it will help us in both our own and our community's research projects.

Our community values diversity and is committed to providing a productive, harassment-free to every member. Our code of conduct explains the values that we as a community uphold. Every member (and every SoCiS student) agrees to follow the Code of Conduct.

4. What do we expect from you during SoCiS?

We expect you to be an engaged member of the Evoplex community. In particular, by being a SoCiS student for Evoplex you agree to obey and uphold our Code of Conduct.


We offer some flexibility around milestone completion dates, you should expect your project to be your primary focus this summer. Thus, students who are accepted into the SoCiS program are expected to work full-time for the 12 weeks of the program -- that's 35-40 hours a week. It is not a good idea to try to do SoCiS and also work another job; there simply isn't enough time. It's okay if your schedule doesn't allow 40 hours weeks every week (for instance, if you are going on vacation) but you'll have to let us know so that we can work around it.


Any SoCiS project for Evoplex will almost certainly involve becoming closely familiar with the internal workings of the software. Although mentors exist to help out with this process, it's unreasonable to expect them to be able to explain every part of every doc you might need to read. So, some level of self-motivation and definitely a willingness to learn are prerequisites.


Participation in the community (chat or the mailing list) is highly encouraged and helps us get a better picture of who you are, your abilities, and how you will be able to contribute to the Evoplex over the summer. In addition, the community is there to help you out! Feel free to ask questions, but do keep in mind that Evoplex is a fairly small organization, so there may not always be someone around to reply you instantly.

During the summer, you'll have to:

  • Write a short report for us once a week (e.g., blog post).
  • Commit early and commit often! Push to GitHub so that we can see and review your work.
  • Actively work on our project timeline and communicate with us during the community bonding period.
  • Communicate every working day with your mentor. Just say "Hello" if you like. It can be via email, zulipchat, github comments etc.
  • If there is a reason why you can't work or can't contact us on a regular basis, please make us aware of this.
  • If you don't communicate with us regularly, we will fail you.

Midterm and Final evaluations

  • Set a realistic goal for mid-term. If you fail to meet your own goal, we are more likely to fail you in the evaluations.
  • Have some code merged into our repository at the end of the summer to pass the final evaluation.
  • The last point is a hard requirement. Make sure that your time plan includes it.

5. List of ideas

The currently proposed projects are:

:scroll: Evoplex Scripting Engine

Description: In many scenarios, the user may want to create simple scripts to run smaller sets of experiments. In those cases, performance might not be an issue and having to compile a proper plugin to perform simple tasks might be painful. So, we should have a script engine to allow users to create models or graph generators scripts that would behave just like a compiled plugin.

Deliverable: implement the script engine; write unit-tests; implement a few demo scripts; and provide documentation.

Requirements: C++, Qt5, JavaScript and CMake.

Difficulty: 7/10

Mentors: cardinot, afsza.


:chart_with_upwards_trend: GUI Improvements

Although very functional, the Evoplex GUI lacks a lot of features. This project comprises several smaller work packages (WP), which can vary both in difficulty and in time to accomplish. Below are some ideas which could be composed in this project:

  • Shortcuts Manager: Evoplex should allow the users to set keyboard shortcuts to speed up their workflow. This WP includes the implementation of a widget to allow searching, customizing, resetting, exporting and importing the keyboard shortcuts.
  • Localization: Evoplex should support the translation of its strings. It should be possible to select the languages on the GUI via the settings window and the menubar.
  • Colormap editor: The graph and grid widgets allow the users to select some of the predefined colormaps. However, currently, it's not possible to set a custom colormap. This WP should include the development of a widget to allow creating, editing, removing, importing and exporting colormaps.
  • Allow saving the experiment's workplace: The experiment widget should allow saving, loading, importing and exporting predefined workplace. For instance, imagine that you open two graph widgets, you resize them, zoom-out in one of them to have a complete view of the graph, set the colomap of the other one and choose to plot a different attribute. Then, you should be able to store the state of your current workplace to be used later.
  • Graph duplication: the graph and grid widgets could have a button to allow its duplication. For instance, you open the graph widget, zoom-out, set the color and attribute; then, if you want to open another view with the same state, you would have to do everything again. So, the graph widget should have a "duplicate" button to allow opening a new widget with a clone of the current graph.

Deliverable: This is a flexible project, it's expected that students may want to add/remove/replace something to this list. However, the student must be careful to clearly demonstrate that the project will require 12 weeks (40 hours per week) to be completed. Despite being a requirement for any other project, if you plan to add something new to this list, you must contact the mentors (mailing list or chat) prior to submitting your application.

Requirements: C++, Qt5 and CMake.

Difficulty: 2/10 - 7/10 depending on the feature.

Mentors: cardinot, afsza.

:art: Graph Designer

We should have a tool to allow for drawing graphs. Initial requirements:

  • Initialize graph from a Graph Generator plugin (or empty canvas)
  • Create/delete nodes (and edges) using the mouse
  • Drag'nDrop nodes
  • Add/delete nodes (and edges) attributes
  • Export the graph to CSV format

Requirements: C++, Qt5, OpenGL and CMake.

Difficulty: 7/10

Mentors: cardinot, afsza.

6. Submitting your proposal

Proposals must be sent through the official SoCiS page. The student’s application period for SoCiS starts on April 19, 2019, and finishes on May 4, 2019 (see the timeline). However, we encourage students to send a first draft early in this period, this allows us to give feedback and ask for more information if needed (contact).


  • Your application MUST follow the guidelines described here.
  • The applications which do not follow the template will be ignored automatically. :boom:
You can’t perform that action at this time.