You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: _blogposts/2020-08-10-bucklescript-is-rebranding.mdx
+82-21Lines changed: 82 additions & 21 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -3,45 +3,106 @@ author: rescript-team
3
3
date: "2020-08-10"
4
4
category: compiler
5
5
badge: roadmap
6
-
title: "BuckleScript is Rebranding"
7
-
description: A new unified brand name for the BuckleScript platform
6
+
title: "BuckleScript & Reason Rebranding"
7
+
description: A new unified experience for the platform
8
8
---
9
9
10
-
## Refactoring our Brand
11
-
12
10
We're pleased to announce that BuckleScript is getting a brand new name: **ReScript**.
13
11
14
-
BuckleScript started with the idea that programmers deserve a great typed language that compiles to fast and readable JavaScript. This idea took root and, over the years, we've gradually started tackling the surrounding challenges, such as:
15
-
- a fast and reliable build system much needed in front-end development,
12
+
## History & Summary
13
+
14
+
-**OCaml** is a typed FP language compiling to bytecode and native code.
15
+
-**Js_of_ocaml** is based on OCaml and compiles to JavaScript for OCaml users.
16
+
-**BuckleScript** is a fork of OCaml that also outputs JavaScript, optimized (features, JS interoperability, output, build tools) for JS developers rather than OCaml developers.
17
+
-**Reason** is an alternative, JS-looking syntax layer over OCaml, plus extra tools. Reason used 1. BuckleScript to produce JavaScript output and 2. OCaml to produce native output. Most of the community focused on the former usage.
18
+
- Reason and BuckleScript shared most teammates, who wanted to double down on the JS use-case.
19
+
-**ReScript**, thus born, is the new branding for BuckleScript that reimplements or cleans up Reason's syntax, tools, ecosystem & docs into a vertically integrated experience.
20
+
- Reason project will continue serving its purpose of a syntax layer for native OCaml. Some folks might use Reason with Js_of_ocaml to output JS code.
21
+
22
+
## Community Situation
23
+
24
+
BuckleScript started with the idea that **JavaScript programmers deserved a great typed language with a fast and lean toolchain**. This idea took root and, over the years, we've gradually accomplished feats such as:
25
+
- a state of the art compiled JavaScript output that rivals hand-written JS,
26
+
- a fast & reliable toolchain much needed in front-end and Node development,
16
27
- various JS interop features that spawned an ecosystem of well typed libraries,
17
28
- a production-ready standard library,
18
-
- and recently, a fresh, solid syntax.
29
+
-[and recently](/blog/bucklescript-8-1-new-syntax), a fresh syntax made by a major contributor of Reason's old syntax.
19
30
20
-
These developments have attracted many people into our community. But one bigger challenge persisted: newcomers dropped out at the sheer amount of extra incongruent tools and learning overhead from having to understand OCaml concepts, Reason concepts, and BuckleScript's own concepts. Take, for example, what's required to make a ReasonReact app:
31
+
These developments have attracted many people into our community. But one bigger challenge persisted: newcomers dropped out at the sheer amount of extra incongruent tools and learning overhead from having to understand OCaml concepts, Reason concepts, and BuckleScript's concepts. Take, for example, what's required to make a React app using BuckleScript:
21
32
- Knowledge of React.
22
33
- Knowledge of JS.
23
-
- Knowledge of ReasonReact's specific idioms (that we've tried hard to keep to a minimum).
24
-
- Knowledge of OCaml idioms, on top of which BuckleScript is built.
34
+
- Knowledge of BuckleScript's specific bindings to React (that we've tried hard to keep to a minimum).
35
+
- Knowledge of OCaml idioms, which leaked through BuckleScript.
25
36
- Knowledge of BuckleScript's JS interop and the build system.
26
37
- Knowledge of the Reason syntax.
38
+
- Avoiding the distractions of OCaml and Reason's unrelated, native-oriented build tools, package manager, etc.
27
39
28
-
Ironically, the more documentation we pile up, the more mental overhead newcomers suffered. During the various BuckleScript & Reason meetups, we've frequently seen folks' enthusiasm crushed at the sheer prospect of making a web app while keeping 5+ tabs' worth of documentations open. This was discouraging, both for said eager developers and for us maintainers.
40
+
Ironically, the more documentation we pile up, the more mental overhead newcomers suffered. During the meetups, we've frequently seen folks' enthusiasm crushed at the sheer prospect of making a web app while keeping 5+ tabs' worth of documentations open. This was discouragingfor everyone.
29
41
30
42
The adoption barrier is real, and it's about time we finally solve it.
31
43
32
-
Today, we'll start to truly unify the various BuckleScript-related projects under a single name: ReScript. This includes:
33
-
- The compiler, the build system and the syntax unified and shipping under a single install. Likewise for future efforts such as editor plugin.
34
-
- A single documentation site which covers the above: [rescript-lang.org](https://rescript-lang.org).
35
-
- Streamlined communication through said website, a [new dedicated forum](https://forum.rescript-lang.org) and a new [Twitter account](http://twitter.com/rescriptlang).
44
+
## The Rebranding
45
+
46
+
Today, we'll start to truly unify the various BuckleScript-related projects under the ReScript umbrella. This includes:
47
+
- The compiler, build system and the new syntax unified under a single installation.
48
+
- Doubling down on editor tooling for ReScript usage.
49
+
- A single documentation site (this one), which unifies all the docs and greatly trims down on redundant and stale info.
50
+
- Streamlined communication through said website, a [forum](https://forum.rescript-lang.org) and a new [Twitter](http://twitter.com/rescriptlang).
36
51
- The renaming of various tools, always in a backward-compatible way.
37
52
38
-
In short, all JS-related tools are now called ReScript. Previously, due to the messy situation, most real-world BuckleScript adoption came from a few heroic community members suffering through the technical and social risk of spreading our tech to their coworkers. From today onward, you can simply tell to your coworkers: "this is ReScript", and point to them a clear starting point instead of sending them to various incompatible sources, with a risk of losing goodwill and credibility.
53
+
In short, all JS-related concepts previously under disparate Reason and BuckleScript ecosystems are now called ReScript. Previously, due to the messy situation, most real-world BuckleScript adoption came from a few heroic community members suffering through the technical and social risk of spreading our tech to their coworkers. From today onward, you can simply tell to your coworkers: **"this is ReScript"**, and point to them a clear starting point.
54
+
55
+
It's worth emphasizing that while this rebranding seems disruptive, it's mostly a bunch of name changes for the same tech. The Q&A below addresses some of the worries on existing code.
56
+
57
+
## Q & A
58
+
59
+
**What's that recently released BuckleScript syntax called?**
60
+
61
+
There's no dedicated name for the syntax anymore. It's simply called the ReScript syntax. The extension is `.res` and `.resi`. Existing tools operating on `.ml`, `.mli`, `.re` and `.resi` continue working.
62
+
63
+
**Will there be a migration script to gradually convert our code to the new syntax?**
64
+
65
+
Yes. See our [migration page](/docs/manual/latest/migrate-from-bucklescript-reason). You can mix and match old and new code for a smoother transition.
66
+
67
+
**Will BuckleScript (now ReScript) break my existing code?**
68
+
69
+
No. The new syntax & tools sit alongside the existing code. We **won't** remove OCaml and Reason support from ReScript for a long time.
70
+
71
+
**What's the editor tooling story?**
72
+
73
+
Much more streamlined now! See our [Editor Plugins](/docs/manual/latest/editor-plugins) page.
74
+
75
+
Reason-language-server will continue working as-is for existing usage. We as first party don't work on ocaml's language server.
76
+
77
+
**Will I be able to continue writing OCaml/Reason and compile to JS using BuckleScript in the future?**
78
+
79
+
It follows from our previous answer that yes, you will still be able to. Though community-wise, we're encouraging the new syntax and tools.
80
+
81
+
The compiler will also continue to acquire upstream OCaml features when relevant.
82
+
83
+
**Will the new syntax prompt the move to a non-OCaml AST?**
84
+
85
+
No, since that'd break existing ppxes (e.g. internationalization, graphql). If we feel the need to adopt a new AST in the future, it'll again be purely additive.
86
+
87
+
**Will we have 3 syntaxes to worry about?**
88
+
89
+
The plan is to emphasize the new syntax and focus our tooling around it. It'll be confusing to temporarily have different syntaxes in the same codebase, but that's the cost of a proper migration support. We hope this is transient; it's darkest before the dawn.
90
+
91
+
**How do we address the fragmentation of the community by the new syntax?**
92
+
93
+
Folks who have been in the community for a while know that there have always been opposing philosophies regarding newcomer funneling, tooling emphasis, library preferences, etc., due to differing cultures.
94
+
95
+
Rather, it's more accurate to say a few pieces of awkwardly shared infrastructure held opposing forces together. This is true when Reason spun off from OCaml's engineering, and true when BuckleScript entered the picture.
96
+
97
+
We can't realistically always release new features that are a compromise of various philosophies, but that's exactly what we've been trying to do for the past few years. BuckleScript's reimplementation of the Reason syntax is a departure from that (much tighter integration with the compiler, more JavaScript/TypeScript-friendly philosophy, fewer compromises, faster, less buggy). We believe that its quality speaks for said departure.
98
+
99
+
The ReScript community will comprise of the majority of the old Reason community, most of which focused on the BuckleScript part already. The remainder of the Reason community still exists and will now focus on their existing use-case better.
100
+
101
+
**The new changes make me worried about the future support I'm going to receive from the team.**
102
+
103
+
_Retrospective edit, in 2021_: suffice to day that we've been doing well =).
39
104
40
-
It's worth emphasizing that while this rebranding seems to be very disruptive, in reality it's mostly a bunch of name changes for the same tech. To reiterate our stance on existing userland code:
41
-
- Please read our [previous post](https://reasonml.org/blog/a-note-on-bucklescripts-future-commitments) on backward compatibility with pure OCaml & Reason syntax.
42
-
- The current Reason website will keep existing, with proper redirects to our new one when relevant. Existing Reason-to-JS users' code keep working, as per above post. Reason itself will continue tackling the parts BuckleScript didn't tackle before, such as native.
43
-
- The various BuckleScript binaries will keep working. Instead of renaming those, we'd create new binaries instead.
44
-
- The BuckleScript docs will redirect to the new site without breaking links.
105
+
## Conclusion
45
106
46
107
Thank you for your support and keep shipping. A brighter future awaits us!
0 commit comments