Mbin: A kbin fork that promises to never review PRs before merging them

Somebody who was previously active on the kbin codeberg repo has left that to make a fork of kbin called mbin.... #fediverse

https://kbin.social/m/fediverse/t/610675

Mbin: A kbin fork that promises to never review PRs before merging them - Fediverse - kbin.social

Somebody who was previously active on the kbin codeberg repo has left that to make a fork of kbin called mbin....

It seems to automatically pull all changes from kbin anyway so I don't know about this consensus approach.

https://karab.in/m/karabin/p/340377/Usterka-z-crosspostami-nie-zawsze-sa-przyporzadkowane-odpowiedniemu-watkowi-matce-at-ernest

Usterka z crosspostami - nie zawsze są przyporządkowane odpowiedniemu... - Karabin - karab.in

Hmm, that seems like not such a good look from Ernest. According to google translate:

I know, honestly it was on purpose. I noticed that forks sync changes immediately with /kbin. I wanted to check how they deal with this much-announced community-based qualitative code review. Answer: they can't cope. Quite an obvious bug was accepted in PR and domerged into the main branch :P It now works properly on the rifle ;)

Hopefully everyone can play nice and work together productively.

Not sure what you are looking at but seems like you are saying ernest put thru an intentionally malicious PR to see what would happen? And what happened was exactly what is described? I mean, ya, thats what people will do.
It wasn't entirely intentional, it was actually my mistake. But I held off on pushing the hotfix for a while. It was a development branch, so these kinds of bugs were permissible - in this case, it just changed the order of related posts, nothing serious. It was quite easy to spot and fix. Slow and cautious acceptance of pull requests, something I spent a lot of time on, was the main accusation from the creators of forks. Hastily accepting them was a problem for me. I personally considered a consensus similar to that, but now I see it doesn't make sense. Someone needs to take responsibility. Personally, I believe that forks are the best thing that could have happened to the project.
It is good to really see your true nature now. I'm also think the fork is the best thing that could have happened for the community. It's a pity that you never started a conversation, but instead you still try to do mean things like this.
Ow.. it was 100% intentional. You said it yourself: "Wiem, szczerze mówiąc było to celowe. Zauważyłem, że forki synchronizują od razu zmiany z /kbin.". https://karab.in/m/karabin/p/340377/Usterka-z-crosspostami-nie-zawsze-sa-przyporzadkowane-odpowiedniemu-watkowi-matce-at-ernest#post-comment-510980
Usterka z crosspostami - nie zawsze są przyporządkowane odpowiedniemu... - Karabin - karab.in

Yep, in Polish we call it skrót myślowy
występujący również pod nazwą Kontekst potoczny ;)

@melroy I don't think you can really be upset about anyone putting through bad code. According to the philosophy as I understand it, bad code (intentionally so or otherwise) is a useful contribution and you are basically soliciting it. You supposedly have some way other than code review to ensure nothing harmful gets through and it has to do with the reputation of the contributor. Since you already knew @ernest and clearly have a bad opinion of him, how did it happen?

I did not and could not review the PRs themselves. So I am just going on the information as presented here. Sounds like @ernest put through some code (either into kbin or mbin not clear on that) which he knew was not 100% highest quality but which error was not critical or devastating. And that it could easily be found and fixed. Partially he did this to learn more about this governance model. A model which has apparently been developed in direct opposition to his own. Is it approximately accurate?

If so, sounds a bit mischievous at the worst.

I really can't recommend Tyranny of Structurelessness highly enough.

Well I don't have a bad opinion about him (those are your assumptions), we just didn't agree on how a community project would/can work.

If however he did introduce intentionally a bug in kbin, just because of Mbin that's downright childish. The Mbin community does try to test all the incoming PRs (not just kbin sync PRs) on various instances apart from unit-tests, etc. We just do not want to depend on a single maintainer, hence a different way of working in the project.

He saying Mbin can't handle the kbin changes that is just not true (Odpowiedź: nie radzą sobie), at least we try to keep in sync (eg. for API comparability for upcoming mobile clients). But I'll leave it this, I'm not going to waste any more energy. I hope you understand.

Thanks for your recommendation.

Oh c'mon, don't be mad. It's just a wrong sorting of posts, it's in an edge case, and seriously it wasn't intentional. I just wanted to check how such management looks in practice, how many merge accepts are needed, etc. I didn't mean to do anything wrong that could cause harm. I even push the same code to my instance to facilitate your tests ;)

But you're right - that's just my nature. I approach PR with very limited trust, whether they're mine or from others.

I know your approach on PRs. Hence the main reason of the fork. The community does believe in their people and the good in mankind. Only 1 approval is required from another maintainer for now. We are using C4 way of working.
I assure you that I didn't intentionally push incorrect code into the repository. These were my first lines of code in a really long time. I simply got involved in other things that I wanted to finish first, and I noticed the edge case in the meantime, but it wasn't a priority. I saw that you were syncing and I was hoping to benefit a bit from it once you fixed it. I didn't expect the review to happen so quickly. By the way, I was genuinely curious about how this project management method works because, you know, I've always avoided such an approach. Merloy, you know how much I owe you, and I appreciate what you've done for the project, as well as the other Mbin contributors. Our overall visions haven't always been the same, and I think it's great that kbin has been forked. You see for yourself how my work looks until the release - there are many things I'll be refining over time. That's why I've put a hold on all other PRs, and now I want to focus on this.

@ernest melroy

lol this whole conversation is a microcosm of the open source community. I agree with ernest that forks are great and would add that they show that the open source system is working as intended.

“True nature” in this case appears to be slow and cautious. Shocking stuff!
No I think you misunderstood, in this particular case it was malicious. But it's fine, we are all over it now.

In hindsight maybe we should have responded by saying we merged your mistake intentionally to see how you'd respond.

i am not being serious of course, as that's not our community's nature. Even though it's allowed to gather proof, we (I am quite sure I can speak on behalf of the community here) would never intentionally introduce bad code into software which is being actively used.

Ernest, you have seen me before, pleading for you to change your ways, on all fronts. This, sadly, degrades the faith I have in your project being suitable for being used in production, from a pragmatic point of view. Kbin may be reliable, but you are not.

Ernest said he didn't introduce bad code on purpose:

I assure you that I didn't intentionally push incorrect code into the repository. These were my first lines of code in a really long time. I simply got involved in other things that I wanted to finish first, and I noticed the edge case in the meantime, but it wasn't a priority.

Ernest has said many things in the past and many times has not lived up to his promises. So I doubt this words now. Also he's already contradicted himself on this matter.

Yeah, that's true. Real-life stuff was kinda more important for me at the moment than managing the project.

For me, it's straightforward: I pushed some developmental code that wasn't even a complete feature, and it got approved in your pull request. That's why I was advocating for everyone to only merged their own PRs in the /kbin repository – so that each person could take responsibility for their own work. I won't go on about this any further.

Real-life stuff was kinda more important for me at the moment than managing the project.

As it should be, always, for everybody, you won't ever hear me judge you on that, so please don't try to make me look bad by implicitly suggesting I am.

What you failed to do however is delegate, even temporarily, your responsibilities to people you trust. Instead you left people who trusted you dangling, only sporadically feeding them promises you would never fulfill. It seems keeping them on a leash was kinda more important to you than securing the future of kbin.

I won't go on about this any further.

I hope I'll never have to mention this again, so you'll never have to. Which would imply that you'll have come to terms and lived up to your promises, both recent ones and from the past.

Yes, I say this fully aware - there are many things that I have failed at. Much of what I said, I failed to achieve. However, I never wanted to keep people on a leash; I am more of a person who prefers to stay on the sidelines and engage in what brings me the greatest pleasure - coding, just like any other contributor.

Believe me, I tried to delegate tasks, had many private conversations and discussions. Perhaps it wasn't visible from the outside. However, in that mental state, the last thing I wanted to do was resolve conflicts among adults, and it all started to boil down to that. As @BaldProphet mentioned - "microcosm of the open-source community."

Moreover, there were too many different visions of the project, ignoring requests, etc. That's precisely why I decided to temporarily halt development, to secure the future of kbin. It was my decision, and as I mentioned, forking turned out to be the best thing that could happen. As you can see, the differences are not that significant, but it will be easier for all of us - especially since we can always draw inspiration from each other, and I don't think anyone has a problem with that.

However, I still maintain contact with many people, and sometimes they mention to me the attitude of certain individuals on mbin's Matrix - it is at least puzzling. In any case, I want to stay away from that and focus on my work with contributors who understand and prefer my approach.

Thank you for your in depth, genuine, reply

Believe me, I tried to delegate tasks, had many private conversations and discussions. Perhaps it wasn't visible from the outside

I am sorry but I'm having a hard time believing you when you say that you were seriously trying to delegate, as not a single soul ever said anything which would remotely confirm this. I believe you had conversations, but they ultimately didn't result in anything in this context.

However, in that mental state, the last thing I wanted to do was resolve conflicts among adults

I am not sure how to interpret this as there were no conflicts that I'm aware of that needed resolving during your absence, everybody was just waiting

I am more of a person who prefers to stay on the sidelines and engage in what brings me the greatest pleasure - coding, just like any other contributor.

There's nothing wrong with being like that, there are other people willing to do things like resolving issues. Like me. I realize I appeared out of nowhere. As a new instance owner it took a while for me to notice, but when the situation became clear to me I was ready to jump in and help, just like all the other people who had offered their help (before me).

You've basically just admitted that you were either incapable of or unwilling to engage in structural problem solving and management of the kbin project. That's fine, but you should have reached out and informed the community as soon as you became aware of this.

forking turned out to be the best thing that could happen

Yes, forking can have positive side effects and perhaps having two versions in development synchronously can merit more than one. This however was not the proper way to achieve this and using it as an excuse to justify your behavior and inaction is unjust.

However, it is not too late. You can still do the right thing by starting delegation now, by clearly assigning multiple people to all essential tasks, and giving multiple people complete control of kbin.social, so that, should a similar situation occur in the future, you and the community will confidently know that the project will not grind to a halt again.

Then seek a constructive dialog with the mbin community and we can make the project, in it's current for, work. Together.

If you feel uncomfortable with or are have trouble doing any of this, as you've clearly indicated you'd rather spend your time on coding, you are always welcome to ask me for advice.

Never hesitate to ask for help.

At this point you are just evidencing that Ernest's judgement was spot on.

You see, I don't know how I would act now in hindsight. You have to take into consideration that, at the peak, hundreds of people willing to help appeared out of nowhere, people I didn't know at all. By nature, I am rather distrustful and approach new relationships cautiously - I really need a lot of time to get to know another person well. It's true that after some time, a certain structure began to take shape, but not everything is always as it seems at first glance - especially when so many strong personalities converge in one place. Perhaps it was a mistake that instead of addressing many things publicly, I tried to solve them in private conversations.

And you're right, anyone who knows me a bit knows that I have trouble asking for help. Sometimes, I take too much on myself, which is not good in the long run. I'm working on it. But this time was something more. I promised to take care of things, and under normal circumstances, it would probably be easy for me because I have some experience in resolving such situations. But these were not normal circumstances. I realized this too late. I was just overwhelmed by real life. So many problems collapsed on me that I could never have anticipated. These were the worst months of my entire life. I don't want to write too much about it or make excuses, but at some point, even getting out of bed or eating something became difficult. When I tried to get back to the project, the thought of the backlog and how many people I let down made me feel sick. That's why I'm really glad to be where I am now. I can only apologize to you and try to fix some mistakes. I need to do it at my own pace. I want to clean up the mess, find my rhythm, and then engage in broader communication with people. I'm still recovering on my own.

What I did was indeed a bit malicious, but I believe it was the only way to achieve the intended effect. The fact that I really like you all should not mean that I will be uncritical of your work. I don't want you to fully trust everything that comes from me - only in this way can we fully utilize the potential we have in developing the fediverse. Frontend errors are just a trivial matter; they can be quickly found and fixed. However, the situation is completely different when it comes to backend mechanics. Seemingly minor errors when I was developing karab.in made me undo them for weeks. With larger instances, there may not be a second chance. This is not a centralized system, you have to consider others above all. That's why I am so sensitive to it and have so many doubts about making changes.

It's not that I want to make things difficult for you. I really care about mbin developing in the right direction. I am curious about what the future will bring. I would like kbin to remain rather ascetic, subtle, and something that you need to learn and understand a bit, rather than having everything handed to you on a platter. Mbin can be a different face, with more features, bolder, and I know that you have many great ideas for it. A simple example is the labels for marking mods/admins/ops that you are currently working on - kbin has it marked in a subtle way with a faint left border outline - you can do it differently, and that's great. As someone very wise once said, "If it's not diverse, it's not the fediverse."

@melroy I am sure that this is just the beginning of our shared adventure. I hope you won't hold a grudge against me for long ;) Guys, I deeply regret that we met at this stage of my life, but as I say, all I can do is try to fix my mistakes. Thanks for everything!

Evan Prodromou (@[email protected])

If it's not diverse, it's not the fediverse.

CoSocial

Despite the fork. I hope we can learn from each other indeed. That will only benefit both of us.

Although we merge into main it's not a release, we use GitHub/Docker tags to mark releases. And use semantic versioning if needed for minor and patch releases.

This was indeed not nice from him.
We don't automatically pull changes, our community improves and try to test it as well. We know that the recent PRs of Ernest are far from perfect and in fact the recent PRs are often not feature complete. The only reason Mbin is trying to sync from kbin we try to keep the code base in sync for now (if we as a community agrees on the changes). We DO make changes to the PR like you can see here: https://github.com/MbinOrg/mbin/pull/212 And we also follow-up with additional changes, like you can see here: https://github.com/MbinOrg/mbin/pull/225
Kbin sync 7 + lot of rework, refactoring / Mbin changes by melroy89 · Pull Request #212 · MbinOrg/mbin

Finish Magazine deletion (Add TODO, since this can be done much easier and simpler when adding cascading to postgresql) Improve moderator role Auto-formatting on YAML files according to your .edit...

GitHub

It looks like they're still working out what they want their process to be:

https://github.com/MbinOrg/mbin/pull/34

Seems like your concern is addressed there:

Pull Requests require at least one (1) other maintainer approval before the PR gets merged (built-in peer review process).

The mbin fork happened when kbin development was looking a lot less active. In any case, it's not necessarily bad to have a diversity of approaches. Due to their differing organizational structures, mbin will likely tend to have more features and more rapid development, but also potentially more bugs, while kbin remains more stable.

Way of Working: Proposal by melroy89 · Pull Request #34 · MbinOrg/mbin

A way of working proposal written in text. See Files changes tab in this Pull request. PLEASE, review the agreements. If you do NOT agree let us know now. If you are missing something that is not a...

GitHub

I cant follow the convo to tell if this is the actual state of things or just something thst was being discussed but:

16 Maintainers MAY merge incorrect patches from other Contributors with the goals of (a) ending fruitless discussions, (b) capturing toxic patches in the historical record, (c) engaging with the Contributor on improving their patch quality.

What an idea.

From the PR comments:

Maintainers MAY merge incorrect patches from other Contributors with the goals of (a) ending fruitless discussions, (b) capturing toxic patches in the historical record, (c) engaging with the Contributor on improving their patch quality.

I asked around and asked in the C4 specification matrix room.
And the reason is actually simple. If you merge bad code, have a record of proof in git (pull requests aren't forever it's only a github/gitlab thing).

So the idea is if you merge bad code you have proof in the git record that there is a bad actor. You can always revert the commit again or fix it. And the record can act as a proof in case the community want to get rid of bad actors.

Way of Working: Proposal by melroy89 · Pull Request #34 · MbinOrg/mbin

A way of working proposal written in text. See Files changes tab in this Pull request. PLEASE, review the agreements. If you do NOT agree let us know now. If you are missing something that is not a...

GitHub
So we have proof now ;P
Yes indeed. The process is based on C4: https://rfc.zeromq.org/spec/44/. C4 way of working is used in several big projects, incl. but not limited by: ZeroMQ, OSSEC, Flux RFC
44/C4

The Collective Code Construction Contract (C4) is an evolution of the github.com Fork + Pull Model, aimed at providing an optimal collaboration model for free software projects. This is revision 3 of the C4 specification and deprecates RFC 42. License Copyright (c) 2009-2016 Pieter Hintjens. Copyright (c) 2016-2018 The ZeroMQ developers. This Specification is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version.

Thanks for your feedback.

We do have code reviews in GitHub and discussions on Matrix. We updated the README that reflect our latest way of working. As stated in the comment section we are also working on it in PR: https://github.com/MbinOrg/mbin/pull/34. Feel free to comment on that.

Way of Working: Proposal by melroy89 · Pull Request #34 · MbinOrg/mbin

A way of working proposal written in text. See Files changes tab in this Pull request. PLEASE, review the agreements. If you do NOT agree let us know now. If you are missing something that is not a...

GitHub