-
Notifications
You must be signed in to change notification settings - Fork 15
Description
This issue tracks the strategic roadmap for typeid-python and related ecosystem projects.
It is a parent issue: each concrete task should have its own sub-issue and be linked here.
π― Vision & Goals
High-level goal:
Turn typeid-python into the reference Python implementation of TypeID and the core of a small ecosystem (Django/SQLAlchemy/Pydantic/CLI), with solid performance, great DX, and clear guidance for real-world systems.
Concrete goals:
- β Spec-compliant, well-tested, high-quality core library
- β Modern dev experience (uv, Ruff, mypy, pre-commit, CI, benchmarks)
- β First-class integrations (Django, SQLAlchemy, Pydantic, DRF, FastAPI)
- β Tooling (CLI, playground, GitHub Action) that makes adoption easy
- β Advanced performance & distributed-systems research track
- β Clear documentation & branding so TypeID feels like a βdefault choiceβ in Python
ποΈ Timeline Overview (Flexible)
This is a target timeline, not a hard commitment. Actual timing may shift, but relative order of phases should stay.
- Phase 0 (Weeks 1β3) β Foundations & Cleanup
- Phase 1 (Month 1β2) β Core API Expansion
- Phase 2 (Month 2β4) β Ecosystem Integrations
- Phase 3 (Month 4β5) β CLI & Tooling
- Phase 4 (Month 5β7) β Advanced Features & Research
- Phase 5 (Month 7β12) β Full Ecosystem & Branding
π¦ Scope & Non-Goals
In scope:
typeid-pythoncore library- Satellite packages (e.g.,
django-typeid,sqlalchemy-typeid, CLI) - Documentation, examples, and developer tooling
- Performance work and limited research/experiments
Out of scope (for now):
- Supporting every possible framework/ORM under the sun
- Non-Python implementations (can be future work, but not part of this roadmap)
π§± Phase 0 β Foundations & Cleanup (Weeks 1β3)
Core goal: stabilize the library, modernize development workflow, and ensure full spec compliance.
Milestones
- Remove Poetry, update CONTRIBUTING, CI config, local dev instructions.Β #32
- Add Pre-commit hooks
At minimum: Ruff, mypy, tests (or smoke tests).Β #33
At minimum: Ruff, mypy, tests (or smoke tests). - Add benchmarks (bench/)
Compare UUIDv7, ULID, KSUID, TypeID under load and document results.Β #34
Compare UUIDv7, ULID, KSUID, TypeID under load and document results.
βοΈ Phase 1 β Core API Expansion (Month 1β2)
Goal: expand the TypeID API to support practical usage patterns in modern systems.
Milestones
- Binary API
-TypeID.bytes(16 bytes representation)
-TypeID.from_bytes(prefix, b) - Prefix factories
-
typeid_factory("user")()or similar API for ID generators with fixed prefix.Β #35
-typeid_factory("user")()or similar API for ID generators with fixed prefix. - Utility helpers
-
TypeID.is_valid(s),TypeID.try_parse(s),TypeID.prefix,TypeID.timestampΒ #36
-TypeID.is_valid(s),TypeID.try_parse(s),TypeID.prefix,TypeID.timestamp - Improved documentation
- Clear API docs
- βWhy TypeID vs UUID/ULIDβ section
- Basic migration tips for existing projectsΒ #37
- Clear API docs
- βWhy TypeID vs UUID/ULIDβ section
- Basic migration tips for existing projects
π Phase 2 β Ecosystem Integrations (Month 2β4)
Goal: make TypeID a first-class citizen across popular Python frameworks.
Milestones
- Django integration
-
django-typeidpackage ortypeid.contrib.django-TypeIDField(UUID-backed) -TypeIDModelMixinfor typed PKs with prefixes - Example project inexamples/django/Β #38
-django-typeidpackage ortypeid.contrib.django
-TypeIDField(UUID-backed)
-TypeIDModelMixinfor typed PKs with prefixes
- Example project inexamples/django/ - SQLAlchemy integration
- Custom column type storing UUID in DB and
TypeIDin Python - Alembic autogeneration support - Example project (e.g., FastAPI + SQLAlchemy + Postgres)Β #39
- Custom column type storing UUID in DB andTypeIDin Python
- Alembic autogeneration support
- Example project (e.g., FastAPI + SQLAlchemy + Postgres) - Pydantic integration
- Pydantic-aware
TypeIDtype with validation, JSON schema support - Works cleanly with FastAPIΒ #40
- Pydantic-awareTypeIDtype with validation, JSON schema support
- Works cleanly with FastAPI - Django REST Framework (DRF) support
- Serializer field for TypeID
- Integration with OpenAPI / API docsΒ #41
- Serializer field for TypeID
- Integration with OpenAPI / API docs - Examples in /examples
- End-to-end examples showing how to wire everything togetherΒ #42
- End-to-end examples showing how to wire everything together
π οΈ Phase 3 β CLI & Tooling (Month 4β5)
Goal: deliver utilities that make TypeID easy to adopt and inspect.
Milestones
- Command-line tool (
typeid)
-typeid generate <prefix>
-typeid validate <value>
-typeid parse <value> --json
-typeid info <value> - Web playground
- Simple UI to generate/parse IDs
- Visualize K-sortable ordering (timeline) - GitHub Action
- Action to validate IDs in migrations/fixtures/data files
- Documentation on how to integrate into CI
π§ͺ Phase 4 β Advanced Features & Research (Month 5β7)
Goal: improve performance, explore distributed systems use cases, and document findings.
Milestones
- High-throughput generator
- Optimizations for async + multithreading
- Document best practices under heavy load - Performance & collision research
- Evaluate behavior with real databases (e.g., B-tree fragmentation in Postgres)
- Report on collision probabilities, ordering stability - TypeID in ML/DS pipelines
- Patterns for using TypeID as key for:
- images (img_), masks (mask_), batches (batch_), runs (run_)
- Example notebook/project showing reproducible pipelines
π Phase 5 β Full Ecosystem & Branding (Month 7β12)
Goal: turn TypeID-Python into a cohesive ecosystem and recognized reference.
Milestones
- Umbrella ecosystem setup
- Repos / structure for:
-typeid-python
-django-typeid
-sqlalchemy-typeid
- other contrib packages (optional) - Documentation site (e.g.,
typeid.dev)
- Docs, tutorials, API reference, examples - Long-form guides & articles
- βWhy TypeID is the future of identifiers in Pythonβ
- βUsing TypeID in Django/FastAPI/Postgresβ - Talks / community engagement
- Blog posts, meetups, conference CFPs
π How to Use This Issue
- This issue acts as a parent/umbrella for the roadmap.
- For each bullet/milestone above:
- Create a dedicated GitHub issue
- Link it back here using:
Parent: #<this issue number>in the body- And convert the corresponding checkbox to:
- [x] **Task title** (#<sub-issue>)
- Use labels like:
phase-0,phase-1, β¦phase-5core,integration,tooling,docs,performance,research