Le lundi 3 juin 2024, 12:37:21 UTC+2 Marvin W a écrit :
The purpose of inbox is to ask for Council to review
to move to
Experimental, it's not a location for developing a XEP. The location
for developing a XEP from its early stage is Experimental, however
Experimental is also where we have production-grade XEPs that are
widely implemented.
In a perfect world, people would never release and enable functionality
in production software to end-users, that is based on Experimental
XEPs. Evaluation of the move to Stable is based on technical review and
experimental implementations, production implementation is not a
requirement for Stable (we only require production implementation for
Final).
[SNIP]
As explained, we have de-facto reached the state where something that's
considered useful to developers is in Experimental for more than a few
months, we will see it in production and therefor will have to consider
interoperability and compatibility with this specific Experimental
version for at least some time. And that is where the feeling for the
need of a higher bar to Experimental comes from. So to reduce the bar
for Experimental, we have to move to Stable faster or the ecosystem
will move faster than we manage the XEPs.
Experimental is for the specification. Adding whatever status or workflow change
you want will not prevent developers from implementing whatever they feel is
relevant. People have been implementing things that were not official XEPs
because they felt they were relevant, experimental or not (e.g. OTR, OMEMO).
Some teams may choose to implement only stable specifications, others want to
move fast. I'm in the latter case and I'm okay to refactor or even rewrite
something entirely once experience is gained. And I think that both ways are
perfectly fine.
The "experimental" state is clear: it may change and break.
"Stable" may not be desirable for a while. For instance, I've not requested
a
state change on purpose for submitted specifications such as "XEP-0356:
Privileged Entity" because I knew that it would take time and experimentation,
and moving to stable would prevent that.
I've made important changes years after the original submission.
Also, I was working on the only software using it at the beginning; now at
least Slidge, a popular bridge, is using it, and its feedback may be valuable
for updates before moving to stable.
I suggest that
we clearly state somewhere (such as in a "write a
proto-XEP"
document) that talking to the community before starting any work is
highly
recommended. However, this should not be mandatory, as people may be
experimenting with ideas and specifying them at the same time.
I agree it shouldn't be mandatory, but also we should encourage not
only talking with the community before writing the XEP, but also to
talk with the community before experimenting with the ideas. Because
others might have done that before and/or have ideas that are worth
including in the experimentation. The XEP creation process starts with
the idea, not when writing it down, and IMO we need to find ways and
provide the tools to support XEP creation before the formal writing
process.
Once again, experimental is for that. Writing things down helps to clearly
explain them and how we intend to do them. It's not a starting point for a
feature, but it's definitely a good starting point for wider discussions.
As explained above, Experimental is implemented in
production in
practice, so retracting or rejecting it won't mean that people don't
have to deal with it. We have the Deprecated state to refer to XEPs
that have production implementations and need to be considered for
interoperability and compatibility, but or not encouraged. However
there is no path from Experimental to Deprecated - because Experimental
shouldn't have had implementations.
As I've mentioned above, experimental or not, whatever new workflow won't
prevent developers from implementing an unstable feature if it is relevant to
them. Experience has shown this to be the case more often than not.
So my personal takeaways on this are:
===
1. We should move to stable faster. Developers that want to release
functionality to their users that requires Experimental XEPs need to
step up and push to accelerate the process, so that they don't have to
release based on Experimental XEPs.
Relevant for some XEPs, but not all. Some time you don't want to move to draft
on purpose, because you want to gain experiment, and feedback from others. You
also need something written as a basis for discussion. My XEP-0356: Privileged
Entity specification is an example.
2. We should encourage the community to interact on
XEPs early.
Essentially make it such that if you plan to work on a topic, you throw
a mail to the mailing list saying you're going to work on it so that
everyone knows and can share any insights they have in the topic. We
can also provide tooling to make this easier or refer to tooling
provided by third parties.
As long as it's not mandatory, it's surely a good thing to interact on
something as early as possible. I personally like to have something written as
a basis for discussions.
3. We should more actively discourage release of functionality based on
ProtoXEP and Experimental XEPs in production (except hidden behind
feature flags or options clearly marked as experimental).
It is already clearly stated. There is a red warning at the very beginning of
the specification. If people chose to implement it, they have reason, and they
know what they do.
Specification is there for interoperability and explaining how things are done.
XSF job is notably to build and maintain them, and help improvement through
discussion and collaboration with the wider community.
It's not the job of the XSF to say to developer how they should present
features, and to tell them (beside current indicators) what to implement or
not.
4. We should not have any bar for Experimental except
for basics,
because Experimental means nobody should implement it in production, so
there is no harm in publishing it.
Beside extreme cases, I'm also advocating for letting most if not all
specification go to experimental. However, beside current warning, it's
developers choice to use them in production.
Best,
Goffi