-
Notifications
You must be signed in to change notification settings - Fork 1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Creating a new workflow for spec work is confusing and counterproductive. #6
Comments
(A good example of how this duplicate/overlapping process is already introducing confusion and obscuring privacy issues can be found at https://github.com/eventually-matrix/matrix-doc/commit/9e71fd668972605ed98b4b275f10b4185bd9417a). |
@ara4n Thanks for raising your concerns. Will take me some time to read |
@ara4n Before going into a detailed reply, I would like to state a few things and use those as a foundation for the rest.
After I came into contact with Matrix in January 2017, I quickly saw its potential and wanted to get to know the protocol better, and see how implementations could be customized/created to fit my needs. I quickly came to the conclusion that:
We have been in contact since January, I have created several tools and made several contributions, trying my best to respect your wishes that the spec was not high priority and worked in my own corner, proudly showing my progress from time to time. Then the funding crsis came. None of the issues that existed at least 1 year prior to it were addressed at that point, which only made them worse. During that time I have met several people which have voiced the same concerns as I have concerning the effective closing of the Matrix protocol due to a lack of documentation, making it very difficult to create working implementations. (Ruma is an example of a promising project which has been in limbo because of it) I am now at a point where I have understood parts of the protocol and implementations enough and validated those with my own implementations to share this acquired knowledge with the community. I have tried (most likely in a clumsy way, given the responses I got) to contribute this knowledge about how current implementations work, but I have hit a wall using various channels and felt I was only a bother to the core team. Now to address your specific points:
Why I believe we need a complementary process:
To conclude:
|
First of all, let me just say that we really do appreciate the enthusiasm and dedication from everyone here, and we really do want to try and find a way forwards that works for all of us. The core team has talked through the issues raised here today, and the rest of this post is a reflection of that discussion on behalf of all of us. @maxidor has raised lots of points, some of them are perfectly understandable, some of them we disagree with, and some of them are due to us miscommunicating. The situation with the spec is currently… a mess. It’s outdated, PR reviews sometimes get stuck, and basically it’s been unloved for too long. This is frustrating for everyone involved, especially us, and I admit that we can get a bit defensive on that front. Having said that, you’ve raised a number of points about how we handle the spec PRs when we do have time to look at them:
This may very well be fair; it may be worth discussing if there is a way for incremental changes to be accepted without them immediately landing─some sort of staging area perhaps. It does feel that contributing to the spec is perhaps harder than it should be at the moment. Certainly looking into this would be a priority for anyone we got working on the spec, if not before. It is worth noting your recent PRs, e.g. #1039 are not trivial changes (even if they don’t require implementation changes), and so don’t fall into this category. In general we follow the standard FOSS philosophy of asking contributors to make revisions to their PRs; this helps contributors learn from the comments and reduces the burden with accepting contributions. While this works well for us in our code repos, it may not be the most appropriate way of accepting contributions to the spec.
I know that @richvdh has said this, but I think it's a misrepresentation of what actually happens:
There are definitely things we could do better there, not least speccing new endpoints, but on the whole our impression is we have done reasonably well at maintaining backwards compatibility with what's implemented. While we can sympathise with frustration with using Google docs, we’ve found it much more constructive for initial proposals of new features than simply using PRs of OpenAPI changes which tend to focus too much on the API shape rather than the fundamental underlying concepts. We’ve also had complaints that OpenAPI is too time consuming to write when discussing new concepts and APIs that rapidly evolve. We fully imagine that the way we handle spec contributions will massively evolve over time. Regardless of how or why the Matrix spec process is currently broken, our major concern with having a fork of the spec is that it becomes a long-lived fork which risks fragmentation of the protocol and community:
If you really want to keep a separate repo we would recommend either:
Either way allows references from issues in the official matrix-doc repo, which would help contributors keep track of proposed updates to the spec. In its current form the core team will advise not relying on this repo, due to the risk of the documentation being inaccurate or misleading. There is a feeling that a recurring theme in this whole discussion has been that statements made by the core team have been repeatedly taken and extrapolated by @maxidor to conclusions that were never intended. This has led to frustration due to it consuming a large amount of time which otherwise could be spent working together on Matrix spec proposals and PRs, and it is fair to say that we could have made significant improvements to the spec in the time spent on this so far. On a final note, it's frustrating for the core team to be accused of not caring about the community. We do. We spend quite a lot of our spare time talking to people, guiding them through PRs, answering questions. We wish we could do more, write more documentation, help people write proposals, but we are currently heavily resource limited and we just don’t have the time to be everywhere and do everything. This is why we are asking folks to help by contributing to the official spec and come together as one community, rather than forking the standard. |
Thanks Erik for collating a more diplomatic and balanced response than my draft answers. Ftr i'd prefer to discuss this in public for maximum transparency and visibility rather than DM (although in practice I'd much rather spend the time reviewing/writing spec PRs to the official repo than continuing the debate further). |
@ara4n @erikjohnston Thank you for your answer. One fundamental question has not been addressed in your answer which led to the creation of this repository. I've linked to a reply from Rich to this question and this might fall under the following:
Therefore, I would like to ask this again and ensure you have a fair chance to answer it: |
A point which I think it's worth making very clear (and which we're going to be updating the README with) is that starting from |
I'd suggest keeping the various changes as PRs against a fork of matrix-org/matrix-doc, and feel to point a copy of speculator against it. If you want to maintain an 'unmerged-prs' branch then you are of course welcome to. As your PRs are submitted, reviewed and merged against the official matrix-org/matrix-doc master you'd pull that into your repo's master and minimise the divergence. If your PRs aren’t merged, it’s hopefully for a good reason and the expectation is for contributors to work with the maintainer to improve the contribution in order for it to be aligned with the rest of the standard (rather than forking the whole standard as a means of winning the argument). The main thing we are objecting here is to merging unreviewed PRs to master of a matrix-org/matrix-doc fork, in a repository whose name & README risks confusion with the official spec, and whose current workflow appears to be set up to diverge from the official spec. So please either merge not-yet-merged-to-matrix-org PRs to a sensibly labelled local branch (with a README which makes it clear that it's an unofficial interpretation of the spec) - or instead work with us to merge them to the official spec. The latter will have the advantage of actually being consistent with the rest of Matrix, and help advance rather than fragment the project. |
@Magnap we are all for filling in the undocumented bits of the spec. please just do it in a format which we can merge into the official spec, and with naming and documentation that makes it clear that it's unofficial and unreviewed exploration so that newbies don't google some undocumented matrix API and assume they've found official reviewed documentation for it. |
To my understanding, this wouldn't work to address the requirement below:
This is, to my knowledge, the only way to do it as we need a single document including all the PRs content that reflect current implementations. And this is what we have done. As for the rest, I'll be sure to be clear on our still-to-be-written down process:
It seems like we agree? |
Except it isn't: you're merging these PRs onto the master branch of your fork of matrix-org/matrix-doc rather than an
...where 'this' is eventually-matrix/matrix-doc? okay, yes: i agree that for as long as matrix-org/matrix-doc is inaccurate or incomplete, folks should be PRing fixes to it to help improve it.
Sounds very reasonable. Please note that the blocking point on matrix-org/matrix-spec-proposals#1039 was not over documenting current behaviour, but the unrelated protocol changes which were also included.
Great... except if you aren't getting review on the PRs you are merging, there is a very high chance that the "documentation in spec format of current behaviour" will be not actually correct... or worse, somehow formalise bugs in the implementations. Hopefully the act of PRing these first against the master branch of matrix-org/matrix-doc will catch these however. Anyway, yes: it seems like we largely agree. Please let's get on with writing code & spec rather than debating further - and please please consider making the changes we're requesting here to avoid confusion for the wider community. |
We prefer to call it master currently. We'll take your suggestion into consideration.
Work in progress, we still don't agree how it should be said or integrated to avoid conflicts down the road. It will be done.
Being a bug or not doesn't matter to this repo. This repo is about documenting the current behavior so people can actually build implementations that have a chance to discuss with the ecosystem. It's not possible with the current official spec. I can only invite you to fix your bugs if you don't want to be documented...
We will and we always wanted to. |
Making the purposes of our repositories clear is at the top of the project's to-do list, and we're working on further making it clear that we're not official. Eventually Matrix was meant as a pun on Eventual Consistency, not to lay any sort of claim to the Matrix name.
For this repository, once suitably renamed and README'd, formalizing the buggy behavior of implementations will be considered acceptable to the degree that one needs to be bug-compatible with them in order to interoperate with them in practice FTR, I would have liked to have this documentation in a format that in the future would allow for more clearly noting which implementations differ how (spec style isn't very suited to that), but considering how compliant the current ecosystem is with the |
@ara4n ignore the part about the PR in my original reply, I totally misread your sentence. |
Please either rename the repository or rename the branch. Otherwise anyone talking about "master of matrix-doc" or similar is going to be incredibly confusing, as is anyone trying to merge between the repositories (i.e. us trying to incorporate your changes). Likewise folks on github/google are going to get incredibly confused on stumbling across a repository which seems to be very divergent yet carry the same name.
boggles I am genuinely bewildered by this. Having hunted down the comment (Github has collapsed the comment history because it's so long, so I had to manually hunt in the DOM for the anchor tag - have I mentioned how useless Github PRs are at lengthy proposal debates?), I can only pray that this is some very strange miscommunication. The situation as I see it is this:
...and you've just told me to "ignore the part about the PR", So i'll go ahead and ignore this. Believe it or not we really want to merge your PRs. But that means being open to compromise and pragmatism to some extent during the review process, just like any other FOSS project.
Okay, that's fair enough. But please rename the repo to make the distinction clear.
Thank you.
Okay, I hope the potential for confusion is clear though, despite the pun. Given the aim here to improve and clarify the spec situation rather than confuse newbies further, I'd beseech you to have a less punny and more selfexplanatory name. Perhaps "Empirical Matrix"? This will also encourage us to improve the official spec so we can go and kill off the Empire ;P Or just "Unofficial Matrix"?
Fair enough.
That would be awesome. In practice, hopefully the differences are sufficiently few and far between today that one can handle them with inlined comment or rationale blocks within the spec (i.e. the written bits of the spec, rather than swagger stuff). |
Speaking for myself only, the current drafting and specification process seems rather "heavy-weight", and for the initial steps of writing the draft and implementing it, it would seem to make sense for them to happen in a more "volatile" and independent environment than you would get PRing them against the official spec or existing implementations, respectively. I hope Eventually Matrix can come play that role, as a staging ground (as Erik described it) for potential new features to develop and stabilize, and to eventually be prepared for PRing against a more official upstream (be it the official spec or a major implementation). Conversely, however, I can see how you might consider that fragmentation, and I would like to stress that it's nothing but a vague hope at this point, and one I would definitely be willing to give up on if a more official such staging area were to exist. For the near future, however, I expect the main focus of Eventually Matrix will be to collect the results of reverse-engineering (so much easier when you can look at the code, ❤️ open source) the already existing implementations to support the work on making 3rd party HSs (and clients, ISs, and ASs too, if those working on such would like a place to host their results) federate and interoperate. As for our name, we'll take a second look at how we can make it clear that we're unofficial. Same goes for the name (and README) of this repo. In general, making it more obvious "what goes where" is very much a priority, but is still something we're working on coming to an internal consensus on. But this repo will definitely be modified to better suit its purpose as an unofficial documentation of current behavior! It might take a couple of days, though, as this is a spare time project for all of us. But rest assured that we are not trying to deliberately confuse anyone, and we will clarify whenever necessary. |
There is some small chance that we may have done quite a lot of drafting & spec of Matrix thus far... which is why we have tried to make the drafting/proposal process as insanely light-weight as possible. At the risk of repeating my original post, all we ask for a draft is a proposal in Google Docs (or something we can c+p into Google Docs to discuss with threaded comments, revisions and track-changes). There isn't even a template. You then experiment against whatever implementations you like, and then if it's shown to not suck, do the formal PR against the spec. I genuinely can't think of something more volatile & independent? However, if you want to speed up the 'formal spec' phase by experimenting with an alternative copy of the spec, feel free - as long as you PR the proposals against the official spec too, and clearly label the experimental alt copy as such. |
Those are the parts I was thinking could happen here, also to allow collaboration on them even while they're still in the experimental phase. However, strictly speaking, that's a separate point than this issue, and for this issue, it doesn't seem we disagree much on what needs to happen in practice. |
@maxidor Rather than building a forked version of the Matrix spec with its own URL prefixes, workflow and governance process, please can we work together to improve the official spec directly - otherwise you risk confusing and fragmenting the spec process even further, as well as creating an artificial and unconstructive distinction between the community & the core team. There should be only one Matrix community, of which the core Matrix.org team happens to be a subset.
The intended model for contributing to the Matrix spec (expanded out from matrix-org/matrix-doc's CONTRIBUTING.rst) is:
So far we have merged almost all PRs against matrix-org/matrix-doc, and the google-doc based review model has proved successful, so I do not understand why a separate process is needed here. The concerns I have are:
Now, of course, there is nothing stopping you from forking and fragmenting the protocol, giving it your own namespace and creating your own variant. However, it should be pretty obvious that creating schisms in the project is very unlikely to be helpful, and I would implore you to try to understand and participate in and improve the existing workflow instead. (cc @non-Jedi).
The text was updated successfully, but these errors were encountered: