And what happens if you do?
1,091 karma · joined May 18, 2013
Chief Product Architect at APIMatic... I help API providers create the best Developer Experience for their APIs through awesome client libraries and documentation.
I spend a lot of time thinking about HTTP APIs and Code Generation.
Email at mehdi [at] apimatic [dot] io.
LinkedIn: https://www.linkedin.com/in/mehdi-jaffery/
- Mehdi Raza Jaffery
And what happens if you do?
> The DOJ said Visa imposed “exclusionary” agreements on partners and smothered upstart firms.
[1]. https://sst.dev/
That's good to know.
A good source of my confusion came with not immediately recognizing that a new package registry does not require a new package manager to work with. I think the "jsr" commands in the code samples and the jsr.json make it feel like there's a new package manager in play here. If the team has made it so that npm works with "jsr" and vice versa, kudos to them because that's a big win for the users.
> Man, if only they'd debuted with this, but, hindsight and all. My only thing is that TypeScript has no spec, standard, or competing implementations so it seems a bit risky to treat it as a first-class citizen as far as publishing packages goes.
Add to that the frequent compilation issues that happen as TypeScript adds or removes types in the global imports, changes language conventions, and updates compilation checks whenever a new version gets released.
> You publish TypeScript source, and JSR handles generating API docs, .d.ts files, and transpiling your code for cross-runtime compatibility.
This sounds like another building service I don't control. There's already too much magic in publishing transpiled TypeScript packages but at least the current tools let me control exactly what artifacts get pushed out.
> web-standard ECMAScript modules
The "web standard" part is meaningless considering that most production websites will bundle the files together as part of their build/optimization process for size and loading speed, leaving only a giant chunk(s) that resembles nothing like the original ES modules.
> JSR isn't a replacement for the npm registry; it's a superset of npm.
A super of npm means that the packages created for this repository will not work in the npm ecosystem. What is this if not a "replacement" of the npm registry and further fragmentation of the JS ecosystem?
>JSR modules can be used with any JavaScript package manager, and in any project with a node_modules folder.
This makes the already complicated module resolution logic in most bundler/packaging tools even more complicated as they must account for the intricacies of another package manager. A house of cards being stacked on another house of cards...
> Module authors can count on great editor support from strongly typed modules, without the need to transpile and distribute typings manually.
The website seems to insist that distributing typings is a complicated process when it is just the .d.ts files bundled with the published package and an additional entry in the package.json file.
> Easy publishing with a single command - the CLI will walk you through the rest
It seems like every benefit that this project offers can be fixed in the current ecosystem by better client-side tooling that enforces standards during the publishing process while keeping full backward compatibility with over a decade of packages published and without fragmenting the ecosystem.
The openness of PC means that a second app store can exist and be successful on the Windows platform. If Google pulls this off, we might see a credible, large store of casual games on Windows for the first time. Right now, mobile shines for casual games and sees the bulk of investment for casual games. It would be a great boon for many casual gamers to be able to switch devices and carry over their games to the PC to play it on a larger screen, possibly with a controller.
Happy to answer any questions!
We started this project at APIMatic to share our learnings about building and generating SDKs with the API community. We have helped dozens of API providers generate and deploy SDKs now used by millions of developers, giving us some confidence in the learnings we share in this resource.
Next, yes, it is hard to create and maintain production-ready SDKs for a large web API. There are so many open-source Code Generators for OpenAPI that aim to address this, but we found that they often do not follow the best practices for the languages they were generating SDKs for or did not create resilient SDKs. We cover both practices for ensuring a good developer experience for SDK users as well as methods for creating SDKs that help users to production-ready integrations faster.
Finally, while we are building a tool that we think solves the SDK problem for most API providers while following the best practices, we are still interested in creating a resource for folks who want to write their SDKs by hand, a kind of resource we ourselves wanted when we first started designing SDKs. We hope that this resource will be a time saver for those starting their API program today.
Apart from this, do you have recommendations or ideas for the take home tests for frontend engineer interviews? In a previous hiring run, the test we used turned out to be too easy because all candidates were able to implement it successfully and offloaded work heavily to third-party libraries.
Does anyone have suggestion for such tools/services that they might have used in production?
APIMatic[1] is a Code-Generation-as-a-Service[2] that generates SDKs for C#, Python, PHP, Ruby, TypeScript and Java from OpenAPI specs (and more formats). We help companies create a better Developer Experience[3] for their APIs using SDKs and API Documentation that are always up-to-date with the API implementation. We have a pretty solid customer base[4] and SDKs generated using APIMatic have been downloaded millions of times.
PS: My email is in my profile.
[2] https://alpha.apimatic.io/continuous-code-generation/
Back in 2014, OpenAPI didn't even exist. The latest API specification format was Swagger 1.2 and it was not very mature at that point. We had to build a lot of vendor extensions to cover the various REST API use-cases that API folks take for granted today.
Today, we also run the most-used API Spec format convertor tool in the world by the name of API Transformer [2]; this tool has helped a lot of companies migrate from an older spec formats like OpenAPI 2 and RAML to OpenAPI 3. We support nearly all API specification formats including RAML, OpenAPI (2., 3.), Blueprint, Postman, WADL and more.[3]
[1] https://www.apimatic.io/about/ [2] https://www.apimatic.io/transformer/ [3] https://docs.apimatic.io/api-transformer/overview-transforme... [4] https://www.apimatic.io/developer-experience-portal
TLDR: There are a good many technical challenges to creating high-quality SDKs in multiple languages for a medium to large-sized REST API and most teams seem to underestimate the amount of effort required to build and maintain SDKs. The speed and savings from code generation is quite compelling and a modern commercial code generator like APIMatic has a wide-enough feature-set that most REST APIs don't require writing SDKs by hand anymore.
Disclaimer: I am a contributor to APIMatic Code Generator.