spec icon indicating copy to clipboard operation
spec copied to clipboard

Listed packages may not comply with spec

Open ChrisKeefe opened this issue 2 years ago • 2 comments

The specification README lists many packages that are not compliant with stated specifications.

Regardless of your feelings on monotonicity (#11, #40, etc), the current spec claims ULIDs provide it, and that they throw an error on overflow. Many listed packages do not implement monotonicity, do not throw, or implement it incorrectly (e.g. by incrementing the timestamp).

Recommended resolutions

  • modify the spec (e.g. clarifying whether sections are optional), and/or
  • clarify which listed implementations are fully compliant

E.g. a column in the README table describing whether a package implements monotonicity per spec would be useful to potential users

ChrisKeefe avatar Mar 02 '23 17:03 ChrisKeefe

Listed C# library does not comply with the spec and it is their consciously made decision to violate the spec: https://github.com/Cysharp/Ulid/issues/61 Therefore it is not a good example of spec implementation.

I suggest to refer to this library instead: https://github.com/ultimicro/netulid

joonatanu-softwerk avatar Jul 29 '24 07:07 joonatanu-softwerk

Here's another ULID implementation in C#: https://github.com/ByteAether/Ulid This implementation avoids throwing exception when generating ULID. This topic is discussed here: https://github.com/ulid/spec/issues/39

Seramis avatar Aug 30 '24 16:08 Seramis