How to create/improve OSS product and its community (revised)

34
How to Create/Improve OSS Product and Its Community (Revised with Beer ) java-ja.OSS (2015/10/05) Satoshi Tagomori (@tagomoris)

Transcript of How to create/improve OSS product and its community (revised)

Page 1: How to create/improve OSS product and its community (revised)

How to Create/Improve OSS Product and Its Community

(Revised with Beer 🍻)java-ja.OSS (2015/10/05)

Satoshi Tagomori (@tagomoris)

Page 2: How to create/improve OSS product and its community (revised)

Satoshi "Moris" Tagomori (@tagomoris)

Fluentd, Norikra, MessagePack-Ruby, Woothee, ... Docker logging driver for Fluentd (docker v1.8)

Treasure Data, Inc.

Page 3: How to create/improve OSS product and its community (revised)

–tagomoris 🍻

“I never got mails from Tony Morris.” “Didn't you work about OSS?”

Page 4: How to create/improve OSS product and its community (revised)

We are hiring!

Page 5: How to create/improve OSS product and its community (revised)

DataWe

Page 6: How to create/improve OSS product and its community (revised)

We are hiring!

Skillful Java programmers (+ Ruby!)

& Distributed system engineers

Page 7: How to create/improve OSS product and its community (revised)

http://yapcasia.org/2015/talk/show/5f5cad74-004a-11e5-acf4-89c77d574c3a

Page 8: How to create/improve OSS product and its community (revised)

http://t-wada.hatenablog.jp/entry/active-oss-development-vs-simplicity

Page 9: How to create/improve OSS product and its community (revised)

http://tagomoris.hatenablog.com/entry/2015/08/31/101025

Page 10: How to create/improve OSS product and its community (revised)

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

Page 11: How to create/improve OSS product and its community (revised)

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?

Page 12: How to create/improve OSS product and its community (revised)

All OSS products needs: More users

More use-cases More contributions

Page 13: How to create/improve OSS product and its community (revised)

🍻 Except for exceptions :P

ex: PoC, Just for Fun, ...

Page 14: How to create/improve OSS product and its community (revised)

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)?

Page 15: How to create/improve OSS product and its community (revised)

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

Page 16: How to create/improve OSS product and its community (revised)

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

Page 17: How to create/improve OSS product and its community (revised)

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

Page 18: How to create/improve OSS product and its community (revised)

What (Natural) Language We Use Around the Product?

• What important is to express: "We DON'T exclude you."by using English

Page 19: How to create/improve OSS product and its community (revised)

How does spoil using English our skill?

🍻 It can't be measured

if we use only Enligh :P

Page 20: How to create/improve OSS product and its community (revised)

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

Page 21: How to create/improve OSS product and its community (revised)

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!

Page 22: How to create/improve OSS product and its community (revised)

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

Page 23: How to create/improve OSS product and its community (revised)

The Way to Live as an OSS developer

Do it, and keep doing it.

Page 24: How to create/improve OSS product and its community (revised)

pictures of beers or something else

break...

Page 25: How to create/improve OSS product and its community (revised)

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?

Page 26: How to create/improve OSS product and its community (revised)

🍻 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: .... 🍻

Page 27: How to create/improve OSS product and its community (revised)

🍻 Software getting fatty vs

Small/beautiful new product

• Docker vs Rocket

• (Language what you're using) vs Golang

• Recent Hashicorp products vs Past these

Page 28: How to create/improve OSS product and its community (revised)

🍻 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

Page 29: How to create/improve OSS product and its community (revised)

🍻 Japanese for closed/fast development

vs English for openness

Page 30: How to create/improve OSS product and its community (revised)

🍻 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

Page 31: How to create/improve OSS product and its community (revised)

What should we do?

Many things make many limitations...

Page 32: How to create/improve OSS product and its community (revised)

🍻

What should we do?

Page 33: How to create/improve OSS product and its community (revised)

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

Page 34: How to create/improve OSS product and its community (revised)

The Way to Live as an OSS developer

Do it, and keep doing it. (again)