From e118b42b1ff96a0ac4dbbef9935aa0165cbf20a5 Mon Sep 17 00:00:00 2001 From: Fedor Korotkov Date: Wed, 20 Sep 2023 10:13:42 -0400 Subject: [PATCH] Tart 2.0.0 blog post (#601) --- docs/blog/.authors.yml | 17 ++-- docs/blog/posts/2023-09-20-tart-2.0.0.md | 102 +++++++++++++++++++++++ mkdocs.yml | 2 + 3 files changed, 113 insertions(+), 8 deletions(-) create mode 100644 docs/blog/posts/2023-09-20-tart-2.0.0.md diff --git a/docs/blog/.authors.yml b/docs/blog/.authors.yml index f8552f9..0a61e47 100644 --- a/docs/blog/.authors.yml +++ b/docs/blog/.authors.yml @@ -1,8 +1,9 @@ -edigaryev: - name: Nikolay Edigaryev - description: Creator - avatar: https://github.com/edigaryev.png -fkorotkov: - name: Fedor Korotkov - description: Creator - avatar: https://github.com/fkorotkov.png +authors: + edigaryev: + name: Nikolay Edigaryev + description: Creator + avatar: https://github.com/edigaryev.png + fkorotkov: + name: Fedor Korotkov + description: Creator + avatar: https://github.com/fkorotkov.png diff --git a/docs/blog/posts/2023-09-20-tart-2.0.0.md b/docs/blog/posts/2023-09-20-tart-2.0.0.md new file mode 100644 index 0000000..b344f88 --- /dev/null +++ b/docs/blog/posts/2023-09-20-tart-2.0.0.md @@ -0,0 +1,102 @@ +--- +draft: false +date: 2023-09-20 +search: + exclude: true +authors: + - fkorotkov +categories: + - announcement +--- + +# Tart 2.0.0 and community updates + +Today we'd like to share some news and updates around the Tart ecosystem since the Tart 1.0.0 release back in February. + + + +## Community Growth + +In the last 7 months Tart community almost tripled and growth is continuing to accelerate. Tart just crossed 25,000 installations, +dozens of companies that we know of are using Tart in their daily workflows. If your company is not in the list please consider +[joining](https://github.com/cirruslabs/tart/blob/main/Resources/Users/HowToAddYourself.md)! + +
+ +- ![](https://github.com/cirruslabs/tart/raw/main/Resources/Users/Krisp.png){ height="65" } +- ![](https://github.com/cirruslabs/tart/raw/main/Resources/Users/Mullvad.png){ height="65" } +- ![](https://github.com/cirruslabs/tart/raw/main/Resources/Users/ahrefs.png){ height="65" } +- ![](https://github.com/cirruslabs/tart/raw/main/Resources/Users/Suran.png){ height="65" } +- ![](https://github.com/cirruslabs/tart/raw/main/Resources/Users/Symflower.png){ height="65" } +- ![](https://github.com/cirruslabs/tart/raw/main/Resources/Users/Transloadit.png){ height="65" } + +
+ +We are also very pleased by how the community responded to [the license change](2023-02-11-changing-tart-license.md). +We now have a number of companies running Tart at scale under the new license. Revenue from the licensing allowed us to +allocate time to continue improving Tart which brings us to the section below. + +## Recent updates and what's changing in Tart 2.0.0 + +In the last 7 months we've had 12 feature releases that brought a lot of features requested by the community. Here are just +a few of them to highlight: + +* [Custom GitLab Runner Executor](/integrations/gitlab-runner.md). +* [Cluster Management via Orchard](2023-04-25-orchard-ga.md). +* Numerous compatibility improvements for all kinds of OCI-registries. +* Sonoma Support (see details [below](#macos-sonoma-updates)). + +But one of the most requested features/complaints was around pulling huge Tart images from remote OCI-compatible registries. +With an ideal network conditions `tart pull` worked pretty good but in case of any network issues it was required to +restart the pull from scratch. Additionally, some registries are notably slow streaming a single blob but can stream +multiple blobs in parallel. Finally, the initial format of storing Tart VMs was very naive: disk image is compressed +via a single stream which is chunked up into blobs that are serially uploaded to a registry. A single compression stream +means that Tart can also only decompress blobs serially. + +Given these three observations above we came up with an improved format of storing Tart VM disk images. In Tart 2.0.0 +disk images are chunked up first and compressed independently into blobs, when pushed, each blob has attached annotations +of expected uncompressed size and a checksum. This way when Tart 2.0.0 is pulling an image pushed by Tart 2.0.0 each blob can +be pulled, uncompressed and written at the right offset independently. Having checksums along expected uncompressed blob size +also allowed to support resumable pulls. Upon a failure Tart 2.0.0 will compare checksums of chunks and will continue pulling +only missing blobs. + +Overall in our experiments we saw a 10% improvement in compressed size of the images and **4 times faster pulls**. + +In order to try the new image format please upgrade Tart and try to pull any of [the Sonoma images](https://github.com/orgs/cirruslabs/packages?tab=packages&q=macos-sonoma): + +```bash +brew update cirruslabs/cli/tart +tart pull ghcr.io/cirruslabs/macos-sonoma-base:latest +``` + +## macOS Sonoma Updates + +Tart VMs now can be run in a "suspendable" mode which will enable VM snapshotting instead of the standard shutdown. +VMs with an existing snapshot will `run` from the same state as they got snapshotted. Please check demo down below: + +
+ + +
+ +There are two caveats to the "suspendable" mode support: + +1. Both host and guest should be running macOS Sonoma. +2. Snapshots are locally encrypted and can't be shared between physical hosts. Therefore `tart push` won't push the corresponding snapshotted state of the VM. + +Try the "suspendable" mode for yourself by passing `--suspendable` flag to a `tart run` command: + +```bash +tart clone ghcr.io/cirruslabs/macos-sonoma-base:latest sonoma-base +tart run --suspendable sonoma-base +``` + +## Conclusion + +We are very excited about this major release of Tart. Please give it a try and let us know how it went! + +Stay tuned for new updates and announcements! There are a few coming up very shortly... diff --git a/mkdocs.yml b/mkdocs.yml index e0e4b1d..9c8306d 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -82,6 +82,8 @@ markdown_extensions: - pymdownx.tasklist: custom_checkbox: true - pymdownx.tilde + - attr_list + - md_in_html nav: - "Home": index.md