Skip to content

Commit aeceb18

Browse files
Add some pics
1 parent bd6c7c4 commit aeceb18

9 files changed

+71
-42
lines changed

_blogposts/2024-07-08-retreat-recap.mdx

+50-34
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,29 @@
11
---
2-
author: rescript-team
2+
author: rescript-association
33
date: "2024-07-08"
4-
previewImg: /static/blog/compiler_release_11_1.jpg
4+
previewImg: /static/blog/rescript_retreat_2024.jpg
5+
articleImg: /static/blog/rescript_retreat_2024.jpg
56
title: ReScript Retreat Recap
67
description: |
7-
Unleashing ReScript from React
8+
Accelerating ReScript development through meeting in-person.
89
---
910

1011
From the 23rd to the 26th of May, the ReScript team invited many contributors to hack on ReScript. In the end almost all of them responded to the invitation and thus, 15 people from all over the world traveled to Vienna, Austria to meet in person, to do talks, discussions and decisions about and contributions to the ReScript toolchain.
1112

12-
# Day 1
13+
## Day 1
1314

1415
On the first day, we started with some in-depth talks about compiler development. The first talk was about the ReScript parser and formatter, the second one about the compiler itself.
1516

16-
## Brief overview of parser development
17+
### Brief overview of parser development
1718

1819
A talk by Maxim Valcke (@BinarySearch)
1920

21+
<Image
22+
src="/static/blog/rescript_retreat_2024_talk_parser.jpg"
23+
caption="Maxim Valcke giving an introduction about parser development"
24+
withShadow="true"
25+
/>
26+
2027
Maxim started with a little bit of history why the parser was made: The existing parser we used with ReScript's predecessor BuckleScript, which is called ReasonML, was created with a parser generator which had the following drawbacks:
2128

2229
- harder to propose changes
@@ -36,7 +43,7 @@ Furthermore, the comments table was explained. As comments are not part of the A
3643

3744
The full talk has been recorded and can be watched here: [TODO - Youtube Link].
3845

39-
## Brief overview of compiler development
46+
### Brief overview of compiler development
4047

4148
A talk by Cristiano Calcagno (@ccrisccris)
4249

@@ -54,7 +61,13 @@ The final layer is the JS dump, which is the actual JavaScript code generation.
5461

5562
Again, the full talk has been recorded and can be watched here: [TODO - Youtube Link].
5663

57-
## Beginning of group work
64+
### Beginning of group work
65+
66+
<Image
67+
src="/static/blog/rescript_retreat_2024_group_work.jpg"
68+
caption="Some core contributors thinking hard"
69+
withShadow="true"
70+
/>
5871

5972
After the talks and a small break, the contributors split up in multiple small groups of 2-4 people. Every group had a specific topic assigned:
6073

@@ -66,36 +79,27 @@ After the talks and a small break, the contributors split up in multiple small g
6679

6780
The contributors worked until the lunch break on those topics, and continued that work until dinner.
6881

69-
# Day 2
82+
## Day 2
7083

7184
First thing in the morning was to conclude the work from the first day, and there were already some interesting advancements.
7285

73-
Group 1, New Build System (Codename rewatch):
74-
75-
- CI build builds rewatch already
76-
77-
Group 2, rescript-lang.org Playground Output
78-
79-
- Console output works
80-
81-
Group 3 ReScript Core
82-
83-
- Removed bs send pipe / data-last apis in v12
84-
85-
Group 4 for loops / iterators
86-
87-
- created a prototype for iterator, just as a library for now where continue and break are modeled as exceptions
88-
89-
Group 5 Syntax / JSX
90-
91-
- comment disappearing in uncurried mode fixed
92-
- enabled uncurried mode in parser tests
93-
- import syntax revisite
94-
d
86+
- Group 1, New Build System (Codename rewatch):
87+
- CI build builds rewatch already
88+
- Group 2, rescriptlang.org Playground Output:
89+
- Console output works
90+
- Group 3, ReScript Core:
91+
- Removed bs send pipe / datalast apis in v12
92+
- Group 4, for loops / iterators:
93+
- created a prototype for iterator
94+
- just as a library for now where continue and break are modeled as exceptions
95+
- Group 5, Syntax / JSX:
96+
- comment disappearing in uncurried mode fixed
97+
- enabled uncurried mode in parser tests
98+
- import syntax revisited
9599

96100
Next up was a talk about how to contribute to editor tooling.
97101

98-
## Talk about editor tooling
102+
### Talk about editor tooling
99103

100104
A talk by Gabriel Nordeborn (@zth)
101105

@@ -111,7 +115,7 @@ Working on editor tooling is working with broken code a lot. So the main challen
111115

112116
The full talk has been recorded and can be watched here: [TODO - Youtube Link].
113117

114-
## Discussion about ReScript's Governance
118+
### Discussion about ReScript's Governance
115119

116120
Afterwards we had a group discussion about how to elevator pitch ReScript and about ReScript's roadmap.
117121

@@ -123,14 +127,26 @@ After the discussion group work continued until the evening. Some people already
123127

124128
People continued group work and gathered together at a viennese winery in the evening.
125129

130+
<Image
131+
src="/static/blog/rescript_retreat_2024_winery.jpg"
132+
caption="Contributors enjoying refreshing food and drinks after working hard"
133+
withShadow="true"
134+
/>
135+
126136
## Day 4
127137

128-
The remaining people even continued work on sunday, with only a couple of hours of city sightseeing and an awesome final Viennese lunch.
138+
The remaining participants even continued work on sunday, with only a couple of hours of city sightseeing and an awesome final Viennese lunch.
129139

130140
## Conclusion
131141

132142
After the retreat, most participants stated that they want to do it again and overall it was a very productive but also fun event for all of us. So it is fairly safe to say that there will be a ReScript Retreat in 2025, at least as long as the ReScript Association is able to stem it financially.
133143

134144
## Our Sponsors
135145

136-
The ReScript Association paid for all the participants hotel rooms and some of the lunches and dinners. On the first three days we worked at a coworking space which was paid for by the Vienna-based company [cca.io](https://www.cca.io/), which also happens to employ two of our contributors.
146+
<Image
147+
src="/static/lp/cca-io.svg"
148+
size="small"
149+
caption="Thanks to cca.io for sponsoring our retreat venue"
150+
/>
151+
152+
The [ReScript Association](https://rescript-association.org/) paid for all the participants hotel rooms and some of the lunches and dinners. On the first three days we worked at a coworking space which was paid for by the Vienna-based company [cca.io](https://www.cca.io/), which also happens to employ two of our contributors.
2.16 MB
Loading
Loading
Loading
Loading

src/components/Image.res

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
@react.component
2-
let default = (~src: string, ~withShadow=false, ~caption: option<string>=?) => {
3-
<Markdown.Image src withShadow ?caption />
2+
let default = (~src: string, ~size=#large, ~withShadow=false, ~caption: option<string>=?) => {
3+
<Markdown.Image src size withShadow ?caption />
44
}

src/components/Markdown.res

+12-4
Original file line numberDiff line numberDiff line change
@@ -474,20 +474,28 @@ module Strong = {
474474

475475
module Image = {
476476
@react.component
477-
let make = (~src: string, ~withShadow=false, ~caption: option<string>=?) => {
477+
let make = (~src: string, ~size=#large, ~withShadow=false, ~caption: option<string>=?) => {
478+
let width = switch size {
479+
| #large => "w-full"
480+
| #small => "w-1/4"
481+
}
482+
478483
let shadow = if withShadow {
479484
"shadow-md"
480485
} else {
481486
""
482487
}
483-
<div className="mt-8 mb-12 md:-mx-16">
488+
489+
<div className={`mt-8 mb-12 ${size === #large ? "md:-mx-16" : ""}`}>
484490
<a href=src rel="noopener noreferrer">
485-
<img className={"w-full " ++ shadow} src />
491+
<img className={width ++ " " ++ shadow} src />
486492
</a>
487493
{switch caption {
488494
| None => React.null
489495
| Some(caption) =>
490-
<div className="mt-4 text-14 text-gray-60 md:ml-16"> {React.string(caption)} </div>
496+
<div className={`mt-4 text-14 text-gray-60 ${size === #large ? "md:ml-16" : ""}`}>
497+
{React.string(caption)}
498+
</div>
491499
}}
492500
</div>
493501
}

src/components/Markdown.resi

+6-1
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,12 @@ module Strong: {
155155

156156
module Image: {
157157
@react.component
158-
let make: (~src: string, ~withShadow: bool=?, ~caption: string=?) => React.element
158+
let make: (
159+
~src: string,
160+
~size: [#large | #small]=?,
161+
~withShadow: bool=?,
162+
~caption: string=?,
163+
) => React.element
159164
}
160165

161166
module Video: {

src/components/MarkdownComponents.res

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ type t = {
1111
@as("Intro")
1212
intro?: React.componentLike<Intro.props<React.element>, React.element>,
1313
@as("Image")
14-
image?: React.componentLike<Image.props<string, bool, string>, React.element>,
14+
image?: React.componentLike<Image.props<string, [#large | #small], bool, string>, React.element>,
1515
@as("Video")
1616
video?: React.componentLike<Video.props<string, string>, React.element>,
1717
@as("UrlBox")

0 commit comments

Comments
 (0)