Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Developer Experience (DX) for Open-Source Proje...

Developer Experience (DX) for Open-Source Projects (English, Japanese)

Developer experience is one of the most important factors when it comes to building a successful product for developers. Most successful open-source projects share a similar pattern - an engaging developer experience. How can an open-source project engage developers more easily? How should the developer experience be crafted differently compared to commercial products? What are the best practices in providing a world-class developer experience?

To learn more about OpenAPI Generator, the eBook "A Beginner's Guide to Code Generation for REST APIs (OpenAPI Generator)", available in 5 different languages: English, Française, 日本語, 简体中文, 繁体中文, is a good starting point: https://gumroad.com/wing328

William Cheng

July 19, 2019
Tweet

More Decks by William Cheng

Other Decks in Technology

Transcript

  1. Developer Experience (DX) for Open-Source Projects How to engage developers

    and build a growing developer community By William Cheng, Akihito Nakano This presentation will be conducted in both English and Japanese この発表は英語と日本語の両方で行われます
  2. About Us Akihito Nakano (中野 暁人) ▹ Core team and

    founding member of OpenAPI Generator ▹ Top contributor in Japan :) ▹ Technical committee for PHP (client, server) generators William Cheng (Hong Kong) ▹ Core team and founding member of OpenAPI Generator ▹ Overseeing the whole project from bug fixes, PR review to roadmap and team building 2 @wing328 @NAKANO_Akihito
  3. What is OpenAPI Generator? 3 [OUTPUT 出力] API clients, server

    stubs, documentation • API clients (30+ programming languages) • 30+ server frameworks • API Documentations • Apache2 web server config • GraphQL Schema [INPUT 入力] OpenAPI Spec For REST API • Swagger 1.2 • Swagger/OpenAPI 2.0 • OpenAPI 3.x [PROCESS 処理] OpenAPI Generator • Java package (JAR) • CLI • Brew (MacOS) • REST API • Docker • NPM • Plug-ins (Maven, Gradle, IntelliJ, Eclipse, etc)
  4. OpenAPI spec (v3.0) example 例 /pets/{petId}: get: summary: Info for

    a specific pet operationId: showPetById tags: - pets parameters: - name: petId in: path required: true description: The id of the pet to retrieve schema: type: string responses: '200': description: Expected response to a valid request content: application/json: schema: $ref: "#/components/schemas/Pet" 4
  5. Why does Developer Experience (DX) matter? • Onboarding new developers

    • Gather feedback • Easier to contribute back • Keep developers engaged • Grow the developer community and more ...
  6. DX life cycle for open-source projects 10 (2) Evaluate (1)

    Discover (3) Feedback (5) Evangelize (4) Contribute DX life cycle
  7. (1)Discover How do developers find out your open-source projects? 11

    (1)知る・見つける 開発者はどのように オープンソースプロジェ クトを知るのでしょう か?
  8. (1) 知る・見つける 1. 口コミ、リアルなコミュニケーション (友人, 同僚など) 2. SNS: Twitter, ブログ,

    Qiita, はてブ, StackOverflow, Github, Reddit, HackerNews 3. 各地のコミュニティ: ミートアップ, 技術系メ ディア, 技術書, 翻訳 4. カンファレンス 5. オープンソースプロジェクト (Kubernetes, Prometheus) 6. Githubに公開されているコード 12
  9. (1) Discover 1. Word of mouth (friends, colleagues, etc) 2.

    Social networks: StackOverflow, Github, Twitter, Reddit, HackerNews, Linkedin 3. Local community: Meetup, tech news, localized materials 4. Conferences 5. Open Source projects (Kubernetes, Prometheus) 6. Published code (SDKs) in Github 13
  10. 評判 - Googleトレンド, SNS - 導入実績 インストール/セットアップ - 始めかたは? インストール方法は?

    - オンラインで試用できるか - 生成したソースコードのサンプル - プラグインがあるか (Maven, Gradle, Eclipse, Visual Studio) ドキュメント 開発/QA/本番 の各環境で利用する プロジェクトの状況 - アクティブかどうか (コミットログ) - 更新履歴、リリースノート - ソースコードの質 - ビルドのステータス (2) 調べる・評価する 14
  11. Background check - Google Trend, Social Media - Who’s using

    it in production Install/Setup - Getting Start? Installation? - Try it online without installing anything? - Sample output? - Plug-ins? Maven, Gradle, Eclipse, Visual Studio Documentation Run it in Dev/QA/Production environment Project status - Project (commit log) active? - Changelog and release note - Code quality - Build status (2) Evaluation 15
  12. make it easier to open an issue with an issue

    checklist watch out for unofficial channels for feedback build a community to help each other (e.g. chat room) (3) Feedback 17
  13. (Recap) DX life cycle for open-source projects 19 (2) Evaluate

    (1) Discover (3) Feedback (5) Evangelize (4) Contribute DX life cycle
  14. (4) コントリビュート 1. Pull Requestテンプレートを活用す る 2. “ゲーミフィケーション”の要素を取り 入れて、コミュニティ内に階層分け した役割を定義する

    a. Users b. Contributors c. Technical Committee d. PR reviewer and merger e. Core Team 3. 地域コミュニティの活性化 a. ユーザーからリーダーへ 20
  15. 21 1 Core team members 週に3時間プロジェクトでの活 動を行う 3 Template Creators

    新しく言語やフレームワークを サポートするジェネレータの実 装を行う 5 Users issueの投稿や質問、プロジェ クトへのフィードバックを行う 2 Technical committees 特定の言語において、提出し たPull Requestが3つ以上 マージされている 4 Contributors バグ修正、機能追加やドキュメント の改善などのPull Requestを提出し ている
  16. 22 github.com/kemokemo Go Technical Committee Creator of Go Gin Server

    Generator github.com/ackintosh Core Team Founding Member プロジェクトの発展に貢献されている 日本のコミュニティのみなさんに感謝! github.com/taxpon Python Technical Committee Founding Member github.com/autopp Ruby Technical Committee github.com/d-date Swift Technical Committee Founding Member github.com/algas Creator of Haskell Servant Server Generator github.com/niku Creator of Elixir Client Generator And many other contributors, issue/PR reviewers in Japan
  17. (4) Contribute 1. File pull requests for enhancements, bug fixes,

    etc 2. “Gamification”: Different tiers for open source contributors a. Users b. Contributors c. Technical committee d. PR reviewer and merger e. Core team 3. Local community a. Turn users into leaders 23
  18. 24 1 Core team members Spend at less 3 hours

    per week for at least 3 months on the project 3 Template Creators Submit a new generator for a new language or framework 5 Users These users may have reported an issue, asked questions or provided feedback to the project. 2 Technical committees At least 3 merged pull requests for a particular generator or programing language 4 Contributors File a PR to fix bugs, enhance the generators or improve the documentation
  19. 25 github.com/kemokemo Go Technical Committee Creator of Go Gin Server

    Generator github.com/ackintosh Core Team Founding Member A special thanks to the Japanese community to help move the project forward!! github.com/taxpon Python Technical Committee Founding Member github.com/autopp Ruby Technical Committee github.com/d-date Swift Technical Committee Founding Member github.com/algas Creator of Haskell Servant Server Generator github.com/niku Creator of Elixir Client Generator And many other contributors, issue/PR reviewers in Japan
  20. (5) 伝える ⇢ (1) 知る 1. 口コミ、リアルなコミュニケーション: 友人, 同僚など 2.

    SNS: Twitter, ブログ, Qiita, はてブ, StackOverflow, Github, Reddit, HackerNews 3. 地域コミュニティの活性化: ミートアッ プ, 技術系メディア, 翻訳 26
  21. (5) Evangelize ⇢ (1) Discover 1. Word of mouth (friends,

    colleagues, etc) 2. Social networks: StackOverflow, Github, Twitter, Reddit, HackerNews, Linkedin 3. Help build the local community: Meetups, tech news, localized materials, conferences 27
  22. OpenAPI Generatorへご支援いただいている スポンサーのご紹介 NamSor は名前を様々な観点で分類する APIを 提供しており、個人名を性別、出身国、人種や 民族によって正確に分類することができます。 照明のためのApp StoreやMusic

    Storeを想像し てみてください。Lightbow はこれまで5年間さま ざまなアップデートを行い、最高の品質と量の照 明の演出を提供しています。それに加えて、オリ ジナルの演出を作成するためのエディタも提供 しています。 プロジェクトの支援についてはこちら https://opencollective.com/openapi_generator
  23. Thank you to the sponsors of OpenAPI Generator NamSor offers

    Name Ethnicity and Gender Classifier API to classify personal names accurately by gender, country of origin, or 'race' and ethnicity. Imagine the App Store or Music Store, but for LIGHT. After five years and many great updates, Lightbow continues to provide the highest quality & quantity of stunning light shows, plus the most powerful editor to create your own! Want to support this project financially? https://opencollective.com/openapi_generator
  24. THANK YOU & All the best in building developer communities

    Any questions? @wing328 @NAKANO_Akihito 31