Skip to content

Commit ed02ecc

Browse files
authored
Merge pull request #690 from objectstack-ai/copilot/update-roadmap-evaluation
2 parents eb6e155 + fd6437b commit ed02ecc

1 file changed

Lines changed: 100 additions & 61 deletions

File tree

ROADMAP.md

Lines changed: 100 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010

1111
- [Current State Summary](#current-state-summary)
1212
- [Codebase Metrics](#codebase-metrics)
13+
- [Package Naming Convention](#package-naming-convention)
1314
- [Phase 1: Protocol Specification (✅ Complete)](#phase-1-protocol-specification--complete)
1415
- [Phase 2: Core Runtime (✅ Complete)](#phase-2-core-runtime--complete)
1516
- [Phase 3: Data Layer (🟡 Mostly Complete)](#phase-3-data-layer--mostly-complete)
@@ -84,6 +85,42 @@ These are the backbone of ObjectStack's enterprise capabilities.
8485

8586
---
8687

88+
## Package Naming Convention
89+
90+
> **Adopted:** 2026-02-15
91+
> **Scope:** All new packages from v3.1 onward; existing `plugin-auth` will migrate to `service-auth` in v4.0.
92+
93+
To clearly distinguish **core platform services** from **optional extensions**, all ObjectStack packages
94+
follow a strict naming convention:
95+
96+
| Prefix | Purpose | Characteristics | Examples |
97+
|:---|:---|:---|:---|
98+
| `service-*` | **Core service implementations** | Implements an `I*Service` contract; provides platform infrastructure; typically required for production | `service-auth`, `service-cache`, `service-queue` |
99+
| `plugin-*` | **Optional extensions** | Adds optional functionality; development tools, testing utilities, or domain-specific features; not required for production | `plugin-dev`, `plugin-msw`, `plugin-bi` |
100+
| `driver-*` | **Data drivers** | Implements `IDataDriver` for a specific database | `driver-memory`, `driver-postgres` |
101+
| `adapter / framework name` | **Framework adapters** | Integrates ObjectStack with a web framework | `nextjs`, `nestjs`, `hono`, `express` |
102+
103+
### Migration from `plugin-*` to `service-*`
104+
105+
The following renames are planned for packages that implement core service contracts:
106+
107+
| Current Name (v3.x) | New Name (v4.0) | Reason |
108+
|:---|:---|:---|
109+
| `@objectstack/plugin-auth` | `@objectstack/service-auth` | Implements `IAuthService` contract |
110+
| `@objectstack/plugin-cache` (not yet published) | `@objectstack/service-cache` | Implements `ICacheService` contract |
111+
| `@objectstack/plugin-queue` (not yet published) | `@objectstack/service-queue` | Implements `IQueueService` contract |
112+
| `@objectstack/plugin-dev` | `@objectstack/plugin-dev` | ✅ Keep — optional developer tooling |
113+
| `@objectstack/plugin-msw` | `@objectstack/plugin-msw` | ✅ Keep — optional test mocking |
114+
| `@objectstack/plugin-bi` | `@objectstack/plugin-bi` | ✅ Keep — optional BI extension |
115+
| `@objectstack/plugin-hono-server` | `@objectstack/service-http` | Implements `IHttpServer` contract |
116+
| `@objectstack/plugin-security` | `@objectstack/service-security` | Implements security enforcement |
117+
118+
> **Note:** During v3.x, new service implementations will be published directly under `service-*` naming.
119+
> The existing `plugin-auth` package will be preserved with a deprecation notice and re-export shim
120+
> until v4.0 removes the old name.
121+
122+
---
123+
87124
## Phase 1: Protocol Specification (✅ Complete)
88125

89126
> **Goal:** Define every schema, type, and contract as a Zod-first source of truth.
@@ -159,64 +196,65 @@ These are the backbone of ObjectStack's enterprise capabilities.
159196

160197
## Phase 4: Service Implementations (🔴 In Progress)
161198

162-
> **Goal:** Implement the remaining 19 service contracts as production-ready plugins.
199+
> **Goal:** Implement the remaining 19 service contracts as production-ready packages.
200+
> **Naming:** All contract implementations use `service-*` prefix (see [Package Naming Convention](#package-naming-convention)).
163201
164202
### Priority 1 — Essential Services
165203

166-
| Contract | Priority | Notes |
167-
|:---|:---:|:---|
168-
| `ICacheService` | **P0** | Redis / Memory cache — needed for session, metadata, query caching |
169-
| `IQueueService` | **P0** | BullMQ / Redis Streams — needed for async workflows and jobs |
170-
| `IJobService` | **P0** | Cron/interval scheduling — depends on IQueueService |
171-
| `IStorageService` | **P1** | S3 / Azure Blob / Local FS — file upload/download for apps |
172-
| `ISchemaDriver` | **P1** | DDL operations — needed for `objectstack migrate` CLI command |
173-
174-
- [ ] `plugin-cache` — Implement `ICacheService` with Redis + in-memory fallback
175-
- [ ] `plugin-queue` — Implement `IQueueService` with BullMQ adapter
176-
- [ ] `plugin-job` — Implement `IJobService` with cron scheduling
177-
- [ ] `plugin-storage` — Implement `IStorageService` with S3/local adapters
204+
| Contract | Priority | Package | Notes |
205+
|:---|:---:|:---|:---|
206+
| `ICacheService` | **P0** | `@objectstack/service-cache` | Redis / Memory cache — needed for session, metadata, query caching |
207+
| `IQueueService` | **P0** | `@objectstack/service-queue` | BullMQ / Redis Streams — needed for async workflows and jobs |
208+
| `IJobService` | **P0** | `@objectstack/service-job` | Cron/interval scheduling — depends on IQueueService |
209+
| `IStorageService` | **P1** | `@objectstack/service-storage` | S3 / Azure Blob / Local FS — file upload/download for apps |
210+
| `ISchemaDriver` | **P1** | | DDL operations — needed for `objectstack migrate` CLI command |
211+
212+
- [ ] `service-cache` — Implement `ICacheService` with Redis + in-memory fallback
213+
- [ ] `service-queue` — Implement `IQueueService` with BullMQ adapter
214+
- [ ] `service-job` — Implement `IJobService` with cron scheduling
215+
- [ ] `service-storage` — Implement `IStorageService` with S3/local adapters
178216
- [ ] Schema driver integration into PostgreSQL/MongoDB drivers
179217

180218
### Priority 2 — Communication Services
181219

182-
| Contract | Priority | Notes |
183-
|:---|:---:|:---|
184-
| `IRealtimeService` | **P1** | WebSocket/SSE pub/sub for live data |
185-
| `INotificationService` | **P2** | Email/SMS/Push/Slack/Teams/Webhook |
186-
| `IGraphQLService` | **P2** | Auto-generated GraphQL from object schemas |
187-
| `II18nService` | **P2** | Runtime i18n with locale loading and translation |
220+
| Contract | Priority | Package | Notes |
221+
|:---|:---:|:---|:---|
222+
| `IRealtimeService` | **P1** | `@objectstack/service-realtime` | WebSocket/SSE pub/sub for live data |
223+
| `INotificationService` | **P2** | `@objectstack/service-notification` | Email/SMS/Push/Slack/Teams/Webhook |
224+
| `IGraphQLService` | **P2** | `@objectstack/service-graphql` | Auto-generated GraphQL from object schemas |
225+
| `II18nService` | **P2** | `@objectstack/service-i18n` | Runtime i18n with locale loading and translation |
188226

189-
- [ ] `plugin-realtime` — Implement `IRealtimeService` with WebSocket + Redis pub/sub
190-
- [ ] `plugin-notification` — Implement `INotificationService` with channel adapters
191-
- [ ] `plugin-graphql` — Implement `IGraphQLService` with auto-schema generation from objects
192-
- [ ] `plugin-i18n` — Implement `II18nService` with file-based locale loading
227+
- [ ] `service-realtime` — Implement `IRealtimeService` with WebSocket + Redis pub/sub
228+
- [ ] `service-notification` — Implement `INotificationService` with channel adapters
229+
- [ ] `service-graphql` — Implement `IGraphQLService` with auto-schema generation from objects
230+
- [ ] `service-i18n` — Implement `II18nService` with file-based locale loading
193231

194232
### Priority 3 — Business Logic Services
195233

196-
| Contract | Priority | Notes |
197-
|:---|:---:|:---|
198-
| `IAutomationService` | **P2** | Flow execution engine — depends on queue/job |
199-
| `IWorkflowService` | **P2** | State machine + approval processes |
200-
| `ISearchService` | **P2** | Full-text search via MeiliSearch/Elasticsearch |
201-
| ~~`IUIService`~~ | **Deprecated** | Merged into `IMetadataService` — use `metadata.getView()`, `metadata.getEffective('view', name, { userId })` |
202-
| `IAnalyticsService` | **P3** | BI/OLAP queries (memory impl exists as reference) |
203-
204-
- [ ] `plugin-automation` — Implement `IAutomationService` with flow execution engine
205-
- [ ] `plugin-workflow` — Implement `IWorkflowService` with state machine runtime
206-
- [ ] `plugin-search` — Implement `ISearchService` with MeiliSearch adapter
234+
| Contract | Priority | Package | Notes |
235+
|:---|:---:|:---|:---|
236+
| `IAutomationService` | **P2** | `@objectstack/service-automation` | Flow execution engine — depends on queue/job |
237+
| `IWorkflowService` | **P2** | `@objectstack/service-workflow` | State machine + approval processes |
238+
| `ISearchService` | **P2** | `@objectstack/service-search` | Full-text search via MeiliSearch/Elasticsearch |
239+
| ~~`IUIService`~~ | **Deprecated** | | Merged into `IMetadataService` — use `metadata.getView()`, `metadata.getEffective('view', name, { userId })` |
240+
| `IAnalyticsService` | **P3** | `@objectstack/service-analytics` | BI/OLAP queries (memory impl exists as reference) |
241+
242+
- [ ] `service-automation` — Implement `IAutomationService` with flow execution engine
243+
- [ ] `service-workflow` — Implement `IWorkflowService` with state machine runtime
244+
- [ ] `service-search` — Implement `ISearchService` with MeiliSearch adapter
207245
- [ ] ~~Enhance `IUIService` runtime implementation~~ (merged into IMetadataService)
208-
- [ ] `plugin-analytics` — Implement full `IAnalyticsService` beyond memory reference
246+
- [ ] `service-analytics` — Implement full `IAnalyticsService` beyond memory reference
209247

210248
### Priority 4 — Platform Services
211249

212-
| Contract | Priority | Notes |
213-
|:---|:---:|:---|
214-
| `IAIService` | **P2** | LLM integration (OpenAI/Anthropic/local) |
215-
| `IStartupOrchestrator` | **P3** | Advanced startup coordination (current kernel handles basics) |
216-
| `IPluginValidator` | **P3** | Plugin marketplace validation |
217-
| `IPluginLifecycleEvents` | **P3** | Typed event emitter (partial in kernel) |
250+
| Contract | Priority | Package | Notes |
251+
|:---|:---:|:---|:---|
252+
| `IAIService` | **P2** | `@objectstack/service-ai` | LLM integration (OpenAI/Anthropic/local) |
253+
| `IStartupOrchestrator` | **P3** | | Advanced startup coordination (current kernel handles basics) |
254+
| `IPluginValidator` | **P3** | | Plugin marketplace validation |
255+
| `IPluginLifecycleEvents` | **P3** | | Typed event emitter (partial in kernel) |
218256

219-
- [ ] `plugin-ai` — Implement `IAIService` with multi-provider LLM routing
257+
- [ ] `service-ai` — Implement `IAIService` with multi-provider LLM routing
220258
- [ ] Advanced startup orchestrator for large plugin graphs
221259
- [ ] Plugin marketplace validator for community plugins
222260

@@ -281,7 +319,7 @@ These are the backbone of ObjectStack's enterprise capabilities.
281319
282320
### 7.1 Core AI Services
283321

284-
- [ ] `plugin-ai` — Multi-provider LLM service (OpenAI, Anthropic, Gemini, local models)
322+
- [ ] `service-ai` — Multi-provider LLM service (OpenAI, Anthropic, Gemini, local models)
285323
- [ ] NLQ (Natural Language Query) runtime — translate natural language to ObjectQL
286324
- [ ] Embedding service for vector search and RAG
287325

@@ -357,24 +395,24 @@ These are the backbone of ObjectStack's enterprise capabilities.
357395
| 1 | Data Engine | `IDataEngine` || `@objectstack/objectql` | Full CRUD + hooks + middleware |
358396
| 2 | Data Driver | `IDataDriver` || `@objectstack/driver-memory` | In-memory reference driver |
359397
| 3 | Metadata Service | `IMetadataService` || `@objectstack/metadata` | Full CRUD + overlays + deps |
360-
| 4 | Auth Service | `IAuthService` || `@objectstack/plugin-auth` | better-auth integration |
361-
| 5 | HTTP Server | `IHttpServer` || `@objectstack/plugin-hono-server` | Hono-based server |
398+
| 4 | Auth Service | `IAuthService` || `@objectstack/plugin-auth` `@objectstack/service-auth` in v4.0 | better-auth integration |
399+
| 5 | HTTP Server | `IHttpServer` || `@objectstack/plugin-hono-server` `@objectstack/service-http` in v4.0 | Hono-based server |
362400
| 6 | Logger | `Logger` || `@objectstack/core` | Pino-based structured logging |
363401
| 7 | Service Registry | `IServiceRegistry` || `@objectstack/core` | Built into ObjectKernel |
364402
| 8 | Analytics Service | `IAnalyticsService` | 🟡 | `@objectstack/driver-memory` | Memory reference only |
365403
| 9 | Plugin Lifecycle | `IPluginLifecycleEvents` | 🟡 | `@objectstack/core` | Partial in kernel |
366-
| 10 | Cache Service | `ICacheService` || | Spec only |
367-
| 11 | Queue Service | `IQueueService` || | Spec only |
368-
| 12 | Job Service | `IJobService` || | Spec only |
369-
| 13 | Storage Service | `IStorageService` || | Spec only |
370-
| 14 | Realtime Service | `IRealtimeService` || | Spec only |
371-
| 15 | Search Service | `ISearchService` || | Spec only |
372-
| 16 | Notification Service | `INotificationService` || | Spec only |
373-
| 17 | AI Service | `IAIService` || | Spec only |
374-
| 18 | Automation Service | `IAutomationService` || | Spec only |
375-
| 19 | Workflow Service | `IWorkflowService` || | Spec only |
376-
| 20 | GraphQL Service | `IGraphQLService` || | Spec only |
377-
| 21 | i18n Service | `II18nService` || | Spec only |
404+
| 10 | Cache Service | `ICacheService` || `@objectstack/service-cache` (planned) | Spec only |
405+
| 11 | Queue Service | `IQueueService` || `@objectstack/service-queue` (planned) | Spec only |
406+
| 12 | Job Service | `IJobService` || `@objectstack/service-job` (planned) | Spec only |
407+
| 13 | Storage Service | `IStorageService` || `@objectstack/service-storage` (planned) | Spec only |
408+
| 14 | Realtime Service | `IRealtimeService` || `@objectstack/service-realtime` (planned) | Spec only |
409+
| 15 | Search Service | `ISearchService` || `@objectstack/service-search` (planned) | Spec only |
410+
| 16 | Notification Service | `INotificationService` || `@objectstack/service-notification` (planned) | Spec only |
411+
| 17 | AI Service | `IAIService` || `@objectstack/service-ai` (planned) | Spec only |
412+
| 18 | Automation Service | `IAutomationService` || `@objectstack/service-automation` (planned) | Spec only |
413+
| 19 | Workflow Service | `IWorkflowService` || `@objectstack/service-workflow` (planned) | Spec only |
414+
| 20 | GraphQL Service | `IGraphQLService` || `@objectstack/service-graphql` (planned) | Spec only |
415+
| 21 | i18n Service | `II18nService` || `@objectstack/service-i18n` (planned) | Spec only |
378416
| 22 | UI Service | `IUIService` | ⚠️ || **Deprecated** — merged into `IMetadataService` |
379417
| 23 | Schema Driver | `ISchemaDriver` ||| Spec only |
380418
| 24 | Startup Orchestrator | `IStartupOrchestrator` ||| Kernel handles basics |
@@ -426,6 +464,7 @@ These are the backbone of ObjectStack's enterprise capabilities.
426464
| Priority | Action | Reason |
427465
|:---:|:---|:---|
428466
| **P0** | Complete Zod v4 migration | 2-7x performance improvement + built-in JSON Schema |
467+
| **P0** | Rename `plugin-auth``service-auth`, `plugin-hono-server``service-http`, `plugin-security``service-security` | Align existing packages with `service-*` / `plugin-*` naming convention |
429468
| **P1** | Add JSON Schema output layer | Provide protocol descriptions for non-TS ecosystems (Python/Go clients) |
430469
| **P2** | Consider OpenAPI Spec generation | Auto-generate OpenAPI from Zod Schema, connecting the full API toolchain |
431470
| **P3** | Evaluate Effect Schema | If Zod v4 performance is still insufficient, as a long-term candidate |
@@ -437,10 +476,10 @@ These are the backbone of ObjectStack's enterprise capabilities.
437476
| Version | Target | Focus |
438477
|:---|:---|:---|
439478
| **v3.0** | ✅ Shipped | Protocol specification complete, core runtime stable |
440-
| **v3.1** | Q2 2026 | Essential services (Cache, Queue, Job, Storage), PostgreSQL driver |
441-
| **v3.2** | Q3 2026 | Communication services (Realtime, GraphQL, i18n, Notifications) |
442-
| **v3.3** | Q4 2026 | Business logic services (Automation, Workflow, Search) |
443-
| **v4.0** | Q1 2027 | Zod v4 migration, JSON Schema output, OpenAPI generation, AI services, multi-tenancy |
479+
| **v3.1** | Q2 2026 | Essential services (`service-cache`, `service-queue`, `service-job`, `service-storage`), PostgreSQL driver |
480+
| **v3.2** | Q3 2026 | Communication services (`service-realtime`, `service-graphql`, `service-i18n`, `service-notification`) |
481+
| **v3.3** | Q4 2026 | Business logic services (`service-automation`, `service-workflow`, `service-search`) |
482+
| **v4.0** | Q1 2027 | Zod v4 migration, `plugin-auth``service-auth` rename, JSON Schema output, OpenAPI generation, AI services, multi-tenancy |
444483
| **v4.1** | Q2 2027 | Studio IDE general availability, marketplace launch |
445484
| **v5.0** | 2027+ | Managed cloud, app store, global ecosystem |
446485

0 commit comments

Comments
 (0)