Stream: beginners

Topic: New user experience report


view this post on Zulip Luca (Jul 13 2025 at 01:53):

Hi folks!

I've been following Roc for a couple years and finally sat down to build something non-trivial with it this morning and wow what a beautiful language!! The care you've put into how everything fits together is really special, and I love how you've balanced expressiveness and simplicity. Truly software you can love.

I wanted to share a quick report on my experience as a new user. I don't think much of this will be a surprise, but wanted to share in case it's helpful!

Background: I was building a tiny little HTML page using basic-webserver. I pulled some data from an API then rendered it on the page.

What works:

What was challenging:

thread '<unnamed>' panicked at crates/compiler/mono/src/ir.rs:6257:10:
Ability specialization is unknown. Tip: check out <https://roc.zulipchat.com/#narrow/stream/231634-beginners/topic/Non-Functions.20in.20Abilities/near/456068617>: DeriveError(Underivable)
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

If I'm understanding correctly, the compiler is currently being rewritten in Zig, so maybe fixing this is already on the roadmap for the next version of the compiler.

Either way, sincerely appreciate the hard work you're all putting in, and looking forward to using Roc more in the future!

view this post on Zulip Luke Boswell (Jul 13 2025 at 02:09):

Thank you for taking the time to share this. It's really helpful to know how Roc is feeling from someone who has fresh eyes.

Regarding the JSON decoding... there are definitely issues lurking here which cause confusing compiler panics. This is one of the motivating reasons for the re-write. We have a fix, but unfortunately it is quite invasive.

view this post on Zulip Anton (Jul 13 2025 at 10:20):

Thanks for the kind words and feedback @Luca! Encouraging type annotations is a good idea, not yet sure how we should do that :thinking: Additional tip: if you hover over a variable or function with your mouse it will show the type, assuming you have the LSP set up with your editor.

view this post on Zulip Luca (Jul 13 2025 at 20:07):

@Luke Boswell of course, happy to help! And that makes sense — figured it was already on your radar :)

@Anton you're so welcome! For type annotations — maybe emitting a warning for top-level functions without annotations? Doesn't stop you from hacking things together while exploring solutions, but probably something you want to fix before merging a PR. And that makes sense about the rewrite :)

view this post on Zulip Anton (Jul 14 2025 at 06:07):

A warning feels a little strong, we see warnings as: "You should fix this before getting to production.". If people don't want to add type annotations to e.g. their scripts, we should not annoy them. We also like to introduce beginners to the language without type annotations.

view this post on Zulip Brendan Hansknecht (Jul 14 2025 at 13:49):

Would be a nice addition of a roc lint or similar tool to run in ci


Last updated: Jul 26 2025 at 12:14 UTC