# Releasing 3.9.3

**URL:** <https://forum.openrefine.org/t/releasing-3-9-3/2219>\
**Category:** Development & Design\
**Created:** [April 7, 2025, 5:54pm UTC](https://forum.openrefine.org/t/releasing-3-9-3/2219 "2025-04-07T17:54:09Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![Rory](https://dub1.discourse-cdn.com/flex017/user_avatar/forum.openrefine.org/rory/32/1517_2.png) [@Rory](https://forum.openrefine.org/u/Rory)\
**Post date:** [April 7, 2025, 5:54pm UTC](https://forum.openrefine.org/t/releasing-3-9-3/2219/1 "2025-04-07T17:54:09Z")

</div>

It seems we've had a few notable pull requests merged since the release of 3.9.2, so I'd like to propose releasing version 3.9.3 with the following updates:

- [Enable custom clustering for non-GREL expressions by b2m · Pull Request #7243 · OpenRefine/OpenRefine · GitHub](https://github.com/OpenRefine/OpenRefine/pull/7243)
  - Courtesy of @b2m, this change enables users to define and use clustering functions with languages other than GREL.

- [Include `contextPath` when returning a redirect response by SoryRawyer · Pull Request #7244 · OpenRefine/OpenRefine · GitHub](https://github.com/OpenRefine/OpenRefine/pull/7244)
  - This change updates HTTP redirect responses to include a user-specified path prefix if one was provided at startup.

- [Fix deserialization of RowAdditionOperation. by wetneb · Pull Request #7247 · OpenRefine/OpenRefine · GitHub](https://github.com/OpenRefine/OpenRefine/pull/7247)
  - From @antonin_d, this change should resolve the issue discussed here: [After adding rows and editing a cell, project failing to load](https://forum.openrefine.org/t/after-adding-rows-and-editing-a-cell-project-failing-to-load/2214)

As I've mentioned elsewhere, I will plan to do the release during [an office hour call](https://forum.openrefine.org/t/contributor-office-hours-april-2025/2209). If possible, I'll plan to do the release this Thursday, 10 April. Please chime in if you'd like to see other merged pull requests included in the release!

---

<div class="post-metadata">

**Author:** ![antonin\_d](https://dub1.discourse-cdn.com/flex017/user_avatar/forum.openrefine.org/antonin_d/32/32_2.png) [@antonin\_d](https://forum.openrefine.org/u/antonin_d)\
**Post date:** [April 10, 2025, 9:25am UTC](https://forum.openrefine.org/t/releasing-3-9-3/2219/2 "2025-04-10T09:25:55Z")

</div>

Yay! I won't be able to attend the release party but I'm cheering on the sidelines 🙂

---

<div class="post-metadata">

**Author:** ![Rory](https://dub1.discourse-cdn.com/flex017/user_avatar/forum.openrefine.org/rory/32/1517_2.png) [@Rory](https://forum.openrefine.org/u/Rory)\
**Post date:** [April 10, 2025, 2:41pm UTC](https://forum.openrefine.org/t/releasing-3-9-3/2219/3 "2025-04-10T14:41:43Z")

</div>

Hi everyone, there were a few issues collecting the planned changes for this release and so 3.9.3 is not going to be available today as originally planned. @antonin_d, would you be available to help talk through the issues we faced?

For context, this is how I approached the release, based on the documentation and observing the release process a few weeks ago:

1. Check out the `3.9` branch
2. Cherry-pick the merge commits for the pull requests listed above, as well as any commits they depend on
3. Try to rebuild the branch, which ultimately revealed that some changes were incomplete and the project would not compile.

Antonin, my impression was that point releases would use cherry-picked merge commits, and minor version releases would pull in everything from the `master` branch. Does that sound accurate? If so, do you have thoughts on how to resolve the issue of finding the right history to include if merge conflicts arise?

My apologies for the inconvenience of the delayed release. I know these fixes will resolve quite a few headaches, and I am hoping to get these changes released quickly.

---

<div class="post-metadata">

**Author:** ![antonin\_d](https://dub1.discourse-cdn.com/flex017/user_avatar/forum.openrefine.org/antonin_d/32/32_2.png) [@antonin\_d](https://forum.openrefine.org/u/antonin_d)\
**Post date:** [April 13, 2025, 12:35pm UTC](https://forum.openrefine.org/t/releasing-3-9-3/2219/4 "2025-04-13T12:35:43Z")

</div>

> [@Rory](#):
>
> my impression was that point releases would use cherry-picked merge commits, and minor version releases would pull in everything from the `master` branch. Does that sound accurate?

yes! Although the commits that are cherry-picked aren't "merge" commits, since we normally squash PRs when merging them.

> If so, do you have thoughts on how to resolve the issue of finding the right history to include if merge conflicts arise?

In the past, when conflicts arose, I would just solve them myself during this cherry-picking.  
If you prefer, you could instead make new PRs for the commits to be cherry-picked, which would be a new occasion to review the changes in their cherry-picked form (hence reviewing your conflict resolution in the same go).

If you need any help with porting any particular commit to the 3.9 release branch, I would be happy to open a PR doing so.

---

<div class="post-metadata">

**Author:** ![Rory](https://dub1.discourse-cdn.com/flex017/user_avatar/forum.openrefine.org/rory/32/1517_2.png) [@Rory](https://forum.openrefine.org/u/Rory)\
**Post date:** [April 14, 2025, 1:55pm UTC](https://forum.openrefine.org/t/releasing-3-9-3/2219/5 "2025-04-14T13:55:06Z")

</div>

Thanks, that's really helpful!

> [@antonin\_d](#):
>
> If you need any help with porting any particular commit to the 3.9 release branch, I would be happy to open a PR doing so.

Would you be able to take a look at [Fix deserialization of RowAdditionOperation. by wetneb · Pull Request #7247 · OpenRefine/OpenRefine · GitHub](https://github.com/OpenRefine/OpenRefine/pull/7247) ? I had some trouble finding the right set of changes to pull in to make that compatible with the 3.9 branch.

---

<div class="post-metadata">

**Author:** ![Rory](https://dub1.discourse-cdn.com/flex017/user_avatar/forum.openrefine.org/rory/32/1517_2.png) [@Rory](https://forum.openrefine.org/u/Rory)\
**Post date:** [April 14, 2025, 1:56pm UTC](https://forum.openrefine.org/t/releasing-3-9-3/2219/6 "2025-04-14T13:56:26Z")

</div>

> Although the commits that are cherry-picked aren't "merge" commits, since we normally squash PRs when merging them.

Ah good point, I'm being a little too informal with my git terminology. I was referring to the single squashed PR commit.

---

<div class="post-metadata">

**Author:** ![antonin\_d](https://dub1.discourse-cdn.com/flex017/user_avatar/forum.openrefine.org/antonin_d/32/32_2.png) [@antonin\_d](https://forum.openrefine.org/u/antonin_d)\
**Post date:** [April 14, 2025, 2:49pm UTC](https://forum.openrefine.org/t/releasing-3-9-3/2219/7 "2025-04-14T14:49:36Z")

</div>

Sure! I've made a PR for it at [Backport: Fix deserialization of RowAdditionOperation by wetneb · Pull Request #7254 · OpenRefine/OpenRefine · GitHub](https://github.com/OpenRefine/OpenRefine/pull/7254)

---

<div class="post-metadata">

**Author:** ![Rory](https://dub1.discourse-cdn.com/flex017/user_avatar/forum.openrefine.org/rory/32/1517_2.png) [@Rory](https://forum.openrefine.org/u/Rory)\
**Post date:** [April 15, 2025, 7:56pm UTC](https://forum.openrefine.org/t/releasing-3-9-3/2219/8 "2025-04-15T19:56:32Z")

</div>

Now that I've had time to look over the issues from last week (and with many thanks to @antonin_d's help) it looks like we're all set to release version 3.9.3 as part of Thursday's office hours call. Thank you for your patience, everyone!

---

<div class="post-metadata">

**Author:** ![Rory](https://dub1.discourse-cdn.com/flex017/user_avatar/forum.openrefine.org/rory/32/1517_2.png) [@Rory](https://forum.openrefine.org/u/Rory)\
**Post date:** [April 17, 2025, 2:57pm UTC](https://forum.openrefine.org/t/releasing-3-9-3/2219/9 "2025-04-17T14:57:15Z")

</div>

Hi all, 3.9.3 is now released with the fixes mentioned above. Thanks for the help, @antonin_d and @b2m!
