DEV Community

Cover image for SnowFS ❄️ Let's bring version control to graphic projects
Sebastian Rath
Sebastian Rath

Posted on

SnowFS ❄️ Let's bring version control to graphic projects

Introduction

Welcome to my first article here on Dev.to. In this article, I will be sharing an overview of an open-source project I kicked off to explore ideas and solutions on how to bring version control to graphic projects.

The open-source project is called SnowFS and it is a lightweight command-line application and library for binary files with a focus on graphic files.

But why?

I recently started developing an UI application that brings local version control and artists/designers together. Given the effort of the Git community to support larger files, I tried Git+LFS for my first prototype. It seemed, after several successful tests I've overcome the inner demons that were screaming Don't even try to use Git with such big files. Means Git with LFS is a nice solution to tackle such needs.

Unfortunately, the devil is in the detail, and some features beneficial for the software development process can be quite counterintuitive for other project types. For example, the hash integrity of Git is great to ensure the integrity of a software repository, but not really needed for a graphic project. For such project types, the requirement to delete individual files or removing entire commits without rewriting the history all the time is more important.

Basically, I needed Git, just more lightweight, support for big files, and a fraction of the functionality. And that's how SnowFS was born. It supports...

  • ...deleting of entire commits or individual files
  • ...instant snapshots
  • ...instant rollback
  • ...super-fast-detection of large modified files
  • ...block-cloning and copy-on-write supports for APFS, ReFS, and Btrfs
  • ...and more.

How does SnowFS perform?

Below is a comparison between Git and SnowFS on a Macbook Pro (2020) with an APFS formatted SSD to check-in, delete and restore a 4GB Photoshop File.

$ git lfs track *.psd
$ git add texture.psd   # 20164ms
$ snow add texture.psd  # 4596ms <-- Not bad
$ git rm texture.psd    # 575ms
$ snow rm texture.psd   # 111ms <-- Also ok
$ git checkout HEAD~1   # 9739ms
$ snow checkout HEAD~1  # 1ms <-- Yeah!
Enter fullscreen mode Exit fullscreen mode

Where to go from here?

SnowFS is a great lightweight and flexible project to explore and experiment with new ideas for version control. If you are interested in the project, we are looking for your expertise to share and learn!

In that sense, Happy versioning!

Top comments (3)

Collapse
 
paulasantamaria profile image
Paula Santamaría

This is a great idea! My sister works on audiovisual productions, and I always thought people in those fields could greatly benefit from a git-like tool. I'll definitely check out the repo.

Collapse
 
sebastianrath profile image
Sebastian Rath • Edited

That's interesting, a lot of people mentioned the need for version control in the audio space. It is certainly something that can be covered by SnowFS. Thanks for sharing!

Some comments may only be visible to logged-in visitors. Sign in to view all comments.