Log in

FreeSewing

August 25, 2018
by joost
I don't drink, but this seemed appropriate for a celebration post ¯\_(ツ)_/¯
I don't drink, but this seemed appropriate for a celebration post ¯\_(ツ)_/¯

Exactly one year ago, the doors of freesewing.org swung open for our users, while those of makemypattern.com get one of those we’ve moved signs.

Looking back at that blog post from 12 months ago, it almost beggars belief that the things announced then are only one year old. The concept of a draft, the comparison functionality, or even paperless patterns. They all celebrate their first birthday today.

Not this site though, because driven by the looming GDPR deadline, we dumped our Jekyll based site for a new front end sometime in May.

More languages with less languages

GDPR was only part of that story. Other reasons for the rewrite were our desire to support multiple languages, and to simplify our technology stack.

In other words, we wanted to reach people who speak different languages, and wanted to limit the number of programming languages required to do so.

More natural languages

We’ve done remarkably well on this front. While you won’t find every last bit of content translated, this website’s main features are now available in five languages:

  • English
  • German
  • Spanish
  • French
  • Dutch

Which really is 100% thanks to the great work of our wonderful translators.

Less programming languages

The switch from Jekyll to a Nuxt-based front-end has removed Ruby from our technology stack. Freesewing.org now runs on JavaScript, PHP and a little bit of C (which we’ll ignore for now).

But removing programming languages is not a goal an sich. Rather, the underlying ambition is to simplify things, make it easier for people to get involved, and ultimately attract more contributors so that the project can grow and flourish.

Today, designing/developing patterns is not an insurmountable obstacle. We’ve got benjamin, florent, and sandy to show for it. All of these were contributed by people for whom freesewing was initially new, they went through the design tutorial, and in the end created a pattern of their own.

We’d like more people to follow in their footsteps. So making the process as simple as possible is a worthy investment of our time.

Announcing freesewing, the library

For the past 2 months, I have taken time off from pattern making and sewing to tackle our technical debt.

Specifically, I’ve set out to rewrite our core back-end from the ground up in JavaScript. But there’s a twist. It’s no longer a back-end. It’s a library you can use both in your browser, or on the server with node.js.

It is currently in version 0.10, and feature complete with freesewing core. It’s available on GitHub and NPM, and is fully documented at developer.freesewing.org.

And while its API is richer than core’s, it’s footprint is actually a lot smaller:

Lines of code comparison between the new library and (the relevant portion of) freesewing core

Which is good news, in case you were wondering.

What happens next?

A lot of work needs to be done before we can actually use this on freesewing.org:

  • All our existing patterns need to be parted to the JS version. Brian is the first pattern to have been ported.
  • Rewrite our data back-end in JS. Since this will remove the PHP programming language from our stack.
  • Build a new website using the freesewing library and our new data back-end.

This really is a lot of work, and while I hope that by the end of the year we’ll have made good progress, I can’t promise it will be done.

But I just want patterns

Chances are, all you care about is patterns. What you want is more patterns, better patterns, different patterns. And all of this rewriting is not exactly pushing your buttons.

I get that. I really do. I for one have a list of patterns I’d like to see added to the site. And my work on other aspects of the project keeps me from adding them.

But I believe that investing now in a streamlined developer experience will have a knock-on effect in the long term.

If we want a few extra patterns, this is not the right approach. But if we want a lot more patterns, I believe it is.

And I want a lot more patterns.