Comments (10)
At this moment all SDKs are working in version 1.0.0
After this milestone, we have plans to release versions with almost no break compatibility.
But until there, breaking is inevitable.
At this moment we released version 0.3.0, that is incompatible with releases before.
from sdk-java.
I like the idea of deprecation.
and perhaps add some function to go from 0.x
-> 1.0
as a conversion hook
from sdk-java.
IMO all major versions should be backwards compatible. Upgrading services to publish/consume new version of the CloudEvents is done one stream at a time. In a distributed system it is almost impossible to update all producers and consumers at the same time.
I'm sorry, I explained myself badly. Both sdk 1.x and 2.x supports cloudevents spec versions 0.3 and 1.0, so they should be able to talk each other, if that's what you mean. APIs however will be different, in order to simplify the usage of the sdk and this unfortunately requires breaking the Java APIs
from sdk-java.
The by-version split indeed makes it harder to rely on CloudEvents because one has to re-implement the logic to parse the spec version header and select an appropriate builder.
Another thing is that some parameters that are set in stone (from the v1 spec, like time
) are not in the CloudEvent
interface, and the only option to get them is to cast to CloudEventImpl
from v1
package.
@fabiojose would you consider deprecating 0.x versions and syncing CloudEvent
with v1?
from sdk-java.
Hi!
In SDK v2 we added methods to convert events back/forth different spec versions (in sdk v2 the only supported will be 0.3 and 1.0). The sdk v2 won't be compatible with sdk v1, since the major changes introduces to vastly simplify usability.
from sdk-java.
IMO all major versions should be backwards compatible. Upgrading services to publish/consume new version of the CloudEvents is done one stream at a time. In a distributed system it is almost impossible to update all producers and consumers at the same time.
Without backwards compatibility we will have to manually import multiple versions of the SDK in the same application. Not even sure what conflicts this could create. And with frameworks like Spring that rely on IOC, meaning a Singleton to handle the entire serialization/deserialization it would require a workaround to handle multiple CloudEvent versions.
from sdk-java.
Is there a planned release date for the 2.0.0 API? I'd like to use it to add CloudEvents support to the GCP Functions Framework for Java. 1.3.0 doesn't have the same clean separation between API and implementation, so using it would imply pulling in a bunch of implementation dependencies, as well as requiring us to make a second version later to allow for the incompatible API changes in 2.0.0.
from sdk-java.
Is there a planned release date for the 2.0.0 API?
Not yet, I hope as soon as we stabilize a bit the APIs we can release a milestone. Keep in touch 😉
from sdk-java.
Can we close this issue?
from sdk-java.
BTW we have an explanation of the CloudEvents spec versions an sdk should support https://github.com/cloudevents/spec/blob/master/SDK.md#contribution-acceptance
from sdk-java.
Related Issues (20)
- Incorrect SQL module in BOM
- Optimize SpecVersion attribute name
- Optimize BaseCloudEvent#readExtensions method
- Support for JDK 17 needed for cloudevents library HOT 9
- An occasional problem:Unable to load implementation class JsonFormat HOT 1
- Add RocketMQ into the 'status' section of README.md HOT 1
- BaseCloudEvent.getExtensionNames() breaks cloud event encapsulation HOT 2
- Add benchmarks to CloudEvents SQL HOT 1
- Does CloudEventDeserializer deserialize custom extensions (kafka headers)? HOT 3
- CVE-2022-42004 - Update jackson version HOT 3
- Spring Webflux: example not working HOT 2
- Custom validation for context attributes in wrapper library HOT 1
- can't setup `cloudevents.serializer.event_format` in quarkus HOT 3
- How to transport List<CloudEvent> between Springboot services by openfeign?
- Running into exception while using cloudevent values in kafka streams HOT 1
- Enhancement: generalise the validation in wrapper library HOT 4
- Change type of source attribute from URI to String HOT 2
- Add support for spring-amqp HOT 1
- Contribution question for wrapper for RabbitmQ and Redis HOT 8
- Port tck tests once the CESQL spec stabilizes more HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from sdk-java.