Google Summer of Code 2020 proposed ideas
Students interested to participate should check which of the following projects fits their interests and skills.
For practical information, students visit this page.
- 1 Enabling multi-user application creation and sharing for the NodeRed tool using cloud infrastructure
- 2 New Pairing-Friendly Curves Support for bplib
- 3 Moodle ADaptable VIsualization for CommunitiEs
- 4 Adding dwg support to ThanCad
- 5 Addition of Greek glyphs in Open Source Fonts
- 6 Symplegma
- 7 clio — Software Components and IP Management System
- 8 OpenProject Work-Package #1 to support modeling of the PM2 methodology for project management
- 9 OpenProject Work-Package #2 to support functionality of the PM2 methodology for project management
- 10 Real time Django monitoring and profiling
- 11 eIDAS SAML functionality to keycloak
- 12 Refactor open source remote systems and network management solution
Enabling multi-user application creation and sharing for the NodeRed tool using cloud infrastructure
NodeRed is one of the most powerful open-source graphical programming tools for the Internet of Things; wiring together hardware devices, APIs and online services is easy, without requiring deep knowledge of computer programming. Furthermore, its community is quite active and has provided over 2400 packages with several functionalities. Unfortunately, NodeRed has some major drawbacks as well, namely: 1) it is not multi-user, thus the NodeRed server does not support sessions etc. and 2) it does not have an easy and seamless way to share packages among its instances, which now is performed by manually exporting and importing flows.
In this project we aspire to tackle these two drawbacks, by deploying NodeRed to the cloud. Specifically, a cloud deployment infrastructure will be used (probably Kubernetes), via which NodeRed servers will be deployed in containers. Furthermore, a front-end to the system will be created, via which each user will be able to create an account and login, deploy his/her own NodeRed instance and create applications in their personalized view. A NodeRed flow “store” will be created, allowing users to easily share their flows or use flows of others. Finally, the store will be populated with several flows that NodeRed repositories provide.
Prerequisites are: a) good knowledge of Python, b) some experience with Unix/Linux systems and, c) ideally, some knowledge on DEVOPS process. Apart from these, knowledge of Web concepts (ports, proxies, reverse proxies, http, websockets), or cloud tools like Kubernetes is definitely a plus..
Kontantinos Panayotou , Manos Tsardoulias, Andreas Symeonidis
New Pairing-Friendly Curves Support for bplib
bplib (https://bplib.readthedocs.io/en/latest/) and petlib (https://petlib.readthedocs.io/en/latest/) are two libraries, developed by George Danezis (http://www0.cs.ucl.ac.uk/staff/G.Danezis/) that allow developers easy, high-level experimentation with cryptographic concepts using Python.
However, modern cryptographic techniques are most effective when they use specific elliptic curves that are not supported by bplib / petlib (they use the elliptic curves provided by OpenSSL).
This project will carry out the necessary work so that bplib / petlib use recently developed, efficient elliptic curves, for example BLS12- 381.
Add support for recent, efficient elliptic curves, like BLS12- 381, to bplib / petlib
Very good knowledge of Python, C/C++, applied cryptography. Knowledge of Rust is a plus.
Moodle ADaptable VIsualization for CommunitiEs
Makes the forum communication more effective by using ADVICE, a visualization learning analytics tool. Through ADVICE, the users are able to label every message posted on the forum. At the same time, ADVICE provides to the learners and instructors, adaptable visualizations that reflect the development of the discussion as well as qualitative data about the user’s/learner’s contribution to the discussion. This way, the forum is transformed from a simple means of communication into a tool of learning and community building.
Develop a moodle plugin with the following functionality: • Allow the users to characterize every user’s message posted in the forum through a dropdown menu with various characterizations that follow the Community of Inquiry theory. • Oblige the student to characterize his own message before posting it to the forum. • Capture the data derived from the above functionalities. • Statistically analyze and combine the data from students’ interaction within the forum (number of posted messages, number of visits in the forum, etc) and the data captured from the above functionalities of ADVICE, in order to calculate qualitative and qualitative indicators of the discussion that reflect discussion development according to the Community of Inquiry theory. • Provide an adaptable visualization of the progress of the discussion according to various dimensions that the user will select from (e.g. according to the community’s perspective or the “high-participation students’” perspective). • Provide a star-chart visualization for the contribution of each user according to the analysis results in means of the Community of Inquiry theory. • Provide to the instructor a file with the data captured and analyzed.
PHP, C++, visualization
Kyparisia Papanikolaou, Maria Tzelepi
Adding dwg support to ThanCad
ThanCad is open source CAD (Computer Aided Design) software written in Python. It is used for educational purposes in NTUA as it provides special purpose technical tools for surveying engineers (photogrammetry, DEM, DTM, projections) and civil engineers (highway profile and design). It currently provides interoperability with other CADs via the dxf file format. However ThanCad lacks dwg file format support which is widely used for interoperability (or even as main drawing format). The aim of this proposal is to add dwg support to ThanCad using the opensource libdxfrw library (https://sourceforge.net/projects/libdxfrw/) which is written in C. The library can be ported to Python almost automatically using the opensource SWIG tool (http://www.swig.org/).
ThanCad will be able to completely save a ThanCad drawing to a dwg file. It will be able to read all the supported entities from a dwg file (lines, polylines, circles, arcs, ellipses, points, 3dfaces, single line texts, linear dimensions, images). ThanCad will be easier to use by the students. Finally more users will be attracted to use ThanCad, an open source CAD, as their main CAD system.
Very good knowledge of Python and C programming languages. Prior experience with SWIG is wellcome.
Athanasios Stamos (firstname.lastname@example.org), Dimitra Vassilaki (email@example.com)
Addition of Greek glyphs in Open Source Fonts
Many of the Open Source fonts (e.g., available at https://fonts.google.com), do not include glyphs for Greek letters and are therefore useless for using in a Greek environment.
The aim of this project is to improve this situation and add the missing glyphs in the correct Unicode codepoints. The exact set of fonts to be completed will be determined in discussions between the student and the mentor(s).
This is not a typical programming project. If you have never designed fonts before, it is probably not for you.
Full support for Greek text in a number of Open Source fonts.
Type design, font technologies. Please note that this is a special project, where coding, in the traditional sense, will not be enough.
"Symplegma" stands for the combination of appropriate libraries for numerical computing with specialization to computational mechanics and orientation to educational and research purposes. Existing libraries, like "Apache Common Maths" for standard mathematics and statistics components, "FuturEye" a Java based Finite Element Method (FEM) Toolkit, "SymJava" for fast symbolic-numeric computation, among others, are combined with the in-house "Climax" library. "Climax" is a Java implementation of computational mechanics methods, e.g., the Boundary Element Method ("jbem" package) and the Finite Element Method ("jfem" package).
A simple IDE for manipulation of the above mentioned libraries, and possible extensions, has been developed in Java while it takes advantage of Apache Groovy, a powerful, optionally typed and dynamic language. That platform, under the acronym SDE, standing for Symplegma Development Environment.
Both educational and research activities are to be considered.
Toolbox development oriented to specific courses of higher education, Graphical User Environment update, extension of ploting capabilities.
numerical methods, computational mechanics, java, groovy
clio — Software Components and IP Management System
clio is a web-based system to manage data on software components and their relations. It started out as a GSoC 2018 project. For the 2019 GSoC, the main goals would be: - improvement of the UI - integration of SDPX data - extension to covering of file info (time permitting)
improvements to clio
Python, web front-end
OpenProject Work-Package #1 to support modeling of the PM2 methodology for project management
PM² is a Project Management Methodology developed by the European Commission. PM² is built on Project Management best practices and is supported by the following four (4) pillars:
# a project governance model(Roles & Responsibilities) # a project lifecycle (Project Phases) # a set of processes (Project Management activities) # a set of project artifacts (templates and guidelines).
For a full support of PM² Project Management Methodology by OpenProject, new modules should be developed on OpenProject that will allow modeling of the abovementioned four pillars of PM².
Support for the process of PM² itself in OpenProject: That is, development of Open Project plug-ins which should add support for defining and handling the roles, responsibilities, phases and activities (in terms of PM² governance, life-cycle and processes pillars) for every new project.
The work of this Work-Package includes: * the analysis of PM2 requirements * the setup of OpenProject development environment (Development VM) * the modeling of PM2 requirements in OpenProject environment via the development of one or more plug-ins. The plug-ins should follow the Open Project plug-in guidelines and be consistent with the OpenProject API (http://docs.openproject.org/apiv3-doc/). The plug-ins should add the required models, logic and DB tables in order to:
** Support the PM² Governance Model (Roles, Responsibilities) ** Support the PM² Phases ** Support the PM² Artifacts per Phase ** Support all PM2 plans and logs such as Change Log, Communications, Issue, Project, Quality, Requirements, and Risk * The development of tests for all the requirements (e.g. initiate PM² project, initiate phases, add artifacts, generate reports).
Related GitHub repositories
* Ruby on Rails
* Problem Analysis & Modeling
OpenProject Work-Package #2 to support functionality of the PM2 methodology for project management
This work-package is based on and extends OpenProject Work-Package #1 (Support modeling of the PM2 methodology for project management) by adding visual elements that will support for PM²project artifacts through templates, wizards, tools and guidelines.
Integrate the outputs of Work-Package #1 in OpenProject UI. For this, developed plug-ins from Work_Package #1 will be extended and new plug-ins will be developed in order to provide a rich User interface for the user. The plug-ins should follow the Open Project plug-in guidelines and be consistent with the OpenProject API (http://docs.openproject.org/apiv3-doc/) .
The developed functionality should:
* Provide wizards allowing the PM² user to:
** create and initiate PM² based project Templates ** Initiate Project phases ** add PM² artifacts per phase ** create reporting templates with visual content like Gantt and Pert charts ** add PM² artifacts with textual content like Risk Logs. * Support all PM2 plans and logs such as Change Log, Communications, Issue, Project ,Quality , Requirements, Risk * Provide tools such as
** 3-point estimation with triangular and/or beta distribution ** Critical Path Method (CPM) ** Monte-Carlo analysis/technique ** Network Diagram (FS, SS, FF) ** Work Breakdown Structure (WBS) * Support Agile Specific Artifacts and Tools, e.g. Iterations, Kanboards etc. * Support visual representation of PM² using standards like BPMN, STRATML, RDF etc * Allow connection with external systems (e.g. Open ID, Media-Wiki) * Allow for Export and import for/to other formats for data exchange (e.g. MS Project export/import, PDF, XLS etc.).
Related GitHub repositories
* Ruby on Rails
* ES6 *
statistical modeling methods for PM (Monte carlo , CPM etc)
Real time Django monitoring and profiling
Modern Django web applications expose a plethora of URLs and API endpoints that are consumed by a number of clients (web browsers, API clients, Django management commands) under different authorization and authentication credentials. It is not always feasible or easy to replicate the action that resulted in a system crash, a 500 error or a heavily delayed response but it is necessary to trace such incidents to facilitate debuggind and fixing of errors. There's also the obvious fact of monitoring the application availability and uptime and get alerted in case of mulfunctions. While there are great tools as Django Debug Toolbar and Silk that provide insights and application profiling for debugging issues, there's a lack of an open source solution that unifies real time monitoring and application profiling for both the application and database layers. This need is usually covered by either inhouse solutions, or by expensive proprietary Software as a Service solutions for those that can afford it.
As part of this project we suggest that a unified solution is developed, either as an extension to an existing open source tool (as Django silk) or by leveraging tools as ElasticSearch/Kibana. The system should be able to monitor and log all sort of requests, along with error stacktraces and related information and present on a web dashboard with grouping capabilities (eg similar endpoints) and statistics about slow requests. Given the fact that the tool should run in production, there are some architectural notes to take care, for example perform database saves not in real time but rather offloaded by a system as Celery, or sent to a separate database (eg ElasticSearch).
This is an opportunity to provide a really beneficial tool for the Django community.
An overview of similar solutions (mainly open source but also commercial offerings). A web dashboard exposing information about malfunctions and providing real time monitoring for Django applications.
Django, Celery, Django-debug-toolbar, optionally ElasticSearch/Kibana, Postgresql
eIDAS SAML functionality to keycloak
Keycloak is an open source Identity and Access Management solution aimed at modern applications and services. It makes it easy to secure applications and services with little to no code.
We would like to add eIDAS eIDAS SAML functionality to keycloak. Keycloak is one of the open source IAM currently available. A comparison of open-source SSO implementations is available here, a recent video comparison between keycloak and WS02 was present in recent IDM2018 and an opinionated comparison in stackoverflow.
eIDAS(electronic IDentification, Authentication and trust Services) is an EU regulation on electronic identification and trust services for electronic transactions in the internal market. A cross border connection within the member states of EU uses an eIDAS network that consists of a series of eIDAS-nodes implemented at the member state level.
An eIDAS-node consists of an eIDAS connector and an eIDAS proxy service or eIDAS middleware service. An eIDAS node can request a cross border authentication through the eIDAS connector and provide a cross border authentication through the eIDAS service (an eIDAS service can operate either in an eIDAS proxy service or eIDAS middleware service). As a matter of fact eIDAS implements a specific dialect (i.e. Profile) of SAML. Following is an example eIDAS network with proxy to proxy connection between two member states(MS).
What happens here is as follows: -The user (citizen) of MS A requests access to a service provider in MS B. -The service provider in MS B sends the request to its own connector. -On receipt of the request, the connector asks the user for the country of origin (TLS protocol). -When the user selects the country of origin, the SAML request is forwarded by the connector to the eIDAS-node proxy service of the user's member state. - The eIDAS-node proxy service sends the SAML request to the identity provider for authentication, and a user authenticates using the electronic identity.Once authenticated, this identity is returned to the eIDAS-node proxy service. -The eIDAS-node proxy service sends a SAML assertion to the requesting connector, which forwards the response to the service provider. -Τhe service provider grants access to the user.
A similar functionality has been added to WSO2.We believe the Apache Keycloack presents a lower barrier to enter, technologically speaking due to its easier admin dashboard procedures. Furthermore keycloak brings enough community to actively support its open software base.
Related GitHub repositories
Refactor open source remote systems and network management solution
The project is about refactoring the current version of OpenRSM that was initially developed in 2011 It has the following main features:
- It addresses the needs of system and network admins
- Its philosophy is to be simple, fast and configurable in order to foster combinational solutions.
- The core system is capable to manage any workstation or server and monitor the operation of active network elements.
- Extensions of the system cover the management of wireless sensor networks and embedded systems.
- The system has been tested in pilot installations and stressed for scalability in the lab.
- Port OpenRSM to Qt 5.12
- Port from NINO to OpenNMS
- Port to Winventory to OCS (OCSInventory-Server)
- Port to latest version of OPSI
- Port from UltraVNC to latest version of TigerVNC
- Port OpenRSM from sourceforge to GITHUB
- Upgrade all subsystems of OpenRSM to the latest varsions
- Develop a Docker Installation for OpenRSM
- Develop a Vagrant Installation for OpenRSM
- Develop an Ansible role for OpenRSM
- Update documentation
- Update Installation Guides
- Make video Guides for admins
- QT (https://en.wikipedia.org/wiki/Qt_%28software%29)
- Object Pascal
- SQL(MySQL innodb - myisam)
- Linux shell/bash
- NSIS (Nullsoft Scriptable Install System)
- TCP/IP protocol
- SNMP protocol