This is another entry on my bi-weekly update (yes, this time the range is a little more extensive) about the AsyncAPI Spec and parsers.
Note This is not an official AsyncAPI update but a personal summary I volunteer to do.
This time I did not add metrics. As it is not a really well automated process, I decided to not spend time on it. If you really found it useful, please let me know so I can evaluate automating it.
What do I mean by AsyncAPI Spec and parsers update?. As most of the work around the AsyncAPI Spec is not only related to https://github.com/asyncapi/spec, each update will include the most significant recent activity from the following repositories:
- spec
- bindings
- extensions-catalog
- spec-json-schemas
- parser-js
- parser-api
- parser-go
- openapi-schema-parser
- raml-dt-schema-parser
- avro-schema-parser
- tck
- converter-js
- converter-go
Feel free to ask me to include any other repository if you consider it makes sense. Also, in case you want to help me with these updates :)
Spec
Spec v2.3.0 got released! 🎉
Dale Lane led the release process this time. The release notes can be found here.
As a small note, the Make channels field optional within an AsyncAPI file by Sergio Moya RFC has been discarded from 2.3.0
version because it finally introduces a breaking change (candidate for 3.0.0
version).
Spec v3.0.0 work has been started! 🚀
The git branch next-major
will be soon created on each involved repository so PR’s can target such branch, following semantic-release process and bumping each dependant repository (thanks to Lukasz Gornicki to any new pre-release) automatically.
A global Github issue has been created to track the big picture of the work on the 3.0.0
version. The issue is here.
- Vladimir Gorej created a new RFC Remove $ref field from Channel Item Object in next breaking change version, which is the second part of the work included in
2.3.0
(this issue). Work is still in progress. - Jonas Lagoni worked in on feat: initial intent API implementation on the Parser-JS repository. A discussion has been initiated around the API design. We need your help here! 👀
- Sergio Moya started the work for the RFC Let channels be identified by an ID rather than their address. A discussion has been initiated here as well, and your help is needed! 👀 . The following PR’s have been created:
- The small docs changes made by Sergio Moya in this PR are now ready to be reviewed.
Some people jumped into champion the following RFC’s 👑, so big thanks to them!:
- Simon Heimler is gonna champion Application of message traits (intentionally) replacing existing attributes
- Maciej Urbańczyk is gonna champion Inconsistencies for schemas in server.variables and channel.parameters.
- Dale Lane is going to champion Support for multiple Kafka clusters within a spec.
🗓 A periodical meeting for community members interested in the works around this release has been started. Two meetings have happened already:
- First meeting notes and recording link can be found here.
- Second meeting notes and the recording link can be found here
The next meeting is scheduled for the 16th of February.
You can always find some of the most critical progress on the AsyncAPI spec v3.0.0 release journal .
You can find a list (grooming pending) of candidates to be included in v3.0.0
at https://github.com/asyncapi/spec/milestone/18.
Spec also had some more activity
- Vladimir Gorej opened a few issues regarding what seems to be a bug introduced in
2.3.0
:- Unable to reuse Server Objects defined in Components.servers field. A PR has been created as well here.
- Usage in Channel Item Object.servers field . More community members are trying to figure out how critical it is and find a proper fix if it applies.
- Vladimir Gorej also opened the following PR docs(spec): indicate in detail how Channel Item Object field resolves.
- Gábor Bakos is fixing examples inside the spec examples with docs: fix example for examples.
- Mike Schenk created a PR with some cosmetic changes on the
id
fields in the spec examples that seem to use non-compliant URIS or URNs. A review is pending here 👀. - More activity, including discussions and additions on the RFC feat: add security at the operation level PR by sekharbans have happened. It needs all the attention you can give! 👀
Bindings
- A new feature for the Kafka binding was proposed in feat: add schema registry infos to Kafka binding by Laurent Broudoux regarding how to add schema registries information to the binding (registry URL, schema location, etc.).
- A potential bug has been raised on the AMQP binding with amqp: vhost in channel binding by Peter Wikström. Few community members have jumped in to help define if this is a bug or not and how to fix it if it applies. Your thoughts are welcome! 👀
- Jonas Lagoni has suggested to Move binding JSON schema files to main JSON schema repository. What is your opinion on this? 👀
converter-js
v0.7.0
got released! 🎉
It adds support for 2.3.0
spec version. See changes here.
Some other work
- A new fix has been created: fix: handle JSON by Maciej Urbańczyk.
- Patrick Uhlmann suggested some improvements on the command line with Converter should allow in-place conversion. Your opinion is welcome! 👀
- Jonas Lagoni suggested some improvements with Converter cannot handle reusability.
extensions-catalog
got a really powerful feature request!
Even though some of the features mentioned in this PR were already suggested in the past, Lukasz Gornicki created a new issue called MVP integration of extensions catalog with AsyncAPI tools to make extension catalog useful to finally move forward with all of them and give the extensions catalog a real meaning. This is a nice (and significant) improvement on how “official” extensions are treated in AsyncAPI. In short, the request’s main goal is to do a big step forward in how official extensions are handled in AsyncAPI parsers so they can validate them and use them on generators and other tooling. Worth checking it out! 👀
spec-json-schemas
and few new bugs! 🐛
After intensively working on feat!: split out definitions, Jonas Lagoni has raised a few bugs:
- Not validating message payload against accurate schema.
- Parameter defines it’s own reference property.
- Inconsistantly defined $ref for server
A new future enhancement has been suggested with Cleaning up how sub schemas are defined with references.
parser-js
parser-js
v1.14.1
got released!
Among v1.14.0
that included all features for accomodating the 2.3.0
spec version, this new version includes a bug fix: fix: do not use the Array.prototype.flat function by Maciej Urbańczyk.
More activity on parser-js
- Ritik Rawal is working on the following improvement: fix: throw meaningful errors. It is a very important improvement on DX since errors will become more meaningful after this change.
- David Pereira created a feature request Export error type strings for other tools to use in error handling (e.g. invalid-json). If you want to contribute to this, please go ahead! 👀