Replies: 1 comment · 10 replies
|
Can we update the Embulk SPI version to v1.0 too...? Does it break existing plugins...? |
All reactions
|
I think we need to discuss the proposed approach, but I personally think it would be better to remove msgpack from embulk-spi 1.0 as originally planned. Reason 1We spent quite a lot of time defining the milestones toward Embulk v1.0, and there are statements in several places saying that msgpack will be removed after "Embulk v1.0". So, if we release embulk-spi v1.0 without removing msgpack, I think we would need to update those statements in several places, at least if we want to keep everything consistent. There may be a question of whether we really need to update all of them. However, I think it would be better to spend our time on other work rather than on those updates. https://dev.embulk.org/topics/get-ready-for-v0.11-and-v1.0-updated.html Cleanup dependencies: SPI
Reason2There do not seem to be many plugins using embulk-spi v0.11 in the first place. output-kafka、{output|output}-iceberg are using embulk-spi v0.11 https://github.com/joker1007/embulk-output-kafka/blob/master/build.gradle#L55 Most of the others are still using v0.10. For example, I checked three trocco repositories that have had recent changes, and they are using v0.10. https://github.com/trocco-io/embulk-output-bigquery_java/blob/master/build.gradle#L35 So, if we are going to bump the version anyway, I don't think it would be a problem to include the changes we have been planning, such as removing msgpack and adding the JsonArray comparison changes. Side node.There may be a concern that embulk-spi is considered unstable because its version is still below 1.0, and that we should release 1.0 as soon as possible. However, I don't think many users care very much about the embulk-spi version itself. From a user's point of view, I think things like being able to run Embulk on Java 11 or later, or getting a new version of a plugin, are more valuable than embulk-spi becoming 1.0. |
All reactions
I agree that some users value things that work over specifications. However, at the recent meetup, there were also users who value being able to keep Embulk running with as little maintenance cost as possible. For example, some users said that their version upgrades have stalled because they cannot secure enough resources for verification. I think that the more Embulk can guarantee that there are no incompatible changes, the more we may be able to reduce maintenance costs, including verification costs. EEP-0008 defines the versioning strategies to follow v1.0: It clearly states that "incompatible changes" are indicated by the MAJOR version (although the removal of By making the SPI 1.0, Embulk can guarantee that there are no incompatible changes during 1.y. This guarantees that plugins will not stop working when users update the Embulk core, so I think users can reduce their verification costs for updates. EEP-0008 was written before Embulk entered maintenance mode, and I think the situation is different now that Embulk is in maintenance mode. Can we reconsider it? EEP-0001 says the following: https://github.com/embulk/embulk/blob/master/docs/eeps/eep-0001.md#status-of-an-eep
Since EEP-0008 is "Accepted", I think it is possible to reconsider it.
I think there are users who need the removal of msgpack, but there are also existing users who would rather keep running Embulk with as few incompatibilities as possible than have msgpack removed. I think it is valuable for those existing users to be able to keep using Embulk longer with as little maintenance cost as possible. I expect that users will be divided into two groups: users who want to keep using the current Embulk 0.11/SPI 0.11, and users who want to use newer Java and related libraries even if some compatibility is sacrificed. For the former group, I want to make both Embulk and the SPI 1.0 while keeping them as close to the current state as possible, guarantee that no incompatible changes will be introduced, and continue maintaining them. For the latter group, I want to make both Embulk and the SPI 2.0, allow incompatible changes, and continue maintaining them. Since their needs are different, I think we will maintain them in separate codebases (branches). Reason 1I'll take on the update work. Reason 2Just to be sure, let me confirm your intention. Are you saying that it is OK to introduce incompatible changes because many plugins use SPI 0.10? If so, I would rather avoid introducing incompatible changes so that the many plugins built with SPI 0.10 can keep working. By the way, is it correct that Embulk 0.11 already accepts plugins built with both SPI 0.10 and 0.11? If so, I think it means that what I was wondering about, whether it is technically possible for Embulk 1.0 to accept plugins built with SPI 0.10, 0.11, and 1.0, is possible. |
All reactions
Target users?Again, I am not strongly against the idea of releasing embulk-spi 1.0 as it is now in v0.11. I am only saying that, before doing that, we should check the EEPs and think about whether we really need to do it. For example:
I think the discussion will be more useful if we have clear answers to these questions. My answer to these questions is that there may be no such users or plugins. embulk-spi v1.0Next, I think it would be good to get comments from @dmikurube again about the original plan for releasing embulk-spi 1.0. Option 1
At least, this does not affect the existing embulk-spi v0.11. Option 2
For example, if we release something like embulk-spi v0.11.1, it may affect existing users. However, embulk-spi has a rule that it does not use patch versions. Please see EEP-008. So, as I understand it, we are not supposed to release a version like v0.11.1. v0.9 userI think we should make this point clear.
About this point, I was also at the meetup, so I think I understand the situation. They are using Embulk v0.9, not Embulk v0.11. In other words, they are not using embulk-spi. They are not the embulk-spi users that we are talking about here. Supporting them with the code base would mean continuing to support Embulk v0.9 with things such as:
We thought about whether we could continue supporting these old versions, and our answer was no. That is why we started developing the Embulk v0.10 series and later released v0.11 as the stable version. If we want to target these users, I think the question should be whether we can continue maintaining Embulk v0.9. They also said that they use the following plugins:
As far as I know, these plugins are compatible with both Embulk v0.9 and v0.11. So, if they upgrade Embulk, I think they should still work. One of the participants explained why they do not upgrade:
https://x.com/onunu_/status/2100499475466973623?s=20 I don't think what they need is to keep Embulk v0.9 forever. I think what they need is help moving to a newer version while checking compatibility together. In that case, the target version would probably be either Embulk v0.11 or Embulk 1.0, which has not been released yet. I think the important point is to keep compatibility when they make that upgrade. Embulk SPI v0.10 and v0.11
Java plugins that work with Embulk v0.11 use embulk-spi v0.10 or v0.11. They cannot work without it. For this point, I don't want to give incorrect information, so I would like to wait for @dmikurube comment. However, if I remember correctly: https://github.com/embulk/embulk/releases/tag/v0.11.0 v0.10.50 = Embulk v0.11.0. |
All reactions
|
It seems to me that you/we are discussing different things, because several different topics are mixed in this discussion. So first, let me share my view on each topic separately. About versioningFor embulk/embulk-spi#6 and the JsonDouble/JsonLong topic, I intended to release the fixed SPI as At the same time, note that the Embulk plugin SPI version and the Embulk core version are not aligned. As you can see also in EEP-8, the Embulk core Those versions are designed not to be aligned. For example, the Embulk core As a preparation before the Embulk core About msgpack-coreThe removal of msgpack-core must go ahead. Withdrawing the removal is unacceptable. We decided this removal because we expected that keeping msgpack-core would be a big pain in the future, both for us and for users, and we still expect so. Keeping this means that it can cause a much more catastrophic compatibility problem due to the future status of msgpack-core. Removing msgpack-core is planned to mitigate such a future pain, and we prepared for the removal during the About the compatibility between
|
All reactions
|
I understand. Let's pause this discussion until ClearCode has carefully read through the existing EEPs. |
Uh oh!
There was an error while loading. Please reload this page.
This is extracted from #42 .
ClearCode proposes the following:
All reactions