feat(markdown): 2023q4 newsletter
This commit is contained in:
parent
30ea70b29b
commit
1edbf7d395
4 changed files with 1494 additions and 733 deletions
378
markdown/org/newsletter/2023q4/en.md
Normal file
378
markdown/org/newsletter/2023q4/en.md
Normal 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 I’m saying is: I don’t make announcements
|
||||
like this often, and it’s a big deal. You should get excited.
|
||||
|
||||
A lot of work went into this release, and I couldn’t 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 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.
|
||||
|
||||
|
||||
|
||||
---
|
||||
|
||||
|
||||
|
||||
## 📦 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? What’s 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 don’t 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?
|
||||
|
||||
There’s 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… I’m going to need a bit more time. Everything is sort of ready, but some
|
||||
things always take more time because you can’t 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,
|
||||
it’s going to be soon now. I’d 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 😃
|
|
@ -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"
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue