Tusky Contributor response to Nik Clayton
Published on August 30, 2023 by Tak!
TL;DR: Our OpenCollective policy has always been that we will use our budget to enable contributors who would otherwise not be able to contribute. In one case, this meant that there was no publicly visible work, because the contributor did not manage to get it into a usable form, despite us helping them as much as possible. We recognize that we could be more transparent with our expense policy, and we will work on improving it.
Detailed Response from Tusky Contributors
On Sunday, August 27, 2023, Nik Clayton formally left the Tusky project. Normally we wouldn't comment on a contributor’s departure, but simultaneous with his departure, Nik wrote and shared a blog post containing very serious accusations against the Tusky project, alleging a lack of transparency and mismanagement of internal feedback and funds, and we as a team feel the need to respond to that, as well as discuss how we plan to address the issues he raised going forward.
Who is Tusky?
Tusky is an Android client for accessing the decentralized social network Mastodon. The client is open source and developed on GitHub. We also have an OpenCollective for soliciting donations and a Matrix room where we do almost all project coordination.
The Tusky project’s contributors and user base have changed a lot in recent months. Many of the people using Mastodon today joined as part of the sudden "migration" away from Twitter, which began in earnest in October 2022; this led to a large influx of new users and contributors for Tusky. Prior to the migration, Tusky was almost entirely run by two people: Conny, who was the lead developer, and Maloki, who handled administrative, community, and organization work. As new people joined, we started distributing responsibilities and decision making across the team.
Our bi-monthly contributor meeting, held in the Matrix room, is the primary way we get project consensus, as it allows for all of our contributors across time zones to be present and have a say. We are currently working to further add structure to our governance, and will detail that further in this write up. You may view the signatory lines at the end for the contributors who could be reached in time and endorsed this document.
Admin Changes & Transitions
In June 2023, first Maloki, then Conny stepped down from the project. What we understood at the time was that until we adopted a formal governance structure, we would be running things by consensus of the Matrix contributor group. Conny's tasks, such as releases, were handed off to Nik; Maloki's tasks were split between Nik and Andi Mcc because they volunteered.
As we tried to adjust to running the project without Conny, Nik believed, as did several of us, that we needed more formal governance. A particular problem was that most accounts, the website, etc., were in Conny's name personally; with Conny out, we needed to transfer those to someone else - but to whom? The obvious answer was to either create or join a legal entity which would hold all the Tusky assets.
At our August 15, 2023 contributor meeting, which was the first held with neither Conny nor Maloki present, Nik placed adopting a formal governance entity that would hold the project assets on the agenda, in hopes to provide a greater structure for our internal decision making; after we discussed as a group, Nik was assigned the task of approaching Software Freedom Conservancy about making Tusky an SFC subproject. Around this same time, Nik was given member access to our OpenCollective account, with the intent of admin status being transitioned to him down the line.
In line with the responsibilities he'd been given, Nik began looking into how the OpenCollective funds had been historically used. In doing so, he saw that several payments had been made to a person we will refer to as Z, but Nik was unable to verify the work Z had done to justify the payments. Nik then brought his concerns to the contributor Matrix room, which was reasonable and appropriate.
Conflict with Nik Clayton
Nik would have expected to find documentation of the decision to hire Z, but in this case would not have been able to do so because the hiring predates our current project documentation process. When he was shown the documentation of what Z had done and why Z was paid for it, he was unable or unwilling to drop the matter. A protracted discussion ensued; some other project members initially agreed with Nik that an explanation was needed, but as the discussion carried on for a full week and increasingly devolved into an argument, even the project members who had initially shared Nik's concerns were asking him to moderate his tone and de-escalate the situation.
The argument was mainly between Nik and Maloki. Maloki feels that her heated tone contributed to the devolution of the conversation, but we as observers to the conversation feel that Maloki was generally only responding with the same harsh tone that she was being addressed in. Multiple contributors had asked Nik to slow down or temporarily stop because they had no capacity to respond, for valid health reasons including hospitalization, but were ignored. Nik insisted on his solution and that it be implemented immediately. The situation was fueled by a mismatch in expectations and communication styles; while Nik raised legitimate points, the communication of them became incredibly unhealthy and unproductive for everyone involved.
By the time the week came to a close, Maloki felt the conversation had spiraled out of her ability to de-escalate and had obtained the services of a third-party mediator to address Nik's concerns. Maloki did this in conversation with Mcc, who had mostly taken over her contributor-organization tasks.
Mcc was introduced to L.J., the mediator, on Sunday morning (August 27). Mcc and Maloki were going to introduce Nik and the other contributors to L.J. within 24 hours and let her propose a process for resolving the conflict, but did not get the chance; that afternoon Nik abruptly quit and, without consulting any other project member, decided to make his post containing a highly edited version of the project’s financials as to argue that Tusky was silencing and covering up questions of financial impropriety. That post can be viewed here.
We, the remaining Tusky contributors, have several issues with Nik's post. We disagree, based on the information that both we and Nik have been given, that the payments Nik objects to were inappropriate at the time. We do not consider the narrative in his blog, of either the payments to Z, nor the discussion once he learned of the payments were for, accurate. We also object to how he mischaracterizes the positions of Tusky as a project, and feel that he retroactively imposed future standards, which would apply should we move forward with the idea to incorporate the Tusky project, to past leadership’s decisions.
Payments which Nik has questioned
During the Matrix discussion described above, Nik objected to the payments made to Z. In his public blog post, he additionally questioned payments made to Maloki. We will address these separately.
Z was approached by Maloki in December 2022 to do work in two areas: our FAQs, and programming on some specific unresolved GitHub issues. Because Maloki and Conny were the sole admins at the time, Maloki decided to hire Z and received approval afterward from Conny via instant message. An onboarding meeting was held December 9th and documented in our project document store. Z was a learning coder, and Maloki saw this as an opportunity to train Z up to being a full project contributor. It was understood Z would require assistance in areas such as interacting with Git and submitting PRs; this assistance was initially provided by Conny. In addition, to enable Z to have time to work on the project, Maloki personally issued Z an advance on upcoming invoices in early January, which Maloki expensed to the project itemized in an invoice approved by OpenCollective staff.
Z worked on the assigned tasks over the next couple of months, and submitted three invoices between January 31st and February 28th, each clearly documenting the number of hours spent on each task, and each reduced by the arranged amount to pay back the advance. These itemized invoices were also approved by OpenCollective staff.
Some of Z’s work did not make it to publication. The work Z did on the FAQs was preempted by an unsolicited FAQ rewrite from a new contributor, which the project decided to use instead. On the code side, Z wrote code toward resolving three GitHub issues; one of these was completed to the point it could become a GitHub PR, and was eventually merged this month by Nik. Z was not able to receive the necessary help to merge their work because by that time it was late February and Conny and Maloki were both busy with the time-critical work of onboarding and delegating responsibilities to new contributors such as Nik, Mcc, and others. It is a failure of our project management that no one followed up on this until this month when Nik raised the issue, and with our new processes already in place, we will do better in the future; however, this is not a financial issue. Z was being paid hourly, not per completed task. It was appropriate to pay Z for this work because the work was actually performed. We, as a team, believe that if the hours were worked, they should be paid. We apologize to Z for putting them under a microscope here.
We also strongly disagree with Nik’s allegation of impropriety in our Project Manager, Maloki, being paid for her organization work, which included administrating the OpenCollective. Organizational work is real labor, and can reduce the workload of technical staff, who outnumber our administrative staff. Maloki’s finance management work as part of her project management duties did not mean there were no checks on her decisions; the admins had an agreement in place not to approve their own expenses, which has been enforced by technical measures since December 2022, when OpenCollective added an "Admins cannot approve their own expenses" checkbox to the backend, which was immediately enabled.
Payments to Maloki were based on what was budgeted and agreed upon by the team. The allegation of a conflict of interest insinuates that poor, non-tech workers (“so dependent on the project’s funds,” to quote Nik) are untrustworthy with money and should not be handling it, and Nik’s statement completely disregards the existing checks and controls in place to ensure that Maloki was not making arbitrary sole decisions at the expense of the project.
In the spirit of transparency, there is one further issue we need to address. While verifying the above details, we found an error in the difference between the size of Z's advance at the beginning of their work, and the amount they were told to pay back over their three invoices. The size of the discrepancy is $105 USD. Maloki has taken responsibility for this error; she herself was the one who found the error during our investigation, and has chosen to personally reimburse the project with a reduction on her final post-resignation paycheck.
Going forward, anyone being approached for paid work will experience a different process. With a larger team, we can use consensus on hiring decisions rather than leaving it up to an individual. We’ve also developed more thorough standards for onboarding in the months that followed, but they obviously could not be applied at the time as they hadn’t existed. Our first meeting as a team occurred on March 7, 2023, after Z had stopped doing paid work for the project and the admins had gotten new team members onboarded.
All payments made to contributors for their work have been in accordance with OpenCollective’s terms of service, which are viewable here.
What Does Tusky Use Donor Money For?
Currently money is not being dispersed from the OpenCollective account at all; our code contributors stopped putting in invoices in June, and were waiting to put in invoices for July and August until we could, as planned, transition from Maloki to a new invoice person or process. The intent was for that to be Nik in the short term and “the Tusky entity” in the slightly longer term. We are now talking to a couple candidates about taking over that role.
Most of our contributors are unpaid volunteers. However, we typically will pay any contributor who requests compensation for their time, and we actively solicit people outside the project when there is work which needs to be done but which no one is available to do. We currently have sufficient budget to add additional paid contributors and are interested in recruiting more, but as with paying our existing contributors, that is on hold until we have completed the first step of putting someone in the OpenCollective administrator position.
As a project, we are at a disadvantage in replying to Nik’s public claims. We as a group have frustrations with Nik which go above and beyond this episode, and would have preferred to have worked any frustrations out in private with Nik through a more conciliatory process, but he denied us that option.
We have been delayed in publicly responding to Nik’s claims because we have been working to reassign the many tasks he had taken on and making sure the project continues running smoothly, while also transitioning the responsibilities he had taken on from Maloki, when she announced she’d be stepping down for health reasons, to others on the team.
We are still, as we have been all year, working to introduce more rigorous governance of the project, and are researching what form that should eventually take. We still plan to contact Software Freedom Conservancy about potentially becoming the legal entity that “owns” the project. We are open to suggestions from our contributors, donors, and users about what governance structure would best serve the project, how to better get direct feedback from users, and how to onboard people from participating on GitHub to joining the contributors group on Matrix. These are issues we’ve all discussed in our meetings and are already exploring, and we welcome feedback.
From the start of this year, Nik had become our primary code contributor. Some of our users may have been working with Nik on issues. Without Nik contributing, our speed of development will slow somewhat, and some new features that were slated for version 24 may get deferred; we will of course understand if this results in donors rescinding their contributions.
In the meantime, we will continue doing what we’ve been doing: writing a Mastodon client, as a community. To us, project sustainability includes ensuring health and care for all members of the community. We are dedicated to making continuous and long-lasting changes to ensure a strong future for the project.
Andi Mcc: Joined April 2022.
- Contributor of patches like the image crop feature, and organizer of our bimonthly contributor meetings and project document repository.
- Project Maintainer 2017-2023.
David Edwards: Joined February 2023.
- Contributor of the trending tags graph.
Lakoja: Joined November 2022.
- Contributor of code, reviews, discussions.
Levi/Tak!: Joined 2019.
- Contributor: code, reviews, discussions.
L.J.: Joined August 2023.
- Consultant brought on to help with mediation and public statement.
Lola: Joined August 2023.
- New contributor added to handle administrative tasks of recently resigned staff.
- Project Manager 2018-2023.
Martin Marconcini: Joined November 2022.
- Contributor of minor UX fixes here and there, bug fixing, reviews, and participant in the contributor meetings.
- Hosting and F-Droid builds since 2017.
Tattooed Mummy: Joined early 2023.
- Contributor doing support and community management.
willow/charlag: Joined 2017
- Contributor for a very long time, code in the past and mostly non-code contributions more recently.
Note from Mcc: In his final post on his blog as of this moment, Nik seems to be implying he is considering forking Tusky or otherwise starting his own Mastodon client app. I think that is a great idea, and encourage him to do it. If Nik does so, I think it will quickly diverge from Tusky both technically and UI-wise; Nik has a very clear set of technical and UX ideas, some of which have now been implemented into Tusky, and some of which he has up until now been prevented from implementing by Tusky’s consensus process. If Nik’s app comes into being however I personally will be continuing to use, and contribute to, Tusky, as I value our community development process more than anything else. I wish that community process had been given the chance to resolve this conflict.