Skip to content

Google Summer of Code 2025 Ideas List

Ertugrul Karademir edited this page Feb 11, 2025 · 16 revisions

1. 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. You may be able to make use of a tool like Spectral as the framework for defining our own rules over the Concerto AST (JSON).

Expected Outcomes:

A tool that allow users to:

  • Specify the naming of declarations. E.g. all names of scalars should be in camel case.
  • Specify the naming of properties, enum cases e.t.c
  • Specify which language features can be used. E.g. disallow maps, disallow forward references in regex validators.
  • Enforce the use of certain features. E.g. all string properties should have a length validator.
  • Enforce the use of @Term decorators on all declarations and properties e.t.c
  • All concepts in a namespace should extend a given concept
  • All concepts in a namespace must have unique names across multiple namespaces

Skills required/preferred:

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

Possible Mentors:

Jamie Shorten, Sanket Shevkar

Expected size of project:

175 hours (medium)

Expected difficulty:

Medium

2. Decorator Command Set JSON<->YAML Convertor

Design and implement a convertor that would convert Decorator Command Sets JSON Objects to a much more human readable YAML format and vice-versa. Currently DCS JSON objects are very verbose to read, write and edit. With the new custom YAML format we aim to make DCS objects much more easier to read, write and edit.

Expected Outcomes:

  • A utility/method in DecoratorManager to convert DCS JSON to YAML and from YAML to JSON.
  • 1:1 conversion is not expected. YAML should have a custom format that is less verbose and more readable.

Skills required/preferred:

NodeJS, Typescript, Javascript, Basic understanding of Data Formats like JSON and YAML

Possible Mentors:

Sanket Shevkar

Expected size of project:

175 hours (medium)

Expected difficulty:

Medium

3. Accord Project Agreement Protocol

The Accord Project Agreement Protocol (APAP) defines the protocol used between a document generation engine or contract management platform and an agreement server that provides agreement features like template management, document generation, format conversion etc.

Expected Outcomes:

  • Updated Open API specification
  • Updated reference implementation for the specification
  • Address (some of) open issues

Skills required/preferred:

NodeJS, Typescript, Javascript, REST API design

Possible Mentors:

Dan Selman, Niall Roche

Expected size of project:

350 hours (large)

Expected difficulty:

Medium

4. Specification Conformance Tests

Our specification conformance testing is in need of an overhaul! We'd like to migrate to a robust, proven testing framework like Vitest which would support ESM, and be performant and have a new dedicated concerto package used for Concerto conformance testing. An AI tool may be useful in helping with the migration, so feel free to mention how AI could help you with this project! The goal is to have a set of tests that can be run against any Concerto implementation to assess whether it is conformant with the specification.

Expected Outcomes:

  • Migration to Vitest (or other appropriate framework)
  • Consolidation of testing methodology and tooling
  • New concerto package for tests, focused on conformance
  • Build a set of tests for the Concerto validation rules

Skills required/preferred:

  • Node / Javascript
  • Unit testing (Mocha / Jest for example)
  • Behaviour driven testing (optional, Cucumber, for example)

Possible Mentors:

Dan Selman, Ertugrul Karademir

Expected size of project:

175 hours (medium)

Expected difficulty:

Medium

5. Incorporating AI into Template Playground

Our Template Playground web application is used to help onboard users to our technologies. We'd love to make this even easier by adding AI features to make it easier to create, edit, and preview contract templates. This project will build upon the work that was carried out last year in the context of VS Code.

Expected Outcomes:

  • Allow users to upload a file and we'd use AI to convert it to an Accord Project template
  • Possibly incorporate auto-complete suggestions when editing using the code editors built into the web app

Skills required/preferred:

ReactJS, AI tooling

Possible Mentors:

Diana Lease

Expected size of project:

350 hours (large)

Expected difficulty:

Medium

6. Testing for Code Generation Targets

We have tools that allow users to generate code from their Concerto models, supporting several languages. We would like to introduce a way of testing this code generation that compiles code for each language we are generating.

Expected Outcomes:

  • Set of Docker images for each code generation target
  • Run code gen tests within the correct image using GitHub actions, for example, generate Java code and then compile and run it using javac to ensure the generated code is correct

Skills required/preferred:

  • Systems engineering, CI/CD
  • Docker, Docker compose
  • GitHub actions

Possible Mentors:

Dan Selman, Ertugrul Karademir

Expected size of project:

175 hours (medium)

Expected difficulty:

Medium

7. Migration of Template Playground to use Tailwind CSS

As mentioned previously, our Template Playground web application is used to help onboard users to our technologies. By using a popular, well-maintained CSS framework like Tailwind, we could improve performance and code maintainability.

Expected Outcomes:

  • Template Playground updated to use Tailwind CSS
  • Existing UI tests updated
  • Possibly other UI changes to make user experience better, more performant, and/or optimized for multiple screen sizes

Skills required/preferred:

ReactJS, Tailwind CSS

Possible Mentors:

Diana Lease

Expected size of project:

175 hours (medium) - 350 hours (large)

Expected difficulty:

Medium

Clone this wiki locally