I gave commit rights to someone I didn't know
jakewins.com
jakewins.com
I was trying to find out how Perl 6 was progressing, and found a broken link on a related website (pugscode.org, now defunct). So I went into the #perl6 IRC channel to report it.
Within three minutes, Audrey Tang (to become minister without portfolio in Taiwan in October) had committed a fix, somehow found an email address of mine, and sent me a commit bit to the central SVN repo that contained the Pugs project (the Perl 6 implementation in Haskell she was working on), the source to various websites, the Perl 6 test suite, and a lot of other stuff around the ecosystem. Just because I reported a broken link.
It was the most inclusive community I've ever experienced.
They had written a custom web app to manage email-based invites to an SVN repo, where everybody with commit access could invite somebody else.
Today, we try to carry on her inclusiveness, and give just about everybody who wants write access to all repos of the perl6 organization on github. We have a github team with more than 220 members and about 40 repos, including the Perl 6 design documents, the official test suite, the perl6.org website and the official docs. I haven't heard of a single instance of vandalism or other misuse of the trust.
Want to contribute to Perl 6? Just tell me your github username!
I remember you suddenly starting huge PRs with massive improvements to the OTRS code base. Although I don't use and contribute to OTRS that much anymore due to the increasing "Open Core" business model around it, your contributions taught me a lot and significantly improved my Perl and OTRS experience.
I made some reasonable comments, was not obviously an idiot. I was very excited about Perl6 after going to a presentation from Audrey.
Sadly I have never exercised it as I moved from Perl to Python and other since then.
Perl6 may have ruled the world by now if it had gotten popular enough in the early 2000s. Too late now methinks.
Who knows. Remember, it took more than 10 years for Python to get popular...
[1] https://en.wikipedia.org/wiki/Audrey_Tang#Political_career
Congress is incompetent at everything. Its just that you only notice when they are talking about something you know about.
Congress is inevitably political, the problem is how to provide unbiased expert advice to it.
It almost sounds like perl6 is a publically writeable repo.
Sure, that's possible, but good contributors will vastly outnumber bad contributors, and such a person's commit access would be revoked instantly. There's still code review for everything, and such a change would not go unnoticed.
Just look at Wikipedia. That's the equivalent of a publically writeable repo and hasn't turned into a total shitshow as a result.
As the Perl 6 ecosystem demonstrates you get way more out of inclusiveness than being paranoid about some hypothetical bad actor getting access to your repo.
Then there is the problem of churn if the new committers get confident and rewrite minor things, which is quite taxing on the existing committers.
Wikipedia is a good example that a small number of people either have to guard their territory ferociously or else have everything rewritten.
Now, sometimes a rewrite is in order, but in general churn is a major time sink for longer term committers and in fact one of the reasons they ultimately leave.
No, that some sociopath gains access to the perl6 repo and introduces subtle, plausibly deniable backdoors.
I have looked at Wikipedia. I saw that obvious vandalism, like inserting "HAHA PENIS" in the middle of an article about — I don't know — US presidential candidates, is detected quickly; sometimes it is even caught by filters before it can be saved. Fabricating citations about a fictitious Bhutanese author[1] or Aboriginal deity[2], on the other hand, can go unnoticed for months. This is exacerbated by the fact that your typical "counter-vandalism patrol" usually looks only for the former; even though most hoaxes aren't even especially sophisticated and fall apart after 15 minutes of research. But who can blame those people? It's the easiest way to score virtue points.
I don't know why some people are so okay with the most popular reference work of today being developed by a process basically equivalent to Twitch Plays Pokémon. It doesn't even work for the latter... and yet here we are.
[1] http://wikipediocracy.com/2015/04/05/bhutanese-passport-what...
[2] https://en.wikipedia.org/wiki/Jar%27Edo_Wens_hoax (embrace the irony!)
Any book, any blog, anything could be wrong by accident or on purpose. Wikipedia is open enough we can investigate it and readily determine who the malicious or incorrect actors are. Which is far more than any book from antiquity, most blogs and even much professional journalism provides.
Should we trust wikipedia implicitly? Of course not.
Should we trust any single source simplicity? Of course not.
And openness in itself doesn't guarantee reliability anyway. OpenSSL being open-source didn't prevent Heartbleed from happening. The so-called "Linus's law" is often a mere vacuous truth; there's rarely enough eyeballs to make even the most obvious bugs shallow. And eyeballs themselves don't help if they keep looking in the wrong places.
The problem with Wikipedia isn't merely that it may be sometimes inaccurate. It is that its sources of inaccuracies are much more numerous, most rather predictable, and yet next to nothing is done to address that. A book written by a single author may also be inaccurate; but I'd be more inclined to believe a book written by someone 0) whose good reputation is at stake and who therefore has an disincentive to actively misinform (sometimes at least), and 1) who has an editor above them watching out for inconsistencies; rather than a bunch of pseudonyms and numbers that can immediately publish anything they think up with basically no oversight. Trustworthiness is a spectrum, and Wikipedia does significantly worse on it than many other sources. Review processes on Wikipedia are overworked and even those focus mostly on style rather than substance. There are some relatively sensible policies enacted, but they are quite vague (and therefore bendable to ever-changing whims of particular users) and selectively enforced. And don't get me started with the dispute resolution processes...
There is no systematic, consistently applied process to ensure Wikipedia's accuracy. It is addressed just like the gun problem is in the US; it proceeds from one outrageous incident to another[2], with everyone barely applying ad-hoc measures after the fact, while the people who do have the power to make a real difference are either in complete denial that this is a problem at all or are too attached to the idea that the foundational laws can never ever be wrong to actually enact meaningful reforms.
[1] https://en.wikipedia.org/wiki/Wikipedia:OUTING
[2] https://en.wikipedia.org/wiki/Wikipedia:List_of_Wikipedia_ho...
There are enforced rules about citing sources, the history of any page can be checked, there is discussion for just about any page, and more controls that don't exist on any book or news site. Errors are often fixed as soon as they are discovered, which is impossible for books and less common than it ought to be for web pages.
As for anonymity the author of most content may as well be anonymous. Other than the most famous authors or most learned readers the author of any given data is generally not of interest for practical use. For the domain expert this is of course not true, but the domain expert is generally publishing to a peer reviewed journal and reading from similar sources with an extreme eye on things like bias and sample size.
Since we are using wikipedia as a source, for maximum irony here is the page on wikipedia about the reliability of wikipedia:https://en.wikipedia.org/wiki/Reliability_of_Wikipedia
It cites 240 sources, including peer reviewed journal Nature and panel discussions of specific domain experts.
There are articles with no citations that have been lying there and accumulating dust for almost ten years.[0] I wouldn't call that "enforced". And when you bring the verifiability policy at deletion debates, sooner or later someone will inevitably say "the policy says the article has to be verifiABLE, not verifiED" or other such nonsense. Bring in enough users like that and the only sort-of-working cleanup process on Wikipedia grinds to a halt.
And let's forget that while verifiability policies require sources to be "reliable", this word isn't defined anywhere. Which makes the definition bendable to the whims of users at hand, as long as nobody else notices. The result is predictable.[1]
> the history of any page can be checked
Giving very little useful information, as I wrote before. And what does it matter if it can be checked? Who actually does it?
> there is discussion for just about any page
Oh yeah. Like the over 40 thousand words written over whether to capitalise a preposition, which only stopped after Randall Munroe drew a comic which called it out as an embarrassment to the project.[2] (And I don't even like the guy.) And no, it's not just a singular example. Disputes like this arise all of the time; Wikipedians have dutifully collected them into a list[3], from which of course they refuse to draw any conclusions.
The discussion pages are often a liability rather than an advantage. It's easy to understand why those prolonged discussions happen: one, because they tend to concentrate on colour-of-the-bike-shed issues like this, and two, because nobody has a final say on any issue. You win discussions on Wikipedia usually 0) by inviting your friends to support you, 1) by making passive-aggressive remarks just stingy enough to annoy your opponents, but not enough to constitute overt, actionable personal attacks, and 2) by playing silly word-games with policies to twist them to your will. (Of course, there rules do exist against all three, but see point 2.) This shall render your opponents outnumbered and/or too tired to argue any further, at which point you just wait for an administrator to declare consensus in your favour. Of course, it is easy to imagine what kind of people can afford to employ these tactics effectively: PR agencies and OCD sufferers with lots of free time.
> Errors are often fixed as soon as they are discovered
Which can be as late as 10 years after being introduced, and after careless writers have incorporated those errors into their own work, as happened with Jar'Edo Wens. Counter-vandalism patrol only looks for overt hooligans, not fraudsters. While traditional publishing makes errors harder to introduce in the first place.
> As for anonymity the author of most content may as well be anonymous. Other than the most famous authors or most learned readers the author of any given data is generally not of interest for practical use.
So page histories are useless after all? Is it not true that "we can investigate it and readily determine who the malicious or incorrect actors are"?
> Since we are using wikipedia as a source, for maximum irony here is the page on wikipedia about the reliability of wikipedia:https://en.wikipedia.org/wiki/Reliability_of_Wikipedia
> It cites 240 sources, including peer reviewed journal Nature and panel discussions of specific domain experts.
I think you've mentioned sample sizes somewhere in your comment... didn't you? What does one article being ostensibly well-referenced prove? Can you trust the article to be actually supported by those sources? Never mind that single Nature study, which you're no doubt referring to, used rather questionable methodology and is seriously outdated at this point.
[0] https://en.wikipedia.org/wiki/Category:Articles_lacking_sour...
[1] https://en.wikipedia.org/wiki/Category:All_articles_lacking_...
Also, if you don't want to sound too negative, maybe just leave out "from lack of commitment from the real core team". Your question makes sense without it, and that's what comprises much of the negativity in your comment.
Granted, there were few occurences of accidental pushes to master here and there. But that’s where git itself helps and also the recent addition of protected branches on Github is very useful. :)
If the community is open and these artificial barriers to entry are removed, then people are way more likely to get involved.
You can do this with bitcoin, but only drug dealers use that
Wait...
Therefore, I'm extremely hesitant to hand out "commit bit"s again. To make up for it I try and review PRs the day of submission; even then I don't get a lot of contributions.
There seems to be a inherent trade off between security+quality and how welcoming you are to new contributors.
On the other hand, I have taken over maintainership for some projects; but it was after months of steady contributions.
Disowning the project seems like a lose/lose situation.
I still didn't use the project myself; and didn't care enough to fix it, so I just removed myself.
I'm trying to think of a good way to start such a conversation... but it sounds tricky. Probably would depend on the personality of the person. ;)
Unfortunately thats:
- Thats a complicated conversation to have at the best of times. With volunteers over the internet its much harder to organise 1-on-1s.
- A huge time sink. Usually I could make the changes themselves in less time than it would take me to explain the changes to a junior developer. Its especially hard to justify for projects I have in maintenance mode, where I don't want to spend time working on project features at all. Long term hopefully the time investment will pay off, but they'll probably disappear long before then.
- Honestly, its also not that much fun. I contribute to opensource projects because I like making things. Managing people doesn't rub that itch.
I'm not saying I have a better solution. But faced with a stream of mediocre PRs from an enthusiastic new contributor that you don't have time to review, what do you do? Abandoning the project to the new contributor sounds pretty reasonable to me.
There are ways to deal with that, e.g. force small patches that solve well-identified problems; use CI to test; involve projects' users in testing; and above all, to have other maintainers in the project who can catch such behavior and help you fix it. By yourself, you're rather vulnerable.
Ideally you have a core of 2-4 people you trust from previous projects, and then you can bring unknown people in little by little.
There is no tradeoff as such, but you do need to be more sophisticated than "here are full commit rights."
I totally didn't have time to maintain it, then Scanny took over. It's now hugely popular, the code handles non-Word OpenXML docs, and most of the code has been added or refactored under Scanny.
Maybe it was some of Pieter Hintjens writing and/or the C4 process:
* https://rfc.zeromq.org/spec:42/C4/
* http://hintjens.com/blog:112
* http://hintjens.com/blog:106
Edit: oh, as the author mentions a blog post from 2012, it probably isn't any of the above posts (which are newer) but maybe something related to C4.
Thanks!
People wanted to implement new things, support new databases, I felt overprotective of the design, but didn't have enough time to bring new contributors onboard. So I just kind of gave up, and that allowed me to think about it from a completely different perspective. If I just deleted it, then I wouldn't care too much about it any more. Giving away the keys was kind of the same, but without preventing others from contributing. And it worked out great.
I quickly discovered that a particular piece of software I used daily wasn't really being maintained all that well, despite the fact that there were several contributors listed on its home page. A few dozen bugs reports (some even including patches!) had come in, yet only a few had even been acknowledged.
This seemed like exactly the type of project I was looking for -- something that I used every day and could help improve. I sent an e-mail to the developers stating that I was going to be devoting some time to the project, sending patches in for the bugs, etc., and asking if there was "anything I should know" before jumping in. I spent a lot of time reviewing the previous discussions on the mailing lists, examining their previous commits to see how they did things, and so on.
One of the developers finally replied -- about a week later -- and asked for my SSH key. I sent it to him and he quickly gave me commit access, thanked me for the assistance, yadda yadda.
I closed out umpteen bugs, responded to previously unanswered messages on the mailing lists, and sent patches to the developers list asking for feedback before I committed anything. Having received no responses, eventually I committed all the changes and pushed them into the master branch. Questions that I had to the other developers went unanswered, just like all the previous bug reports and user-submitted patches had.
After a while, I just quit spending any time on it. Perhaps a month after my latest fix, I look at my e-mail one day to see a flood of notification e-mails about commits. The lead developer had reverted every single commit I had made. I was looking for -- expecting -- some explanation but never received one, even after I finally directly asked, "WTF did I do wrong!?".
Nothing. No response, to this day. I eventually said "fuck it", deleted my private key, unsubscribed from the lists, and moved on. I just looked and there are still bugs open today that were open back then.
The sad part is that this piece of software is fairly widespread and a part of all of the major Linux distributions, installed by default on many of them. I think there's been one, maybe two, "releases" in the last five years.
Worked well for a number of projects where developers are jerks and don't allow other talented and dedicated contributors to participate.
As far as I can see:
- 6a4bf69 has not been reverted
- d4a97c5 has been reverted in 8050b2d
- 5f7da05 has been reverted in ccc183d (webmin)
- cf5e9d3 has been reverted in 792a996 (webmin)
- c6634da has not been reverted, he is still listed in debian/copyright.
- 82f8600 has not been reverted (was extended in f24650f)
- 7f8efa8 has not been reverted
- e4f4889 has not been reverted
So, out of 8 commits, 3 have been reverted. The 2 webmin reverts were followed by deletion of the whole webmin file the same day (5785901).
I don't see how three reverts are "a flood of notification e-mails" or that "The lead developer had reverted every single commit I had made."
But I agree that the commit messages of those reverts should have contained a reason.
Obviously something went wrong. But I don't have enough information to call it a dick move.
Hopefully you've found places/projects more receptive to your time/effort since then. :)
It's especially essential when managing a high volume of open source projects on GitHub.
Liberal Contribution and Governance Models https://changelog.com/rfc-7/
It was unmaintained on SourceForge for years. Some guys put the code on GitHub and started fixing its problems. I became involved after them (to help on the OSX side initially), then contacted the original author. He was happy to see some people continuing it's development, so he gave us admin on the SourceForge project. That let us cleanly redirect people to the new GitHub project, and it's been growing decently from there (~4,600 stars on GitHub, 3.5Mill+ downloads, etc).
I updated to 0.9.2d and forgot about it (stopped using the engine), and someone came in with a PR for 0.10.0. I made a couple of notes on the PR, and gave the guy commit access.
He cleaned it up, and has been rebuilding occasionally when new minor versions of the API definitions come in.
The vast majority of people are pretty nice. They aren't assholes. They're just people who have the same issues you had to build the project in the first place, and want to help.
Back in like 2003, I wanted to check out the CVS repository, probably because of some new feature, but the read-only CVS server at Savannah or whatever was down... so I asked in #ratpoison if someone could send me a tarball.
Instead, one of the authors and maintainers just gave me an account on the commit server, mostly out of laziness I think.
But it felt nice to be trusted. Loyal user ever since.
I'll probably do something like that again - it would be great if there were a good list of projects that are looking for maintainers.
seeing something stay alive live this and grow due to people liking it
Largely due to my depression and desperate need to get a job, I never got much past an initial read of the EMF+ files, but I'd love to see someone take my branch on git, split it into its own library and then work with someone to integrate it into the Drawing Layer. [2]
1. https://cgit.freedesktop.org/libreoffice/core/commit/?h=priv...
2. https://people.freedesktop.org/~thorsten/talks/fosdem_2014_s...
It basically works via a Command pattern. That's because an EMF is a binary file that consists of a bunch of sequential records. The way it works is that you get an EMF+ file, and you read it from start to finish. Each record you read has a consistent header, and each different type of record does something - or stores an object (such as a pen or font).
My big idea is to use a base EmfAction class that has a function Read() that you use to read each type of record. You use EmfAction::ReadEmfAction() to read the next record from an ifstream, and it moves the file pointer to the start of the next record, and you just loop through the file like this:
https://cgit.freedesktop.org/libreoffice/core/diff/vcl/sourc...
The only snag was how to set state on the DeviceContext - I want the commands to read and store the state, and the DeviceContext should be passed into the command object and be manipulated by it via an Execute(DeviceContext&). But at the time I concentrated on how to read the objects.
Of course, EMF+ has a way of saving a DC's state, allows the DC be modified by subsequent records, and then the DC can be restored, so a stack of DCs needs to be established, but how to do this I'm not rightly sure yet.
I'm pretty certain though that I'm going to need to change the EmfRecord derived command records to start using a constructor where the DeviceContext object is passed in as a pointer.
The header file can be found here:
https://cgit.freedesktop.org/libreoffice/core/tree/include/v...
The record commands are implemented here:
https://cgit.freedesktop.org/libreoffice/core/tree/vcl/sourc...
As it is an initial implementation. The Read() calls are defined in the class declaration. Obviously that will need to be corrected.
The code also probably needs to be rebased, but in all honestly it is such a small change I don't think it would be too hard...
A long time ago I wrote PyMouse, which someone added keyboard support to, which became PyUserInput. But then I ended up being the maintainer of the new combined project. So lately I've just been giving contributors commit access. So far the results are OK, but it's not like anyone took over the maintenance.
Are you willing to bet your 10% bad luck on this though? What if its not 10%? How much chance, when 1 become 1 000?
Now that is more like it.
Traditional corporate development is very controlled with everyone getting background checks on hiring and code reviews and change control and a load of other stuff around managing what software runs their business.
Into that mix corps are adding loads of software that's developed by people who they have no control over and no knowledge of their motivations, affiliations or skill level. Even if they did a one-time check of all the developers who had contributed to libriaries they use (which would be a huge task) there's nothing to stop any of the maintainers from handing over to someone else the next day.
It's even a change from using things like RHEL where there's at least a contract with another company that you could point at if things go wrong...
It seems a very odd match up....
In over ten years of this policy, we've only had one committer act in bad faith.
jakewins.com/p/clickbait