CourtBouillon

Authentic people growing open source code with taste

Six Years of CourtBouillon

Do you know what day it is today? It’s October 12, which means that CourtBouillon is 6 years old 🎂! 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?

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?

This year, a new project appears in the metrics: webencodings. That’s a friendly fork of the original python-webencodings module.

Closed Issues

During the year, 244 issues have been closed. It’s slightly more than last year (237).

Merged Pull Requests

115 pull requests have been merged. It’s also an increase of 31% compared to last year. 44% of these pull requests come from external persons.

Releases

19 versions have been released! The number of releases slightly increases but is still overall stable among the years.

Each year we said that we’re happy to have new contributors participating, but this year, it is kind of hard to say that.

There is indeed an increase of merged pull requests, but also an increase of pull requests that have just been closed.

Accounts "fixing" issues that nobody has in real life, accounts that can’t say what’s their use cases or give a real example of the issue, accounts that just copy-paste walls of text… The quality of interactions just dropped, it makes us sad and questioning if we want to keep pull requests opened.

We published an article to explain that in more details, feel free to read it if you’re interested in the topic.

We also added guidelines for contributors and limited the number of pull requests an account can open.

So this year, it’s a thank you to all the contributors who actually respect us (and the guidelines), report issues they have for real and think before opening pull requests. 💖.

New Features

Despite all of this, some nice features have been released:

  • CMYK and color profiles support,
  • calc() support,
  • PDF/X, and other PDF/A subversions, support,
  • CLI for FacturX / ZUGFeRD e-Invoices,
  • COLR emoji fonts support,
  • CSS Layers support,
  • CSS Notes support,
  • and more! 😄

Meeting the community

We went to several conferences to meet people and give talks.

Guillaume has also been interviewed by Micode to talk about PDF and its story (fr), and by Road to PyCon to talk about free software development (fr).

We’re always happy to meet people in real life, so don’t hesitate to come and say hi if you see 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 this year:

  • templating and styling with HTML/CSS,
  • bug fixes and additional features,
  • consulting,
  • sponsoring and donations,
  • grants.

As last year, templating is a big part of our income. On another hand, consulting has increased. Our global income stays stable: 76k€ this year / 79k€ last year.

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 different types of documents like invoices, construction reports, bid documents…

We also worked with a designer when there was no mock-up, so everyone agrees on a visual rendering and frustration is avoided 😁.

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 😉!

This year, this source of income is the smallest, meaning that most of the new features and bug fixes have been done unpaid.

Thanks a lot to everyone who sponsored new 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 mainly about automatisation of reports generation.

Last year, we’ve launched WeasyPrint Consulting Packages. These packages are designed for people who want to be insured that someone is always going to answer quickly to their questions.

These packages picked the interest of some companies that want to be sure WeasyPrint keeps existing.

Grants

For the second year, we got funding from the NLnet Foundation!

This time was to work on new CSS specifications for print with Julie and Julien from paged.js.

The grant covers:

  • publishing the CSS Notes specification,
  • implementing the Notes specification into WeasyPrint and paged.js,
  • publishing a specification about uncovered page breaks,
  • publishing a specification for facing pages layout.

If you’re interested to know more about this work and how CSS Notes work in WeasyPrint, we wrote a dedicated article 😁.

What for Next Year?

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

A brand new website! If you read the Journey Book entries each month, you already know it. We’re working on a new CourtBouillon website, which is going to be more beautiful ✨.

We’d like to rewrite the text layout to rely less on Pango, improve RTL supports and be able support other line break algorithms.

We’d also like to support new selectors from Selectors Level 5, like :nth-col() and :nth-last-col() for example.

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, opens issues and follows the contributing guidelines 💜.

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!