Google Summer of Code 2024 Ideas List - accordproject/techdocs GitHub Wiki

1. Playground and Getting Started Experience

Make major improvements to the existing Accord Project Playground to provide a best-in-class web experience to learn and experiment with Accord Project technology. This work should take design and implementation inspiration from similar efforts for other leading programming languages, such as TypeScript and its use of TwoSlash for runnable code examples.

The project should also consider how the existing Accord Project documentation, as well as the Concerto documentation is integrated into an overall learning pathway and tutorial experience.

Expected Outcomes:

A much improved Playground website, integrated with samples, tutorials and a much clearer set of getting started resources. Build a web application that allows new users to experiment and learn the Concerto schema language without installing any tools or runtimes. The app should support the loading of built-in samples, and demonstrate runtime features such as parsing, validation, comparison, transformation etc. The app should use the Monaco code-editor with support for syntax highlighting and in-line error highlighting. The app should be stateless, but could support sharing of persistent links to models through URL query parameters. The playground could integrate with the Finchbot for generating models from textual descriptions using Generative AI, or could work with the "Co-pilot project" below.

Skills required/preferred:

TypeScript, React, Information Design/Architecture. Good written English.

Possible Mentors:

@danselman, @sanketshevkar, @mttrbrts

Expected size of project:

350 hours

Expected difficulty:

Medium

2. Model Creation AI Assistant (Co-Pilot)

Assist users creating Concerto models using an in-context AI assistant (co-pilot). Design a user experience and support multiple foundational AI models, for example: OpenAI, Bard, Anthropic etc. Develop the required LLM prompts and measure their effectiveness. Ensure users understand the data they are sharing and opt-in to AI assistance. Review similar efforts from across the industry, e.g. GitHub, Repl.it, Google, and others.

Expected Outcomes:

User interaction to trigger the co-pilot, from within the existing VSCode web-extension and/or Playground, or other chatbot bot marketplace/experience.

Ability to configure API keys required

LLM Prompt Engineering required to assist the user while editing Concerto models

Skills required/preferred:

TypeScript, Basic Knowledge of ChatGPT, or similar

Possible Mentors:

@danselman

Expected size of project:

175 hours

Expected difficulty:

Medium

3. Import Aliasing

Concerto language supports reusing of terms defined in other model definition files through imports. We can import a single or multiple terms. However, imported or defined, a term can only exist once in a model file. If we can alias an import then we can free ourselves from this limitation, in case we either already have a term with the same name in the model file or we want to use two terms that share the same name that are imported.

Expected Outcomes:

Concerto language is extended to allow import aliasing. Concerto runtime can work with aliased imports.

Skills required/preferred:

Familiarity with Parser Expression Grammars, Code Generation, JavaScript

Possible Mentors:

Ertugrul Karademir, Muhammed Abdulkadir

Expected size of project:

175

Expected difficulty:

Medium

4. Rust Validator for Concerto

Re-implement the current Concerto Validator in Rust so that it can be consumed from multiple languages (using FFI, WASM, etc. ). The reimplementation should replicate the existing behaviour of the current JavaScript validator. This should provide improvements in performance, reliability and portability

Expected Outcomes:

A validator that supports the full Concerto specification, written in Rust. Published to Cargo.

Skills required/preferred:

Rust, Algorithms, Functional programming, Back end development, Rust API design.

Possible Mentors:

Ertugrul Karedemir, Jamie Shorten

Expected size of project:

350 hours

Expected difficulty:

Hard

5. Linter for Concerto

Write a linter in TypeScript for Concerto Source files. It should make use of existing functionality to validate the Concerto DSL syntax and JSON AST of Concerto model against a set of rules. Rules should be defined in Typescript and which rules are run should be configurable.

Expected Outcomes:

A configurable linter program written in TypeScript and NodeJS.

Skills required/preferred:

Algorithms, Functional programming, Back end development, NodeJS, TypeScript

Possible Mentors:

Jamie Shorten, Sanket Shevkar

Expected size of project:

350 hours

Expected difficulty:

Hard