Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

1.0 release #57

Closed
14 of 17 tasks
Geal opened this issue Dec 18, 2020 · 17 comments
Closed
14 of 17 tasks

1.0 release #57

Geal opened this issue Dec 18, 2020 · 17 comments

Comments

@Geal
Copy link
Contributor

Geal commented Dec 18, 2020

Biscuit has been in development for 2 years now and is now used in production. Most of the initial roadmap is done (we still need to commission an audit).

So it will soon be time for a stable release and more public communication. Before that, I'd prefer that we clean things up a bit, there are design decisions that were left alone because fixing them would be breaking changes, but a 1.0 release would be the right time to take care of them (here I consider a breaking change anything that would invalidate how currently existing tokens would be validated).

This will be a meta issue for the work needed towards the major release:

I'll make a branch of this repo with updated test samples once I've started that work on the Rust library.

see anything else we would need?
cc @divarvel @daeMOn63 @titanous @Keruspe @KannarFr @BlackYoup @meh

@Geal
Copy link
Contributor Author

Geal commented Jan 4, 2021

I'm starting the work in the 1.0 branch: https://github.com/CleverCloud/biscuit/tree/1.0
The samples directory will contain the samples generated at version 0 of the format in a v0/* subdirectory, while tokens generated with the new format and features will be in the v1/ folder, so we can test that new implementations also accept older tokens. I'll try to make one commit per feature to make it easier to update the implementations gradually.

@Geal
Copy link
Contributor Author

Geal commented Jan 5, 2021

The first example of handling multiple versions is done with #23:
Rust: biscuit-auth/biscuit-rust@01f1ba0
Java: CleverCloud/biscuit-java@2fc7c41
spec: 456549d

  • new tokens generated with a schema at version 1 cannot be deserialized with the 0.9 release of the Rust library.
  • new tokens generated with a schema at version 1 can be deserialized by the 1.0 branch of the Rust library
  • old tokens generated with a schema at version 0 can be deserialized by the 1.0 branch, and it will convert it to its renamed types

This is a small change for now, renaming fields does not modify the structure significantly (the generated tokens are the same byte for byte)

@Geal
Copy link
Contributor Author

Geal commented Jan 6, 2021

Next, changing the protobuf format to use oneof (#55):
Rust: biscuit-auth/biscuit-rust@7a84336
Java: CleverCloud/biscuit-java@56b51b0
spec: 0ec07df

this changes the token's format, but not internal structures in the library, so there's no change to the feature set

@Geal
Copy link
Contributor Author

Geal commented Jan 8, 2021

Adding support for boolean type (#61):
spec: 0954e32
Rust: biscuit-auth/biscuit-rust@78a7657
Java: CleverCloud/biscuit-java@4675131

@Geal
Copy link
Contributor Author

Geal commented Jan 8, 2021

Adding support for the set type (#51):
spec: f5169d2
Rust: biscuit-auth/biscuit-rust@bb47508
Java: CleverCloud/biscuit-java@ae0d47b

@meh
Copy link

meh commented Jan 17, 2021

Any chance of getting . as allowed character for names in the language? At the moment I'm using the functional API for building caveats and rules but it gets very hairy very quickly.

@Geal
Copy link
Contributor Author

Geal commented Jan 18, 2021

@meh possible, but I'll have to check if it will be compatible with expressions. I'm planning more operations like string.len() etc

@meh
Copy link

meh commented Jan 18, 2021

Yeah that's why I didn't just go for it, I know it's a valuable symbol for extending the language.

For me it doesn't have to be a dot either, I just want an additional separator to _ so I can namespace things a bit, : would also work.

@Geal
Copy link
Contributor Author

Geal commented Jan 22, 2021

Expressions(#38 using the design outlined in #47 (comment)):
spec: ec99146
Rust: biscuit-auth/biscuit-rust@cd9495a
Java: CleverCloud/biscuit-java@b052be6

@Geal
Copy link
Contributor Author

Geal commented Jan 25, 2021

#62: Renaming "caveat" to "check", introduce "allow" and "deny" policies
#60: new syntax

spec: fea8c33
Rust: biscuit-auth/biscuit-rust@b4e2b06 and biscuit-auth/biscuit-rust@34107fc
Java: CleverCloud/biscuit-java@691cd95 and CleverCloud/biscuit-java@3f9cd09

@Geal
Copy link
Contributor Author

Geal commented Jan 25, 2021

With those changes, most of the work for 1.0 is done. now it needs a bit of polishing, like taking care of those issues:
biscuit-auth/biscuit-rust#29 Expressions: prevent panics & overflows
biscuit-auth/biscuit-rust#30 Expression: Negate: drop int support
biscuit-auth/biscuit-rust#31 Expressions: group feature

and making sure the specification is clear enough on the 1.0 changes

@Geal
Copy link
Contributor Author

Geal commented Jan 26, 2021

adding #63 to the list, since I'm changing the syntax for those operations

@Geal
Copy link
Contributor Author

Geal commented Jan 26, 2021

#63: renaming In to Contains, removing NotIn
Rust: biscuit-auth/biscuit-rust@6b3f901
Java: CleverCloud/biscuit-java@1ef7cac
spec: 01ea43f

@Geal
Copy link
Contributor Author

Geal commented Jan 26, 2021

now would be a good time to think of other operations that could be supported. Right now I'm thinking of adding .len() for strings, sets and byte arrays

@Geal
Copy link
Contributor Author

Geal commented Feb 26, 2021

I added revocation identifiers for #1:
spec: bf3f7b2
Rust version: biscuit-auth/biscuit-rust@451690c
CleverCloud/biscuit-java@7cf654c

@Geal
Copy link
Contributor Author

Geal commented Feb 26, 2021

more operations added to expressions:
spec 1c09f36
Rust: biscuit-auth/biscuit-rust@ada0c95

@Geal
Copy link
Contributor Author

Geal commented Apr 16, 2021

the 1.0 release is done 🥳

@Geal Geal closed this as completed Apr 16, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants