CourtBouillon

Authentic people growing open source code with taste

Five Years of CourtBouillon

Do you know what day it is today? It’s October 12, which means that it’s CourtBouillon’s five-year anniversary 🎂! So it’s time to rewind and see what happened during this year.

A New Anniversary

As each year, on October 12, it’s CourtBouillon’s anniversary. It’s always a good moment to take some time to see how far we’ve come during the year.

So, here is our annual rewind, what happened during this year, which cool features had been released, how much money did we earn…? And what’s coming next?

What Happened This Year?

Many things occured during this year. First, let’s start with some metrics about WeasyPrint and its dependencies. How many issues were closed? How many pull requests were merged? How many releases have been out?

Closed Issues

During the year, 237 issues have been closed. It’s slightly less than last year (269) and most of the issues are on WeasyPrint.

Merged Pull Requests

88 pull requests have been merged. It’s also an increase compared to last year of… 39%.

Releases

16 versions have been released! The number of releases is quite stable among the years.

A bit less issues have been closed this year, but more pull requests have been merged. Merged pull requests have increased for 2 years in a row.

Thanks a lot to all the contributors and welcome to the newcomers 💗.

New Features

During this year, some nice features and cool improvements have been released:

  • PDF/UA support improvement,
  • custom RDF metadata for PDF/A and eInvoices,
  • CSS Color 4 support,
  • flex layout support improvement,
  • radio and submit inputs in forms,
  • page groups support,
  • lh and rlh units support,
  • and other things…

Meeting the community

This year, we went to several conferences to meet people and give differents talks about the power of web technologies for PDF, the structure of a Python library and participating in Free Software communities.

Meeting people in real life is always fun, so don’t hesitate to come and say hi if you see us! If there are some events where you think it could be nice to see us, feel free to tell us ☺️.

And you can always find us at the Python meetups in Lyon, as we organise them 🐍.

Sources of Income

Like each year, this rewind includes a part about our incomes. So here we go!

We have five main sources of income:

  • templating and styling with HTML/CSS,
  • bug fixes and additional features,
  • consulting,
  • sponsoring and donations,
  • grants,
  • miscellaneous, which will be detailed.

Last year, the different sources were quite equivalent. This year, templating and grants are clearly the most important.

Templating and Styling with HTML/CSS

Creating HTML and CSS for print is one of the services we provide. It’s very useful when you have a nice mock-up for your documents coming from your designer but have some difficulties to transform them into HTML/CSS template (or don’t have time to do it).

This year, we created several HTML/CSS templates for differents type of documents like recipes, travel guides, analysis reports, user manuals, health reporting…

We also worked with a designer when there were no mock-up, ensuring everyone agrees on a visual and avoiding frustration 😁.

Bug Fixes and Additional Features

Another service we provide is fixing bugs you encounter and adding new features to make your life easier.

A nice thing about this part is that the bug fixes and the new features you sponsor benefit the whole community. Another nice thing is that the bug fixes and the new features funded by other companies will be useful for you 😉!

For this year, we had a bit more incomes coming from this part compared to last year. More things have been sponsored, but usually not big features.

You may find curious saying here that nothing big has been sponsored this year but having quite big improvements listed before. We’re going to talk about that a bit later!

Thanks a lot to everyone who sponsored features 💖.

Sponsoring and Donations

When you become a backer or a sponsor on OpenCollective, you greatly help CourtBouillon to maintain its projects in a sustainable way.

The OpenCollective part helps us to do the invisible maintenance work, like answering and sorting GitHub issues, writing articles, improving performance…

Thanks to all the OpenCollective backers and sponsors 💜.

If you want to be a sponsor, but can’t use OpenCollective, you can contact us for direct invoicing.

Consulting

Helping people to have a better experience with WeasyPrint is something we love to do.

During the year, we provided consulting and advice about automatisation of reports generation and WeasyPrint configuration.

We’ve also provided and animate a personalised workshop about WeasyPrint, its usecases and HTML/CSS for print 🧰.

We’ve launched WeasyPrint Consulting Packages. These packages are designed for people who wants to be insured that someone is always going to answer quickly to their questions.

Grants

This is a brand new source of income. Previously we tried to get some grants and funding for WeasyPrint, but this is the first time we succeeded!

WeasyPrint has been selected by the NLnet Foundation to receive a grant, and thanks to this grant, we’ve been able to work on tasks that require long time to focus on:

  • improving the flex layout;
  • improving the PDF/UA support;
  • supporting CMYK (that may be a spoiler of the next version 🤫).

Miscellaneous

Unsurprisingly, this category contains everything that doesn’t fit in the other categories.

This year, it includes:

  • web applications development with document generation,
  • design integration for Genepy, a website to learn Python.

What for Next Year?

After this year, what can you expect for the next one?

New Features

There was a spoiler earlier in this article, but CMYK support is coming to WeasyPrint, with support of color profiles. In fact, you can already try it by using the main branch (and the main branch of tinycss2). If you do so, don’t hesitate to send us some feedback!

We dream of supporting calc(), and this dream has never been so close to become reality, as we started to work on it.

Another wish for next year: rewriting the text layout; for a faster layout, a better RTL support, new line break algorithms…

New Specifications

Because reading, understanding and implementing specifications wasn’t hard enough, we decided to start writing CSS specifications 🤯.

We won’t be alone in this. We’re working with Julie and Julien from paged.js and got a new grant from the NLnet Foundation.

One of the specifications, about Notes, has already been proposed to the w3c. Feel free to have a look, discuss and upvote the proposal.

And More!

Of course, we’ll continue to answer all the GitHub issues you open, all the mails you send us, all the messages you write on our Matrix channel ✉️.

We’ll do our best to get WeasyPrint and its dependencies for a shiny future.

Thanks again to all the people who sponsored features and bug fixes, to our nice backers and sponsors, to our lovely clients, to our sweet contributors, to everyone who uses our software and opens issues 💜.

Don’t hesitate to follow us on Mastodon or LinkedIn to never miss news, to contact us if you’d like from some help or some advice on WeasyPrint, and to support us on OpenCollective!