Skip to content

Latest commit

 

History

History
144 lines (83 loc) · 7.11 KB

README.md

File metadata and controls

144 lines (83 loc) · 7.11 KB

GSoC 2022 Ideas List

Welcome! If you haven't read the GSoC Contributing Guide please read it first before going through the ideas list.

Prospective contributors, please open a discussion with us on Discussions!

1. A GraphQL framework on top of SeaORM

We would like to have a GraphQL framework / engine that build's on top of SeaORM. It is now doable to roll your own GraphQL solution using SeaORM, but it is so cumbersome and every resolver has to be coded by hand. We could take inspiration from awto, where database schema follows a set convention, so that we are able to provide common GraphQL operations (pagination, filtering, sorting, joining etc) out-of-the-box. We can also take inspiration from Hasura or Dgraph of developing a GraphQL engine. The exact approach has to be discussed, as we do not want to duplicate Hasura, which is itself a pretty great open source project.

Deliverables: An extensible and customizable GraphQL framework / engine works on top of SeaORM

Skills Preferred:

  • Knowledge in GraphQL
  • Experience in Rust & SQL

Possible Mentors:

Expected Size of Project: 350 hours

Difficulty Rating of Project: Medium

Reference:

2. A graph database and query engine (codename StarfishQL) for graph analysis and visualization

We want to preform graph analysis and visualization for an inter-related set of entities. For example, we could visualize the dependency network of crates on crates.io!

There is already some preliminary work done for this project. Checkout the StarfishQL repository and demo apps. You need to think about it's potential applications and how to make them a reality.

Deliverables: Define and enhance the query language, refine and improve the query engine and develop client-side libraries.

Skills Preferred:

  • Familar with graph analysis
  • Experience in Rust & SQL

Possible Mentors:

Expected Size of Project: 350 hours

Difficulty Rating of Project: Medium

Reference:

3. Support an open source NewSQL database (CockroachDB, TiDB, Presto etc)

This is more career oriented than the other projects, because if you are graduating and finding jobs in the startup world, having experience in NewSQL will definitely make you a star!

Basically we would like to support one of the open source NewSQL databases. CockroachDB is somewhat compatible with Postgres while TiDB is somewhat compatible with MySQL, so if we go for one of these two, we will be developing value-added facilities in the SeaQL ecosystem. If we go after Presto (or a similar non-compatible database), we will have to support it's syntax (SeaQuery), protocol and other lower level aspects of the technology stack. It's entirely up to you, just don't propose a non-open-source database thanks!

Deliverables: It could be a query builder and/or a database driver written in Rust for an specific NewSQL database.

Skills Preferred:

  • Familiar with one of open source NewSQL database, such as CockroachDB, TiDB, Presto, etc.

Possible Mentors:

Expected Size of Project: 350 hours

Difficulty Rating of Project: Medium

4. Query linter for SeaORM

SeaORM is dynamic. As such we cannot check for query correctness compile-time. We wanted to support test-time linting, meaning we enable the linter during unit tests / integration tests / CI and disable it during production. The linter should be able to catch syntactic, semantic and logic errors given the schema definition. You can think of it as "Clippy for SeaORM"!

Deliverables: A linter for SeaORM to catch errors of SQL queries at test-time.

Skills Preferred:

  • Familiar with SQL syntax of at least one rational database

Possible Mentors:

Expected Size of Project: 350 hours

Difficulty Rating of Project: Medium

Reference:

5. A SQL interpreter primarily intended for Mock testing

The is by far the most academic oriented project. We already have "rudimentary" Mock testing support in SeaORM. If we are able to implement a basic SQL interpreter, we will be able to move some unit-testing originally requiring SQLite into pure Rust. Note that for the scope of this project, we absolutely do not cater the "harder" aspects of databases, for example, ACID, concurrency, storage etc. It will be a pure in-memory SQL simulator / interpreter with the only concern being correct.

Deliverables: A SQL interpreter that can simulate the operation of CRUD SQL statements.

Skills Preferred:

  • Solid knowledge of how database and SQL works

Possible Mentors:

Expected Size of Project: 350 hours

Difficulty Rating of Project: Hard

Reference:

Selected Projects

https://www.sea-ql.org/blog/2022-06-02-summer-of-code-2022-intro/

Project Results

https://www.sea-ql.org/blog/2022-09-17-introducing-seaography/ / https://github.com/SeaQL/seaography