在工作中,我们聘请了开源维护者来增强我们使用的库,取得了不错的效果。
以下是我们过去完成的一些项目:
- We needed to integrate Quake 2 with wxWidgets. We hired Vadim Zeitlin, a major contributor to wxWidgets. In less than 4 days, he built a wxQuake2 widget by adapting the Windows version of Quake 2.
- Later on, we needed portable access to raw bitmaps. So we hired Vadim again, and worked with him to produce a new raw bitmap API. This involved a substantial bit of design work, but we really liked the resulting API, and we use it to this day.
- At a later date, we hired another one of the core contributors to improve wxWidgets accessibility support. As it turned out, we ended up not using this code right away, for various technical reasons. But other people have been enhancing this code since then, and we hope to use it some day.
换句话说,雇用开源维护者很像雇用任何其他类型的承包商。但也有一些不同的事情。以下是一些基于我们的经验提出的建议:
- You ll have the most luck if you want to enhance an existing project and release the changes as open source.
- In general, you want to hire members of the core team. They have the best track records, they re the most productive, and they have the best chance of getting your changes merged upstream.
- You want to get your changes merged upstream. If you don t, you ll be maintaining a local fork, which is a headache.
- Before hiring, do some research. Who works on the features you care about? Are they somebody you d enjoy working with? Read the mailing lists and glance at the version control history, and pick out a few people to approach.
- During the design phase, there may be a bit of give-and-take. The developers are looking at the larger health of the project, and you re looking at the needs of a specific business. This has occasionally made negotiations a bit more complicated for us, but the final result has typically been a better design than we would have chosen on our own.
最重要的是,不要害羞。在任何足够大的开源项目中,核心团队的几位成员已经在经营咨询业务。在较小的开源项目中,通常会找到一些贡献者希望经营咨询业务。
如果你仍然犹豫不决地接近某个人,你可以随时问:“你认识有谁有兴趣为$FEATURE工作获得报酬吗?”如果他们不感兴趣,你没有让他们难堪,他们可能会告诉你该问谁。
总的来说,我们对开源维护者的专业精神和高效能力印象深刻,我会向其他人推荐这条路线。