I'd like to start this topic so that anyone who's interested in becoming a new contributor can make a post here, and then we can help them get up and running!
I'm interested! Work is pretty demanding right now, but I've been trying to set aside a bit of time to get up to speed and engage with things on zulip. January through March I'm doing a 3 month batch at RC and would be interested in spending a good chunk of that time contributing to Roc.
that's amazing!!! I've heard awesome things about the Recurse Center
do you have any ideas about what areas of Roc contributions in particular interest you?
Long term: I would looove to work on the type checker, but I understand that's a pretty complicated piece of machinery. Also interested in learning more about how glue works and improve tooling related to building platforms.
Short term: I'm happy to pick up some smaller bugs and refactors. It would be neat to work on dbg
ergonomics like calling as an expression, or improve expect
output to show friendlier error messages.
I also have web dev experience, so I can help out in that area. I wouldn't mind improving the UX of generated docs.
very cool, those are all great options! Feel free to let us know whenever you're ready to start a project and we can figure something out! :grinning:
I’m also interested in contributing more. That said, I don’t want to commit to a specific project right now. I’m very interested in the type system and would love to learn more about it and possibly work on it eventually.
Also, gotta say, I’m having a blast using roc!
Hello. I have been following Roc for some time mostly through the Software Unscripted podcast. I've got the developer environment setup and am looking through the source code rn -- #5925 seems like a small issue I can get started with if that works all right. :)
Let us know if you need a hand :smile:
Hello, found this issue that looks like something i can work on. I would like to know what crate the progress bar is part of, is it the cli
crate?
It's here: crates/packaging/src/https.rs
Original PR for context: https://github.com/roc-lang/roc/pull/6098
alright, i will look into working on this
I implemented the suggested basic fix. Is there any module less than a megabyte that i can use for testing the feature? Or are there any unit tests to test this?
I think most of the pure roc packages are way less than 1MB
I don't think any unit tests exist for it
Alright
Hello I am looking for new issues to contribute on, can I start with this task task?
Hi @Mayank Jain,
Excellent choice :) I think the changes need to be made inside this function.
Hello, would love to try a task or two.
And although this wasn't marked as a good first issue, this new issue seems pretty small and similar to the unix code right above.
If thats more than it appears, I can also do this very general zig test issue
Assuming the first task is just matching unix, should be easy. If it is not, simply need to figure out how wasm actually represents and passes around a u128
Would be reasonable to try to fix
For the second one, feel free to add any amount of test cases to our zig builtins. In general, it is probably an issue that will stay open for a bit as people add tests to various parts of the bitcode.
Awesome, thanks!
I'm also interested in contributing! I've gotten hyped by listening to Richard talk about Roc in talks and podcasts a lot. I've been doing a lot of Rust in my personal projects, so I'm more comfortable writing Rust compared to Roc. I don't have a ton of spare time, so I can't take on anything huge but I'd still like to help where I can!
Hi everyone, I'm also interested in contributing the project since I listened Richard's talk on a podcast. I am still learning Rust so will be looking into the issue list on GitHub and pick up an easy one first. Thanks!
Hi @Hiroshi Takeuchi , new contributors are always welcome :smiley: let us know if you would like assistance with anything.
Hi folks, I'm interested in contributing. I was perusing the "good first issues" tag on GitHub, and found https://github.com/roc-lang/roc/issues/6386 (produced executables should be identical when produced in different folders). I've hit similar issues with other languages (which have prevented cross-machine caching of build outputs) so I'm roughly familiar with the problem; if anyone has pointers for where to start looking (for paths embedded in binaries) I'd appreciate them.
hi all! I've seen this issue on github https://github.com/roc-lang/roc/issues/5038 . This would be one of my first times contributing to Open Source and would like to start lightly, I would like to help adding more context to "*" operator in the documentation of roc.
The tutorial content is in www/content/tutorial.md
, if you add the wording in there. You can test locally by using bash www/build.sh
(first time to cache website assets locally) and then bash www/build-dev-local.sh
to rebuild and see the website locally.
Luke Boswell said:
The tutorial content is in
www/content/tutorial.md
, if you add the wording in there. You can test locally by usingbash www/build.sh
(first time to cache website assets locally) and thenbash www/build-dev-local.sh
to rebuild and see the website locally.
Got it, will do now!
Luke Boswell said:
The tutorial content is in
www/content/tutorial.md
, if you add the wording in there. You can test locally by usingbash www/build.sh
(first time to cache website assets locally) and thenbash www/build-dev-local.sh
to rebuild and see the website locally.
I've tried to run the commands you pointed out, ./build.sh
ran fine using the development shell from the nix flake. build-dev-local.sh
didn't tho. I think it needs to have roc-cli installed. I added it to the nix flake is that ok? If the local code get's in a state where it can't be built the build-dev-local.sh
will fail.
Sounds good, I'm not familiar with nix or flakes but that sounds helpful
https://github.com/roc-lang/roc/pull/6805
Done! Review it at your convenience!
It might be best to remove the nix changes and include those in a separate PR. It looks like CI isn't too happy with that.
Yeah, it seems that's the case. I'll remove the changes and update the PR
Done!
Hi, while I'd love to contribute, I feel very "shaky" as a self-taught (hobbyist) developer ... :(
@bernardino if you don't have a formal background, that doesn't mean you can't program well. I know plenty of people that are better programmers than me that have fewer degrees than I do.
So if you want to contribute, I'm sure you can do a good job! Many of us, including me, would be happy to help you find an issue to start contributing with! Just DM me and we'll figure something out
@Sam Mohr Thanks, will do!
I second that.
I only started learning Rust and Zig just so I could contribute to roc. It's been great fun, and everyone has been so helpful.
I love jumping on a call and pairing on some really low level topic and learning crazy new things I could never have imagined I would have learned. Working on a compiler project seems to have it all, there's interesting problems everywhere.
I started by learning Roc and writing docs and finding things that were missing.
:grinning_face_with_smiling_eyes:
I think Luke and I have called about once a week or so in the past few weeks, it's been pretty helpful
@Luke Boswell and @Sam Mohr that's incredibly helpful! Thanks to you both.
Hello everyone, I'd love to contribute to RocLang.
I'm a big fan of functional programming and DX.
My skills are Rust writing and Typescript robustness.
=> I'm looking forward to all the resources I can read to be able to contribute with my first contribution.
Thank you all
@mattaiod welcome to the Roc language Zulip! We'd be happy to help you find a specific task that you could start contributing on!
If you like FP and DX, then working on either the standard library or packages for the ecosystem are an easy direction to head in! Feel free to DM me if you need some ideas.
Since you already have Rust experience, you could consider picking up one of our good first issues from the compiler! If you need help picking one, again feel free to message me.
If neither of these seem appealing to you, we'll find something else for you to work on, there's plenty of work to do in tons of places
Just watched Brendan video about roctoberfest, super intersted in some of the syntax changes to include the "spread" (Is it how it is called in roc) in more places.
Hi @Andres Villegas,
#7093 is about that and is marked as a good first issue. Does that issue seem like something for you?
I was looking at this one https://github.com/roc-lang/roc/issues/7097 originally, but the one you link seems a bit easier which might be better for my first contribution. Any tips on where I can start looking for it in code are appreciated.
This seems to be the spot :)
https://github.com/roc-lang/roc/blob/aaeefc09b60313a28597372d3fdec041c1b96a22/crates/compiler/can/src/desugar.rs#L1235
Sounds good! is the idea to keep both syntaxes or remove the .. as
all togheter?
I think we can just do a full replacement
I'd vote for full replacement, with an asterisk
What's the asterisk?
Namely, if the .. as
behavior is really generic and we make it more fragile by special-case banning it for list segments, we should consider not removing it
But I don't think that's the case, meaning you should be able to just replace it
So yeah, feel free to ping me or anyone here, or make a new topic in #contributing if you run into anything!
What could be the reason for roc_load
compiling taking for ever? I made a small change and was expecting either a compile error or a runtime bug, but the build is just stuck in roc_load. The change I made is in the compiler crate
When you build using cargo try using -vvv
It is most likely an issue when building the builtins I imagine
Or could be a thread crashing silently and so the other thread is waiting for it to finish
I'm guessing the second actually... I think we have an issue currently that if a roc_load
thread crashes it just hangs while it waits for the thread to report. I found that while working on an experiment building a wasm playground where I was stubbing out the filesystem implementation
I never found a way to make it panic loudly, I think @Brendan Hansknecht might know how to do that
Sometimes just running roc check
from a previous version of roc on the builtins can catch the bug with this. Otherwise, I think setting ROC_SKIP_SUBS_CACHE=1
helps.
So ROC_SKIP_SUBS_CACHE=1 cargo build --bin roc
for example
Good first issue and medium sized follow project for any interested contributors: https://roc.zulipchat.com/#narrow/stream/231634-beginners/topic/Option.20for.20aggressive.20inlining.3F/near/475445995
Totally fine to just do the small first issue or to tackle the entire thing.
Hi there!
I submitted my first PR yesterday and had some questions about dev setup so that potential future PRs can go smoothly
vscodeExtensions
list in the flake.nix file? Untracked files:
(use "git add <file>..." to include in what will be committed)
crates/glue/tests/fixtures/basic-record/Cargo 2.toml
crates/glue/tests/fixtures/basic-record/build 2.rs
...
Thanks for your help!
all the extensions I want should be in the
vscodeExtensions
list in the flake.nix file?
Correct. I think if you use code --extensions-dir="$HOME/.vscode/extensions"
you can easily re-use your pre-installed extensions.
The vscode installation when I run from the nix-shell is completely independent
Yes, I believe that was necessary for the rust analyzer to work properly.
Yesterday, while I was running tests, I saw these files get generated. Did I do something wrong, or is this expected?
Yeah I think something went wrong there but I expect you'll be able to delete those files without issue
Understood, thank you!
Is this bug about equality not being resolved correctly for sets within records a reasonable second issue to tackle?
So far I've only looked at the parsing stage in the compiler. I don't know anything about codegen or LLVM but I am very interested in getting a birds-eye view of the compiler stages end-to-end. If this one is too complicated, are there any simpler issues you folks would recommend that involve any stage after parsing?
That definitely would get you into the guts of code gen which could be quite interesting.
I'm really not sure on difficulty. My gut feeling is that the actual change won't be that complicated, but it might be hard to parse through things and reach the solution
I think it could be worth trying if you want to
The issue is probably somewhere in the compiler/derive crate
That or derive_key
Thanks for the pointers. I spent some time looking and I realized I am missing a lot of context and relevant concepts. I'll just follow the issue for now and try to build up the relevant knowledge in parallel.
@Hrishikesh Dharam anything specific you are interested in learning more about? Maybe we can find a less complex bug that still helps you explore more of the compiler.
Anything that comes after the initial parsing stage, so nothing very specific :)
Type inference, the Roc IR, canonicalization, and codegen all sound very interesting!
Maybe this: https://github.com/roc-lang/roc/issues/6928
Feels like it would be the next step down past parsing?
This would be deeper in type checking, but I'm not sure the difficulty: https://github.com/roc-lang/roc/issues/7078
If you are interested in jumping all the way to the backend, dev backend still is missing implementations of a number of ops. These implementation generally would be in assembly (or built from other dev backend primtives). This is a probably stale list, but I am sure some of them are still missing: https://github.com/roc-lang/roc/issues/3513
wow, thanks so much for pulling these up! I'll start with the first issue and go from there.
@Pradeep Dhane welcome to the Roc Zulip chat!
We've got lots of stuff that a new contributor could be working on in lots of parts of the Roc space. There's compiler development for syntax, std library work, performance optimizations, and more!
There's also plenty of work in the ecosystem to be done with respect to package and platform work.
Do you have something in particular that you enjoy working on? Compiler frontend, compiler backend, bug fixes, Rust dev, Zig dev, Roc dev?
If you do, let us know and we can help find you something to work on.
Otherwise, I'd recommend checking out our good first issues on GitHub
I am happy to contribute good first issues
Great! Do you have experience writing in of the following:
no sir
Good to know
My skills-java,c,javascript,html,css,DSA
Okay, cool!
I'm looking through the aforementioned "good first issues" to see what would be workable without language knowledge
One sec
yes sir
Okay, so there seem to be multiple issues surrounding our Roc generated documentation. Not as much with the contents, but more with the user interface. If that's something that would interest you, I can point to a few different issues.
But if you'd rather work on the language itself, then I can help you get some learning resources for an intro to Rust
I'll preemptively list some issues for improving our docs site
These are all of the issues that I found surrounding something a web dev could jump right into
Not all of the issues have full detail on the problems we are seeing, so if you need details feel free to ask here!
sir I am completed my first year and now I am in 2nd year and new to opensouce so I do not have knowledge about rust.
Oh yeah, that's totally fine
I don't mean to pressure you that you need to learn Rust or something. I'm just trying to avoid making you feel like the only way you can contribute is to work on our websites
request to you that assign me with less coding or good first issue
I'm pretty sure that all of the bullet points don't need strong coding background
If you really don't have a preference
I can just pick one for you
Let's see...
I am ready to contribute in user interface
I am ready to contribute in user interface
This would be my vote: https://github.com/roc-lang/roc/issues/5220
Let me know if that issue makes sense to you
ok
Hi everyone, just wanted to step into this channel and give a quick intro of myself as a new contributor as well as gather some potential input for my currently assigned issue! My name is Luigi. Currently an MSCS student with a lot of passion for PL design. I've worked with building my own language projects so I'm excited to contribute to something much larger and learn with you all
As for my current issue, I've asked to take on this one https://github.com/roc-lang/roc/issues/6962 and just wanted to gather some opinions on my current research and approach.
1) I'm thinking of sanitizing the input of package links in order to remove illegal characters in the way you would to sanitize SQL injections. The RFC speficiation for URI (https://datatracker.ietf.org/doc/html/rfc3986#autoid-1) gives a good run down of what characters are and aren't allowed so I'm currently thinking of using regex to sanitize the inputs
2) On top of this, would there be anything more to consider to further detect illegal URLs? Just looking for other ideas or things I may have missed.
Thank you all!
in order to remove illegal characters
I would prefer to not remove characters under the hood, but throw a parser error message with the illegal characters indicated. We can also show the URL with illegal characters removed in the error message.
Should we require https?
I think so, yeah
I feel like it would be smart to just error if the url contains any uncommon characters (that are allowed under rfc3986). The error would say e.g.:
The URL you provided contains characters that are rare in URLs:
<URL with rare characters indicated>
Take a good look and make sure you trust it. You can allow the URL by putting `weird-url` before it.
@luigim just a note; we could add restrictions one by one no need to do it all in 1 PR.
I'd like to start with just saying they're disallowed
and then if someone runs into a scenario where they're really necessary, we can revisit a design to potentially allow them with a warning by default
if the url contains any uncommon characters
To determine these characters we could find some AI code training dataset, extract all Cargo.toml files (and analogous files for other languages) and go through the characters in the URLs in those files.
Hi all, thank you for the clarification! I'll first work on just the detection aspect and then check in again soon.
@Anton That may be something interesting to look into as well. Thanks
Hi, just wanted to let y'all know I haven't disappeared off the face of the earth and am still intending to work on this (https://github.com/roc-lang/roc/issues/6962) when I finally get some free time! Been busy.
No worries. Take the time you need!
Yeah, no rush or anything. If you need help, I'm happy to find a time and jump on a call or something. :smiley:
Luke Boswell said:
Yeah, no rush or anything. If you need help, I'm happy to find a time and jump on a call or something. :smiley:
Thank you! I'll definitely take you up on that offer. Just eager to learn about the project more in depth as well
Hi :wave:. I really dig the language and want to contribute! I don't have any Rust experience and only minimal Zig experience so far, but I am willing to learn. Although are there other ways to contribute? For example Roc code or libraries you see useful that I could help build out? :blush:
Welcome Jamie :)
If you want to work in Roc there are many good first issues in the examples repo.
Good afternoon (or morning given your timezone), I am Robin a French dev based in the Netherlands with a bit of experience in Rust, no experience of Zig, but a lot of motivation. First of all, I must congratulate all the contributors of the ROC project as I am really impressed by its quality and have been really satisfied as a user. So satisfied that I would want to contribute as well. I have seen the following issue in the github repo: https://github.com/roc-lang/roc/issues/3139 . Is this issue still relevant if yes I would like to give it a shot
Welcome Robin :wave:
That issue is still free, there's no one working on it.
I'm happy to help you if you need any assistance getting started.
A lot of us joined the Roc project for the same reason: it's a great language, and we want to see it grow!
I might suggest before you make a PR that you read over the material mentioned in the issue and then come back here and make a discussion about it
There's a good deal of info that's potentially out of date.
though I totally get the value of discovery via writing code, of course feel free to try scaffolding something out and even doing a draft PR if that help you think about this
Hello everyone, I am a developer from China, currently working on some Data Infra related things. I have no experience with zig, or even compiler theory.
In my spare time, I always like to participate in some open source projects that I am interested in to learn. I have been involved in Calcite for more than a year (although my work does not use it). In the process of participating in Calcite, I found that I am very interested in type systems. Some people suggested that I could participate in some other projects with deeper levels to learn type systems.
I was deeply impressed by roc (I have been observing it for half a month).
If I want to start with the type system of roc, do you have any suggestions?
Cool.
I'm just a type system beginner too. I've started learning so I can hopefully help us reimplement the roc typechecker.
I found this YT series has been helpful for learning about the type system, maybe it will help you too? https://www.youtube.com/watch?v=b5VhYkvOk30&list=PLoyEIY-nZq_uipRkxG79uzAgfqDuHzot-
Thank you very much, I will try to participate in the roc type system in the future
@Cancai Cai the type system definitely has a lot of moving parts, let us know when you have time to work on Roc and we'll find some work for you!
Thank you, I might look at the implementation of some type systems in rust first, and in the process I may propose some small PRs (such as improving tests).
When I am ready, I am very happy to take on the task. I am ready to devote as much of my spare time to roc as possible, because this is a very complex project and it is worth my time to study it in depth.
:wave: hi there! i've been interested in contributing to roc for a little while now and i'm hoping to start a conversation on what some useful avenues would be! i have a little bit of experience with rust and with PL in general from grad school (but still am for all practical purposes a novice). i've been looking for ways to work on some type-theory / type-theory adjacent stuff in a real setting, mostly as a personal project. some of the proposals in the project ideas doc look pretty interesting! i've got roc built locally and i'm checking out some of the issues on github just to wet my feet but i'd love to chat about what might be fun and useful to work on :)
Welcome @aditya giri :)
I've been looking for ways to work on some type-theory / type-theory adjacent stuff
Do we have something accessible in the new compiler @Sam Mohr?
Looking towards my next pull request as a contributor... Since the link checker I have been drowning in the Roc Tutorial (which I think is so helpful so far).
@Anton any good first issues I could tackle again?
Cool @Magdiel Amor, the formatting of our AI docs could be improved. It currently looks like this:
Type Annotation
Str -> Bool
Description
Returns [Bool.true] if the string is empty, and [Bool.false] otherwise.
expect Str.is_empty("hi!") == Bool.false
expect Str.is_empty("") == Bool.true
But I think it should be something like this:
Returns [Bool.true] if the string is empty, and [Bool.false] otherwise.
expect Str.is_empty("hi!") == Bool.false
expect Str.is_empty("") == Bool.true
is_empty : Str -> Bool
Does that seem like something you're interested in?
You may want to inspect the raw markdown of my message for clarity
But I think it should be something like this:
We could actually just provide the source code without the implementation of the functions (like is_empty
).
Ok great I'm in
Anton said:
But I think it should be something like this:
We could actually just provide the source code without the implementation of the functions (like
is_empty
).
Sounds interesting...
Awesome, I'm going to eat lunch and will tell you where the changes need to be made after that
Ok have fun and enjoy your meal. :blush:
Only this function should need changes.
@Anton might need some help here. Have some time to spare?
Anton said:
You may want to inspect the raw markdown of my message for clarity
how do i do this please?
On zulip, if you click the three dots to the top right of the message, you can click on "view the original message". That will display the raw markdown.
Last updated: Jul 06 2025 at 12:14 UTC