13 ms·
I gave commit rights to someone I didn't know
- Zekio 10y agoThis is awesome! seeing something stay alive live this and grow due to people liking it
- watson 10y agoThis concept awesome and already have a name. It's called Open Open Source: http://openopensource.org http://openopensource.org It's especially essential when managing a high volume of open source projects on GitHub.
- feross 10y agoYes! Rod Vagg (technical chair of Node.js) is one of the pioneers of this way of developing software. He was recently on the podcast "Request For Commits" discussing this very topic! Liberal Contribution and Governance Models https://changelog.com/rfc-7/ https://changelog.com/rfc-7/
- nailer 10y agoSame thing happened to me: I wrote the module that does Microsoft Office files in Python. At the time, the solutions for doing it in Python were 'talk to some Java library' or 'talk to some .net library'. I read the openxml spec and made something which did basic creation, extracting text, modifying docs. 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. https://python-docx.readthedocs.io/en/latest/ https://python-docx.readthedocs.io/en/latest/
- pix64 10y agoI seriously just used this a couple weeks ago. Was thinking about implementing some more features as I had to drop down to manually editing the XML.
- archimedespi 10y agoMad props to you for creating that and Scanny for taking over! It's helped me automate some really nasty boring stuff that had to be done in Word.
- raphman_ 10y ago> I don’t recall the author now, but the gist of the argument made was that we’re too protective of our code - if you give someone responsibility, show that you trust them, more often than not, your intuition about people abusing their freedom is way off. Maybe it was some of Pieter Hintjens writing and/or the C4 process: * https://rfc.zeromq.org/spec:42/C4/ https://rfc.zeromq.org/spec:42/C4/ * http://hintjens.com/blog:112 http://hintjens.com/blog:112 * http://hintjens.com/blog:106 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.
- tbirdz 10y agoHentjens' "Social Architecture" book goes into the same topic in more detail, and is freely available here: https://hintjens.gitbooks.io/social-architecture/content/ https://hintjens.gitbooks.io/social-architecture/content/
- goflyapig 10y agoI'd guess it was this: http://felixge.de/2013/03/11/the-pull-request-hack.html http://felixge.de/2013/03/11/the-pull-request-hack.html https://news.ycombinator.com/item?id=5357417 https://news.ycombinator.com/item?id=5357417
- patcon 10y agoWas going to suggest the same thing :) I haven't had the sort of success that the OP did, but that PR Hack post def inspired my way of operating! Yay Felix
- deleted 10y ago[deleted]
- adzicg 10y agoI did something similar with a project I lost interest in several years ago (https://github.com/dbfit/dbfit https://github.com/dbfit/dbfit - table-oriented database unit testing). Just gave over commit rights, and there's a whole bunch of people writing code for it and maintaining it now, still going strong. I occasionally look at the github repo, and always end up amazed how much it's moved on.
- zschallz 10y agoWe use DbFit every day at our shop. It's really changed how we work (as DB developers). Was funny that I thought of this project right after reading this article, and how I should probably try and contribute, then I see this in the comments. :) Thanks!
- adzicg 10y agonice :) I built DbFit at a time when I was getting a lot of work helping companies with a huge investment in oracle pl-sql, but my interests moved on, and for a while it just felt I was holding the project back. 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.
- grokys 10y agoYep, something similar happened to me - I released what is now https://github.com/punker76/gong-wpf-dragdrop https://github.com/punker76/gong-wpf-dragdrop on google code in 2009 (I think) then pretty much lost interest. Forward on a few years and @punker76 had uploaded it to github, and continued working on it. It was a strange feeling when I first became aware of the fork - like seeing an inanimate object come to life.
- jrochkind1 10y agosuch an awesome story!
- mjs7231 10y agoHa, Same thing happened to me with the SAME contributor!! Benjamin Bach is an awesome dude. He helped me maintain django-dbbackup for quite some time then we found a third contributor, Anthony Monthe, who is also very interested in the project and I would say owns it now. It's been maintained by those two for quite some time now. I wish there was a way for me to buy them both a bunch of rounds of beer. :D
- tylersmith 10y agoUse Bitcoin or Venmo. Sounds like they've been great stewards.
- mjs7231 10y agoI tried Google Wallet before, but it wouldn't let me send money out of the country or something like that.
- cloudjacker 10y agoBecause only drug dealers would want to do that You can do this with bitcoin, but only drug dealers use that Wait...
- feld 10y agoStop using Venmo http://gizmodo.com/stop-using-venmo-1759867212 http://gizmodo.com/stop-using-venmo-1759867212
- chris_wot 10y agoIf that guy was paid in liquor by everyone who benefited from his contributions, he'd develop cirrhosis.
- ashitlerferad 10y agoConvince both of them to join you at a Django conference.
- andersonmvd 10y ago
- Osmose 10y agoThe Jazzband is a Python-focused group based around similar ideas: People can transfer their projects to the group, and anyone in the group can commit stuff and make releases. https://jazzband.co/ https://jazzband.co/
- merlish 10y agoI did this for a (not very popular) Eclipse IDE autocomplete set for a certain Lua-based game engine. 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.
- donatj 10y agoI had submitted several PRs to a Zip streaming library. The author gave me direct commit access after this. I've helped maintain it ever since. I think it can really work out in some cases.
- ncouture 10y agoThank you for sharing this is awesome!
- barefootcoder 10y agoI shared mod privileges with somebody on reddit and my subreddit was closed for excessive spam within days -- I learned my lesson!
- mark_l_watson 10y agoGreat story. My similar experience was in the mid 1990s. I had written a tool call PicWeb Viewer that would recursively walk directories and subdirectories containing photos, create thumbnail images, and generate simple HTML to navigate everything. My code was so simple but worked fine. I released the source code and over the next few years several people contributed modifications that made my simple bit of code awesome.
- chris_wot 10y agoI have an EMF+ library I started the barebones of in LibreOffice. [1] 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=private/tbsdy/emf&id=832d43812459e6c5297c09811866b23212d23a09 https://cgit.freedesktop.org/libreoffice/core/commit/?h=priv... 2. https://people.freedesktop.org/~thorsten/talks/fosdem_2014_slideshow_news_final.pdf https://people.freedesktop.org/~thorsten/talks/fosdem_2014_s...
- chris_wot 10y agoOh, and to be honest it shouldn't be that hard to work on. 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/source/filter/wmf/wmf.cxx?h=private/tbsdy/emf&id=832d43812459e6c5297c09811866b23212d23a09 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/vcl/emfact.hxx?h=private/tbsdy/emf https://cgit.freedesktop.org/libreoffice/core/tree/include/v... The record commands are implemented here: https://cgit.freedesktop.org/libreoffice/core/tree/vcl/source/gdi/emfactions.cxx?h=private/tbsdy/emf 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...
- daurnimator 10y agoI did the same thing..... and then the contributor took contributions from others that added security holes, removed cross platform support, and had what I consider to be low code quality. I've now disowned that project. 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.
- ckdarby 10y agoWouldn't it have made sense to revert the first subpar commit, pulled aside the contributors and explained to them what is acceptable? Disowning the project seems like a lose/lose situation.
- daurnimator 10y agoIt was a project that I didn't give a lot of love, and hence just gave them commit rights. It was about a year later before I looked again, by which time they had done far too much work on top of their non-cross-platform bits for me to revert. I still didn't use the project myself; and didn't care enough to fix it, so I just removed myself.
- justinclift 10y agoYeah, that's one of the dangers. Did you start a conversation with them about it, or just move on silently? 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. ;)
- josephg 10y agoI'm not the parent, but I've been burned in the same way. In an ideal world, yes - that would be the right way to handle the situation. In a company you'd want to do that, and probably give the programmer a mentor who can do code reviews and whatnot. 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.
- AshFurrow 10y agoAmazing story! I maintain a network library on iOS where we have automated this process: a merged pull request earns the author an automatic invitation to join the project. The code is at https://github.com/Moya/Aeryn https://github.com/Moya/Aeryn if anyone is interested.
- justinclift 10y agoDB Browser for SQLite (previously known as SQLite Browser) has a similar history: http://sqlitebrowser.org http://sqlitebrowser.org 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).
- jlgaddis 10y agoI was introduced to open source software in 1996 and have been a huge advocate since. About five years ago, I decided to quit my job and, shortly thereafter, went out in search of a project I could contribute to in my spare time (which was now much more abundant). 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.
- sverige 10y agoWow, talk about some passive-aggressive behavior on the devs' part! I think there are hazards on projects where nothing seems to be happening, like you described, and others that are fairly active. At least with the active projects, you can usually get a feel for how you might be received by reading the mailing lists. I hope it didn't put you off looking for another project to help.
- KenCochrane 10y agoWhat a small world, I worked with Greg at CashStar where he started the fork of django-money. I still remember the conversation we had in a meeting if we should fork the project or push our PR upstream to fix the issues we found. I'm glad our upstream PR started a trend to keep the library going. This is why I like open source, when you no longer need something you can hand it off to someone else who can take over, and let the code live on.
- bbayles 10y agoI offered to take over a library that provides a Pythonic interface for Redis a little while ago. The original author accepted, and I've really enjoyed bringing the project back to life. 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.
- deleted 10y ago[deleted]
- gramakri 10y agoSimilar story - I wrote KDocker (https://git.girish.in/projects/kdocker https://git.girish.in/projects/kdocker). It was stuck to Qt3 and I had no motivation to move it to Qt4 since it was a lot of work. Out of blue, John comes along and does a full Qt4 port. I decided to take a chance and transferred ownership of the project to him. I trusted him only because he had already written a lot of code to improve the project. It turned out to be a great decision (or luck). I just checked how it's doing today and he is still keeping it alive after all these years! (https://github.com/user-none/KDocker https://github.com/user-none/KDocker). Thanks John!
- debt 10y agoit's crazy how many millions/billions of dollars free software has saved people.
- draugadrotten 10y agoeven crazier is how many millions of dollars people have made creating free software!
- judiso 10y agowhat's great in this story?
- tibu 10y agoI suppose the author shared his feelings about how overwhelming is to share code with others and work together in one group
- mark_l_watson 10y agoI was saying the original story was a great story, not my little anecdote.
- mbrock 10y agoI've been using the Ratpoison window manager for more than ten years now, and I love it a lot. 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.
- perlgeek 10y agoLet me tell you the story of how I got involved in the Perl 6 community. 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!
- eliaspro 10y agoSmall OpenSource world. 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.
- emmelaich 10y agoSame! I got a commit bit after a few minutes of chatting on #perl6 from Audrey. 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.
- cygx 10y ago
- pepijndevos 10y agoTo offer a different perspective: I did this with a library that's mostly used for short lived hacks, so while there are contributions from time to time, no one sticks with it for long enough to become a real maintainer. So I'm still the one pressing the merge button on new PRs. 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.
- raesene9 10y agoWhilst this is an interesting story and shows how open source software can work it leaves me wondering how large corp's handle their increasing use of open source software. 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....
- zobzu 10y agoThats not how it works though. It's just called luck. If 90 out of 100 people will do correct commits and not fuck things up in various ways (from inserting a backdoor to just breaking code), then you've 90% chance that 1 person you give commit access to will not do anything wrong. 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.
- x0x0 10y agoI like how clickbait is actually in the url. Epic. In case it changes, as of the time of the comment it was jakewins.com/p/clickbait
- MatthewWilkes 10y agoI've been involved in the Plone community for a number of years. All you need to do to get commit rights is to sign the copyright assignment and ask. We currently have 400 people with rights, I suspect we lost a few when we migrated from self-hosted SVN to GitHub. In over ten years of this policy, we've only had one committer act in bad faith.