
Refer to the CHANGELOG for all info. --------- Co-authored-by: Wouter van Wageningen <wouter.vdub@yahoo.com> Co-authored-by: Josh Munic <jpmunic@gmail.com> Co-authored-by: Jonathan Haas <haasjona@gmail.com>
126 lines
5.4 KiB
Text
126 lines
5.4 KiB
Text
---
|
||
title: 'Announcing FreeSewing v3.0'
|
||
caption: 'This picture by Engin Akyurt seems like the sort of understated celebration that is suitable or this announcement'
|
||
date: '2023-09-30'
|
||
intro: 'FreeSewing 3.0 is finally here. The 3.0 release culminates more than a year of work, and comes just over four years after the v2.0 release. What I’m saying is: I don’t make announcements like this often, and it’s a big deal. You should get excited.'
|
||
authors: 1
|
||
---
|
||
|
||
FreeSewing 3.0 is finally here.
|
||
|
||
FreeSewing is the leading open source platform for made-to-measure sewing
|
||
patterns, loved by home sewers and fashion entrepreneurs alike.
|
||
|
||
<!-- truncate -->
|
||
|
||
The 3.0 release culminates more than a year of work, and comes just over four
|
||
years after the v2.0 release. What I'm saying is: I don't make announcements
|
||
like this often, and it's a _big deal_. You should get excited.
|
||
|
||
## Breaking changes
|
||
|
||
Let's start with the obvious: This is a major release so there are breaking changes.
|
||
Listing all of them would be rather challenging, and probably not that useful.
|
||
The first pre-release versions of FreeSewing 3 is almost a year old, and all of
|
||
the people who contributed designs have either ported their designs, or I
|
||
did it for them.
|
||
|
||
Still, I want to list three breaking changes that are super obviously going to
|
||
break your stuff if you rely on FreeSewing code;
|
||
|
||
- **FreeSewing 3 is ESM only**: Migrating a large Javascript project to ESM
|
||
modules is enough to make even the most seasoned developers break down and
|
||
cry, but it's done.
|
||
- **FreeSewing 3 uses named exports**: There are obviously some places where a
|
||
default export is required (looking at you NextJS) but whereever we can, we
|
||
now use named exports exclusively because we all know those are better.
|
||
- **FreeSewing 3 requires Node 18 or newer**: I recommend lts/hydrogen
|
||
|
||
With that out of the way, let's talk about what's new.
|
||
A lot of work went into this release, and I couldn't possibly cover all of it.
|
||
But allow me to name-check some of the more fundamental changes.
|
||
|
||
## Designs are now JBOP
|
||
|
||
A big driver for the decision to freeze the v2 branch and start working on v3
|
||
was to make it easier to mix-and-match parts from various designs.
|
||
|
||
Design inheritance was already possible in v2, but because the configuration
|
||
was handled on the design level, it required careful re-configuration of
|
||
(required) measurements, options, part dependencies, and so on. It was possible
|
||
but came with a lot of friction.
|
||
|
||
In v3, all configuration is moved to the part level, and a design is now not
|
||
much more than _just a bunch of parts_ (JBOP). It is the parts themselves that
|
||
configure what they need. This includes anything from the measurements they
|
||
require, the options they provide, the plugins they use, their dependencies,
|
||
and so on.
|
||
|
||
This way, re-use parts from various designs, and all of their configuration,
|
||
dependencies, plugins, and so on will follow.
|
||
|
||
## Less boilerplate
|
||
|
||
Creating a design has also become a lot simpler, you essentially pass your list
|
||
of parts to our `Design` constructor and you're done:
|
||
|
||
```mjs
|
||
import { Design } from '@freesewing/core'
|
||
|
||
export const MyDesign = new Design({
|
||
parts: [
|
||
/* ... your parts here ... */
|
||
],
|
||
})
|
||
```
|
||
|
||
Speaking of less boilerplate, in v2, the most common plugins were already
|
||
bundled in the `@freesewing/plugin-bundle` package, but you still had to
|
||
include them in your design. In v3, those plugins have moved to the
|
||
`@freesewing/core-plugins` package, and will be loaded by FreeSewing's core
|
||
library by default (although you can opt out of that).
|
||
|
||
## Plugins with more powers
|
||
|
||
In addition to providing macros, snippets, or tapping into FreeSewing's
|
||
lifecycle hooks, plugins can now also add methods to the store.
|
||
|
||
This is allows further extending FreeSewing with whatever exciting thing you
|
||
can thing of. As an example, the way logging is handled in the core library
|
||
was re-implemented based on this. Which means that if you would like a
|
||
different logging solution, you can simple provide your own log handler in a
|
||
plugin.
|
||
|
||
## New development environment
|
||
|
||
With the version 3 release comes a new development environment that closely
|
||
mimics what we will be providing at FreeSewing.org (more on that later).
|
||
|
||
The development environment ships with various templates that you can use to
|
||
either start a design from scratch, or extend one of our blocks. You don't have
|
||
to choose one over the other either, you can use all of these at the same time,
|
||
and if you want even add more.
|
||
|
||
Our new development environment now allows (optionally) integrates with the
|
||
FreeSewing backend. You can authenticate with your FreeSewing account so you
|
||
can (re)use your measurements while working on your designs.
|
||
|
||
## Not everything is versioned
|
||
|
||
There's a lot more I could talk about, but I need to address the elephant in
|
||
the room: So we have 3.0 now, when do non-developers get to use this?
|
||
|
||
Well... I'm going to need a bit more time. Everything is sort of ready, but
|
||
some things always a bit more time because you can't really to them in advance.
|
||
Things like translation, some more testing, not to mention migrating 50k users
|
||
to a completely different infrastructure.
|
||
|
||
So as a regular user of FreeSewing.org who is not itching to spin up a
|
||
development environment, you will need to hold on a little longer. But
|
||
clearly, it's going to be soon now. I'd say a matter of weeks, rather than
|
||
months.
|
||
|
||
In the meanwhile, if you find a problem or bug, create an issue because
|
||
FreeSewing 3 is now production-ready and fully supported.
|
||
|
||
joost
|