oam-dev / spec

Open Application Model (OAM).
https://oam.dev
Other
3.03k stars 246 forks source link

OAM spec 0.4.0 release planning #473

Closed hongchaodeng closed 2 years ago

hongchaodeng commented 2 years ago

We are actively developing KubeVela, and include many new updates to the application model. But we haven't updated the spec yet in a couple of months. We need to include updates from KubeVela into the spec. But before this we need to address the following questions:

Some background: Currently the maintainer team behind OAM spec and KubeVela are the same. Usually the development of the KubeVela project that users can use goes faster than defining the official model. Thus we update the API in KubeVela first. But when it is more stable, we will include the updates back into the API model.

Here are the official answers to above questions:

More specific actions:

dhiguero commented 2 years ago

Hi,

Thanks for the clarification, but I would like to express my disagreement with this proposal. I personally try to be involved in the spec area of OAM and my understanding of both projects is quite different than the aforementioned one. I think this is the type of discussion that should be addressed in the community calls, but it seems that this is not a proposal but a decision that has already being taken.

I think the OAM spec goes beyond the scope of Kubevela since Kubevela is the Kubernetes runtime of OAM, but OAM itself is and should be Kubernetes agnostic. For example, somebody may be working on a docker-compose runtime for OAM that takes OAM files as input and launches containers managed by docker. That runtime will use the spec to determine what to implement.

I think that from the point of view of the community there is little information about the decisions of what features are to be introduced in Kubevela. I think this approach works if Kubevela is an implementation of OAM for Kubernetes with the addition of some extensions, but I do not feel that OAM must contain and reflect all Kubevela features.

resouer commented 2 years ago

@dhiguero (... and all other maintainers). I am not the decision maker, but would like to step in to echo some of the ideas in this proposal (and add some other inputs).

TL;DR: The next version of OAM will need to be shipped in the form of a workable platform rather than spec docs. The OAM maintainers, not community users/implementors, should be responsible for doing the dirty work to make OAM usable.

As co-creator of this model, one lesson we learned from the past 2 years is: we should not have created a "spec only" project. A spec is light-weighted to maintain, can gain a lot of attention, but it can not solve real problems of users. We've seen the devils are all in implementation details and this soon becomes a blocker for anyone to ship a workable production level OAM platform w/o huge platform engineering effort. I believe this is against the goal of OAM which intends to make user's life easier.

At the meantime, during past 6 months of releasing KubeVela as the first production level OAM platform, the momentum of the model begin to show up rapidly as we expected (see: Who is using OAM/KubeVela). Just FYI, KubeVela is NOT a/the OAM k8s runtime. It is an app delivery & mgmt control plane with the goal of simplifying developer's life on top of any runtime infra ranging from K8s, cloud to edge. a.k.a it is designed to be an OAM platform since day 0 with goal to promote the idea in form of a workable system, and now it's proven to be the better path.

Hence, I agree with the proposal of focusing the whole idea to the platform itself and solving user pain points with the model, rather than maintaining a "spec only project" and expecting someone else to do the implementation, this won't work.

Q: Why not just deprecate OAM spec and maintain KubeVela only?

OAM the model is how KubeVela attempt to solve user's problem since the very beginning: give them a higher level abstraction. It is the soul of the platform.

And with the adoption of KubeVela grow, there're already interests show up to implement this model in some unique envs, and we definitely encourage this. This decision is not even "k8s or not" related - if a user feel they have to implement OAM on their own k8s infra, they can do it. If there's any contents in the model that makes a user feel hard to implement or too "k8s specific", we're happy to remove it. Of course, before all these actions, we'd like to check why KubeVela can not be applied and fix this by any means. For existing implementations that are not KubeVela, we'd like to help to upgrade, or if it's impossible, we can just leave them as community implementations for specific model versions and community partnership can still built based on this.

But all of these intents won't change the fact and direction that we (as OAM maintainers) will maintain OAM, the model, in the form of a workable platform, instead of a set of spec docs. If we feel KubeVela is the wrong platform to do this, I am eager to know what's the right one (and why we can not achieve same goal in KubeVela).

Issues need to be fixed

hongchaodeng commented 2 years ago

Hi @dhiguero . Sorry for the late response. I got a cold and not active recently.

We take your feedback and the entire community seriously. Your voice is important to us. We believe that being neutral and open is the key to the success of the whole community.

As a result. We will keep the neutrality of the spec and not couple it to any implementation (e.g. KubeVela). We will keep evolving the spec taking feedback from all the users and vendors including KubeVela, Napptive, etc.

Thanks again for your feedback!