Treat the project’s name with respect, and follow the project’s trademark and branding policy.
Don’t use the project’s name for things which are not related to nor supported by the project. In general, don’t introduce confusion about what the project’s name means and refers to. Also, don’t seize the project’s name in other public namespaces, e.g., in domain names, Twitter, GitHub, Slack, etc. (It is fine, however, to register the project’s name in a new namespace and then immediately donate control of that account to the project — that’s simply helping the project maintain its identity.)
TBD: [Your Project Here] needs a trademark policy, for this item to be effective. See the item Have and enforce a formal trademark and branding policy in the section Guidelines for the Open Source Project for more about this.
Don’t replace community infrastructure; instead, improve it.
For example, use the project’s discussion forums as specified in their charters, instead of setting up duplicate forums in a privately-controlled space that could potentially siphon off people from the project’s existing forums. I.e., don’t set up “walled gardens” that detract from public spaces. The same principle applies to other kinds of community infrastructure too, e.g. wikis, but we’ll use discussion forums as an example here.
It is fine to set up private forums that are specific to commercial offerings, especially where those offerings differ from what is available in the open source project (though see below about avoiding the “enterprise edition” trap). Discussion that is specific to a company’s commercial offering is only useful to that company’s customers. But do not try to discourage customers from making use of the project’s public forums when doing so would serve their needs.
A good way for a company to ensure compliance with this guideline is to link to the relevant project forums from the same places — and in comparable ways — that the company links to its product-specific forums. That way customers will be aware of all the options available to them and can choose the appropriate forum for their needs. It also means that customers’ questions, and the company’s or others’ responses to them, can contribute to the public store of knowledge about the project, which is an important way that commercial activity can support the long-term health of the project. Company representatives should include their affiliation in the support responses they make to customers or to anyone else; work the company performs publicly is still work that it did, and the company should get credit for its contributions.
Label the company’s offerings in a way that makes their provenance clear, and that does not denigrate or diminish the open source project.
Specifically, do not label a proprietary offering as the “Commercial Edition” or “Enterprise Edition” of the project, especially not in contrast to a so-called “Community Edition” as a euphemism for the project’s open source code. That kind of marketing implies that the open source edition is somehow not commercial (which would be untrue, as the open source license explicitly allows commercial activity by anyone) or not enterprise-ready (unlikely to be true, but in any case ill-defined).
Instead, give the company’s offerings their own distinctive names. If those names incorporate the name of the project in some way, that may be fine so long as it complies with the project’s trademark guidelines. It is also fine to offer fact-based comparisons between the company’s proprietary offering and the stock open source version, or between this company’s offering and others’ proprietary offerings. Or if the offering is also open source software, but differs from the project’s offering in some significant way, explain that, and again make sure the company’s offering has a name that clearly distinguishes it from the code released by the project.
The purpose of this guideline is to help the company communicate clearly about what it offers, and to help potential customers understand what differentiates this company’s offerings from what is available elsewhere. There is nothing wrong with offering features not present in the project’s open source releases, or with making different configuration choices from the project’s defaults. Just describe the differences accurately and objectively. Mislabeling, whether accidental or deliberate, causes confusion and is bad for the project’s health.
Do not attempt to convert unofficial influence into claims of official control.
Even if the company is a major contributor to the open source project, do not conflate the project’s identity with the company’s. If a company with a well-established position in the project casts too large a shadow, that may discourage involvement from others.
For example, the company might have a number of employees as core committers in the project, and thus exercise a significant de facto influence over the project roadmap, simply by doing a lot of the work and participating actively in project development discussions. This is generally not a problem, as long as the company does not claim some official preferential position in project governance that it does not in fact hold.
In public forums, the company’s employees should behave like any other project participants.
While management hierarchy may be important internally to the company, it is irrelevant to the public open source project. For example, if the company assigns an employee specifically to work on the project, expect that employee’s contributions to still go through the usual review procedures, and expect that employee to gain commit access by the same route as anyone else would. Similarly, it is good practice for the company’s employees to hold design discussions or other technical discussions in the project’s public development forums, even if the employees normally sit in the same room and could discuss those things in person. The more they participate visibly in the project, the stronger the ties between the company and the project will be.
Contribute to public activity, and avoid converting public conversations to private ones.
When commercial representatives are active in an open source project’s public forums, there will be many opportunities to turn public conversations into sales opportunities. This can be a good thing — often a potential customer will benefit from being contacted about a commercial offering, and commercial entities should feel free to establish such contact so long as they avoid harassing or spamming people. In general, if some user indicates needs that would be met by the company’s product, it is reasonable to contact them about that directly, as long as the company is respectful of the charter of the forum in which it encountered the user and of any preferences they give about unsolicited commercial communications.
However, it is important to avoid shunting conversations out of public forums, where inquiries and responses will remain visible to others, and into private forums, where the initiator would be isolated from other sources of information. The best way to avoid this anti-pattern is to distinguish carefully between answering questions and offering commercial services. The former should always be done via a public followup in the original forum where the question was asked, while the latter should happen via a separate private communication. A topic that started in public should remain public, and should not be interfered with or subsumed by private conversations.
Improve project documentation, don’t fork it.
Help make the project’s public documentation better, rather than duplicating and extending that documentation elsewhere. Even if the duplicate documentation is publicly accessible even to non-customers, it will still detract by its mere existence from the project’s own documentation, among other things by causing confusion in Internet search engine results.
It is fine for the company to maintain separate documentation for functionality that is specific to its product or service. But as much as possible, avoid duplicating material already present in the project’s documentation. Instead, refer to the project’s documentation, and, as much as necessary, participate in improving it and making it easier to refer to, so that the maintenance burden is reduced for the company and everyone else.
Any restrictions in non-compete agreements should only affect business activity, not project activity.
If the company requires employees or contractors to sign non-compete agreements, those agreements must not prevent the individual in question from participating in the open source project in any way, whether during or after the term of their employment.
This does not mean that all non-compete agreements are incompatible with this code of conduct. A company may restrict an employee’s ability to solicit the company’s customers, for example. The key is that any restrictions should be about things other than project participation itself. An individual should not be blocked from any form of technical or social participation in the project, including the implementation of particular features.
The accumulation of experience and expertise in individual persons, who are ultimately free to direct their energy and attention as they decide, is one of the most important drivers of progress in open source projects. A company that limits this freedom can damage the open source project very seriously.
Security vulnerability information should always be promptly disclosed to the project.
If a commercial entity learns about a security vulnerability in the open source code, it should always promptly disclose that information to the project using the project’s designated channel for reporting such vulnerabilities. (Of course it is acceptable to pre-patch the company’s own offerings, as long as that patching does not significantly delay the reporting of the vulnerability.)
Vulnerability information should never be used for unilateral commercial advantage. Vendors may legitimately compete on the speed and reliability with which they deploy security fixes, but withholding vulnerability information damages everyone in the long run by risking harm to the project’s reputation and the security of all users.
Company staff should be forthright about the company’s commercial interests.
There is no need to hide motivations in an open source project. It is very normal for developers to propose that a certain capability be added to the code and justify the proposal on the grounds that it would help their employer’s commercial interests. The best situation for the project is one in which developers communicate their priorities clearly and straightforwardly. As long as the proposed change goes through the project’s usual decision-making procedures, the fact that it would serve specific commercial interests is not only not bad for the project, it may often be good: after all, continued commercial interest in the code is usually a good thing.
Of course, it would be odd to make a technical proposal that is wildly divergent from the project’s current roadmap and from the interests of all other parties participating in the project, but in that case the proposal is likely to be rejected anyway. In general, there is no need to pretend to purity of motivations. Finding sustainable resolutions to the tensions between various parties’ needs is a long and well-established tradition in open source projects; as long as the company participates in those discussions in good faith, and compromises where appropriate, the influence of the company’s commercial motivations is likely to be an overall benefit to the project.
Consider having a designated contact person or ombud, to represent community concerns internally.
Depending on the size of the company and the degree of its involvement in the open source project, it may wish to officialize a role for representing community concerns internally. In practice, this role is often assumed informally anyway, usually by an engineer or community manager who works for the company but who is active in and invested in the project. What the company can do is make sure this person feels comfortable raising project concerns internally.
Establishing that level of comfort is a matter of company culture, and obviously these guidelines cannot require nor enforce a particular corporate culture. All they can do is point out that the best way for executives to make informed decisions is by giving those closest to the project a chance to represent the project’s interests honestly and accurately.
When this role is formalized, it is sometimes known as “Community Representative” or “Ombud” (or “Ombudsperson”, “Ombudsman”, etc). Whether this person’s identity is known publicly or not, they should be reachable via a public contact address, with a prior commitment of confidentiality, so that others in the project have a way to raise concerns privately with the company when they wish to do so.