Open Source Friday with Octokit - GitHub's SDKs for JS, Ruby, .NET and more!

GitHub
19 Apr 202449:47

TLDRIn this episode of Open Source Friday, host Cadessa is joined by Nick and Keegan from GitHub's SDK team to discuss the GitHub SDKs. They delve into what SDKs are, with Nick explaining that they are tools that simplify the process of interacting with APIs, handling common issues like authentication and rate limiting. The team shares the history of the GitHub SDK, which started with the introduction of GitHub's API in 2008, and has since evolved with contributions from various developers. They highlight the importance of community engagement and the team's efforts to manage and improve the SDKs, which currently see an average of 115 million package downloads per week. Keegan demonstrates how to get started with the Go SDK, showcasing its ease of use and the automated generation of SDKs for languages like .NET and Go. They also discuss future plans for the SDKs, including handling rate limiting, caching, and error handling, and their vision for generative SDKs that could serve a wider range of users, including project managers. The episode concludes with a mention of a lesser-known feature, the GitHub Terraform provider, which Nick shares as his hidden gem.

Takeaways

  • 🎉 The GitHub SDK is a collection of tools that makes interacting with the GitHub API easier and more efficient.
  • 📈 GitHub Universe is looking for speakers on topics like AI, security, and developer experience, with a deadline for applications on May 10th.
  • 🤝 Nick and Keegan, both part of the GitHub SDK team, have a combined experience of more than 38 years in the industry.
  • 🌟 SDKs (Software Development Kits) are essential for abstracting common tasks when dealing with APIs, such as authentication and rate limiting.
  • 🚀 The GitHub SDK started with the introduction of GitHub's API in 2008 and has evolved significantly since then.
  • 📊 The GitHub SDK currently sees around 115 million package downloads per week and has a large open-source community contributing to it.
  • 🔧 The team is working on introducing generative SDKs for .NET and Go, with Python being the next on the list due to its popularity.
  • 🔄 Keegan demonstrated using the Go SDK to call the 'Zen of GitHub' endpoint, showcasing the simplicity of using the GitHub SDK for API interactions.
  • 📝 The GitHub SDK aims to provide a comprehensive set of tools that cover the entire GitHub API surface, allowing developers to focus on their business logic.
  • 🔍 The team is considering the future of SDKs, including the potential for AI-hydrated SDKs and language-agnostic solutions.
  • 🌐 They are also looking into community-driven needs to better support different programming communities and their unique requirements.

Q & A

  • What is the main topic of discussion in the 'Open Source Friday' session?

    -The main topic of discussion is the GitHub SDK, which includes GitHub's software development kits for various programming languages such as JavaScript, Ruby, .NET, and more.

  • Who are the guests featured in the session?

    -The guests featured in the session are Nick Floyd and Keegan Campbell, who are part of GitHub's SDK team.

  • What is an SDK in the context of software development?

    -An SDK (Software Development Kit) is a set of tools, libraries, and documentation that allows developers to create applications for a certain software package or framework. In the context of GitHub, it simplifies the process of interacting with GitHub's API by providing a more ergonomic and standardized way to make API calls.

  • What is the significance of the GitHub Universe call for sessions mentioned in the script?

    -The GitHub Universe call for sessions is an opportunity for individuals to submit their proposals to speak at the GitHub Universe conference. The topics are focused on AI, security, and developer experience, and the call for sessions is open until May 10th.

  • What is the 'Zen of GitHub' endpoint?

    -The 'Zen of GitHub' endpoint is a part of GitHub's API that returns a random Zen principle, which are philosophical statements or guidelines for a good life and effective programming practice.

  • How does the generative SDK approach help in managing the GitHub SDK project?

    -The generative SDK approach helps manage the GitHub SDK project by automatically keeping up with updates to GitHub's API, thus reducing the manual effort required to update SDKs across different programming languages. It also allows for covering a broader range of programming languages and providing a more consistent experience to developers.

  • What is the current status of the GitHub SDK for Python?

    -As of the time of the discussion, there is no official release date for the Python version of the GitHub SDK. However, it is on the radar and is being considered for future development based on GitHub's userbase profile, which shows a significant portion of users working with Python.

  • How does the GitHub SDK abstract common problems that developers face when working with APIs?

    -The GitHub SDK abstracts common problems such as authentication, rate limiting, error handling, and caching. It provides a layer of abstraction that handles these issues behind the scenes, allowing developers to focus on their business logic without having to implement these solutions from scratch.

  • What is the GitHub Terraform Provider, and why is it considered a hidden gem?

    -The GitHub Terraform Provider is a lesser-known project that allows users to manage GitHub resources through Terraform, an infrastructure as code tool. It is considered a hidden gem because it enables automation and management of GitHub resources like repositories, teams, and permissions within an organization's infrastructure as code workflow.

  • How does the GitHub SDK team handle the large volume of notifications and issues?

    -The team uses a first-responder rotation system where one of the members takes responsibility for responding to notifications and issues during certain days of the week. They also rely on community contributions and have a process for reviewing and addressing the issues and pull requests they receive.

  • What are some future directions that the GitHub SDK team is considering for the SDKs?

    -The team is considering incorporating more advanced features such as rate limiting, caching, and pagination into the SDKs by default. They are also exploring the possibility of generative plugins or workflows, language-agnostic SDKs, and AI-hydrated SDKs that could further simplify the development process for users.

Outlines

00:00

🎉 Introduction to Open Source Friday and GitHub SDK

The video script begins with a lively introduction to Open Source Friday, a platform for discussing open source projects with maintainers. The host, Cadesa, expresses excitement about the guests, Nick and Keegan, who are part of GitHub's SDK team. They discuss the GitHub Universe call for sessions, encouraging participation from those interested in speaking on topics like AI, security, and developer experience, with a deadline for applications on May 10th.

05:01

🚀 Understanding SDKs and Their Role in Development

The conversation moves to a discussion about what an SDK (Software Development Kit) is and its importance. Nick and Keegan explain that an SDK simplifies the process of calling an API by providing tools and standardization, reducing the need to rewrite common code from scratch. They also touch on the evolution of APIs and how SDKs help manage authentication, rate limiting, and other repetitive tasks.

10:02

🌐 The History and Evolution of the GitHub SDK

The hosts delve into the history of the GitHub SDK, starting from the introduction of GitHub's API in 2008. They discuss the contributions of various developers over the years and the growth of the SDK, including the creation of Octokit.rb and Octokit.net. The narrative highlights the importance of community and the role of pioneers in shaping the current state of the SDK.

15:03

🤝 The Community and Maintenance of the GitHub SDK

Keegan and Nick share the challenges and strategies involved in maintaining the GitHub SDK, which includes over 70 repositories. They discuss the high volume of notifications and the process they've implemented to manage the workload. The pair emphasizes the importance of community contributions and the support they receive from other teams, like Microsoft's Kyota.

20:03

📈 GitHub SDK's Growth and Future Directions

The discussion highlights the GitHub SDK's impressive statistics, including millions of package downloads and a vast number of open source contributors. The hosts express their commitment to improving the SDK and adapting to community needs. They also mention the introduction of generative SDKs for languages like Go and .NET, and their plans for future expansion, including the potential for a Python SDK.

25:03

🔧 Live Demo: Getting Started with the GitHub SDK

Keegan presents a live demo on how to get started with the GitHub SDK, specifically using the Alpha version of the Go SDK. The demo includes setting up a Go module, using the Zen of GitHub endpoint to fetch a random principle, and discussing the generative capabilities of the SDK. The process is straightforward, emphasizing the ease of use and the community's role in its development.

30:04

🌟 Engaging the Community and Contributing to SDKs

The conversation shifts to community engagement and how the audience can contribute to the SDKs. Nick and Keegan encourage participation, mentioning the 'up-for-grabs' issues in the repositories as a starting point for new contributors. They express their appreciation for the community's help in impacting millions of users through their contributions.

35:06

🔍 Addressing Different Community Needs and Future Vision

The hosts address the question of how they handle different needs from various programming communities. They acknowledge the challenge and express their desire to improve in this area. The discussion then pivots to the future vision of the GitHub SDK, including the potential for language-agnostic SDKs, AI-hydrated SDKs, and generative plugins or workflows to assist users more effectively.

40:08

🎁 Favorite Feature and Closing Remarks

In the final part, Nick shares his favorite lesser-known feature of the GitHub SDK, which is the GitHub Terraform provider. He explains its utility for infrastructure as code and its significance to enterprises using Terraform. The episode concludes with thanks to the contributors and an invitation for the audience to explore the GitHub SDK further.

Mindmap

Keywords

💡Open Source Friday

Open Source Friday is a concept introduced in the script where discussions revolve around open source projects and their maintainers. In the context of the video, it serves as an opportunity for the host and guests to delve into the intricacies of the GitHub SDK, making it a central theme for the episode.

💡GitHub SDK

GitHub SDK stands for Software Development Kit, which is a set of tools and libraries used to facilitate software development tasks. In the script, the GitHub SDK is the primary focus, with discussions about its evolution, usage, and the benefits it provides to developers interacting with GitHub's API.

💡API

API, or Application Programming Interface, is a set of rules and protocols that allows different software applications to communicate and interact with each other. The script emphasizes the role of APIs in enabling developers to perform tasks on GitHub, and how the GitHub SDK simplifies working with these APIs.

💡Octokit

Octokit refers to a collection of libraries that act as different language wrappers around the GitHub API. In the script, Octokit is mentioned as the entity responsible for maintaining various SDKs for different programming languages, showcasing its importance in the GitHub ecosystem.

💡Zen of GitHub

The Zen of GitHub is a humorous endpoint provided by GitHub's API that returns a random Zen principle, which are philosophical statements or guidelines. In the script, it is used as an example to demonstrate how to use the GitHub SDK to make API calls and retrieve data.

💡Generative SDKs

Generative SDKs are tools that automatically generate code or SDKs for various programming languages based on a common definition or schema. The script discusses the introduction of generative SDKs by Octokit to manage the growing surface area of GitHub's API and to support additional languages more efficiently.

💡Rate Limiting

Rate limiting is a technique used to prevent abuse of APIs by imposing a limit on the number of requests an application can make within a certain timeframe. In the context of the video, rate limiting is mentioned as a feature that the GitHub SDK abstracts away from the developer, allowing for easier and more efficient use of the API.

💡Authentication

Authentication is the process of verifying the identity of a user or application. In the script, it is discussed how the GitHub SDK handles authentication, allowing developers to make authenticated requests to the GitHub API without having to manually implement the authentication process.

💡GitHub Universe

GitHub Universe is an annual conference hosted by GitHub that focuses on developer-related topics, including AI, security, and developer experience. The script mentions a call for sessions for the upcoming GitHub Universe event, indicating an opportunity for community members to contribute and share their expertise.

💡Community Engagement

Community engagement refers to the interaction and collaboration between the maintainers of a project and its community of users and contributors. The script highlights the importance of community engagement in the development and maintenance of the GitHub SDK, emphasizing the value of feedback and contributions from the open source community.

💡Terraform Provider

A Terraform provider is a plugin that enables Terraform, an infrastructure as code tool, to interact with external APIs, such as those provided by cloud services or, in this case, GitHub. In the script, the GitHub Terraform provider is mentioned as a hidden gem, allowing users to manage GitHub resources through Terraform configurations.

Highlights

Introduction to Open Source Friday, a platform for discussing open source projects with maintainers.

Guests Nick and Keegan discuss the GitHub SDK, which simplifies interaction with GitHub's API.

GitHub Universe call for sessions is open for those interested in speaking on topics like AI, security, and developer experience.

Keegan Campbell and Nick Floyd share their experiences working on the GitHub SDK team and their backgrounds in the industry.

SDKs (Software Development Kits) are explained as tools that streamline API interactions by handling common tasks like authentication and error handling.

The history of the GitHub SDK, starting from the first version of GitHub's API introduced in 2008.

The evolution of the GitHub SDK, including the introduction of Octokit.rb in 2009 and Octokit.net in 2012.

Current statistics of GitHub SDK usage, including 115 million weekly package downloads and contributions from 2,300 open source community members.

Challenges in managing a large project like the GitHub SDK and the strategies employed to handle the workload.

Introduction to generative SDKs, which automatically keep up with GitHub's API changes and cater to multiple programming languages.

A live demo on how to get started with the GitHub SDK using Go, including setting up a new Go module and making an API call.

The Zen of GitHub endpoint is used as an example to demonstrate the simplicity of using the GitHub SDK to fetch a random principle.

Discussion on how the GitHub SDK can be improved to better serve different programming communities' needs.

Nick Floyd's personal story about working on GitHub's Terraform provider as a hidden gem within the GitHub SDK ecosystem.

The future vision for the GitHub SDK includes leveraging generative technologies and possibly creating language-agnostic or AI-hydrated SDKs.

The GitHub SDK team is open to community contributions, especially for those who are new and looking for issues labeled 'up-for-grabs'.

Python version of the GitHub SDK is on the roadmap, reflecting the high demand from the GitHub user base.