Slides from Nicolas Garnier's talk at Pycon.it about doing open source as a company or startup, sharing what we learnt at Mailjet from open sourcing MJML.
Nicolas Garnier is the MJML Product Lead at Mailjet.
7. Why go open source?
● Give back to the community
○ Provide the same way you receive
● Improve your product
○ You’ll learn more from your community
● Bring your technical brand into the light
○ Show the industry what your company is
capable of
● Hire smart people
○ You can turn contributors’ hobby into a job
14. Collaborating… internally
Review with your company’s teams the different
aspects of the code release
● Legal: you shouldn’t be revealing any information that
should be kept secret
● Security: releasing code shouldn’t imply any risk of
harm to the company
● Executive: management should be aware and
understand that you are releasing code for free
15. Choosing a license
Discuss openly with your company’s
management and pick a license:
● MIT: the most open license of all
● BSD: ~MIT + a clause protecting the original owner
● Apache: more complex license imposing preservation
of original copyright notices of change
● GPL: code can be sold but no proprietary software
can be derived from it
What matters is the legal matter of the license you used,
and that the same is used on all software released
17. Open sourcing is a living
process
Releasing open source software should be a
commitment.
● Do the cleaning: bugs should be fixed and features
implemented, don’t let your project get dusty
● Dedicate some time: make sure that some developers
in your company will keep working on the project
● Mind the bus factor: will the project die if a member
gets hit by a bus?
18. Communicate with your
community
Your community needs to be aware of what is going on
with your project.
● Transparency in the code: your code should be
hosted in one single repository, the public one
● Transparency in the roadmap: don’t let your users in
the blind regarding what’s coming
● Discuss with your contributors: make it easy to get in
touch with you, and even better, use chat platforms
19. Make it easy to contribute
to your project
Make it easy for others to improve your project.
● Document: it should be easy for anyone to
understand how your code works
● Use standards: don’t reinvent the wheel! Standards
like are here for a reason (semantic versioning)
● Guide your users: tell what you need help on, how to
submit an ideal bug report or feature request, and give
feedback
20. Reward your users for the
time and effort they put in
Keep the giving back cycle going on.
● Acknowledge: show them you trust them and
appreciate their help
● Congratulate: get the community to know about them
and what they do for the project
● Spoil them: receiving some stickers or a t-shirt for
your effort is a great feeling (even more if in person!)
23. Deprecating the project
Be prepared for the natural evolution of software.
Explain the:
● Reasons: let your community know why the project is
being stopped
● Meaning: what does it mean for the project and its
existing bugs
● Opportunities: transferring ownership is always an
option