How to Create/Improve OSS Product and Its Community
(Revised with Beer 🍻)java-ja.OSS (2015/10/05)
Satoshi Tagomori (@tagomoris)
Satoshi "Moris" Tagomori (@tagomoris)
Fluentd, Norikra, MessagePack-Ruby, Woothee, ... Docker logging driver for Fluentd (docker v1.8)
Treasure Data, Inc.
–tagomoris 🍻
“I never got mails from Tony Morris.” “Didn't you work about OSS?”
We are hiring!
DataWe
We are hiring!
Skillful Java programmers (+ Ruby!)
& Distributed system engineers
http://yapcasia.org/2015/talk/show/5f5cad74-004a-11e5-acf4-89c77d574c3a
http://t-wada.hatenablog.jp/entry/active-oss-development-vs-simplicity
http://tagomoris.hatenablog.com/entry/2015/08/31/101025
How to create/improve OSS product and its community
• What the OSS product is for? • What programming language the product is written in? • How do we versioning about the product? • What (natural) language we use around the product? • How can we create the community around the product? • Famous developer people problem • The way to live as a OSS developer
Discussions about OSS development and maintenance
• Clean code vs dirty contributions • Software getting fatty vs small/beautiful new product • All-in-one vs plugin chaos • Japanese for closed/fast vs English for openness
• Which way we should choose?
All OSS products needs: More users
More use-cases More contributions
🍻 Except for exceptions :P
ex: PoC, Just for Fun, ...
What's the OSS Product For?
• OSS version of internal product?
• OSS native?
• Internal use + alpha?
• Internal use primary, Global use secondary?
• Global use primary, Internal use secondary?
• Global use primary (and nothing else)?
What's the OSS Product For? (2)
• What depends on "What the OSS Product Is For?"
• Core developer selection
• How to accept contribution
• How to maintain that software
What's the OSS Product For? (3)
• Things nice to have to create/improve community
• Open developer team
• Open steps for contribution
• Support from a company
What (Natural) Language We Use Around the Product?
• English! English! English!
• Almost all things around the product should be done in English:
• Code/Commit comments
• Issues, Pull-requests, Mailing lists
• Software design sheets / its drafts
What (Natural) Language We Use Around the Product?
• What important is to express: "We DON'T exclude you."by using English
How does spoil using English our skill?
🍻 It can't be measured
if we use only Enligh :P
How Can We Create the Community around the Product?
• Create/Maintain good software
• Be open for contribution
• Show it's stable and still under maintenance
• Communicate with people all over the world in English
How Can We Create the Community around the Product?
(2)
• One more thing: Pluggable/module architecture
• Apache httpd, Nginx, Linux kernel, ...
• Emacs, Vim, Eclipse, IntelliJ IDEA (and many IDEs), ...
• Plagger, Fluentd, ...
• Pluggable architecture makes user community to be developer community!
The Way to Live as an OSS developer
• We can't create a super product at first
• Nobody can create a super product without continuous improvement
The Way to Live as an OSS developer
Do it, and keep doing it.
pictures of beers or something else
break...
Discussions about OSS development and maintenance• Clean code vs dirty contributions • Software getting fatty vs small/beautiful new product • All-in-one vs plugin chaos • Japanese for closed/fast development vs English for openness
• What should we do?
🍻 Clean code vs dirty contribution
• Bad feature: Say "NO!"
• Good feature:
• Someone said: "OK, I'll write a patch to solve it!"
• Good code: "Great, merged!"
• Bad code: .... 🍻
🍻 Software getting fatty vs
Small/beautiful new product
• Docker vs Rocket
• (Language what you're using) vs Golang
• Recent Hashicorp products vs Past these
🍻 All-in-one vs plugin chaos
• For example: Logstash and Fluentd
• Logstash has many well-organized plugins
• And large developer team
• Well managed plugin portfolio, controlled by someone
• Fluentd only has APIs (and few built-in plugins)
• And very small committer team
• Uncontrolled plugin chaos, contributed by many people
🍻 Japanese for closed/fast development
vs English for openness
🍻 Japanese for closed/fast development
vs English for openness• "divide and conquer" by using local language
• it's reasonable only if:
• local community has many leading engineers in the world
• team has enough resource to publish the product in whole world when it goes global
• IMO, it's not reasonable for many cases
What should we do?
Many things make many limitations...
🍻
What should we do?
What should we do?
• We have not so many options:
• Limited English? or not-so-limited Japanese?
• Dirty hack? or not-so-beautiful code?
• Local strong closed team and (strong marketing team + money)? or global weak spreading team?
• We must choose the way to go every time
The Way to Live as an OSS developer
Do it, and keep doing it. (again)