피드 구독

The phrase "cookie licking" has become popular in recent years to define a pattern which can be problematic in communities. Its meaning comes from a story: Mom makes a plate of cookies, and sets them on the table for the family. After everyone has had their cookies, there is one left on the plate. The cheeky child of the family wants to have the last cookie later, but has no confidence it will still be there when she comes back, so she grabs the cookie, licks it, and puts it back on the plate, secure in the knowledge that no-one else will want to eat it.

Cookie-licking can take many forms in community projects. The most common symptom is what the Apache community calls "volunteeritis." An individual, with the best of intentions, offers to take on an important task. Being the kind of person who underestimates the effort involved, and overestimates the time they have available, however, they over-commit, and end up unable to complete the task in question. As time goes by, they feel increasingly guilty. The task is an important one, and they really feel like they are well placed to do it, but it is not getting done. After a while, they are in the unpleasant situation of needing to admit failure and renounce doing the task, or crunching it in, and potentially not doing as good a job, because they have insufficient time to do it justice.

There are other forms of cookie-licking, more insidious, and harder to identify and fix. There are a number of subtle signals that you can send out to signal ownership over things, and as a result dissuade others from doing anything which might be perceived as trespassing on someone else's territory. One of these is to include ownership information in source code. In "Producing Open Source Software," Karl Fogel describes why ownership signals can be damaging to a community in the long term:

"When people sense a "no trespassing" sign, they stay away. This results in reduced review in that area, and greater fragility, because the lone developer becomes a single point of failure. Worse, it fractures the cooperative, egalitarian spirit of the project. The theory should always be that any developer is welcome to help out on any task at any time."

Karl recommends a number of ways to avoid ownership tags in code, while maintaining a record of provenance. Another subtle signal to community members that they might be invading someone's turf is through assignment tags or other data in the project bug tracker. My colleagues Brian Proffitt and Rich Bowen both described the frustrations that part-time contributors can feel when working with full-time developers. Many of these frustrations come from a feeling that you are getting in the way. There is a busy team bustling around you, and you are getting in the way.

This does not come from bad intentions. If you are a member of a team of full-time software developers, and your team is collectively responsible for the majority of the work in a project, it can become easy to fall into a pattern of using the project bug-tracker to organize your team's work. After all, isn't working upstream best practice for open source projects?

Where this becomes problematic, however, is when you create a perception that the project bug tracker is serving your team's needs first, and the community second. There are any number of ways you can signal this--labeling issues as being in the responsibility of a team, scheduling them for a specific sprint or release, or even assigning issues to team members. None of these things prevent someone from working on an issue, but they do send a signal that it is someone else's job, and that if you start working on it, you may find someone else has finished before you are ready to submit your work.

Resolving this tension has more to do with process and communication than it does with tooling. Perhaps you should coordinate your team's work in a separate place than the project issue tracker. Perhaps you can open up release planning to give people outside your organization the opportunity to commit to tasks which your team might otherwise have done. Rather than labeling issues as the responsibility of a team, use a label for the component of the project affected. Perhaps as a team leader, you can discuss openly short-term commitments of your team members, or have them assign issues to themselves only when they begin working on the issue, rather than when they commit to doing it as part of a sprint.

None of these things will have a significant short-term effect, so it is tempting to consider that they do not accomplish anything, and that any such changes are superficial paper-pushing. Long term, you are sending a strong signal that while there is a team working on the project, you see contributors outside the company walls as important stakeholders and co-developers of the project. In conjunction with building great software that people want to use, this is a winning approach to growing a developer community over time.


저자 소개

Dave Neary is the Field Engagement lead for the Open Source Program Office at Red Hat, communicating the value of open source software development to Red Hat customers ad partners. He has been active in free and open source communities for more than 15 years as a consultant, community manager, trainer and developer. In that time, he has worked on advising companies in finance and telecommunications industry on effective adoption of, and participation in, open source projects.

Read full bio
UI_Icon-Red_Hat-Close-A-Black-RGB

채널별 검색

automation icon

오토메이션

기술, 팀, 인프라를 위한 IT 자동화 최신 동향

AI icon

인공지능

고객이 어디서나 AI 워크로드를 실행할 수 있도록 지원하는 플랫폼 업데이트

open hybrid cloud icon

오픈 하이브리드 클라우드

하이브리드 클라우드로 더욱 유연한 미래를 구축하는 방법을 알아보세요

security icon

보안

환경과 기술 전반에 걸쳐 리스크를 감소하는 방법에 대한 최신 정보

edge icon

엣지 컴퓨팅

엣지에서의 운영을 단순화하는 플랫폼 업데이트

Infrastructure icon

인프라

세계적으로 인정받은 기업용 Linux 플랫폼에 대한 최신 정보

application development icon

애플리케이션

복잡한 애플리케이션에 대한 솔루션 더 보기

Original series icon

오리지널 쇼

엔터프라이즈 기술 분야의 제작자와 리더가 전하는 흥미로운 스토리