Google Summer of Code 2022 proposed ideas
Contributors 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, developers should visit this page.
Workflow and Parallelization patterns for Node-RED
Brief Explanation
Node-RED (https://nodered.org/) is a popular low code programming environment for event driven applications, particularly in the IoT world. It is based on a visual, browser based editor in which developers can write functions, wire them together to form a workflow, group a subset of functions into reusable and parametric subflows etc. Node-RED can interact with any API or service, thus its usage can be extended to be used in collaboration with other services, e.g. Function as a Service platforms, as an orchestrator.
Expected Results
The purpose of the work is to exploit Node-RED's subflow and workflow features in order to implement reusable flows that can be shared through Node-RED's repository. The initial scope of the flows is around workflow primitives for easier workflow creation, parallelization patterns (e.g. migrating logic and patterns from MPI to node-red, implementation of orchestration logic for parallel AI operations and learning etc). This can be coupled with function creation for executing the workflows in state of the art function as a service environments like Openwhisk, for actual computational parallelism.
Related repositories
https://flows.nodered.org/flow/7a5acfc999b1ad47bb32b5d37419c777,
https://gist.github.com/gkousiouris/7a5acfc999b1ad47bb32b5d37419c777
Knowledge Prerequisites
Javascript, Knowledge of Node-RED or FaaS is a plus
Mentors:
George Kousiouris, Christos Diou
Build recorder: A system to record what goes on when a software is being built.
Brief Explanation
The purpose of a project is to fully record the interactions between assets (files and tools) when a software component is being built (compiled). For example, when compiling a software written in C,the system will record the source files being compiled, the generated object files being linked, the final executable, as well as the compiler used, the options given, and the environment.
Duration of the Project
Can be either a short or a long-term project, depending on the scope and the technologies tackled.
Related repositories
New project, no existing repo available.
Knowledge Prerequisites
one or (preferably) more of compiled languages: C, C++, Go, Rust, Java, ...
Mentors:
Alexios Zavras
Flexbench
Brief Explanation
Flexbench is a benchmarking tool used mostly for stress and performance testing of web application servers. It is a forked project from the http-traffic-simulator npm package, which was developed to provide simulated throttled http traffic for testing purposes, towards specific http endpoints. It utilizes the nodejs cluster module to generate http requests, by spawning multiple workers (balanced over the system cores) in the cluster, responsible to create clients that generate requests. This architecture enables the simulator to scale in really big throughputs. The main supported features are:
Duration of the Project
Depending on the scope and the technologies tackled
Expected Results
- Create a GUI using flutter - Offer it as desktop app (package it and make it run as a standalone app in Windows, macOS and Linux) - Offer it as a web server exposing REST APIs - Support authentication and authorization for REST APIs, preferably with OpenIDC. - Support GraphQL - Migrate to typescript - Dockerize, produce the required artifacts to deploy to kubernetes. - Integrate Nginx proxy - Implement a DSL language to describe scenarios that can be executed by flexbench (eg. store a scenario under a .flxb file ) - Implement an editor for .flxb files with syntax highlighting support
Related repositories
https://github.com/flexivian/flexbench https://www.npmjs.com/package/http-traffic-simulator, https://github.com/iskitsas/http-traffic-simulator
Knowledge Prerequisites
NodeJS, js, typescript, Html, Css, flutter, docker
Mentors:
Ilias Kyrannas (iliaskyrannas@gmail.com), Giannis Skitsas (iskitsas@gmail.com)