Asynchronous collaboration

Possibility for various Bitwig users to collaborate on a same project in a decentralized and asynchronous way. There are two main cases:

  • Members of a team work on a project together. They share versions with proposed improvements. One of them is the owner of the Main version, and accepts or rejects proposed improvements. When a new version is accepted, all of them sync to the last version.
  • Same as above but publicly. The creator of a project publishes the project. Registered Bitwig users can clone it and propose improvements. When an improvement is accepted, all the clones can be updated too.

Features for a first version:

  • Invite users to your project using the username or email associated to their Bitwig accounts (that they have shared with you previously)
  • The “main” version is hosted in one of the users’ computers.
  • Users with access can clone the main version.
  • Users can branch out from the main version and make changes there. When they are happy with the results, they can propose the branched version to the maintainer of the main version. No advanced “diff” (automatic list of changes) in this first version. The maintainer would open the alternative project, try it out, and take it or leave it.
  • When a new main version is available, all users would receive a notification to accept the update to their copies of the project.
  • To avoid confusion, version numbers would be applied automatically, identifying when a version follows the main tree or belongs to a fork.

Future features:

Pulling all of the above isn’t trivial. This is how the process could be improved:

  • For redundancy, it would be interesting that everyone in a shared project hosts copies of the main version and all the current branches of each project member.
  • Producers could host the main version in a web service like bitwiggers.com, that anyone could clone and make public proposals that the maintainers could accept or reject.
  • Proposed contributions include a diff with an automatic list of the changes made in relation to the main version it was branched from (clips, devices, modulators added, values changed…)

This feature is inspired in the git workflow but it would not be literally git.

What problem(s) would this feature resolve?

Currently Bitwig is designed as a one-person application. Sharing projects manually is of course possible, but cumbersome and prone to errors if many versions are exchanged among more than two people.

How does this feature fit in Bitwig as a product?

The Bitwig team clearly has thought about this feature. In fact, they were (probably) the ones mentioning it already when they released Bitwig 1.0:

Collaboration features are planned for future versions of Bitwig Studio. Network support is already built into the core of the software and the Bitwig Studio project file format is designed bearing collaboration features in mind. So collaboration is part of the DNA of Bitwig Studio. We are dedicated to further develop our own collaboration technology.

Is there already an alternative way to achieve this on Bitwig?

The standard way of cloud based exchange.

Could it be implemented using Bitwig components or APIs, without Bitwig team’s support?

No.

Could it be provided by an STV or something else reasonably integrated with Bitwig?

Not that we know of, other than trying to work with an actual git repository and binary files, to cover the very minimum collaboration workflow.

Are there other products that offer this feature?

Not that we know of. There are some products that offer real-time collaboration, but that is a different use case.

Relevant links (optional)

7 posts were split to a new topic: [Draft discussion] Asynchronous collaboration