Skip to content

Create Clojure/Babashka Proof of Concept for a Core Component #396

Open
@bhouston

Description

@bhouston

Create Clojure/Babashka Proof of Concept for a Core Component

Summary

This issue proposes creating a small proof-of-concept implementation of a core MyCoder component in Clojure with Babashka runtime to evaluate feasibility and identify potential challenges before committing to a larger migration effort.

Related Issues

Objectives

  • Implement a small, self-contained component from the MyCoder codebase in Clojure/Babashka
  • Demonstrate interoperability with the existing TypeScript codebase
  • Evaluate performance, code complexity, and developer experience
  • Document findings and challenges encountered

Suggested Components for POC

Consider implementing one of these components:

  1. Logger System: A relatively self-contained utility with clear boundaries
  2. Configuration Loading: Loading and parsing configuration files
  3. Basic LLM Provider: A simple implementation of one LLM provider (e.g., Anthropic)

Deliverables

  • Working Clojure/Babashka implementation of the selected component
  • Tests demonstrating functionality equivalence with the TypeScript version
  • Performance benchmarks comparing the implementations
  • Documentation of challenges, solutions, and lessons learned
  • Recommendation on whether to proceed with further migration

Technical Considerations

  • How to handle TypeScript's type system in Clojure (consider using clojure.spec)
  • Approach for async operations (core.async vs. promises)
  • Integration with existing build system
  • Testing strategy

Next Steps

Based on the results of this POC, we can make a more informed decision about whether to:

  1. Proceed with a larger migration effort
  2. Implement select components in Clojure while keeping the core in TypeScript
  3. Remain with the current TypeScript implementation

Resources

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions