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

Draft a specification? #210

Open
jsmorph opened this issue Mar 22, 2023 · 14 comments
Open

Draft a specification? #210

jsmorph opened this issue Mar 22, 2023 · 14 comments

Comments

@jsmorph
Copy link
Collaborator

jsmorph commented Mar 22, 2023

I thought I'd create an issue for any on-going discussion:

As we've mentioned here and sort of in #57, it might be good to have some sort of specification for the pattern language. The current documentation is of course an excellent source, but adding something more formal is appealing (to me).

Ideally the specification is flexible enough to support something like feature flags ("shellstyle not supported" or whatever). Good test cases: Evolution of capabilities here (for example: pre-exists and post-exists specs) and similarly for Event Ruler.

This table from the EventBridge docs is of course helpful:

image

A potentially interesting twist is having the specification(s) not tied to specific event rendering languages (like JSON or protobuf), but that goal seems like a stretch with questionable net worth at this point.

Thoughts? Any appetite for something like this?

References

  1. https://github.com/timbray/quamina/blob/main/PATTERNS.md
  2. https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-event-patterns.html
  3. https://github.com/aws/event-ruler/blob/main/README.md
  4. https://en.wikipedia.org/wiki/Comparison_of_regular_expression_engines
  5. https://www.rfc-editor.org/rfc/rfc8259.html
  6. https://jsontypedef.com/
  7. https://json-schema.org/ (but I'm personally not a huge fan)
@timbray
Copy link
Owner

timbray commented Mar 23, 2023

Presumably if we're interested in a stable standards doc, the goal is interoperability with other implementations, of which at the moment there is one, namely aws-event-ruler. So I think that if we were going to do this, we should file an issue over there to alert them and invite them to collaborate. Sound reasonable?

While I would be happy to pitch in and help, I don't have the cycles to lead such an effort.

@embano1
Copy link
Collaborator

embano1 commented Mar 23, 2023

This came up several times in our (AWS) discussions as well, paging @nikp and @baldawar

@jsmorph
Copy link
Collaborator Author

jsmorph commented Mar 23, 2023

I'd be happy to contribute in whatever form. In the early days here, I had started a crude IETF RFC draft somewhere. I didn't get very far, but I'll see if I can dig it up.

@baldawar
Copy link

baldawar commented Mar 23, 2023

yeah lets collaborate on this. Is https://github.com/timbray/quamina/blob/main/PATTERNS.md a good place to converge on for now?

@timbray
Copy link
Owner

timbray commented Mar 23, 2023

If by "converge on" you mean "start from a copy of and preserve the RFC-like style" then I agree.

@nikp
Copy link

nikp commented Mar 23, 2023

I've never written one of these before but would be keen to help. CC @jonessha as well :)

@jsmorph
Copy link
Collaborator Author

jsmorph commented Mar 23, 2023

@timbray, what do you suggest for the drafting format these days? I'm not current at all, but drafting in Markdown might work well enough for us here. My weakly held preference is to start with whatever real markup, boilerplate, etc. from the outset (with content from PATTERNS.md) rather than retrofit later. What guidance do you have? @embano1 @baldawar @nikp and others, what say you?

I'm happy to start a branch (or whatever) with a crude first draft.

@timbray
Copy link
Owner

timbray commented Mar 23, 2023

Standards-wise, these days I live in the IETF. There, more or less all RFCs are created in either Markdown or XML. The tooling is pretty good either way. Have a look at the setup in https://github.com/ietf-wg-jsonpath/iregexp, if you clone that you get a Makefile and everything. If we have an explicit goal to take this to a standards organization we should pick one sooner rather than later because they all have strong opinions about what input drafts should look like.

My instinct would be to do it as an IETF internet-draft, because of that tooling, and anyone can post an Internet-draft for free, which gives at least a permanent URL.

Hey AWS guys, is there any relationship with CNCF these days? I sort of did that for a while but ran out of patience with them.

Oh, @jsmorph,d to answer your question: Yeah, markdown is fine.

@timbray
Copy link
Owner

timbray commented Mar 24, 2023 via email

@baldawar
Copy link

New repo makes sense.

For full disclosure, so far I'm only speaking on my own behalf. I need to check if there's any due-process that needs to be followed before I work on behalf of AWS. From past experience, these things can take time so I wouldn't recommend waiting on it. I'd be keen to get started. Happy to create a repo w all permissions & scaffolding based on https://github.com/ietf-wg-jsonpath/iregexp over the weekend.

@baldawar
Copy link

on

Hey AWS guys, is there any relationship with CNCF these days? I sort of did that for a while but ran out of patience with them.

Sorry didn't see this before. I'm not sure at the moment. Let me ask in our internal channels.

@embano1
Copy link
Collaborator

embano1 commented Mar 25, 2023

Hey AWS guys, is there any relationship with CNCF these days? I sort of did that for a while but ran out of patience with them.

I'm still a bit involved in the CloudEvents side (mostly for the Go and PowerShell SDKs). In general, we do have several streams with the CNCF. Which specific project is this question about?

@baldawar
Copy link

I've created this shell repo temporarily https://github.com/baldawar/draft-ietf-patterns-protocol/ based on https://github.com/ietf-wg-jsonpath/iregexp/ & https://github.com/martinthomson/i-d-template (neat tool, btw!)

Everyone who I could think be interested should be invited to the repo (cc @longzhang-lz for context on the mysterious invite). I will move this to an organization as soon as someone can suggest a decent name. I could only come up w patterns / matchers / ruler patterns which are all felt too generic.

Right now I'm heads down on few work-related gremlins, but I can follow up within AWS on if there's any prescribed guidelines the company requires. I also have a bit of backlog of clean up work around event-ruler that I'm desperate to wrap up first, so expecting to take a lot more active role. Until then (targeting Apr End) happy to take care of any minor tasks, administrative duties, and reviews.

@baldawar
Copy link

I'll be starting to push out some PRs on https://github.com/epml-spec (Event Pattern Matching Language) where I've moved the repo.

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

5 participants