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)

Upload: satoshi-tagomori

Post on 16-Apr-2017

7.638 views

Category:

Technology


0 download

TRANSCRIPT

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)