Google Summer of Code 2021 proposed ideas

From Ελεύθερο Λογισμικό / Λογισμικό ανοιχτού κώδικα
Revision as of 10:47, 25 January 2021 by Pkst (talk | contribs)
Jump to navigation Jump to search


Students interested to participate should check which of the following projects fits their interests and skills.

Τo communicate with the mentors and ask questions about the projects, students should subscribe to this list and post relevant questions. Please follow the Proposal Template

For practical information, students visit this page.


GSOC Projects implemented in 2017 GSOC Projects implemented in 2018 GSOC Projects implemented in 2019

Sastix-CMS: A general purpose JAVA CMS in Spring Boot[edit | edit source]

Brief Explanation[edit | edit source]

Sastix CMS is a Spring Boot application having several content management features. It exposes specific REST APIs to store, cache and lock content (resources). A resource can be a simple html file, an image, a video or any other file. Under common/api package you can find the API interfaces used in the project. It is a good place to start looking. Since a client-server architecture is used, these APIs have two kind of implementations: A client service and server service.

The client can be used/imported as a separated library/dependency in any project and will provide all the rest calls needed towards the underlying server for managing and retrieving the content through spcific locking and caching mechanisms. The relative code is under “client” project .The server side service implements the same interfaces and can have additional implementations needed for the core CMS platform. The relative code is under “server” project.

In order to be able to run locally the Sastix CMS server you should have at least jdk 1.8 installed and a MySQL instance running. Sastix CMS is using ORM and you can find the relative configuration under application.properties. You should define a schema in your database in order to be able to run the platform successfully. The properties file is your guide to do that.

Expected Results[edit | edit source]

Implement a Frontend environment for Administrators and Content Creators/Consumers to easily use, manage and monitor this application through simple and secure flows. Angular or React or Thymeleaf can be used. An admin should be able to manage any kind of resources and monitor the usage of the application (eg net/disk io, memory/cpu usage, disk allocation). A creator should be able to create update and delete resources. A consumer should have access to the published content and be able to effectively use it (eg see a video with chunked transfer encoding support). It will also be essential to extend the already implemented code, integrate new features and support the new Frontend service. Scalability is important too; how it can be deployed in a clustered mode using docker or kubernetes so it can support more than 1000 concurrent users (eg. offering a video streaming service and we have 1000 users at the same time watching videos by consuming URIs from the CMS)

Related repositories[edit | edit source]

https://github.com/sastix/cms

Knowledge Prerequisites[edit | edit source]

java, maven, js, html, css, mysql, docker

Mentors:[edit | edit source]

Ioannis Skitsas - Panagiotis Bochalis

Development of a DIY robot kit for educators[edit | edit source]

Brief Explanation[edit | edit source]

The aim of the project will be to develop all the designs, guidelines and sample code for a starter DIY robot kit that can be 3d-printed, assembled and operated using basic electronics and sensors. This is expected to create a low-cost alternative to commercial robot kits (e.g. Lego Mindstorms) that does not require expert staff in robotics, electronics or IoT programming (e.g. using Arduino/Raspberry kits). The ability to 3D-print everything and combine it with low-cost basic electronics and sensors will allow regional open technologies initiatives to provide schools with starter kits and a full 'Robotic 101' introductory course.

The kit that will be developed and opened must comprise 3D-designs for all the necessary parts of a modular robot that can be printed and assembled following the assemble guidelines. The target audience of the project can be educators (e.g. high school ICT teachers), with minimum expertise in robotics, electronics, and programming. So the print and assembly guidelines must be detailed and simple. In addition, the project must have a modular structure that allows educators to guide their students to the step-by-step development of the robot and to the implementation of simple navigation or sensing scenarios, that require basic programming skills.

Deliverables of the project, apart from the robot parts' designs, include a detailed list of the necessary electronics and sensors and the specifications for a Raspberry pi or similar single board computer (SBG).

Detailed assembly instructions, images, and videos from the assembly process are desirable.

The open source code that will be installed and run on the SBG and will allow controlling the robot through a simple programming interface, along with installation guidelines must be developed.

The robot will be operated either manually using a browser that wirelessly connects with the robot, or automatically by uploading robot control scripts through the same environment.

Some sample control scripts and robot programming scenarios will also be developed.

Expected Results[edit | edit source]

In the three months of the project it is expected to have the basic robot designs, the libraries for controling basic sensors (ultrasonic sensor, IR sensor, micro switches, optical odometer, servo/dc motor), the core operating software for controlling the robot and some simple robot programming assignments.

The three months plan of the project must define: a) The selection of electronics parts, SBC, and motors. b) The 3D designs of the printed parts of the robot. c) The libraries and software for controlling the robot. d) The development of assembly guidelines and the creation of demo scenarios for the class.


Related Repositories[edit | edit source]

https://hackaday.io/project/26007-versatile-educational-2wd-robot

Knowledge Prerequisites[edit | edit source]

Electronics, Robotics, Programming.

Mentors:[edit | edit source]

Iraklis Varlamis, Theodoros Karounos


Plot ThanCad vector graphics to large plotters in Windows and Linux[edit | edit source]

Brief Explanation[edit | edit source]

ThanCad is a free 2 dimensional CAD which is command compatible with AutoCad. It is interoperable with AutoCad through standard dxf files. ThanCad runs in Windows and Linux, and has been experimentally ported to macOS-X. ThanCad has been used as teaching tool in National Technical University of Athens. Although ThanCad can plot to desktop printers, it lacks the capability to plot to large size (A1, A0) plotter devices, for example through the HPGL/2 gtraphics language.


Expected Results[edit | edit source]

ThanCad will be able to plot to large plotters and let the users select a plotter through the Windows printer interface.

Related repositories[edit | edit source]

https://sourceforge.net/projects/thancad/

Knowledge Prerequisites[edit | edit source]

Python

Mentors:[edit | edit source]

Thanasis Stamos, Dimitra Vassilaki


hashesDB[edit | edit source]

Brief Explanation[edit | edit source]

Tools to create, maintain, and search a database of hashes of files.

For each file, a number of distinct hashes is computed and stored into a database. Upon encountering a new file, the database can be searched to answer whether this file has been already seen. Given a huge archive of files (e.g. 6.5B files on Software Heritage), this would produce a simple method of quickly checking the provenance of files that were copied from elsewhere. Fuzzy hashes like ssdeep can extend the functionality to discover similar but not identical files.

Pointers for further info: https://www.softwareheritage.org/ https://multiformats.io/multihash/ https://ssdeep-project.github.io/ssdeep/index.html


Expected Results

implementation of new tools

Related repositories[edit | edit source]

new project

Knowledge Prerequisites[edit | edit source]

Python (optional C), basic SQL

Mentors:[edit | edit source]

Alexios Zavras


An open registry for street names and numbers[edit | edit source]

Brief Explanation[edit | edit source]

The aim of this project is to develop the software for the creation of an open registry of street names and numbers for all settlements in Greece (more than 13,000 settlements, more than 700 cities). The registry will contain the official street names and their numbers along with their geolocation information. The project must develop tools that allow public administration to maintain and update the registry for any changes, and anyone interested to search and browse the registry information. The developed registry can be the backend for several applications that relate to land usage, building blocks, and land segmentation, e.g. to administrative districts or regions of responsibility. For these reasons, it is important that the registry adopts widely used conversions and standardizations for open geo-data. The adoption of the naming conversions used by Open Street Map is a step towards this direction. It is also important to allow data import and export in widely used formats such as XML and osm. The project will start with the definition of the conceptual data model that will store the data and will continue with the services that will allow data collection and data update.

Expected Results[edit | edit source]

The developed registry can be the backend for several applications that relate to land usage, building blocks, and land segmentation, e.g. to administrative districts or regions of responsibility. For these reasons, it is important that the registry adopts widely used conversions and standardizations for open geo-data. The adoption of the naming conversions used by Open Street Map is a step towards this direction. It is also important to allow data import and export in widely used formats such as XML and osm. The project will start with the definition of the conceptual data model that will store the data and will continue with the services that will allow data collection and data update.

Related repositories[edit | edit source]

Related to Open Street Map and how to upload/download data files and conversions https://wiki.openstreetmap.org/wiki/Downloading_data https://registry.opendata.aws/osm/ https://wiki.openstreetmap.org/wiki/Editing_Standards_and_Conventions Related to Street registries world-wide https://wiki.openstreetmap.org/wiki/OpenStreetMap_for_Government https://www.leeds.gov.uk/parking-roads-and-travel/street-register https://www.etalab.gouv.fr/qui-sommes-nous https://adresse.data.gouv.fr/ An open street names directory from GFOS for Greece https://github.com/eellak/Greek-Street-Names-Directory


Knowledge Prerequisites

Python , Data Mining,Perl, PHP, C, C++, Java

Mentors:[edit | edit source]

Iraklis Varlamis, Dimitris Proios


Aerial image recognition services for the agricultural domain[edit | edit source]

Brief Explanation[edit | edit source]

The aim of this project is to develop and train a model for plantation counting from aerial and satellite images

Expected Results[edit | edit source]

The software that will be developed must be able to: Setup, configure and train models for processing different plantation types, using various image formats as input. Apply pre-trained models in image batches from a specific input stream, referring to a specific plantation type and automatically count the number of trees per image. Provide a visual tool for the semi-automatic annotation of images, which will allow users to define the bounding box for one tree in an image and will automatically annotate similar trees in the image, also allowing users to correct the annotation by selecting (false negatives) and de-selecting (false positives) trees. Provide a graphical user interface for processing and curating batches of images. The code must also support LSO-25 images that also contain infrared channel information.

Related repositories[edit | edit source]

Open projects that specialize in object detection and counting from aerial and satellite images https://github.com/azavea/raster-vision https://github.com/sreeram004/Count-the-number-of-Palm-Trees https://github.com/rashivkp/coconut-tree-detection Sample Image Datasets https://github.com/mohanrajmit/Coconut-Tree-Detection/tree/master/dataset https://github.com/chrieke/awesome-satellite-imagery-datasets Related reading https://arxiv.org/ftp/arxiv/papers/1701/1701.06462.pdf https://ieeexplore.ieee.org/abstract/document/6881615

Knowledge Prerequisites[edit | edit source]

Python , Data Mining,Perl, PHP, C, C++, Java

Mentors:[edit | edit source]

Iraklis Varlamis, Panos Louridas, Dimitris Proios


Development of a personal secure vault for digital items[edit | edit source]

Brief Explanation[edit | edit source]

This project aims in developing a secure infrastructure where users can deposit personal information and/or documents. They can also receive information of personal interest to them (e.g. documents, certificates, and personal information) from their interaction with organizations.

Expected Results[edit | edit source]

It is important for the project to support the periodical updates of the information in the vault, by accessing predefined online services. For this purpose, the software running in the vault will use access credentials and all other information necessary to access an online service and apply for more information (e.g. submit an application for a certificate that expires every two months). If the information or document that comes as an output from the remote service is automatically available, then it will be stored in the vault or updated in the vault, along with its future update information. If the information will be made available at a later time, the vault must be able to receive notifications that will trigger an information update that will request the output again when it is ready. This will fully implement a pull-only strategy from the vault side, which will only access remote services and APIs when necessary, or when triggered.

Related repositories[edit | edit source]

Related open projects https://github.com/mhisoft/eVault https://github.com/keeps/roda https://github.com/DSpace/DSpace https://github.com/hashicorp/vault


Knowledge Prerequisites[edit | edit source]

Python ,Perl, PHP, C, C++, Java

Mentors[edit | edit source]

Iraklis Varlamis, Panos Louridas, Dimitris Proios


Preservation of flash-based Greek educational applications[edit | edit source]

Brief Explanation[edit | edit source]

Many Greek educational applications were developed in the past using the Flash technology. Some of them can be operated online in http://ts.sch.gr/software. Many Greek schools use and need them.

Unfortunately, Flash is being deprecated , and those applications will no longer be runnable. The goal of this project is:

- To package these applications in a cross-platform format like npm,
- To allow teachers and students to select which ones they want to install,
- After package installation, on "postinst", to create an index page with the available packages,
- So that this page can be viewed offline with palemoon, a browser that aims to keep running flash even after 2020.

Expected Results[edit | edit source]

The result will be all the flash applications packaged in npm or similar format (many GB), and the packager/index generator/launcher code base.

Related repositories[edit | edit source]

https://gitlab.com/ts.sch.gr/sch-webapp-launcher/

Knowledge Prerequisites[edit | edit source]

Python, HTML, Javascript, CSS, experience with educational applications

Mentors:[edit | edit source]

Foteini Tsiami, Siahos Yiannis


Addition of Greek glyphs in Open Source Fonts[edit | edit source]

Brief Explanation[edit | edit source]

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.

Expected Results[edit | edit source]

Full support for Greek text in a number of Open Source fonts.

Knowledge Prerequisites[edit | edit source]

Type design, font technologies. Please note that this is a special project, where coding, in the traditional sense, will not be enough.

Mentors:[edit | edit source]

Alexios Zavras, Irene Vlachou Εmilios Τheofanous


clio — Software Components and IP Management System[edit | edit source]

Brief Explanation[edit | edit source]

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)

Expected Results[edit | edit source]

improvements to clio

Related repositories[edit | edit source]

code at https://github.com/eellak/clio demo at https://clio.ellak.gr/

Knowledge Prerequisites[edit | edit source]

Python, web front-end

Mentors:[edit | edit source]

Alexios Zavras


MediaCMS - modern, fully featured video and media CMS[edit | edit source]

Brief Explanation[edit | edit source]

MediaCMS is a content management system developed to meet the needs of modern web platforms for viewing and sharing media. It is built with Django (backend) and React (frontend) and features a REST API. It includes a responsive design with two themes, advanced categorization options (tags, categories, playlists), full text search, an enhanced video player, subtitles, plus streaming through HLS.

The suggested work for GSoC 2021 includes working on any of these two directions: extend the software and provide Machine Learning powered functionality.

Extend the software ideas:

  • software internalization
  • improvements to system notifications
  • admin dashboards
  • provide a command line client that utilizes the REST API
  • block storage support
  • implement remote encoding services

Machine Learning powered functionality:

  • improve the related media algorithm, using collaborative filtering or other approaches. This can make the related media much more interesting
  • provide auto-tagging for media, based on existing but also new tags. New tags could be linked with user provided images. This will allow for efficient auto-tagging for large numbers of images and videos
  • automatic titles and descriptions based on the metadata extracted
  • video thumbnail extraction, that is representative of the video.

Expected Results[edit | edit source]

All functionality created as part of this work will be integrated to the software through multiple Pull Requests. This work can have a massive impact over the software adoption.

Related repositories[edit | edit source]

https://github.com/mediacms-io/mediacms
https://mediacms.io
https://demo.mediacms.io

Knowledge Prerequisites[edit | edit source]

Python/Django for backend related work
Javascript/React for frontend related work
Machine Learning or Deep Learning frameworks knowledge, for the ML related suggestions

Mentors:[edit | edit source]

Markos Gogoulos