Hacker Newsnew | past | comments | ask | show | jobs | submit | RideAndWave's commentslogin

Yeah, it's a common problem with non deterministic api schemas, e.g. openapi and swagger (https://swagger.io/specification/), but Taxi looks similar in some aspects to protoforce (https://www.protoforce.io/) except that the types subset is substantially narrower.


Can you explain what's non-deterministic about swagger/open-api?


gRPC is quite counter-ergonomic with its own set of issues when trying to map a business domain to actual solutions.

protoforce.io has better modeling and implementation design, supports also 2-way communication, while remaining sane to read and debug.

/disclaimer: one of the authors


Does protoforce have sum types / tagged unions?

And is it open source? (apparently not, and is only free for non-commercial uses)

Kinda hard to compete when grpc and cap'n'proto are fully FOSS


We were bothered by the same thing :) Many plugins for OpenAPI had no codegens which would produce deterministic behavior for compatibility across various languages. Also we wanted to have something that could express complex business domains in definitions.

Ended up building protoforce.io for the very purpose. It does support typescript + nodejs, which we used for the website itself as well.


For protoforce, we provide completely asynchronous server and client SDKs for scala and nodejs, also we suport websockets as a transport.

Java sdk is built on Futures, so somehow it's async as well.

Also we support server-to-client calls, which, effectively, are a better alternative to callbacks.


We've built a similar thing at https://www.protoforce.io, which auto-generates client and server side. It actually transpiles, parsing the models definitions and emits actual code with a bit of shared runtime.

Good amazon opened up their stuff, there should be more competition on this front.


This is some impressive stuff! Congrats on a sizable achievement. I just went through your website, have a few questions...

Questions:

1. SCALA: is the generated code ONLY scala? are other languages supported?

2. CODE-GEN: is it designed only for code generation for a target http framework or does it actually provide an "API Server" itself ( e.g. like graphQL )

3. COMPARISON: the list of frustrations with other solutions, listed in your intro/technology goals are somewhat high-level. what are the "leaky abstractions" or "non-deterministic behaviour"?

4. SETUP: does someone need to know scala to use this ? ( depends on #1 above )

5. DSL : is the protoforce code implemented as a DSL in Scala or its a "language" in itself?

6. IDE : how do you check/compile the code? does it integrated with an IDE?

As a Scala Engineer myself ( though I mostly work in Kotlin now for Android/Server ), this looks great, but most Scala engineers i've met are focused on Spark, and using Play Framework/Http4S, etc. How big is the actual market for Scala API tools?


Thank you.

1. Scala, Typescript/Javascript, and Java at the moment.

2. It does provide the runtime which allows to bootstrap a server easily. (You can check out this post which has modeling + scala setup example at the bottom https://www.protoforce.io/ProtoForce/post/extensive-guide-to...)

3. Please take a look at the documentation, it has a good outline of the features supported. There are many features, most are well documented there.

4. No, not really. You can do with other languages, it provides both client & server sides, so no other language is needed. Again, you can still generate client side stuff for other languages and use them to connect to your server.

5. protoforce website was implemented using the protoforce DSL itself. The parser and transpilers are written in scala. The portal is written in typescript + react.

6. There is currently a sandbox at the website which you can experiment in. There is no currently integration with other IDEs, but language server can be added a bit later for VSCode for instance.

Hope this answers a bit :)


FYI - your website is an unreadable catastrophe on Firefox for Android.


We focused on the desktop because it is difficult to use from mobile due to it being an online IDE. I'll take a look, thank you for reporting.


I get your thought process, but two things:

1. If you use flexbox from the beginning, you can easily have basic readability on mobile.

2. A huge % of users will discover things on mobile, even if those things are desktop apps.

I wasn't even able to tell what your product is at a basic level.


Noted, thank you.


I think there is a trend for a set of tools which auto-generate stuff. It started back with web tools generating websites from WYSIWYG, now it is getting everywhere.

We build services and models using https://www.protoforce.io, which also auto-generates client and server side. Generally, it is impossible to generate good code using templates only, so it has to be transpiled.

I think from amazon's side it was coming sooner or later anyway, with the amount of APIs they have - it is inevitable. I just can't see how many teams you need to have to manage all of the client side code for many languages.


Consider applying for YC's Summer 2026 batch! Applications are open till May 4

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: