Difference between revisions of "Google Summer of Code 2021 proposed ideas"

From Ελεύθερο Λογισμικό / Λογισμικό ανοιχτού κώδικα
Jump to navigation Jump to search
Line 285: Line 285:
 
==== Expected Results ====
 
==== Expected Results ====
  
implementation of new web site/app
+
implementation of new web site/app
  
 
==== Related  repositories ====
 
==== Related  repositories ====

Revision as of 10:47, 1 February 2021


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


Extend deepbots to support Evolutionary Algorithms[edit | edit source]

Brief Explanation[edit | edit source]

Over the recent years evolutionary algorithms have achieved impressive results on various tasks such as artificial locomotion and autonomous robot navigation. Additionally, neuroevolution is a promising alternative approach to gradient descent optimization, such as Deep Reinforcement Learning, being applied to optimize deep neural networks. Deepbots is a simple framework which is used as "middleware" between the free and open-source Cyberbotics' Webots (https://cyberbotics.com/) robot simulator and Reinforcement Learning algorithms. Deepbots is a framework which follows the OpenAI gym (https://gym.openai.com/) interface logic in order to achieve an established way of implementing DRL for robotics’ and other scenarios. In this way researchers and students can easily test and benchmark their algorithms on either predefined or novel scenarios. Deepbots can be used as an educational framework for DRL in high-end robotics scenarios while aiming to establish a testbed for researchers. Thus far, deepbots is accompanied by common research scenarios (such as cartpole, mountain car and an obstacle avoidance example) and well established DRL algorithms (such as DDPG (https://arxiv.org/abs/1509.02971) and PPO (https://arxiv.org/abs/1707.06347)). Therefore, deepbots can be easily extended to support and enable the use of neuroevolutionary algorithms, since Webots is a suitable platform to create delicate tasks and apply such algorithms to solve them, while providing a unified tool for benchmarking and educational purposes. The ultimate goal of deepbots is to provide testbed scenarios for robotics that are easily accessible for researchers in order to demonstrate and promote Machine Intelligence capabilities. - Deepbots was first presented (https://link.springer.com/chapter/10.1007/978-3-030-49186-4_6) at the international conference on Artificial Intelligence Applications and Innovations (AIAI) conference in June 2020. Additionally, it was presented at FOSSCOMM 2020. According to pepy.tech (https://pepy.tech/project/deepbots) it has more than 5k downloads last year while it has extensively been used as an education tool. Furthermore, deepbots has been used by OpenDR researchers (https://opendr.eu/) in the development of a modular, open and non-proprietary toolkit for core robotic functionalities by harnessing deep learning to provide advanced perception and cognition capabilities. Finally, mentors are constantly into an open discussion with webots developers to improve certain functionalities of the Webots open-source robotic simulator. Manos Kirtas has participated twice in previous GSoCs as a student.

Expected Results[edit | edit source]

The expected results are two-fold: 1) Extend deepbots to support evolutionary algorithms on Webots 2) Implement a hybrid neuroevolutionary deep reinforcement learning algorithm


Related Repositories[edit | edit source]

https://github.com/aidudezzz/deepbots, https://github.com/aidudezzz/deepworlds

Knowledge Prerequisites[edit | edit source]

Good knowledge of python, familiarity with python deep learning frameworks (such as pytroch and tensorflow). Any prior contribution to deepbots framework will be appreciated.

Mentors:[edit | edit source]

Manos Kirtas (https://github.com/ManosMagnus), Konstantinos Tsampazis (https://github.com/tsampazk), Nikolaos Passalis (https://github.com/passalis)


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]

Hariton Polatoglou, 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


PackageInfo WebApp[edit | edit source]

Brief Explanation[edit | edit source]

A web application (site) to provide read-only access to a database of information about software packages.

For packages provided in popular Linux distributions like Debian, Ubuntu, etc., a number of characteristics is being collected (e.g., name, version, size) and stored into a database. The project would be to create a web interface to query the information in the database, in a read-only way. Users should be able to specify/search based on distribution, package name, version, etc. to drill down to a specific package and get information for it.

Expected Results[edit | edit source]

implementation of new web site/app

Related repositories[edit | edit source]

new project

Knowledge Prerequisites[edit | edit source]

front end: JavaScript (any framework) back end: Python (any framework) DB content: shell, basic SQL, optionally docker

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