First of all, I want to apologize for the lack of communication / project management in the past few months. When we founded the ReScript Association and relaunched the rescript-lang.org website, it was a very important goal of mine to maintain an active communication channel to give proper insights on the development processes, goals and milestones, and to involve our community contributors whenever possible. Now life is moving fast, and also on my (and other team member’s) front there have been some quite amazing life-changing events in a very short time.
Usually I don’t talk about private matters, but since I am quite involved in this project, I wanted to give you some insights on what I’ve been up to:
- From April 2021 - November 2021 we were in the process of planning and buying a new house while moving to the country side, which ended up as the most chaotic project of my life. We moved our stuff in the end of October, not knowing that we will be without water, nor toilet, nor wired internet for almost a month. After our plumber fixed the water supply, it turned out that some pipes weren’t properly connected, so we have been trying to fix a water damage since the beginning of January. It is now April 2022, and we are still waiting for the official hand-over document of the house, so I can’t even tell how many hours I wasted on phone calls to all the different parties involved. Additionally it seemed that our construction company never bothered to set up well-defined property contracts, so I also had to dive into an extremely complex rabbit hole of ambiguous property laws. Most of the stuff is now pending and in progress, but will still take some time to resolve. Luckily the hard work has been done, so I am slowly released from this organizational nightmare
- In between I switched from freelancing to a full time employment-ship at a startup called Ketryx, creating a platform that helps medical device builders to develop compliant, well-regulated safety-critical software (located in Vienna / Boston).
- And last but no least: In mid of September 2022 we will be eagerly awaiting our first child as well
(Aside: I guess this explains the big hole in my Github Contribution Graph, for those who checked )
Even going through all of this stress, I wasn’t completely gone though. I kept in touch with motivated contributors like @zth and of course @cristianoc, @Maxim and @rickyvetter to plan what we should be focusing on while Bob is on parental leave.
The core team has been pretty silent for a while. I have been tuning in and out (doing internal communications / project / release management / reading forum posts) depending on my private workload. Bob has been mentioning his return somewhere mid of this year to continue his work on the compiler.
Cheng and Maxim also had some private concerns that forced them to take a break, but we are in a tight loop to constantly exchange ideas. Cristiano has been quite active on the editor tooling and made sure the low level infrastructure is running smoothly.
Ricky is currently busy with life and career; we keep exchanging ideas on the new JSX v4 spec though.
So generally speaking there’s still activity going on, but everyone is taking it easy for now to recharge.
Due to all the impediments and personal road blockers, we didn’t feel confident about our original release cycle plans. So we will go back to square 1 and remove the release date plan (the visual graph about v10, v11, v12 … release dates) from our docs and just focus on the tasks / version goals instead. This mistake was on me — I wanted to have some reliable schedule and release dates but underestimated the uncertainty of OSS.
Ultimately, we will regularly post updates on the roadmap anyways, so we will make sure everyone is informed on the current state and potential release dates (kinda like with this post), but we will not set dedicated timelines for specific releases.
v10 release will most likely be postponed to a later point this year where we feel confident with the feature set. I think it’s more realistic that we are aiming for a
9.2.0 version that will give us a lot of improvements already (and eventually proper M1 support as well).
In the following sections I will try to highlight the current work and planned tasks for the different parts of the platform.
Bob has been working on some type system / build system essentials, may it be some experimenting or actual implementation:
- RFC: More general type checking for structural typings
- RFC: Remove Uncurried function types, have uncurried calls by default, opt-in curried
- RFC: private by default for values
- New pattern match compiler that will give us more freedom for data type encodings
Also there’s currently the idea to merge the
rescript-compiler projects: https://github.com/rescript-lang/rescript-compiler/pull/5268
This PR still raises some questions, so as for now, all syntax contributions should continue on the original
rescript-syntax project to keep things simple. The advantages of merging the compiler and syntax project are obvious at first, but from a project management perspective I kinda enjoyed the separate repos for issue tracking / repo complexity reasons. Also it might be a productivity killer to switch existing processes. We have contributors that feel comfortable in the current repo, and there’s some extra work involved, such as porting the commit history / issue tracker. We’ll let you know as soon as we figured this out.
Miscellaneous tasks planned work for the compiler (at least the work I am capable of organizing):
- Update all the READMEs and CONTRIBUTION guidelines (there’s actually currently a way to compile the compiler with modern OCaml versions for development purposes, but there’s no guidance on that)
- Document the release process and make sure we have multiple ppl with publishing rights
- Get a more recent
v9release out that includes all the new syntax changes and other good stuff
- Cleaning up all occurrences of OCaml code in error messages, warnings etc
- Better error messages for specific error scenarios (e.g. see some POC in the vscode extension repo)
- Sync up Js / Belt docstring modules with the data from rescript-lang.org (See pending PR)
- ReScriptify all the user-facing modules (Dom, Belt, Js, etc.)
- Finally discuss the way forward with
Belt. Originally I wanted to upstream
Js.Promise2, but ultimately there was no consent in the end to actually do it. Now we are thinking on creating a
@rescript/jspackage to make the
Jsmodule a third-party package (basically taking @bloodyowl 's rescript-js as a foundation).
For the near future, I’d generally like to find a way to share responsibility of the compiler repository so that newcomers have an easier time contributing to the actual compiler infrastructure, and also allows us to do regular releases managed by multiple people.
The syntax got some recent bug fixes that will improve some annoying issues when e.g. reformatting punned record fields, or parse empty function bodys (see list of recently merged PRs).
As mentioned before, the syntax / compiler need to be kept in sync for releases, so the new syntax changes are not released yet. We’ll coordinate with Bob and try to establish sustainable processes for future releases.
More work that’s planned to be done:
- More bugfixes
- Docstring syntax support:
/** */instead of
- JSX v4: We are working together with @rickyvetter to spec out the new JSX format in the parser (see [RFC] ReScript React)
- Infix operator support for a dedicated set of math operators
- A small extraction tool that helps generating the doc pages for rescript-lang.org (but may also be used for your own projects)
- Merging syntax repo with the compiler?
- Have a foromal grammar doc for our language (BNF). So if there’s anyone interested to draft such kind of document, happy to collaborate and give directions.
On the VSCode front, @zth and @cristiano have been doing great work to fix the biggest pain points. There have been a few posts about the development recently, so here’s a list for the details:
- VSCode extension status update
- [ANN] Call for testing - improved syntax highlighting in VSCode extension
- [ANN] Call for testing - refactors and code actions in VSCode extension
Thanks to @zth for keeping an eye on building new features and helping Cristiano to build the right building blocks.
The docs are generally in some good shape, although of course there’s always room for improvement content wise. There’s a bunch of good issues on the issue tracker, in case anyone feels inspired to work on some docs (check out our Contribution guidelines for technical writing!).
From a technical side, here are some improvements I’d love to see on the ReScript playground (without going overboard with the complexity / entropy of the final code):
- Playground output panel: Make it possible to show
Js.logoutput in the playground itself
- Module importing: Make it possible to side-load certain npmjs dependencies, or even separate ReScript modules
- Upgrade to the most recent CodeMirror version: This one is tricky since it involves writing a CM AST parser for ReScript IIRC → might be useful to have our grammar laid out in BNF beforehand
- Improve type-hints for specific data structures (requires hacking on the JSOOified playground bundle, which probably needs some updating after we managed to get proper understanding of the current state of the compiler repo)
We’d like to involve the community more into our processes to essentially give them more power in shaping the direction of the project.
As a first attempt, we want to assemble some pairing teams to get things off the ground to make sure we are properly aligned on the tasks, vision and goals:
- @cristianoc, @zth. Gabriel and Cristiano had a good time working together on the editor tooling and already shipped some nice features. They will continue their work on the editor and keep an eye on editor stability / maintainability.
- @cknitt, @fham. They were using ReScript since Day 1, and their Vienna office is almost in the same street as mine. We will regularly meet up to align on the goals and pair program on syntax / tooling related issues. @Maxim will help us out with code reviews and mentoring.
I am pretty sure there are more people interested in taking tasks for certain parts of the project (syntax, editor, documentation, playground, compiler infrastructure, documentation generation, etc). There’s a lot of different things to do, so if anyone feels capable / committed on a specific topic, we can hopefully do a similar pairing setup with other folks as well.
I also wanted to take the opportunity and also set up an online meeting to get together and discuss all of the topics mentioned above. There’s probably a lot of questions and ideas and we’d like to discuss them.
Target date will be 2022-05-19T18:00:00Z. Details will be announced in a separate thread.
As soon as we find the right format, we could also set up a regular monthly meeting that allows us to give an update on all the tasks we are working on.
Back then in 2018 / 19, we had ReasonConf as one of our most important organizational tools to get the community together and do some serious marketing for our platform. Unfortunately due to the pandemic, it was pretty much impossible for us to organize any kind of events in the past two years.
Although I don’t feel comfortable organizing a 200 person event anytime soon, I’d be pretty keen on organizing a smaller community retreat event with up to 40-70 attendees. The event itself would be pretty free-form — workshops, roadmap planning, maybe some talks and a lot of on-site collaboration to work on the language (together with active / alumni contributors).
The event could potentially take place in March / April 2023 in Vienna. I am crossing my fingers that the pandemic will not get any worse until then.
Funding can partly be provided via the ReScript Association to reduce the ticket price. I am sure there are also companies out there that would help us out being a sponsor. Of course if there’s anyone else interested in organizing events like this, I am happy to discuss the details.
This year, the Association has taken over the server costs for some parts of our community infrastructure (SimpleAnalytics, Mailgun, Digital Ocean instances for the ReScript, currently also the ReasonML forum) and will make sure to keep things running.
Since I’ve seen some statements about funding for a few times already, I also want to be clear that the ReScript Association actually has some small funds in the bank, but it is obviously not enough to fund a full time position on the project.
Generally speaking, we are capable of managing and distributing small funds for the community, but as for right now it seems like we will spend most of the money on infrastructure, community events and marketing (which IMO is easy to justify).
In an ideal world we’d get enough funding to set up a budget for a proper full time employee for the Association. Maybe one day we will be getting there, so keep this in mind.
I hope this post gives some good insights on the general health of the project. Work has been quite secretive, but IMO there has always been some good progress, especially on the tooling front.
I wanna thank everyone putting their time and effort to help us out, especially @zth who keeps me on my toes to get things organized, and all the active members answering all the questions on the forum.
I am looking forward talking to you all in the next community meetup in May!