Difference between revisions of "GSOC2018 Projects"

From Ελεύθερο Λογισμικό / Λογισμικό ανοιχτού κώδικα
Jump to: navigation, search
m (Knowledge Prerequisites)
m (Knowledge Prerequisites)
Line 292: Line 292:
 
* A modern development framework for interactive web content
 
* A modern development framework for interactive web content
  
'''Mentor:''' [https://www.linkedin.com/in/kranidiotis/ Panagiotis Kranidiotis] [http://www.csd.auth.gr/en/staff/faculty?view=user&ro=1&id=14 Stamelos Ioannis]
+
'''Mentors:''' [https://www.linkedin.com/in/kranidiotis/ Panagiotis Kranidiotis] [http://www.csd.auth.gr/en/staff/faculty?view=user&ro=1&id=14 Stamelos Ioannis]
  
 
== WSO2 Identity Server  Greek i18n translation ==
 
== WSO2 Identity Server  Greek i18n translation ==

Revision as of 10:20, 23 January 2018

GFOSS project proposals for GSOC 2018. Students interested to participate should check which of the following projects fits their interests and skills. Practical information for students

Proposed Projects for GSOC 2018

Contents

Using Weld for Cryptography in the Zeus e-voting application (https://zeus.grnet.gr).

Brief Explanation:

Zeus is an e-voting application, in use by thousands of people. It ensures anonymity and verifiability of the entire voting process by using strong cryptographic primitives. In particular, encrypted voter ballots are shuffled and anonymised in a verifiable way before decryption. This is computationally costly, so the Zeus team is constantly looking for ways to improve performance.

Example Improvements:

Cryptographic operations are very costly and efficient implementations are essential for real-world production use. For example, when using Python, the underlying cryptography is typically implemented in C/C++, with suitable bindings in Python, so that the actual computations happen at a much greater speed than that afforded by the Python interpreter. In this context, in last year’s GSoC we implemented a Zero-Knowledge Shuffle mechanism in C/C+ and then made it available in Python through Cython. Now we want to try a new optimisation, offered by the use of the Weld framework (http://weld.stanford.edu/). Weld offers speed improvements by minimising the number of calls, and thus memory copy costs, between languages, in our case, between Python and C. In this GSoC project we want to implement our shuffle operations using Weld, measure the performance benefits, and offer it as a possible optimisation in Zeus.

Related GitHub repositories:

https://github.com/grnet/zeus

Knowledge Prerequisites

  • Python
  • C, C++
  • Cryptography

Knowledge of Rust is a plus (Weld is implemented in Rust).

Mentors: Panos Louridas,Georgios Tsoukalas

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.


Mentors:  Alexios ZavrasIrene Vlachou

Open source plugin for math and algebra in Moodle

Brief Description

Make the moodle learning environment more functional in relation to mathematics.   Although there are a lot of math editors available for moodle, there is still a lot of functionalities missing in relation to school algebra as an open source plugin

Suggested Improvements

  • Incorporate into moodle.
  • Allow the teacher to design math assignments, which the student has to interactively solve. The plugin will provide real time feedback on each answer, whether it’s correct, partially correct or incorrect.
  • Give the teacher the ability to assign to students conversions of algebraic representations, (ie the student must make simplifications or factorizations), while the plugin monitors the process performed by the student and give him comments on the correctness of each step.
  • The same  functionality must be applied in the case of solving an equation.
  • Interoperate with the Geogebra plugin.
  • In addition to math-focused functionalities, it would be useful to create a page so that the teacher can write in the so-called “Student Progress Notebook” where the teacher comments on the performance of each student.

Related repositories

https://github.com/moodle/moodle

https://docs.moodle.org/34/en/Mathematics#Equation_Construction_and_Display

Knowledge Prerequisites

XHTML

CSS

Javascript

Κnowledge of math and algebra

Mentors: : Diomidis Spinellis Theodoros Karounos

Epoptes

Brief Explanation:

Epoptes (Επόπτης  - a Greek word for overseer) is an open source computer lab management and monitoring tool. It allows for screen broadcasting and monitoring, remote command execution, message sending, imposing restrictions like screen locking or sound muting the clients and much more! It can be installed in Ubuntu, Debian and openSUSE based labs that may contain any combination of the following: LTSP servers, thin and fat clients, non LTSP servers, standalone workstations, NX or XDMCP clients etc.                                                   

https://www.github.com/Epoptes/epoptes

Example Improvements:

Add GTK support

Add Python 3 support

Knowledge Prerequisites:

Python

GTK

Mentors: Fotis Tsiamis, Theodoros Karounos

Scriptum

Brief Explanation:

SCRIPTUM is a Web based Open-Source application that will be used in order to eliminate bureaucracy and document loss, providing the Administration Office of the Greek Republic Vice President an extensible and integrated environment for document publishing, categorization and administration. The overall project involves two basic sub projects:

  1. e-Protocol: for handling incoming/outgoing mail messages and their attachments. Using this system, the e-Protocol users can benefit from the advanced OpenKm properties in order to manipulate the messages. This subsystem provides an easy way to complete forms relevant to the incoming/outgoing mail, form letters from templates and maintains a document repository equipped with document based security.
  2. Case Management: this sub system provides a well established work flow for treating documentation relevant to specific organization 's operations. Assignment Operations provides a standard way for managing and directing specific actions to be taken from the employees Administration Office of the Greek Republic Vice President of in order to complete organization 's operations.

These systems use as a document repository the document management platform OpenKM.

Related GitHub repositories:

https://github.com/eellak/scriptum

Expected Results:

Knowledge Prerequisites:

· Java

- Maven

- JPA 2.1

- ZK 8.x

- Spring 4.x

Expected Results:

Mentors: Alexios Zavras,Panagiotis Kranidiotis

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 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:

https://github.com/firehol/netdata

Expected Results

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:

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


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: Alexios Zavras Prodoros Tsiavos

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: Alexios Zavras

CScout AJAX-based Interface

Brief Explanation

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

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

Related GitHub repository:

https://github.com/dspinellis/cscout

Knowledge Prerequisites

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

Mentor: Diomidis Spinellis

WSO2 Identity Server Userstore using Web Services to get claims

Brief Explanation

WSO2 Identity Server provides secure identity management for enterprise web applications, services, and APIs by managing identity and entitlements of the users securely and efficiently. The Identity Server enables enterprise architects and developers to reduce identity provisioning time, guarantee secure online interactions, and deliver a reduced single sign-on environment. WSO2 Identity Server is fully open source and is released under Apache Software License Version 2.0.

The aim of this project is to create a new type of userstore where credentials will be separeted from attirbutes and attributes (claims) will be able to be configured from the web UI as a SOAP or REST web service. The end-user should be able to

  • configure credentials for LDAP or JDBC
  • configure web service authentication
  • configure claims to consume the above web service

Expected Results

A new userstore where end-user can configure using existing web interface, user claims through web services client. The appropriate changes in the source code should be uploaded in the upstream branch of the latest version (5.4.0)

Related GitHub repository:

https://wso2.github.io/

https://wso2.github.io/using-maven.html

https://wso2.github.io/github-repositories.html#IS

https://wso2.github.io/github-repositories.html

Knowledge Prerequisites

  • Java JSP
  • JSTL
  • Maven
  • OSGI Framework
  • A modern development framework for interactive web content

Mentors: Panagiotis Kranidiotis Stamelos Ioannis

WSO2 Identity Server Greek i18n translation

Brief Explanation

WSO2 Identity Server provides secure identity management for enterprise web applications, services, and APIs by managing identity and entitlements of the users securely and efficiently. The Identity Server enables enterprise architects and developers to reduce identity provisioning time, guarantee secure online interactions, and deliver a reduced single sign-on environment. WSO2 Identity Server is fully open source and is released under Apache Software License Version 2.0.

The aim of this project is internationalize in greek both Identity Server management ui and user dashboard.

Expected Results

The appropriate locale files and the changes in the source uploaded in the upstream branch of the latest version (5.4.0).

Related GitHub repository:

https://wso2.github.io/

https://wso2.github.io/using-maven.html

https://wso2.github.io/github-repositories.html#IS

https://wso2.github.io/github-repositories.html

Knowledge Prerequisites

  • Java JSP
  • JSTL
  • Maven
  • OSGI Framework
  • Javascript
  • A modern development framework for interactive web content

Mentor: Panagiotis Kranidiotis Kostas Papadimas

The Transparency Program initiative - Diavgeia Redefined

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 project participated in GSOC2017 as Diavgeia Redefined and was implemented a RDF Schema, which covers almost every possible decision type and the Notation3 (N3) syntax was adopted.

Related GitHub repositories:

https://github.com/eellak/gsoc17-diavgeia

Expected Results:

  1. Bitcoin-Website Validator: Create a tool which ensures that all proof of burn blockchain transactions of Diavgeia are consistent with the merkle trees uploaded on Diavgeia's website.
  2. Bitcoin-SPARQL Validator: Find an efficient way to prove that all decisions that have been commited to blockchain are also available from the SPARQL endpoint.
  3. Improve Visualizer: Visualizer does not visualize rdf properties for each different decision type.
  4. Study scalability of SPARQL endpoint: As it was stated, Diavgeia hosts millions of decisions. A benchmark of the scalability of the Apache Jena and Fuseki is crucial.

Knowledge Prerequisites:

· PHP

· Mysql


Mentors: Nikos Tsiridis,Panagiotis Kranidiotis,