From d3c146b420250eb4542cf09adf377224b7c22001 Mon Sep 17 00:00:00 2001
From: Daniel McNab <36049421+DJMcNab@users.noreply.github.com>
Date: Thu, 6 Mar 2025 15:39:53 +0000
Subject: [PATCH 1/5] Start TMIL February 2024

---
 content/blog/2025-03-06-tmil-14/index.md | 95 ++++++++++++++++++++++++
 1 file changed, 95 insertions(+)
 create mode 100644 content/blog/2025-03-06-tmil-14/index.md

diff --git a/content/blog/2025-03-06-tmil-14/index.md b/content/blog/2025-03-06-tmil-14/index.md
new file mode 100644
index 0000000..34b47a6
--- /dev/null
+++ b/content/blog/2025-03-06-tmil-14/index.md
@@ -0,0 +1,95 @@
++++
+title = "Linebender in February 2025"
+authors = ["Daniel McNab"]
++++
+
+Linebender is an informal open-source organization working on various projects to advance the state of the art in GUI for [the Rust programming language](https://rust-lang.org).
+
+## Xilem
+
+Xilem is our flagship GUI project, inspired by SwiftUI.
+It lets you build user interfaces declaratively by composing lightweight views together, and will diff them to provide minimal updates to a retained layer.
+February was a slow month for Xilem specific changes, although many changes further down the stack will be relevant to Xilem users.
+
+- [xilem#861][]: makes a method on `Pod` public to make creating widgets easier, by Evgeny.
+
+## Masonry
+
+Masonry is the widget system used by Xilem.
+It provides a non-opinionated retained widget tree, designed as a base layer for high-level GUI frameworks.
+
+- [xilem#872][]: Exported the scale factor for limited use cases (such as single-pixel lines).
+
+There is some important work upcoming:
+
+- [xilem#873][]: Olivier started to develop their "arbitrary properties" feature, which is intended for styling.
+- [xilem#875][]: Adds an image widget containing arbitrary vector graphics content, by Richard Dodd.
+
+As Parley has now been released to crates.io (discussed later in this update), we're hoping to release a new alpha of Xilem and Masonry to crates.io in March.
+
+## Vello
+
+Vello is our GPU vector renderer.
+It can draw large 2D scenes with high performance, using GPU compute shaders for most of the work.
+
+<!-- TODO: ... -->
+
+## Parley
+
+Parley is a text layout library.
+It handles text layout, mostly at the level of line breaking and resolving glyph positions.
+
+We released [Parley 0.3][] and [Fontique 0.3][] to crates.io.
+These contain many of the features we have discussed over the previous months, including <!-- TODO -->.
+
+## Resvg
+
+<!-- TODO: Talk about resvg 0.45 release -->
+
+## Kurbo
+
+Kurbo provides data structures and algorithms for curves and vector paths.
+
+- [kurbo#412][], [kurbo#413][]: Added utility methods to `Size`, by [@nils-mathieu][].
+
+## Color
+
+[Color][] provides functionality for representing, converting, parsing, serializing, and manipulating colors in a variety of color spaces.
+It closely follows the [CSS Color Module Level 4][] draft spec.
+
+The biggest update to Color in February was the addition of absolute color conversions, in [color#139][].
+This won't be visible for most users, but will be useful for those who need to convert between color spaces without changing the white point.
+This will also be used in [color#137][], which allows creating a theoretical black-body color from a temperature in Kelvin.
+
+## Velato
+
+We released [Velato 0.5.0][], bringing compatibility with Vello 0.4.0.
+
+## Kompari
+
+[Kompari][] is a tool for visual inspection of snapshot tests.
+
+<!-- TODO -->
+
+## Research and Future Directions
+
+Linebender has an origin story in being a very research oriented group, looking to break new ground.
+While we are focused on shipping code today, we still have an eye on the future and how to be prepared for the new opportunities and technologies that are coming.
+
+<!-- TODO -->
+
+## Get Involved
+
+We welcome collaboration on any of our crates.
+This can include improving the documentation, implementing new features, improving our test coverage, or using them within your own code.
+
+We host an hour long office hours meeting each week where we discuss what's going on in our projects.
+See [#office hours in Zulip](https://xi.zulipchat.com/#narrow/channel/359642-office-hours) for details.
+<!-- TODO: Mention renderer office hours? -->
+
+* Daniel and Olivier's "office hours" appointments can still be booked by anyone for open-ended discussion of the ecosystem.
+  * [See Daniel's schedule here](https://calendar.google.com/calendar/u/0/appointments/schedules/AcZssZ32eQYJ9DtZ_wJaYNtT36YioETiloZDIdImFpBFRo5-XsqGzpikgkg47LPsiHhpiwiQ1orOwwW2).
+  * [See Olivier's schedule here](https://calendar.google.com/calendar/u/0/appointments/schedules/AcZssZ2t767ZRETD_TkRI_VxK2ZTG0VrO9OZ4l7HvTxefhtJcg85iK0ZN7zWNnAEZtH0Dn7C1GKxrmYM).
+
+[Color]: https://docs.rs/color/
+[CSS Color Module Level 4]: https://www.w3.org/TR/css-color-4/

From e1079b1651e9b09c5bec8da5eefb9cab13cd0af2 Mon Sep 17 00:00:00 2001
From: Daniel McNab <36049421+DJMcNab@users.noreply.github.com>
Date: Mon, 10 Mar 2025 16:03:05 +0000
Subject: [PATCH 2/5] Fixup most draft bits

---
 content/blog/2025-03-06-tmil-14/index.md | 34 ++++++++++++++++++------
 1 file changed, 26 insertions(+), 8 deletions(-)

diff --git a/content/blog/2025-03-06-tmil-14/index.md b/content/blog/2025-03-06-tmil-14/index.md
index 34b47a6..3e41efa 100644
--- a/content/blog/2025-03-06-tmil-14/index.md
+++ b/content/blog/2025-03-06-tmil-14/index.md
@@ -22,7 +22,7 @@ It provides a non-opinionated retained widget tree, designed as a base layer for
 
 There is some important work upcoming:
 
-- [xilem#873][]: Olivier started to develop their "arbitrary properties" feature, which is intended for styling.
+- [xilem#873][]: Olivier started to develop his "arbitrary properties" feature, which is intended for styling.
 - [xilem#875][]: Adds an image widget containing arbitrary vector graphics content, by Richard Dodd.
 
 As Parley has now been released to crates.io (discussed later in this update), we're hoping to release a new alpha of Xilem and Masonry to crates.io in March.
@@ -32,19 +32,38 @@ As Parley has now been released to crates.io (discussed later in this update), w
 Vello is our GPU vector renderer.
 It can draw large 2D scenes with high performance, using GPU compute shaders for most of the work.
 
-<!-- TODO: ... -->
+- [vello#803][]: Removed the `render_to_surface` API, as `wgpu`'s new [`TextureBlitter`][] utility makes it unnecessary.
+- [vello#832][] (in review): Jared Moulton added support for font embolden to our text handling.
+
+As mentioned last month, we have started to develop a version of Vello which works on downlevel GPUs without strong support for compute shaders.
+<!-- We can now announce that this will be developed as a collaboration with ... .
+... thinks that this project can ... -->
+
+In February, Raph opened [vello#818][], which provided the first implementation of this hybrid pipeline.
+We are planning to refactor this to share most of its code with an ongoing CPU-only implementation<!-- , which is being developed by Laurenz Stampfl for [his/her/their] ... . -->.
+To that aim, we have landed [vello#826][], which provided the repository-layout scaffolding, in the `sparse_strips` folder.
+This is just a stub, but we are planning on filling these crates out imminently, allowing collaborative work on both pipelines (hybrid and CPU-only).
+You can follow the progress in [#gpu > Vello Hybrid](https://xi.zulipchat.com/#narrow/channel/197075-gpu/topic/Vello.20Hybrid) and other threads in [#gpu](https://xi.zulipchat.com/#narrow/channel/197075-gpu).
 
 ## Parley
 
 Parley is a text layout library.
 It handles text layout, mostly at the level of line breaking and resolving glyph positions.
 
-We released [Parley 0.3][] and [Fontique 0.3][] to crates.io.
-These contain many of the features we have discussed over the previous months, including <!-- TODO -->.
+We released [Parley and Fontique 0.3.0][] to crates.io.
+These contain many of the features we have discussed over the previous months, including significant improvements to `PlainEditor`.
+
+<!-- TODO: If we want to say anything more here, someone else will have to do it. -->
 
 ## Resvg
 
-<!-- TODO: Talk about resvg 0.45 release -->
+We released [Resvg 0.45.0][] in February.
+This is the first release under the stewardship of Linebender.
+We'd like to reiterate our many thanks to Yevhenii Reizner for the years of hard work that he has poured into this and other crates.
+The largest change in this release is the relicense to dual Apache-2.0 MIT.
+It also includes support for the `!important` CSS flag.
+
+<!-- TODO: If we want to say anything more here, someone else will have to do it. -->
 
 ## Kurbo
 
@@ -68,15 +87,14 @@ We released [Velato 0.5.0][], bringing compatibility with Vello 0.4.0.
 ## Kompari
 
 [Kompari][] is a tool for visual inspection of snapshot tests.
-
-<!-- TODO -->
+[parley#272][] (in review) begins the exciting process of integrating Kompari into our existing projects.
 
 ## Research and Future Directions
 
 Linebender has an origin story in being a very research oriented group, looking to break new ground.
 While we are focused on shipping code today, we still have an eye on the future and how to be prepared for the new opportunities and technologies that are coming.
 
-<!-- TODO -->
+<!-- TODO? -->
 
 ## Get Involved
 

From 2487e29524ec62674ecd7dfb6bfba58ad3b7bc07 Mon Sep 17 00:00:00 2001
From: Raph Levien <raph@google.com>
Date: Wed, 19 Mar 2025 20:49:55 -0700
Subject: [PATCH 3/5] [TMIL 14] Update section on hybrid renderer

Added more text on the CPU/GPU hybrid renderer collaboration, and also a teaser in the research section on two point shape control.
---
 content/blog/2025-03-06-tmil-14/index.md | 18 ++++++++++--------
 1 file changed, 10 insertions(+), 8 deletions(-)

diff --git a/content/blog/2025-03-06-tmil-14/index.md b/content/blog/2025-03-06-tmil-14/index.md
index 3e41efa..b85311b 100644
--- a/content/blog/2025-03-06-tmil-14/index.md
+++ b/content/blog/2025-03-06-tmil-14/index.md
@@ -1,6 +1,6 @@
 +++
 title = "Linebender in February 2025"
-authors = ["Daniel McNab"]
+authors = ["Daniel McNab", "Raph Levien"]
 +++
 
 Linebender is an informal open-source organization working on various projects to advance the state of the art in GUI for [the Rust programming language](https://rust-lang.org).
@@ -35,14 +35,15 @@ It can draw large 2D scenes with high performance, using GPU compute shaders for
 - [vello#803][]: Removed the `render_to_surface` API, as `wgpu`'s new [`TextureBlitter`][] utility makes it unnecessary.
 - [vello#832][] (in review): Jared Moulton added support for font embolden to our text handling.
 
-As mentioned last month, we have started to develop a version of Vello which works on downlevel GPUs without strong support for compute shaders.
-<!-- We can now announce that this will be developed as a collaboration with ... .
-... thinks that this project can ... -->
+Last month we mentioned a research exploration into a CPU/GPU hybrid 2D rendering mode.
+This hybrid mode works well on downlevel GPUs without strong support for compute shaders, and is also more memory efficient.
+There has been a lot of interest from the community, and we are now moving forward with building out this rendering mode in Vello.
+We are very excited that Alex Gemberg and Taj Pereira, two engineers from Canva, are joining the collaboration on this renderer.
 
 In February, Raph opened [vello#818][], which provided the first implementation of this hybrid pipeline.
-We are planning to refactor this to share most of its code with an ongoing CPU-only implementation<!-- , which is being developed by Laurenz Stampfl for [his/her/their] ... . -->.
+We are planning to refactor this to share most of its code with an ongoing CPU-only implementation, which is being developed by Laurenz Stampfl as his Masters project.
 To that aim, we have landed [vello#826][], which provided the repository-layout scaffolding, in the `sparse_strips` folder.
-This is just a stub, but we are planning on filling these crates out imminently, allowing collaborative work on both pipelines (hybrid and CPU-only).
+This initial PR is just a stub, but we are planning on filling these crates out imminently, allowing collaborative work on both pipelines (hybrid and CPU-only).
 You can follow the progress in [#gpu > Vello Hybrid](https://xi.zulipchat.com/#narrow/channel/197075-gpu/topic/Vello.20Hybrid) and other threads in [#gpu](https://xi.zulipchat.com/#narrow/channel/197075-gpu).
 
 ## Parley
@@ -94,7 +95,8 @@ We released [Velato 0.5.0][], bringing compatibility with Vello 0.4.0.
 Linebender has an origin story in being a very research oriented group, looking to break new ground.
 While we are focused on shipping code today, we still have an eye on the future and how to be prepared for the new opportunities and technologies that are coming.
 
-<!-- TODO? -->
+While we didn't publish much in the way of artifacts in February, there was quite a bit of experimentation with computational geometry ideas related to [#kurbo > Two-point shape control](https://xi.zulipchat.com/#narrow/channel/260979-kurbo/topic/Two.20point.20shape.20control), a technique that holds promise for faster and more accurate stroke expansion of cubic Béziers.
+Stay tuned for more updates.
 
 ## Get Involved
 
@@ -103,7 +105,7 @@ This can include improving the documentation, implementing new features, improvi
 
 We host an hour long office hours meeting each week where we discuss what's going on in our projects.
 See [#office hours in Zulip](https://xi.zulipchat.com/#narrow/channel/359642-office-hours) for details.
-<!-- TODO: Mention renderer office hours? -->
+We've also started a separate office hours time dedicated to the renderer collaboration, details also available at that link.
 
 * Daniel and Olivier's "office hours" appointments can still be booked by anyone for open-ended discussion of the ecosystem.
   * [See Daniel's schedule here](https://calendar.google.com/calendar/u/0/appointments/schedules/AcZssZ32eQYJ9DtZ_wJaYNtT36YioETiloZDIdImFpBFRo5-XsqGzpikgkg47LPsiHhpiwiQ1orOwwW2).

From 7a0b456d0d62ac4788396f90c47dc04083495723 Mon Sep 17 00:00:00 2001
From: Raph Levien <raph@google.com>
Date: Thu, 20 Mar 2025 12:58:54 -0700
Subject: [PATCH 4/5] Remove CPU renderer contributor name, fix links

The main developer on the CPU renderer project wants to defer being mentioned by name until the project officially starts.

Also fill in links and remove a couple of stray comments, so this should be ready for publication.

Update to today's date.
---
 .../index.md                                  | 33 ++++++++++++++++---
 1 file changed, 28 insertions(+), 5 deletions(-)
 rename content/blog/{2025-03-06-tmil-14 => 2025-03-20-tmil-14}/index.md (83%)

diff --git a/content/blog/2025-03-06-tmil-14/index.md b/content/blog/2025-03-20-tmil-14/index.md
similarity index 83%
rename from content/blog/2025-03-06-tmil-14/index.md
rename to content/blog/2025-03-20-tmil-14/index.md
index b85311b..eef9c2b 100644
--- a/content/blog/2025-03-06-tmil-14/index.md
+++ b/content/blog/2025-03-20-tmil-14/index.md
@@ -41,7 +41,7 @@ There has been a lot of interest from the community, and we are now moving forwa
 We are very excited that Alex Gemberg and Taj Pereira, two engineers from Canva, are joining the collaboration on this renderer.
 
 In February, Raph opened [vello#818][], which provided the first implementation of this hybrid pipeline.
-We are planning to refactor this to share most of its code with an ongoing CPU-only implementation, which is being developed by Laurenz Stampfl as his Masters project.
+We are planning to refactor this to share most of its code with an ongoing CPU-only implementation, which we expect to be extremely competitive in performance.
 To that aim, we have landed [vello#826][], which provided the repository-layout scaffolding, in the `sparse_strips` folder.
 This initial PR is just a stub, but we are planning on filling these crates out imminently, allowing collaborative work on both pipelines (hybrid and CPU-only).
 You can follow the progress in [#gpu > Vello Hybrid](https://xi.zulipchat.com/#narrow/channel/197075-gpu/topic/Vello.20Hybrid) and other threads in [#gpu](https://xi.zulipchat.com/#narrow/channel/197075-gpu).
@@ -54,8 +54,6 @@ It handles text layout, mostly at the level of line breaking and resolving glyph
 We released [Parley and Fontique 0.3.0][] to crates.io.
 These contain many of the features we have discussed over the previous months, including significant improvements to `PlainEditor`.
 
-<!-- TODO: If we want to say anything more here, someone else will have to do it. -->
-
 ## Resvg
 
 We released [Resvg 0.45.0][] in February.
@@ -64,8 +62,6 @@ We'd like to reiterate our many thanks to Yevhenii Reizner for the years of hard
 The largest change in this release is the relicense to dual Apache-2.0 MIT.
 It also includes support for the `!important` CSS flag.
 
-<!-- TODO: If we want to say anything more here, someone else will have to do it. -->
-
 ## Kurbo
 
 Kurbo provides data structures and algorithms for curves and vector paths.
@@ -113,3 +109,30 @@ We've also started a separate office hours time dedicated to the renderer collab
 
 [Color]: https://docs.rs/color/
 [CSS Color Module Level 4]: https://www.w3.org/TR/css-color-4/
+
+[color#137]: https://github.com/linebender/color/pull/137
+[color#139]: https://github.com/linebender/color/pull/139
+
+[kurbo#412]: https://github.com/linebender/kurbo/pull/412
+[kurbo#413]: https://github.com/linebender/kurbo/pull/413
+
+[parley#272]: https://github.com/linebender/parley/pull/272
+
+[vello#803]: https://github.com/linebender/vello/pull/803
+[vello#818]: https://github.com/linebender/vello/pull/818
+[vello#826]: https://github.com/linebender/vello/pull/826
+[vello#832]: https://github.com/linebender/vello/pull/832
+
+[xilem#861]: https://github.com/linebender/xilem/pull/861
+[xilem#872]: https://github.com/linebender/xilem/pull/872
+[xilem#873]: https://github.com/linebender/xilem/pull/873
+[xilem#875]: https://github.com/linebender/xilem/pull/875
+
+[Resvg 0.45.0]: https://github.com/linebender/resvg/releases/tag/0.45.0
+[Parley and Fontique 0.3.0]: https://github.com/linebender/parley/releases/tag/v0.3.0
+[Velato 0.5.0]: https://github.com/linebender/velato/releases/tag/v0.5.0
+
+[Kompari]: https://github.com/linebender/kompari
+[TextureBlitter]: https://docs.rs/wgpu/latest/wgpu/util/struct.TextureBlitter.html
+
+[@nils-mathieu]: https://github.com/nils-mathieu
\ No newline at end of file

From 9eb2f273dc720498c227b06d4e8a3a7bed3ed37e Mon Sep 17 00:00:00 2001
From: Raph Levien <raph@google.com>
Date: Thu, 20 Mar 2025 15:13:31 -0700
Subject: [PATCH 5/5] [tmil-14] Update Zulip link for channel rename

---
 content/blog/2025-03-20-tmil-14/index.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/content/blog/2025-03-20-tmil-14/index.md b/content/blog/2025-03-20-tmil-14/index.md
index eef9c2b..0654c35 100644
--- a/content/blog/2025-03-20-tmil-14/index.md
+++ b/content/blog/2025-03-20-tmil-14/index.md
@@ -44,7 +44,7 @@ In February, Raph opened [vello#818][], which provided the first implementation
 We are planning to refactor this to share most of its code with an ongoing CPU-only implementation, which we expect to be extremely competitive in performance.
 To that aim, we have landed [vello#826][], which provided the repository-layout scaffolding, in the `sparse_strips` folder.
 This initial PR is just a stub, but we are planning on filling these crates out imminently, allowing collaborative work on both pipelines (hybrid and CPU-only).
-You can follow the progress in [#gpu > Vello Hybrid](https://xi.zulipchat.com/#narrow/channel/197075-gpu/topic/Vello.20Hybrid) and other threads in [#gpu](https://xi.zulipchat.com/#narrow/channel/197075-gpu).
+You can follow the progress in [#vello > Vello Hybrid](https://xi.zulipchat.com/#narrow/channel/197075-vello/topic/Vello.20Hybrid) and other threads in [#vello](https://xi.zulipchat.com/#narrow/channel/197075-vello).
 
 ## Parley