Difference between revisions of "GSOC2017 Ideas"

From Ελεύθερο Λογισμικό / Λογισμικό ανοιχτού κώδικα
Jump to navigation Jump to search
 
(82 intermediate revisions by 8 users not shown)
Line 1: Line 1:
 +
 +
'''[https://summerofcode.withgoogle.com/organizations/4825634544025600/ GFOSS is a mentor- organisation for GSOC 2017].'''  Students interested to participate should check which of the following projects fits their interests and skills.  [https://ellak.gr/wiki/index.php?title=Practical_information_for_students Practical information for students]
 +
 
'''Proposed Projects for GSOC 2017'''
 
'''Proposed Projects for GSOC 2017'''
  
==  Mental Control ==
+
==  Synnefo ==
 +
 
 +
==== Brief Explanation: ====
 +
Synnefo (https://www.synnefo.org/) is a complete open source cloud stack written in Python that provides Compute, Network, Image, Volume and Storage services. Synnefo exposes an OpenStack-derived API that can be used for third party clients, and is used for its own graphical user interface that powers the Okeanos public cloud infrastructure (http://okeanos.grnet.gr).  Synnefo manages multiple Ganeti clusters at the backend for handling low-level VM operations and can use different storage backends.
 +
 
 +
==== Related GitHub repositories: ====
 +
https://github.com/grnet/synnefo
 +
 
 +
==== Example Improvements: ====
 +
 
 +
==== Provide Remote Access via SPICE ====
 +
 
 +
SPICE [https://www.spice-space.org/] is an opensource solution for remote desktop. It is supported by Qemu, Ganeti, and HTML5.
 +
 
 +
Synnefo can use SPICE in two ways:
 +
 
 +
* To open a console to a VM through the web browser for inspection or troubleshooting
 +
* To offer remote desktop sessions to the user of the VM
 +
 
 +
The expected tasks are:
 +
 
 +
* Investigate the details of SPICE support for all software in the stack (Qemu/Ganeti/browser) to find out which functionality can be supported end-to-end and whether SPICE can be a full remote desktop solution or just an emergency one for troubleshooting.
 +
* Design an authenticated Qemu-browser connection. Since the SPICE media stream originates not from the VM itself but from its host, there has to be a way to connect to the browser to the Qemu process of the VM. This connection must only be available to an authenticated user. Currently, Synnefo employs an authenticated proxy server for the VNC port openned by qemu.
 +
* Implement the authenticated connection and the relevant UI changes to deliver the feature.
 +
 
 +
==== RESCUE boot for Synnefo VMs ====
 +
 
 +
When the operating system of the VM cannot boot properly to allow the user to connect to it, the user must have another, safer method to gain access to the VM for fixing it or for extracting data.
 +
Usually, this means that a CDROM is attached to the VM and the VMs boots from the CDROM instead of its disk.
 +
 
 +
The expected tasks are:
  
=== Brief Explanation: ===
+
* Find/customize/create suitable rescue images for various OSes, and the tools needed to maintain them.
"Mental-Control" is an open source, Matlab based project, which focuses on the real-time
+
* Design the mechanism that sets and unsets a VM in RESCUE state.
analysis of electroencephalogram (EEG) data. The purpose of the analysis is to find discrete
+
* Implement the RESCUE mechanism and the attaching of the rescue image.
behaviors in the EEG signal, produced by performing specific functions which the brain can
+
 
repeat at will (such as the movement of the hands). Once correctly identified, the purpose of
+
 
these brain functions is to be converted into motion commands of a target point, offering
+
==== Other Issues of Interest: ====
new possibilities of human-computer interaction. This could be extremelly beneficial for  
+
 
disabled people. Once the basic mechanism of converting thoughts into electronic commands
+
* Telemetry (implementation of OpenStack Telemetry / Ceilometer)
through EEG analysis is optimized, the potential uses of the technology are virtually
+
 
unlimited. The proposed system is based on open EEG data freely available on the internet.
+
* Multidatacenter integration
 +
 
 +
* Physical node administration Management Web Console (Add, remove, update a physical node)
 +
 
 +
* Network Management Console
 +
 
 +
==== Knowledge Prerequisites: ====
 +
 
 +
·      Python
 +
 
 +
·      Ganeti
 +
 
 +
·      OpenStack API
 +
 
 +
·      Ceph, Gluster, DRBD
 +
 
 +
 
 +
'''Mentors:''' [https://github.com/louridas Panos Louridas],[https://github.com/ergonomicon Georgios Tsoukalas]
 +
 
 +
==  The Transparency Program initiative - Diavgeia ==
 +
 
 +
===== Brief Explanation: =====
 +
 
 +
Diavgeia is a PHP application with a Mysql backend that is used in order to upload documents to an online public repository. This version of code was used by the Greek government from 2010-2014 as the main repository of public decisions and acts.  Each document is digitally signed and assigned a unique Internet Uploading Number (IUN). The application consists of concrete frontend and backend with different databases for security and perfomance reasons. 
 +
 
 +
==== Related GitHub repositories: ====
 +
https://github.com/eellak/opengov_diavgeia
 +
 
 +
==== Expected Results: ====
 +
 
 +
Rewrite the backend application in a modern framework, ec [http://www.mckinsey.com/business-functions/digital-mckinsey/our-insights/using-blockchain-to-improve-data-management-in-the-public-sector?cid=other-eml-alt-mip-mck-oth-1703 blockchain]
 +
 
 +
Create forms to write online the decisions and acts  and produce fully metadata documents of structured data
 +
 
 +
==== Knowledge Prerequisites: ====
 +
 
 +
·      PHP
 +
 
 +
·      Mysql
 +
 
 +
 
 +
'''Mentors:''' [https://github.com/zvr Alexios Zavras],[https://github.com/kranidiotis Panagiotis Kranidiotis], [https://github.com/dionyziz Dionysis Zindros]
 +
 
 +
==  Agora ==
 +
 
 +
==== Brief Explanation: ====
 +
Agora is a 3-tier application for consists on a 
 +
 
 +
Frontend PHP application in Yii Framework
 +
 
 +
Middleware API on Spring Framework
 +
 
 +
MySQL Databases on High Availability
 +
 
 +
This version of code was used by the Greek government from 2012-2014 as the main repository of public decisions,  RFP’s, contracts and invoices public procurement. Each document is digitally signed and assigned a unique Internet Uploading Number (IUN). Agora fulfill the workflow for a procurement by the time of the announcement till it’s payment.
 +
 
 +
==== Expected Results ====
 +
Automation to the installation process.
 +
 
 +
Packaging to main linux distributions.
 +
 
 +
Creating national and international (ie europeans) profiles of workflow process.  
  
 
==== Related GitHub repositories: ====
 
==== Related GitHub repositories: ====
https://github.com/ellak-monades-aristeias/mental-control
+
https://github.com/eellak/opengov_agora
  
https://github.com/pbashivan/EEGLearn
+
==== Knowledge Prerequisites: ====
 +
PHP - Yii Framwork
  
=== Expected Results ===
+
Java - Spring Framework
Improve the current state-of-the-art in the field of Brain-Computer Interfaces while also ensuring that much larger unlabeled data could be used effectively with minimal human interference and annotation.
 
  
=== Knowledge Prerequisites: ===
+
Mysql
Theoretical Foundations of Deep Learning, coding experience on a Deep Learning framework (if Theano/Lasagne is a plus), Python
 
  
'''Mentors: '''
+
Basic Legals about procurements
  
==  Android application for remote and offline usage of the SAKAI Learning Management System ==
 
  
=== Brief Explanation: ===
+
'''Mentors:'''[https://github.com/zvr Alexios Zavras],[https://github.com/kranidiotis Panagiotis Kranidiotis]
Sakai is a free, community source, educational software platform designed to support teaching, research and collaboration. It is used by many Organizations, to implement Virtual Learning Environments.
+
 
 +
== Netdata ==
 +
 
 +
==== Brief Explanation: ====
 +
'''netdata''' is a system for '''distributed real-time performance and health monitoring.''' It provides '''unparalleled insights, in real-time''', of everything happening on the system it runs (including applications such as web and database servers), using '''modern interactive web dashboards'''. netdata is ideal for monitoring physical servers, VMs, VPS, containers, IoT.
 +
 
 +
netdata
 +
<nowiki> </nowiki>is highly active project, with hundreds of new users joining and
 +
hundreds of new installations completed, every day. netdata is also
 +
featured as one of the top github projects for 2016 (<nowiki>https://octoverse.github.com/</nowiki>).
 +
 
 +
Key components of netdata:
 +
 
 +
1. netdata daemon, its core, written in C, an asynchronous I/O, time-series database and web server, optimized for performance.
 +
 
 +
2. web dashboards, written in Javascript, HTML, CSS
 +
 
 +
3. external plugins, written in python, node.js, bash, C
 +
 
 +
netdata
 +
<nowiki> </nowiki>is the definition of full-stack development. It includes low-level C
 +
programming following embedded development principles, web-apps
 +
development for visualizing performance metrics, devops and sysadmin
 +
automation tasks for configuring health monitoring (alarms), statistical
 +
<nowiki> </nowiki>analysis of metrics, high level development for data collection from
 +
databases and third party apps, etc.
  
 
==== Related GitHub repositories: ====
 
==== Related GitHub repositories: ====
https://github.com/VassilisPallas/Comalat-Android
+
https://github.com/firehol/netdata
 +
 
 +
==== Expected Results ====
 +
These are the main development directions
 +
 
 +
1. <nowiki> </nowiki>add more data collection plugins in any computer language, for
 +
monitoring the performance of popular third party applications.
 +
 
 +
2. add more data visualizations and dashboards.
 +
 
 +
3. add more health monitoring alarms, for monitoring popular applications and operating systems.
 +
 
 +
4. port netdata to more operating systems.
 +
 
 +
5. improve the distribution of netdata by setting up and maintaining binary packages for popular distributions.
 +
 
 +
6. improve the technical documentation of netdata (setup guides, how-tos for monitoring applications or functions, etc).
 +
 
 +
7. help spreading netdata, by improving the community and social media reach of netdata.
  
'''Expected Results'''
 
  
Refactoring and improvenent of the Android application for remote and offline usage of the SAKAI Learning Management System
+
More ideas can be found at the netdata github repo
  
'''Knowledge Prerequisites:''' 
+
==== Knowledge Prerequisites: ====
 +
Depending on the task in hand, different skills are required.
  
Because the application needs refactoring, the developer must know about Design Patterns, having more than 2 years of experience with Android and Java development.
+
For example:
  
'''Mentors:''' George Kakarontzas
+
1. low level C programming (POSIX compliant, including pthreads)
  
== Farmer Calculator ==
+
2. python programming
 +
 
 +
3. node.js programming
 +
 
 +
4. web-app development (javascript, html, css)
 +
 
 +
5. bash scripting
 +
 
 +
6. linux system administration
 +
 
 +
 
 +
'''Mentors:''' [https://github.com/ktsaou Costa Tsaousis], [https://www.spinellis.gr Diomidis Spinellis]
 +
 
 +
== Zeus ==
  
 
=== Brief Explanation: ===
 
=== Brief Explanation: ===
The aim of this project is to provide an app to the farmers that will
+
 
help them make some calculations. For example, when the plants are
+
Zeus is an open source e-voting platform (online service available at: https://zeus.grnet.gr/zeus/). It enables secure, verifiable elections, with client-side ballot encryption and anonymity guaranteed through cryptographic mixing networks (mixnets). Zeus has already been used in hundreds of elections with tens of thousands of voters.
irrigated, a machine is moving, so if we know the speed and the total
 
length, we can estimate the total amount of time that will be needed.
 
This app is based on the ionic framework, so it can provide executables for iOS and Android.
 
  
 
=== Related GitHub repositories: ===
 
=== Related GitHub repositories: ===
https://github.com/ellak-monades-aristeias/FarmerCalculator
 
  
=== Expected Results ===
+
https://github.com/grnet/zeus
Improvenent and adding features to Farmer Calculator
+
 
 +
=== Example Improvements: ===
 +
 
 +
====Better management/reporting of cryptographic identifiers and proofs====
 +
 
 +
Zeus employs cryptographic identifiers and proofs to create a secure log of the entire voting process. These can be used to audit the election after it has been completed and verify that the election protocol has been executed correctly.
 +
 
 +
This information, however, has to be presented to the voters and trustees at various stages in the process, and especially at the end, when they have to be recorded into official documents publishing the results.
 +
 
 +
We would like to enhance security and safety by making better use and better presentation of the available cryptographic information.
 +
 
 +
For example we could upgrade a cryptic hexadecimal fingerprint at the bottom of the page into a button that will provide a detailed report about the process for auditing or (expert) user inspection, or we could include more validations concerning cryptographic fingerprints into the browser code implementing the voting booth.
 +
 
 +
====Mixnet Implementations====
 +
 
 +
The core operation that ensures both integrity and secrecy for e-voting is the mixnet. Zeus employs a re-encryption mixnet protocol that shuffles and re-encodes ballots to make them untraceable to the voter that submitted them while providing a proof that the shuffled votes are indeed equivalent to the original ones.
 +
 
 +
This is a complex and very computationally expensive operation. Better and faster protocols exist. Not all of the available mixnet protocols are appropriate for use in Zeus, but we are considering a few of them.
 +
 
 +
In this context, Zeus is participating in a research project that aims to provide (among other privacy-enhancing solutions) a re-encryption mixnet appropriate for e-voting. You can learn more  about the project here:
 +
 
 +
* https://panoramix-project.eu/
 +
 
 +
* https://www.youtube.com/watch?v=xyh631UUhhg
 +
 
 +
You can also see some of our recent works on mixnets here:
 +
 
 +
* https://github.com/grnet/ac16
 +
 
 +
We seek to implement or enhance or test different mixnets in order to replace the current mixnet algorithm in Zeus.
 +
 
 +
====Better PDF Generation and Mobile-friendly Browser View====
 +
 
 +
Zeus supports a lot of different voting systems and quite complex formats for ballots. We would like to enhance the experience of users by making all this complexity understandable and pleasantly presentable.
 +
 
 +
Zeus can already be used on mobile devices, but the experience can be improved. Mobile devices are increasingly popular, and we assume that participation to elections would get a boost if we make it easy for users to follow and vote for an election while they are on the run.
 +
 
 +
As a second step, of course, the fact that handheld devices are personal can help us enhance the overall security of the application.
 +
 
 +
====Voting Systems and Ballots Specification====
 +
 
 +
Zeus supports a variety of voting systems (approval voting, scored voting, ranked voting) and ballots with simple questions or more complicated designs. We would like to develop a specification to describe voting systems, ballot designs, and cryptographic protocols, so that whole elections can be set up by using descriptions based on this specification.
 +
 
 +
====Separation in multiple independent services (Booth / Ballot box / Registry)====
 +
 
 +
Currently Zeus is operating from a single server. However, the e-voting process comprises several distinct components.
 +
 
 +
* The electoral registry that lists and authenticates voters.
 +
* The voting server that creates and manages the voting process.
 +
* The voting booth that records the voter's choices and encrypts them on the voter's computer.
 +
* The mixnet servers that perform the anonymization of votes.
  
'''Knowledge Prerequisites: '''ionic framework, cordova, AngularJS HTML, CSS, Javascript
+
We are already working on some of them but there is a lot of work to be done. The separation into independent components can offer maintainability, flexibility to extend Zeus to support more workflows, even beyond strictly voting (e.g. auction bidding), and most importantly, it can offer better security by allowing different parties to control different components.
  
== Weather Pi Station ==
+
====Port Cryptographic Workflow to Elliptic Curves====
  
=== Brief Explanation: ===
+
Zeus uses integer modulo prime arithmetic to construct its cryptosystem. Elliptic curve cryptography may provide some advantages in terms of security or efficiency and we would like to port Zeus cryptography on elliptic curves.
The WeatherPiStation project is a meteorological data collection system, based on the raspberry pi and kit AirPi (<nowiki>http://airpi.es),
+
 
</nowiki>including low cost sensors. The system has the ability to take
+
===Knowledge Prerequisites===
measurements (e.g., temperature, humidity, etc.) and then with a python
+
 
script developed by our team sends them to a central server. To send
+
* Python
measurement needs raspberry id and a password, as not everyone can send
+
* C, C++
data to a central server. The central server can receive data through
+
* Cryptography
api many raspberry pi and stores them in a table of mysql. The server
+
* JavaScript, if interested to work on the front-end components
host has some script php for displaying such data in html.
+
 
 +
Also possibly interested in Go, Rust.
 +
 
 +
'''Mentors:''' [https://github.com/louridas Panos Louridas], [https://github.com/ergonomicon Georgios Tsoukalas], [https://github.com/dimitrop Dimitris Mitropoulos]
 +
 
 +
== Linked Economy: a framework for Economic Linked Open Data ==
  
=== Expected Results ===
+
==== Brief Explanation: ====
Improvement, Adding new features (Add GPS unit, GSM Unit, solar power unit for Mobile Weather Station. Extract data in metar format
+
Linked Economy (http://linkedeconomy.org) provides a common understanding on what data are available and how they can be orchestrated to provide relevant insights on e-government topics.
 +
The project has included data from European and other governments and can be scalable to include any similar content from around the world (e.g. UNdata, a data access system to UN databases - http://data.un.org/). 
 +
The Linked Economy platform provides an innovative and value-added resource base for research and education for information technologies in the field of public governance (e-government) employed by lawyers, social scientists and technologists
  
 
==== Related GitHub repositories: ====
 
==== Related GitHub repositories: ====
https://github.com/ellak-monades-aristeias/WeatherPiStation
+
https://github.com/linkedecon
  
https://github.com/ellak-monades-aristeias/WeatherXM
+
==== Expected Results ====
 +
The main extensions should focus in three directions:  
 +
to analyse and semantically annotate new datasets according to the LinkedEconomy data model and
 +
to provide a richer set of online visualizations for our vast amount of data
 +
to extract and semantically annotate data that are included in downloaded pdfs
  
'''Knowledge Prerequisites:'''
+
==== Knowledge Prerequisites: ====
  
RaspBerry pi programming
+
·      Knowledge Representation: XML, RDF, RDFS, OWL
  
'''Mentors:'''
+
·      Query Languages: SPARQL
  
== GReceptionist ==
+
·      Rules and inference engines: Jena Rules και Description Logic
  
=== Brief Explanation: ===
+
·      Semantic Web Frameworks: Jena και Virtuoso
Reservation and management software for tourist facilities
+
 
 +
·      Triplestores: Virtuoso
 +
 
 +
·      Services: Restful web services και SPARQL End Points
 +
 
 +
·      Ontology development environments: Protégé
 +
 
 +
·      Scalable Architectures: distributed architectures, noSQL, Linked Data
 +
 
 +
·      Metadata manipulation & scripting languages: Java και PHP
 +
 
 +
·      Search platform: Apache SOLR
 +
 
 +
·      Database: Apache CouchDB
 +
 
 +
·      Cloud Service: GRNET Cyclades (https://okeanos.grnet.gr/home/)
 +
 
 +
·      Concurrent Versions System: Git και Bitbucket
 +
 
 +
·      Issue Tracking Systems & collaboration: GitHub
 +
 
 +
 
 +
''' Mentors: ''' [https://github.com/vafopoulos Michalis Vafopoulos], [https://github.com/Stamelos Ioannis Stamelos]
 +
 
 +
== Donation Box ==
 +
 
 +
==== Brief Explanation: ====
 +
An open-source screen enabled donation box
 +
 
 +
The software has three items.
 +
 
 +
The Serial2DB which is a simple daemon written in python which listens on the serial port for messages from the Arduino which is connected to the coin acceptor and writes all entries to an SQL DB.
 +
 
 +
The wsServer which is a WebSocket server written in python which reads the SQL DB for new entries and then notifies any connected websocket clients of these. Additionally listens for any donations made and alters accordingly the SQL DB.
  
=== Expected results ===
+
The Wordpress widgets and theme customizations. Which are used for offering an improved user experience based on the design assumption that the wordpress site is running on a 10" tablet. The theme is currently based on Influence and there are several widgets developed to enhance the sidebar. Several plug-ins needed for the current implementation and features are already under the plug-ins folder.
Adding new features such as ERP features , and logistics
 
  
 
==== Related GitHub repositories: ====
 
==== Related GitHub repositories: ====
https://github.com/ellak-monades-aristeias/GReceptionist
 
  
'''Knowledge Prerequisites:'''
+
https://github.com/ellak-monades-aristeias/donation-box
  
C++ ,  Qt,  SQLite
+
==== Expected Results ====
  
'''Mentors:'''
+
Feature 1 - Improve Custom Wordpress theme
  
== SocialCVBuilder ==
+
Feature 2 - Donation Box customizations in Wordpress as a plug-in
  
=== Brief Explanation: ===
+
Feature 3 - P2P or Client - Server, P2P or Client - Server
Millions of users have their business data posted at various social
+
 
networks like Facebook, Glassdoor, Linkedin, Google+, MSN and other. The<nowiki> </nowiki>proposed system enables the user to a central software locally
+
Feature 4 - DonationBox online platform
installed, you may create a Europass-format CV (and other) by making use
+
 
<nowiki> </nowiki>of existing data on the Internet.
+
Feature 5 - Hardening (Security improvements)
 +
 
 +
==== Knowledge Prerequisites: ====
 +
 
 +
Feature 1 - Wordpress, Javascript, CSS
 +
 
 +
Feature 2 - PHP, Wordpress
 +
 
 +
Feature 3 - Client-Server Communication, SQL, REST API (Preferably: Python)
 +
 
 +
Feature 4 -  PHP, Wordpress, Javascript
 +
 
 +
Feature 5 - PHP, Python, Linux
 +
 
 +
 
 +
'''Mentors:''' [https://github.com/kranidiotis Panagiotis Kranidiotis], [https://github.com/pkst-ellak Kostas Papadimas], [https://github.com/dkoukoul Dimitris Koukoulakis]'''<nowiki/>'''
 +
 
 +
== Software components and IP management ==
 +
 
 +
More details in the separate page [[Clio]].
 +
 
 +
==== Brief Explanation ====
 +
 
 +
A web-based system to manage data on software components and their relations.
 +
 
 +
Nowadays every piece of software is including and using many other software components, each one coming with their own license.
 +
 
 +
The goal of this project is to build a simple web system to be able to (manually) input and maintain this information!
 +
 
 +
This is a brand-new project; some analysis has been done but no code is available yet.
 +
 
 +
==== Expected Results ====
 +
 
 +
A complete web-based system to manage the above-mentioned data.
 +
 
 +
==== Knowledge Prerequisites ====
 +
 
 +
Web (any technology welcome)
 +
 
 +
 
 +
'''Mentors:''' [https://github.com/zvr Alexios Zavras]
 +
 
 +
== Files DB ==
 +
 
 +
More details in the separate page [[FilesDB]].
 +
 
 +
==== Brief Explanation ====
 +
 
 +
A system to keep meta-data for a large number of files.
 +
 
 +
The files that are to be processed can be on the filesystem, in archives, or parts of a (git) repository. The metadata are mainly information about the contents (size, type, hashes, ...), so that afterwards a number of questions can be asked about the actual files: how many files, how many files larger than X, how similar are two archives/repositories, when was a file introduced in a repository, etc.
 +
 
 +
This is a brand-new project; some analysis has been done but no code is available yet.
 +
 
 +
==== Expected Results ====
 +
A software to collect the data from the input files and a collection of commands to query the data. These can all be command-line utilities; it would be worthwhile to also provide a Web interface, although it is not necessary.
 +
 
 +
==== Knowledge Prerequisites ====
 +
 
 +
C and/or Python; SQL; Git (and other systems); web
 +
 
 +
 
 +
'''Mentors:''' [https://github.com/zvr Alexios Zavras]
 +
 
 +
== Addition of Greek glyphs in Open Source Fonts ==
 +
 
 +
==== Brief Explanation ====
 +
 
 +
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 imporve 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 ====
 +
 
 +
Full support for Greek text in a number of Open Source fonts.
 +
 
 +
==== Knowledge Prerequisites ====
 +
 
 +
Type design, font technologies. Please note that this is a special project, where coding, in the traditional sense, will not be enough.
  
=== Expected results ===
 
Adding new features and improvements
 
  
=== Related GitHub repositories ===
+
'''Mentors:''' [https://github.com/zvr Alexios Zavras], [https://github.com/irenevl Irene Vlachou]
https://github.com/ellak-monades-aristeias/SocialCVBuilder
 
  
'''Knowledge Prerequisites:'''
+
== CScout AJAX-based Interface ==
  
JavaScript, Php
+
==== Brief Explanation ====
  
'''Mentors:'''
+
CScout is a source code analyzer and refactoring browser for collections of C programs. It can process workspaces of multiple projects (a project is defined as a collection of C source files that are linked together) mapping the complexity introduced by the C preprocessor back into the original C source code files. CScout takes advantage of modern hardware (fast processors and large memory capacities) to analyze C source code beyond the level of detail and accuracy provided by current compilers and linkers. The analysis CScout performs takes into account the identifier scopes introduced by the C preprocessor and the C language proper scopes and namespaces. CScout has already been applied on projects of tens of thousands of lines to millions of lines, like the Linux, OpenSolaris, and FreeBSD kernels, and the Apache web server.
  
== Simulation Business Game Framework ==
+
The aim of this project is to redesign the current web interface, which is based on HTML forms generated by C++ code, into a responsive AJAX-based one. Under this scheme the C++ code will provide JSON data through a RESTful interface, which the JavaScript front-end will use.
  
=== Brief Explanation: ===
+
==== Expected Results ====
SIMBUG is an acronym for a Simulation Business Game. It is addressed to
 
serious or applied games, i.e. games designed for a primary purpose
 
other than pure entertainment and are used to enhance learning in
 
business education.
 
SIMBUG aims to relieve educators from the burden of possessing several
 
computing and programming skills in order to create a "serious game".
 
Using SIMBUG they will be free to focus on their education goal and any
 
corresponding pedagogical design principles.
 
SIMBUG is built upon a "serious game model", i.e. an abstract
 
conceptualization of what any serious game has in common and its
 
software infrastructure is based on the so called 3-tier architecture.
 
SIMBUG is addressed initially to the educational gaming open source
 
community, calling for common action for creating an open standard for
 
serious and business games.
 
  
=== Expected Results ===
+
A modern responsive web interface offering the current capabilities of CScout.
The SIMBUG project is on the beginning of the development phase.
+
Ideally this would include in-line editing of identifiers.
 +
==== Related GitHub repository: ====
 +
https://github.com/dspinellis/cscout
  
There are many issues open.
+
==== Knowledge Prerequisites ====
  
There are three type of contributions one can make:
+
* C++
# Contribution to the Open Standard. We want to extend the standard so  as to include more serious game concepts. We also have to think how the  presentation layer could be abstracted, so it can represented through a  kind of a "definition" file. We need people that have designed serious  games.
+
* JavaScript
# Contribution to the SIMBUG Server. We need people who know JAVA EE.
+
* A modern development framework for interactive web content
# Contribution to clients. People who know web programming and want to implement their own game are welcome.
 
Related GitHub repositories
 
  
https://github.com/ellak-monades-aristeias/simbug
+
'''Mentor:''' [https://www.spinellis.gr Diomidis Spinellis]
  
=== '''Knowledge Prerequisites:''' ===
 
JAVA EE. Web Programming
 
  
'''Mentors:'''
+
[[Κατηγορία:GSOC2017]][[Κατηγορία:GSOC]]

Latest revision as of 15:10, 5 February 2020

GFOSS is a mentor- organisation for GSOC 2017. Students interested to participate should check which of the following projects fits their interests and skills. Practical information for students

Proposed Projects for GSOC 2017

Synnefo[edit | edit source]

Brief Explanation:[edit | edit source]

Synnefo (https://www.synnefo.org/) is a complete open source cloud stack written in Python that provides Compute, Network, Image, Volume and Storage services. Synnefo exposes an OpenStack-derived API that can be used for third party clients, and is used for its own graphical user interface that powers the Okeanos public cloud infrastructure (http://okeanos.grnet.gr). Synnefo manages multiple Ganeti clusters at the backend for handling low-level VM operations and can use different storage backends.

Related GitHub repositories:[edit | edit source]

https://github.com/grnet/synnefo

Example Improvements:[edit | edit source]

Provide Remote Access via SPICE[edit | edit source]

SPICE [1] is an opensource solution for remote desktop. It is supported by Qemu, Ganeti, and HTML5.

Synnefo can use SPICE in two ways:

  • To open a console to a VM through the web browser for inspection or troubleshooting
  • To offer remote desktop sessions to the user of the VM

The expected tasks are:

  • Investigate the details of SPICE support for all software in the stack (Qemu/Ganeti/browser) to find out which functionality can be supported end-to-end and whether SPICE can be a full remote desktop solution or just an emergency one for troubleshooting.
  • Design an authenticated Qemu-browser connection. Since the SPICE media stream originates not from the VM itself but from its host, there has to be a way to connect to the browser to the Qemu process of the VM. This connection must only be available to an authenticated user. Currently, Synnefo employs an authenticated proxy server for the VNC port openned by qemu.
  • Implement the authenticated connection and the relevant UI changes to deliver the feature.

RESCUE boot for Synnefo VMs[edit | edit source]

When the operating system of the VM cannot boot properly to allow the user to connect to it, the user must have another, safer method to gain access to the VM for fixing it or for extracting data. Usually, this means that a CDROM is attached to the VM and the VMs boots from the CDROM instead of its disk.

The expected tasks are:

  • Find/customize/create suitable rescue images for various OSes, and the tools needed to maintain them.
  • Design the mechanism that sets and unsets a VM in RESCUE state.
  • Implement the RESCUE mechanism and the attaching of the rescue image.


Other Issues of Interest:[edit | edit source]

  • Telemetry (implementation of OpenStack Telemetry / Ceilometer)
  • Multidatacenter integration
  • Physical node administration Management Web Console (Add, remove, update a physical node)
  • Network Management Console

Knowledge Prerequisites:[edit | edit source]

· Python

· Ganeti

· OpenStack API

· Ceph, Gluster, DRBD


Mentors: Panos Louridas,Georgios Tsoukalas

The Transparency Program initiative - Diavgeia[edit | edit source]

Brief Explanation:[edit | edit source]

Diavgeia is a PHP application with a Mysql backend that is used in order to upload documents to an online public repository. This version of code was used by the Greek government from 2010-2014 as the main repository of public decisions and acts. Each document is digitally signed and assigned a unique Internet Uploading Number (IUN). The application consists of concrete frontend and backend with different databases for security and perfomance reasons.

Related GitHub repositories:[edit | edit source]

https://github.com/eellak/opengov_diavgeia

Expected Results:[edit | edit source]

Rewrite the backend application in a modern framework, ec blockchain

Create forms to write online the decisions and acts and produce fully metadata documents of structured data

Knowledge Prerequisites:[edit | edit source]

· PHP

· Mysql


Mentors: Alexios Zavras,Panagiotis Kranidiotis, Dionysis Zindros

Agora[edit | edit source]

Brief Explanation:[edit | edit source]

Agora is a 3-tier application for consists on a

Frontend PHP application in Yii Framework

Middleware API on Spring Framework

MySQL Databases on High Availability

This version of code was used by the Greek government from 2012-2014 as the main repository of public decisions,  RFP’s, contracts and invoices public procurement. Each document is digitally signed and assigned a unique Internet Uploading Number (IUN). Agora fulfill the workflow for a procurement by the time of the announcement till it’s payment.

Expected Results[edit | edit source]

Automation to the installation process.

Packaging to main linux distributions.

Creating national and international (ie europeans) profiles of workflow process.

Related GitHub repositories:[edit | edit source]

https://github.com/eellak/opengov_agora

Knowledge Prerequisites:[edit | edit source]

PHP - Yii Framwork

Java - Spring Framework

Mysql

Basic Legals about procurements


Mentors:Alexios Zavras,Panagiotis Kranidiotis

Netdata[edit | edit source]

Brief Explanation:[edit | edit source]

netdata is a system for distributed real-time performance and health monitoring. It provides unparalleled insights, in real-time, of everything happening on the system it runs (including applications such as web and database servers), using modern interactive web dashboards. netdata is ideal for monitoring physical servers, VMs, VPS, containers, IoT.

netdata is highly active project, with hundreds of new users joining and hundreds of new installations completed, every day. netdata is also featured as one of the top github projects for 2016 (https://octoverse.github.com/).

Key components of netdata:

1. netdata daemon, its core, written in C, an asynchronous I/O, time-series database and web server, optimized for performance.

2. web dashboards, written in Javascript, HTML, CSS

3. external plugins, written in python, node.js, bash, C

netdata is the definition of full-stack development. It includes low-level C programming following embedded development principles, web-apps development for visualizing performance metrics, devops and sysadmin automation tasks for configuring health monitoring (alarms), statistical analysis of metrics, high level development for data collection from databases and third party apps, etc.

Related GitHub repositories:[edit | edit source]

https://github.com/firehol/netdata

Expected Results[edit | edit source]

These are the main development directions

1. add more data collection plugins in any computer language, for monitoring the performance of popular third party applications.

2. add more data visualizations and dashboards.

3. add more health monitoring alarms, for monitoring popular applications and operating systems.

4. port netdata to more operating systems.

5. improve the distribution of netdata by setting up and maintaining binary packages for popular distributions.

6. improve the technical documentation of netdata (setup guides, how-tos for monitoring applications or functions, etc).

7. help spreading netdata, by improving the community and social media reach of netdata.


More ideas can be found at the netdata github repo

Knowledge Prerequisites:[edit | edit source]

Depending on the task in hand, different skills are required.

For example:

1. low level C programming (POSIX compliant, including pthreads)

2. python programming

3. node.js programming

4. web-app development (javascript, html, css)

5. bash scripting

6. linux system administration


Mentors: Costa Tsaousis, Diomidis Spinellis

Zeus[edit | edit source]

Brief Explanation:[edit | edit source]

Zeus is an open source e-voting platform (online service available at: https://zeus.grnet.gr/zeus/). It enables secure, verifiable elections, with client-side ballot encryption and anonymity guaranteed through cryptographic mixing networks (mixnets). Zeus has already been used in hundreds of elections with tens of thousands of voters.

Related GitHub repositories:[edit | edit source]

https://github.com/grnet/zeus

Example Improvements:[edit | edit source]

Better management/reporting of cryptographic identifiers and proofs[edit | edit source]

Zeus employs cryptographic identifiers and proofs to create a secure log of the entire voting process. These can be used to audit the election after it has been completed and verify that the election protocol has been executed correctly.

This information, however, has to be presented to the voters and trustees at various stages in the process, and especially at the end, when they have to be recorded into official documents publishing the results.

We would like to enhance security and safety by making better use and better presentation of the available cryptographic information.

For example we could upgrade a cryptic hexadecimal fingerprint at the bottom of the page into a button that will provide a detailed report about the process for auditing or (expert) user inspection, or we could include more validations concerning cryptographic fingerprints into the browser code implementing the voting booth.

Mixnet Implementations[edit | edit source]

The core operation that ensures both integrity and secrecy for e-voting is the mixnet. Zeus employs a re-encryption mixnet protocol that shuffles and re-encodes ballots to make them untraceable to the voter that submitted them while providing a proof that the shuffled votes are indeed equivalent to the original ones.

This is a complex and very computationally expensive operation. Better and faster protocols exist. Not all of the available mixnet protocols are appropriate for use in Zeus, but we are considering a few of them.

In this context, Zeus is participating in a research project that aims to provide (among other privacy-enhancing solutions) a re-encryption mixnet appropriate for e-voting. You can learn more  about the project here:

You can also see some of our recent works on mixnets here:

We seek to implement or enhance or test different mixnets in order to replace the current mixnet algorithm in Zeus.

Better PDF Generation and Mobile-friendly Browser View[edit | edit source]

Zeus supports a lot of different voting systems and quite complex formats for ballots. We would like to enhance the experience of users by making all this complexity understandable and pleasantly presentable.

Zeus can already be used on mobile devices, but the experience can be improved. Mobile devices are increasingly popular, and we assume that participation to elections would get a boost if we make it easy for users to follow and vote for an election while they are on the run.

As a second step, of course, the fact that handheld devices are personal can help us enhance the overall security of the application.

Voting Systems and Ballots Specification[edit | edit source]

Zeus supports a variety of voting systems (approval voting, scored voting, ranked voting) and ballots with simple questions or more complicated designs. We would like to develop a specification to describe voting systems, ballot designs, and cryptographic protocols, so that whole elections can be set up by using descriptions based on this specification.

Separation in multiple independent services (Booth / Ballot box / Registry)[edit | edit source]

Currently Zeus is operating from a single server. However, the e-voting process comprises several distinct components.

  • The electoral registry that lists and authenticates voters.
  • The voting server that creates and manages the voting process.
  • The voting booth that records the voter's choices and encrypts them on the voter's computer.
  • The mixnet servers that perform the anonymization of votes.

We are already working on some of them but there is a lot of work to be done. The separation into independent components can offer maintainability, flexibility to extend Zeus to support more workflows, even beyond strictly voting (e.g. auction bidding), and most importantly, it can offer better security by allowing different parties to control different components.

Port Cryptographic Workflow to Elliptic Curves[edit | edit source]

Zeus uses integer modulo prime arithmetic to construct its cryptosystem. Elliptic curve cryptography may provide some advantages in terms of security or efficiency and we would like to port Zeus cryptography on elliptic curves.

Knowledge Prerequisites[edit | edit source]

  • Python
  • C, C++
  • Cryptography
  • JavaScript, if interested to work on the front-end components

Also possibly interested in Go, Rust.

Mentors: Panos Louridas, Georgios Tsoukalas, Dimitris Mitropoulos

Linked Economy: a framework for Economic Linked Open Data[edit | edit source]

Brief Explanation:[edit | edit source]

Linked Economy (http://linkedeconomy.org) provides a common understanding on what data are available and how they can be orchestrated to provide relevant insights on e-government topics. The project has included data from European and other governments and can be scalable to include any similar content from around the world (e.g. UNdata, a data access system to UN databases - http://data.un.org/). The Linked Economy platform provides an innovative and value-added resource base for research and education for information technologies in the field of public governance (e-government) employed by lawyers, social scientists and technologists

Related GitHub repositories:[edit | edit source]

https://github.com/linkedecon

Expected Results[edit | edit source]

The main extensions should focus in three directions: to analyse and semantically annotate new datasets according to the LinkedEconomy data model and to provide a richer set of online visualizations for our vast amount of data to extract and semantically annotate data that are included in downloaded pdfs

Knowledge Prerequisites:[edit | edit source]

· Knowledge Representation: XML, RDF, RDFS, OWL

· Query Languages: SPARQL

· Rules and inference engines: Jena Rules και Description Logic

· Semantic Web Frameworks: Jena και Virtuoso

· Triplestores: Virtuoso

· Services: Restful web services και SPARQL End Points

· Ontology development environments: Protégé

· Scalable Architectures: distributed architectures, noSQL, Linked Data

· Metadata manipulation & scripting languages: Java και PHP

· Search platform: Apache SOLR

· Database: Apache CouchDB

· Cloud Service: GRNET Cyclades (https://okeanos.grnet.gr/home/)

· Concurrent Versions System: Git και Bitbucket

· Issue Tracking Systems & collaboration: GitHub


Mentors: Michalis Vafopoulos, Ioannis Stamelos

Donation Box[edit | edit source]

Brief Explanation:[edit | edit source]

An open-source screen enabled donation box

The software has three items.

The Serial2DB which is a simple daemon written in python which listens on the serial port for messages from the Arduino which is connected to the coin acceptor and writes all entries to an SQL DB.

The wsServer which is a WebSocket server written in python which reads the SQL DB for new entries and then notifies any connected websocket clients of these. Additionally listens for any donations made and alters accordingly the SQL DB.

The Wordpress widgets and theme customizations. Which are used for offering an improved user experience based on the design assumption that the wordpress site is running on a 10" tablet. The theme is currently based on Influence and there are several widgets developed to enhance the sidebar. Several plug-ins needed for the current implementation and features are already under the plug-ins folder.

Related GitHub repositories:[edit | edit source]

https://github.com/ellak-monades-aristeias/donation-box

Expected Results[edit | edit source]

Feature 1 - Improve Custom Wordpress theme

Feature 2 - Donation Box customizations in Wordpress as a plug-in

Feature 3 - P2P or Client - Server, P2P or Client - Server

Feature 4 - DonationBox online platform

Feature 5 - Hardening (Security improvements)

Knowledge Prerequisites:[edit | edit source]

Feature 1 - Wordpress, Javascript, CSS

Feature 2 - PHP, Wordpress

Feature 3 - Client-Server Communication, SQL, REST API (Preferably: Python)

Feature 4 - PHP, Wordpress, Javascript

Feature 5 - PHP, Python, Linux


Mentors: Panagiotis Kranidiotis, Kostas Papadimas, Dimitris Koukoulakis

Software components and IP management[edit | edit source]

More details in the separate page Clio.

Brief Explanation[edit | edit source]

A web-based system to manage data on software components and their relations.

Nowadays every piece of software is including and using many other software components, each one coming with their own license.

The goal of this project is to build a simple web system to be able to (manually) input and maintain this information!

This is a brand-new project; some analysis has been done but no code is available yet.

Expected Results[edit | edit source]

A complete web-based system to manage the above-mentioned data.

Knowledge Prerequisites[edit | edit source]

Web (any technology welcome)


Mentors: Alexios Zavras

Files DB[edit | edit source]

More details in the separate page FilesDB.

Brief Explanation[edit | edit source]

A system to keep meta-data for a large number of files.

The files that are to be processed can be on the filesystem, in archives, or parts of a (git) repository. The metadata are mainly information about the contents (size, type, hashes, ...), so that afterwards a number of questions can be asked about the actual files: how many files, how many files larger than X, how similar are two archives/repositories, when was a file introduced in a repository, etc.

This is a brand-new project; some analysis has been done but no code is available yet.

Expected Results[edit | edit source]

A software to collect the data from the input files and a collection of commands to query the data. These can all be command-line utilities; it would be worthwhile to also provide a Web interface, although it is not necessary.

Knowledge Prerequisites[edit | edit source]

C and/or Python; SQL; Git (and other systems); web


Mentors: Alexios Zavras

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 imporve 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: Alexios Zavras, Irene Vlachou

CScout AJAX-based Interface[edit | edit source]

Brief Explanation[edit | edit source]

CScout is a source code analyzer and refactoring browser for collections of C programs. It can process workspaces of multiple projects (a project is defined as a collection of C source files that are linked together) mapping the complexity introduced by the C preprocessor back into the original C source code files. CScout takes advantage of modern hardware (fast processors and large memory capacities) to analyze C source code beyond the level of detail and accuracy provided by current compilers and linkers. The analysis CScout performs takes into account the identifier scopes introduced by the C preprocessor and the C language proper scopes and namespaces. CScout has already been applied on projects of tens of thousands of lines to millions of lines, like the Linux, OpenSolaris, and FreeBSD kernels, and the Apache web server.

The aim of this project is to redesign the current web interface, which is based on HTML forms generated by C++ code, into a responsive AJAX-based one. Under this scheme the C++ code will provide JSON data through a RESTful interface, which the JavaScript front-end will use.

Expected Results[edit | edit source]

A modern responsive web interface offering the current capabilities of CScout. Ideally this would include in-line editing of identifiers.

Related GitHub repository:[edit | edit source]

https://github.com/dspinellis/cscout

Knowledge Prerequisites[edit | edit source]

  • C++
  • JavaScript
  • A modern development framework for interactive web content

Mentor: Diomidis Spinellis