1
0
Fork 0

feat(markdown): 2023q4 newsletter

This commit is contained in:
joostdecock 2023-10-01 15:32:20 +02:00
parent 30ea70b29b
commit 1edbf7d395
4 changed files with 1494 additions and 733 deletions

View file

@ -0,0 +1,378 @@
---
date: "2023-10-01"
edition: "2023q4"
intro: "Welcome to the 2023 Autumn edition of the FreeSewing newsletter."
title: "2023 Autumn edition"
---
Welcome to the 2023 Autumn edition of the FreeSewing newsletter.
Here's what's we've included for you today:
- 🎉 Announcing FreeSewing v3.0 (2-minute read - by joost)
- ⚠️ Breaking changes in FreeSewing v3 (1-minute read - by joost)
- 📦 FreeSewing designs are now JBOP (1-minute read - by joost)
- 🕵️ Behind the Seams: Jenni (6-minute read - by Jenni & Karen)
- 🙏 You have measurements, and I want them for our new site (2-minute read - by joost)
- 🇺🇦 Support for Ukrainian and a newsletter in multiple languages (1-minute read - by joost)
- 🤔 So when will FreeSewing.org run on version 3? (1-minute read - by joost)
 
---
 
## 🎉 Announcing FreeSewing v3.0
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 Im saying is: I dont make announcements
like this often, and its a big deal. You should get excited.
A lot of work went into this release, and I couldnt possibly cover all of it.
To give you a rough idea, FreeSewing's monorepo -- which holds all our code --
was created in early July 2018 when I migrated to a monorepo approach. Its
current state is the result of over 92K commits since that day.
Of those 92K commits, more than 45K are the work on v3, as you can see in this
output from when I finally got to merge v3 into the main branch (which was frozen since
August last year):
```
joost@machine:~/git/freesewing$ git status
On branch main
Your branch is ahead of 'origin/main' by 45197 commits.
(use "git push" to publish your local commits)
nothing to commit, working tree clean
```
Would it surprise you if I told you there were a few merge conflicts to resolve?
Anyway, I know commit count is a crude way to measure things. But it's somewhat
indicative of the effort expended that the work done over the last 13 months to
get to v3 by commit count is roughly similar to the work done in the 4 years
prior to that.
It's been an ambitious leap forward, and as I wrote in the previous edition of
this newsletter, at times it felt like I had bitten off more than I can chew.
Sticking the landing was also fraught with its own set of challenges, as
deciding what the release would look like requierd some tough decisions.
But we're in a great place now. After 15 alpha versions and 1 beta version,
version 3.0.0 of FreeSewing is now generally available.
I want to thank FreeSewing's patrons for their continued support, as well as
all those who contributed to this release, gave their input and feedback,
helped with translation, or just had a few nice words of encouragement to
spare. It was all needed to get to where we are today, and I'm very
appreciative to all of you.
 
---
 
## ⚠️ Breaking changes in FreeSewing v3
3.0.0 is a major release so there are breaking changes.
Listing all of them would be rather challenging, and probably not that
useful. But here are three 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 its 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, lets talk about whats new.
 
---
 
## 📦 FreeSewing 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, you can re-use parts from various designs, and all of their
configuration, dependencies, plugins, and so on will follow.
For our own designs, I expect to see this new modularity result in the
consolidation of common parts into a number of utility designs that are not
intended as stand-alone patterns, but rather as providers of common features.
As an example, plenty of designs need welt pockets, and today they each
implement their own. In the future, I expect a welt pocket will be something
you can just grab as an *off-the-shelf* part so to speak.
It's but one example, but it goes to show that the move to part-based
configuration not only makes things easier, it also opens up exciting new
avenues that weren't previously accessible.
 
---
 
## 🕵️ Behind the Seams: Jenni
Fans of the [FreeSewing Discord](https://discord.freesewing.org/) have probably
seen some of the awesome clothes Jenni has made for everyone in her family. We
chatted with Jenni to learn a little more about her background and journey to
becoming a FreeSewing contributor! The interview below has been edited for
length, and any errors, oversights, etc. are entirely the fault of the
interviewer.
### When and why did you start sewing? How did you learn about FreeSewing? Do you sew mostly for yourself, or for others like friends and family?
I gradually became aware of FreeSewing when I first started sewing and was
pretty confused by all this idea of 'hacking' patterns and modifying them to
fit your body. Being able to take really detailed measurements and then
generating a pattern to fit you well seemed like a great idea! I looked at it
longingly for a bit, I played with it for a bit but didn't actually try any of
the patterns for quite a while. Instead I used the patterns produced by one
indie designer in particular - Oliver + S kids patterns and Liesl & Co adult
sizes, produced by the same designer. Her patterns are very well explained and
the kids' patterns take into consideration the needs of that group very
directly (proportions, ease, usability). So I got better at sewing in general.
I sewed for myself and some family members and friends, mostly tops for other
people, but I also made some clothes for my kids. More and more I found that I
was ending up sewing stuff for my eldest more than other family members: my kid
is skinny anyway so there are some fitting challenges, but also they were / are
going through some gender dysphoria experiences as they grew older and came out
as non-binary.
There was a tipping point one day when they refused to wear any sort of
feminine-gendered swimming costume - and there was school swimming lessons
coming up shortly. Sewing to the rescue! I created a pattern for a Teagan and
Shin combo to make a swimming costume with separate top and bottom in a gender
neutral style that was acceptable. In fact due to timings we also ended up
buying a commercial onesie so that they had a choice of options, but being able
to confidently assure my kid that yes, there was something we could definitely
do, was very helpful in the moment. I made that Shin / Teagan combo for them,
but also a pair of Shin trunks for my younger kid (in a smashing flamey lycra!)
and one for my partner, who hates flappy boxer type swimmers and was a bit
short on useable speedos. My sister saw the Shin in the bright flame pattern
lycra and wanted one too, so I made another one! And I can see more being
needed as the originals grown out of, so I won't stop there.
I've also made my kid a number of Bruce boxers, with a flat front. They are
very gender euphoric as underwear! Lovely and jolly too, because of course you
can use all sorts of small bits of various knits so they end up very colourful.
And now I am starting to make some Aarons for my kid, to be used instead of a
commercial crop top / bralette. I will have to work out how to make them snug
without being too compressive although they do like some compression so we will
have to iterate I guess.
### How did you become a contributor? What has been your contributor work so far?
I'm not sure that I am much of a contributor really, despite vaguely wanting to
help. What I do do is to share my makes on Discord, and include information
about what was challenging and what went well. For instance, using FS patterns
for kids does have some difficulties in that clothing can come out as very snug
in the body (not enough ease proportionally) or in key areas like the neckline
(where it is snug to the neck but not really large enough to get a kid's head
through easily - again due to proportions). These are all things that can be
handled but it is worth looking out for specifically when trying something new.
I did manage to write a couple of Showcase posts and in principle I would be
happy to do some more of that, but I have so much going on at present in my
home and work life that realistically it gets squeezed out. For now I will
stick to gradually trying new patterns and feeding back on them in Discord!
### What sewing/coding project are you most proud of?
A standout project was a big cycling cape I made myself, based on the Folkwear
Patterns "Australian Drover's Coat". It hearks back to the rugged leather or
oilskin coats that you might wear as a rider in the Outback, only with more
hi-vis reflection for use in the (not so) mean streets of Oxford, UK. Not sure
whether it is the sewing project I am most proud of as such, though I am
definitely very pleased to have finished it! It was a real marathon, and
putting the press studs in was great fun (though also a bit nerve-wracking). My
partner wants me to make one for him, so that's pretty good too - once I can
face another marathon!
### What do you love the most about sewing? What do you hate the most about sewing? Whats the hardest part of sewing to you?
I enjoy the process of sewing (most of it! Buttonholes are a bit
nerve-wracking) and I enjoy the results too - looking at it, looking at others
wearing or using it, using it myself. Fitting things well is still a big
challenge, I dont feel I really understand it yet. I want to try Top Down
Centre Out for trouser fitting and I think I understand the concept but have
been a bit nervous of taking it on properly, I need to dedicate a slot of time.
### What would be your advice for starting sewists?
There's a sense in which a certain contradictory set of phrases are both true.
People like to say "If a thing's worth doing, it's worth doing properly" and of
course that's true; but I think that the converse is also true, at the same
time: "If a thing's worth doing, it's worth doing badly". Even if you can't do
it fully or completely, still do the thing! If you can only do part of it now
and part of it tomorrow and the last bit of it next week, still do the thing!
Sewing for kids was very liberating - even if it is far from perfect they will
still dig it (and even if it is super perfect they may take against it and
never end up actually wearing it). Do it, or don't do it - don't let the
question of 'can I do it well' be the thing that holds you back.
Pick a project where even if you do make mistakes it will still bring
enjoyment. A project where you learn a lot, or where you can give it away to
someone, or where you can enjoy the recipient when they wear it, or where you
will love the fabric even if there are things you will change next time.
More prosaically I would also say a project that either has really good robust
instructions or where you can ask others for help is going to be easier than
struggling away by yourself. I mean, unless that is the way you personally
learn best - for me, I need a scaffolding of understanding first.
 
---
 
## 🙏 You have measurements, and I want them for our new site
TL;DR: I would like to use your measurements. Read on for all details.
Ok, this requires a bit of backstory to explain so hear me out: FreeSewing is
all about made-to-measure sewing patterns. It's our thing, it's what we do, and
if you want to get the most value out of FreeSewing, then taking accurate
measurements is a necessary first step.
But here's the rub: To the casual visitor on our website -- say someone who
Googled *free sewing patterns* -- that's *a lot* of effort to go through just
to try the platform. This is why at some point we rolled out a range of
*standard sizes* that people could use instead of their own measurements.
But there's some obvious issues with this approach. First of all, standard sizing
is a lie, and doesn't exist. But it doesn't stop people from complaining that
*I know I am an XL but your XL did not fit me*. Which is of course our own fault
because when it comes to standard sizes, the only way to win is to not play.
Our sizing tables are also not at all perfect. For one thing, while they are
based on real people, the other sizes are graded up or down from there. So the
further you move away from the base model, the less confident I am that they
make a whole lot of sense. That's because for the most part, the proprtions
remain largely the same.
And that brings us to the thing that bugs me the most about this approach. You
see, we use this sizing table ourself to test the designs we put up at
FreeSewing.org. And because the variation in proportions is somewhat limited, we
are leaving some people behind, and that's not what we're about. It would be
much better if we could test our patterns not with a smoothly graded up and
down range of sizes, but rather on a selection of real people with all of the
variation that that entails.
In practical terms, we will be moving away from this idea of *standard sizes*
and instead FreeSewing will provide a list of *curated measurements sets*.
These will be complete sets of measurements from real people that we can use to
test our designs, but that will also be available to users who want to try the
platform.
The new (v3) FreeSewing backend also integrates with our new development
environment, so designers will be able to access these early in the design
process.
I have high hopes that such a readily available collection of curated
measurments will make it much easier for designers to support a wider ranger
of people and bodies. But, that is not going to happen until the grand total of
available measurements sets gets a bit higher than the number of 1 it stands at
today (that would be me).
So here is what I am looking for:
- You have to be willing to share a complete set of measurements
- You are also willing to share your height
- And you are willing to share a full-length frontal pictrue
Then I'd like to ask if you would consider adding your measurements to
FreeSewing's list of curated measurements sets. If so, just hit reply.
It would really help me out, and you'd be in good company 😉
 
---
 
## 🇺🇦 Support for Ukrainian and a newsletter in multiple languages
Something else that we've been working on -- spearheaded by some our our users
from Ukraine -- is to add support for Ukrainian to the website. That brings
the total of supported languages to 6, with English, Spanish, French, German,
Dutch, and now Ukrainian.
Internationalisation is a crucial aspect of making FreeSewing available to as
many people as possible. In this case, there's obviously also a great deal of
symbolism with the ongoing conflict in Ukraine. We could have thrown up a
banner to say we stand with Ukraine, but instead we opted for something a bit
more ambitious and made Ukrainian an officially supported language.
I also want to extend the same multi-language support to this very newsletter.
Once the new website goes live (more on that below) your language preference
will be taken into account, and the goal is to deliver you the next newsletter
in the language of your choice.
The real challenge thare is that I will need to learn to not write this thing
at the last minute 😂
 
---
 
## 🤔 So when will FreeSewing.org run on version 3?
Theres a lot more in v3 that I could write 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… Im going to need a bit more time. Everything is sort of ready, but some
things always take more time because you cant really do them in advance.
Things like translation, and some more testing.
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,
its going to be soon now. Id say a matter of weeks, rather than months.
The biggest outstanding hurdle is migrating the 50k+ users to a completely
different infrastructure. I've completely rewritten the FreeSewing backend (can't
believe I did not write about the exciting new backend features, but ok), and
switched from MongoDB to Sqlite as database, so this not only requires careful
planning, it's also slow because all data is encrypted at rest. So everything
needs to be decrypted, migrated, then re-encrypted again. And it's like, you
start the process before going to bed and then the next morning you find out that
user #32062 had some weird setting you didn't think about which caused things
to go off the rails, and now you have to start over.
Point is, FreeSewing has grown to a point where migrating all users has become
its own mini-project that's too intricate to just throw in with the v3 release.
But obviously, it will be my next move once I can uncross my fingers that 3.0.0
is as good as I think it is.
Thank you for sticking with me through all this. We're almost there now 😃

View file

@ -129,6 +129,7 @@
"remark-preset-lint-consistent": "^5.1.1",
"remark-preset-lint-recommended": "^6.1.2",
"tailwindcss": "^3.0.7",
"unified": "^11.0.3",
"yarn": "^1.22.19"
},
"packageManager": "yarn@1.22.19"

View file

@ -2,10 +2,11 @@ import fs from 'fs'
import path from 'path'
import axios from 'axios'
import { unified } from 'unified'
import markdown from 'remark-parse'
import remark2rehype from 'remark-rehype'
import format from 'rehype-format'
import html from 'rehype-stringify'
import remarkParse from 'remark-parse'
import remarkRehype from 'remark-rehype'
import rehypeFormat from 'rehype-format'
import rehypeStringify from 'rehype-stringify'
import remarkGfm from 'remark-gfm'
import mustache from 'mustache'
import { testers } from '../config/newsletter-testers.mjs'
import { fileURLToPath } from 'url'
@ -18,10 +19,11 @@ const backend = 'https://backend.freesewing.org/'
const asHtml = async (text) => {
const content = await unified()
.use(markdown)
.use(remark2rehype)
.use(format)
.use(html)
.use(remarkParse)
.use(remarkGfm)
.use(remarkRehype)
.use(rehypeFormat)
.use(rehypeStringify)
.process(text)
return content.value

1830
yarn.lock

File diff suppressed because it is too large Load diff