Skip to main content

Team spotlight - SDK

Hey devs and welcome to this edition of ICP team spotlight! In this issue, we sat down with the SDK team to talk all things IC SDK and the upcoming Cycles Ledger feature! For most IC devs, the IC SDK is at the center of their workflow, so I'm sure many of you have been looking forward to this team spotlight! With that, let's dive into the interview.

To get started, let's get a brief overview of the team. What is the purpose of the SDK team?

To provide tools that make building on the Internet Computer fast, easy, and fun.

What is the composition of the SDK team?

The SDK team includes six engineers, a technical writer, a research scientist, and an engineering manager.

On a fundamental level, what is the IC SDK? What are the components of it?

The IC SDK is a command line interface that provides a developer with everything they need to locally run an instance of the internet computer for development purposes. It comes with a copy of the replica, a command line tool to build and install canisters, and many utilities. Some such utilities are:

  • Cycles management

  • Interacting with the ICP ledger

  • Uploading frontend assets

  • The Asset (frontend) Canister

  • Project templates for quick starts

  • And so on

The SDK team is also responsible for maintaining the Rust and JavaScript agents, as well as the Rust Canister Development Kit (CDK).

It sounds like the SDK is definitely designed to set up devs with everything they need to get started! How does the IC SDK fit into ICP’s stack? What layer does it primarily operate on?

The IC SDK is how most developers will interact with the Internet Computer. Rather than implementing the Internet Computer interface specification from scratch, most applications will use DFX and the Rust or JavaScript agent to make their calls to canisters.

SDK team code runs in every ICP website, inside the service worker, in all the Rust canisters running on ICP, and in most Continuous Integration jobs. We depend on builds of the replica, new releases of the Motoko compiler, and any new updates to the internet computer specification.

What is the process of creating a project using the IC SDK?

*Once the IC SDK has been downloaded and installed, the process of creating a project is simple. You can use the dfx new command to guide you through the process of bootstrapping a new project. You can decide on the language you’d like to use, whether or not you’d like to incorporate a frontend (UI), and add a number of supported integrations using the dfx deps feature.**

The SDK team has several important projects in the pipeline. What project do you think developers are the most excited about?

Developers have been waiting for our answer to the shortcomings of the Cycles Wallet for a long time. We know it has been a pain point, and we’ve felt this pain ourselves. Luckily, we are really close to finishing work on the Cycles Ledger, which will make working with Cycles drastically easier. We want developers to be able to focus on the fun stuff (their own application!), and so one of our goals is to abstract away as much of the boring, complicated stuff as possible. This is one instance where we feel that we have done that successfully.

I'm sure devs are just as excited about the Cycles Ledger as the team is! What are the primary components of this project?

We built an entirely new ledger canister that allows for Cycles accounting.

When can we expect the Cycles Ledger to be completed?

The end of the year. It will be our holiday gift to you :)

I'm sure that since the IC SDK is such a fundamental part of the developer experience, the SDK team must interact with other teams quite frequently. How does the SDK team work with other teams?

There are a number of “sister” teams to SDK, such as Execution and Runtime. We rely on the code shipped by them (replica) and they also rely on us for developer-driven feedback that helps us make the replica (and underlying platform) better in all aspects.

We also occasionally work with other teams when there is a cross-functional initiative going on. One example was when the Service Nervous System was developed. SDK worked closely with the SNS team to ensure that the tooling provided met all of the specifications.

What feature of the IC SDK do developers benefit from the most? What features are solely quality of life features for developers?

*Developers rely on many dfx functions to perform critical tasks and obtain important information. One example is the dfx deploy command - this command seems simple, but there is a lot going on beneath the hood that allows your code to be deployed to the mainnet. dfx ledger commands are another great example of simple commands that go a long way in terms of impact.**

The SDK team is pretty involved with the dev community on the forum and Discord server, which I'm sure has lead to features derived as a result of community feedback. What are some of the improvements made as a direct result of developer feedback?

Lots! We built the developer feedback board a while back, and every two weeks, our internal focus group meets to go over the latest items and check-in on the progress we’ve made addressing others. One thing that's come as a result of the feedback received is the dfx version manager. Developers expressed that they want a way to switch dfx versions easily. We spent some time working out how best to accomplish that, and the dfx version manager was born. Another example is the Cycles Ledger - we heard feedback that the Cycles Wallet was a pain to use and developers wanted a better solution. We are continuously looking for ways to improve our tooling, so keep the feedback coming!

Where should developers look for the latest SDK updates?

The Developer Blog is a great place to look for updates 🙂. We also post important updates and discussions in the forum - that is a great place to take part in discussions that shape what we ultimately develop.

What is one feature or aspect of the IC SDK that the team is the most proud of?

We take pride in everything we do, and we go to great lengths to make sure that the code we ship is stable and reliable. I am personally proud of our track record of reliability. We have over 150 checks in our CI workflow, and that includes end to end tests, unit tests, and smoke tests that we run across multiple platforms.

That is definitely something to be proud of! To wrap things up, what makes the SDK team unique compared to some of the other dev teams at DFINITY?

We are almost entirely remote and spread geographically across 4 time zones. This gives us the unique advantage of being able to interact with our developer community (almost) around the clock.

A huge thank you to the SDK team for chatting with us today and giving us some great insight into the IC SDK! Be sure to tune in next time for another team spotlight post!