Open Source Fan Service*
What can you do when someone submits a bad patch to your project? To begin, we have to understand why people hunger to contribute code: they're fans. You hurt fans' feelings when you reject their patches, but you hurt your project if you accept them. You can get out of this bind! Give your fans other ways to be recognized. Showcase their plugins in your project’s wiki, or rewrite their patches while giving them credit, or feature their related projects on your site.
When you receive a good patch, you merge it. But you’re in a bind when you get a bad patch: you have a responsibility to your users to reject the patch, but you must treat the submitter kindly. The submitter admires you and your project, worked hard on the patch, and was looking forward to the satisfaction of contributing. What do you do?
I learned a lesson about generosity from a Zen Buddhist, a guy named Hamzah who used to be homeless. He told me, the next time someone offers something, refuse it. Watch the giver’s face fall—they were looking forward to the satisfaction of giving, and you took that away. Once you learn that, you’ll never refuse a gift again.
But you can’t accept every patch your project’s fans submit! Give them other ways to be recognized.
- Make it easy for fans to write plugins. Link their plugins from your project’s wiki. (I learned this watching Armin Ronacher launch his “Lektor” static site generator.)
- Showcase your fans’ related projects on your project’s site. (Also from Lektor.)
- If a bad patch contains a good idea, rewrite it and give credit. (CPython core devs do this.)
- Encourage fans to blog about your project, and promote their articles. (This works for my project “Motor”.)
- Recognize beta-testers, bug reporters, and people who are helpful on your mailing list. (MongoDB does this for its database project.)
When you see your submitters as fans, you understand their motivations and find kinder ways to handle them. You can recognize their contributions without hurting your project’s code quality. Come up with creative solutions! You’ll create a warm and welcoming community around your project.
I have not given this talk before, I'd be excited to debut it at OSB! Here are some videos of past talks:
* MongoDB World 2015: https://www.mongodb.com/presentations/mongodb-drivers-and-high-availability-deep-dive
* Open Source Bridge 2015: https://www.youtube.com/watch?v=GSk0tIjDT10
* PyCon 2015: http://emptysqua.re/blog/pycon-video-eventually-correct-async-testing/
* MongoDB World 2014: http://www.mongodb.com/presentations/weather-century-part-3-visualization
* PyCon Montreal 2014: http://emptysqua.re/blog/pycon-2014-video-what-is-async/
* PyCon APAC 2014: https://www.youtube.com/watch?v=BOKcZjI5zME
Staff Engineer at MongoDB in New York City specializing in C, Python, and async. Lead developer of the MongoDB C Driver libraries libbson and libmongoc. Author of Motor, an async MongoDB driver for Tornado and asyncio. Contributor to Python, PyMongo, MongoDB, Tornado, and asyncio. Co-author with Guido van Rossum of “A Web Crawler With asyncio Coroutines”, a chapter in the Architecture of Open Source Applications series.
- Title: Black Pipe Testing, or "@#$! Up Your App by Impersonating a Database"
- Track: Practice
- Room: B302/303
- Time: 4:45 – 5:30pm
A “black box” test sends input to your program and tests the output. But a networked application has I/O at two ends: the API and the network. A black box test can’t validate it, especially its error-handling. But a “black pipe” test can! Such a test talks to your code over the network at the same time as it tests the API. I’ll present a handy library for Black Pipe tests of MongoDB apps and advise you when to use it. I want you to write a library like it for your favorite DB, so we can all test our programs better!
- Speakers: A. Jesse Jiryu Davis
- Title: Dodge Disasters and March to Triumph as a Mentor
- Track: Culture
- Room: B202/203
- Time: 3:45 – 4:30pm
Good engineers write good code, but the best engineers raise the skills of their junior colleagues, too. If you’re a senior engineer, you must learn to mentor new hires. Besides, great mentors are critical to the careers of women and minorities in tech. I have failed at mentoring, then succeeded. Learn from me and march to mentorship triumph.
- Speakers: A. Jesse Jiryu Davis