AWS (Amazon Web Services), one of the biggest cloud providers, provides hundreds of services, and offers SDKs in multiple languages to interact with these services. These public-facing services are backed by tens of thousands of services internal to the AWS platform. In order to streamline the development process of such a behemoth, AWS relies on code-generation.
Smithy is the culmination of ~14 years of iterations in the field of code-generation. It is an elegant declarative language that enables defining data types, operations and services in a clear and concise manner. The unique aspect of Smithy is that protocol concerns (transport, serialisation) are abstracted away in an extensible annotation-based mechanism. This means that Smithy can be used to describe things like rest/json services, but a virtually infinite amount of other things.
Smithy4s is a Scala code-generator that feeds off Smithy files. It is unique in that it retains the protocol-agnostic nature of Smithy :the code-generator is not biased towards any protocol or serialisation mechanism. Users can generate Scala code from Smithy to get case classes and interfaces, that can be wired in runtime-interpreters in an opt-in fashion, to derive http services, or CLIs, or even pure-Scala AWS SDKs. Smithy4s is used for streamlining the development of REST/json applications at DisneyStreaming, but offers a strong basis for building bespoke SDKs for remote interactions.
This talk will serve as an introduction to the Smithy IDL, and a demo of what is possible with Smithy4s
My name is Olivier, I am from France, where I work full-time remote as a software engineer. I may be addicted to cheese.
I have been using Scala as my main language for nearly a decade now. I am an open-source contributor and
maintainer, and I put an incredible amount of work into saving myself (and others) the hassle of repetitive tasks.
To that end, I tend to write scary code.
When I’m away from the computer, I’m most likely spending time helping my partner with her invisible illness,
or caring for our army of animals (who are certainly plotting against us, especially the cats).
I am a conflicted person and despite working in tech, I dream of living in a world where it’d be possible
to work half-time in software and half-time doing manual labour.