Closed hershmire closed 4 days ago
@hershmire Hi, sorry for the delay.
Yes, TypeBox will eventually reach a 1.0 state. However, despite the project being years into development (nearly a decade), I still do not consider it feature-complete or internally stable enough for a formal 1.0 release—at least not until the envisioned 1.0 feature set is in place.
Given the nature of the project—which sits at the extreme end of type-level programming; extensive research has been required on my part which often spans into months of behind-the-scenes R&D (even for features that may seem relatively inconsequential). Based on this work, I need to maintain a degree of flexibility in these pre-1.0 minor revision cycles, as the addition of new researched features may necessitate breaking changes.
TypeBox adopts pre-1.0 versioning to set expectations for users and to provide me the flexibility to make necessary breaking changes (which I hope is a reasonable compromise). TypeBox publishes breaking changes on minor revisions, treating minor revisions as major ones while in a pre-1.0 release state. Incremental revisions, however, remain non-breaking. In this sense, TypeBox adheres to semantic versioning (semver) as much as possible.
This library will reach 1.0 eventually. For now, the project is still trying to innovate.
import { Parse } from '@sinclair/typebox/syntax'
type Package = Static<typeof Package>
const Package = Parse(`{
name: '@sinclair/typebox',
version: '1.0.0',
description: 'Runtime Type System For JavaScript',
licence: 'MIT',
author: 'sinclairzx81',
keywords: [
'typescript',
'json-schema',
'typecheck'
]
}`)
Will close off this issue for now, but happy to discuss more on this thread Cheers! S
Given the popularity of this library and how long it's been out, is there any consideration to publishing a version 1 major release and getting it out of the current pre major? Would be really helpful to have better SemVer expectations and no longer having minor releases possibly containing breaking changes.
From semantic versioning: