Your question
Hi,
Mario suggested that I post some of our more technical questions here, so I hope this is the right place.
We are currently building a hosted environment based on Stalwart. In the first phase we plan to use Stalwart for mail, calendar, contacts and file storage, with Bulwark as the web client.
For a later phase, we are investigating the possibility of building a native file sync client for Windows, macOS and Linux.
Ideally, we would like to keep Stalwart as the central storage platform rather than introducing a second file storage system purely to get efficient desktop synchronization.
The Bulwark team pointed us towards the newer JMAP FileNode and Blob Extensions drafts:
- draft-ietf-jmap-filenode-14
- draft-ietf-jmap-blobext-01
From what we understand, these specifications could provide a very interesting foundation for this.
In particular, the FileNode draft describes direct HTTP writes, including PATCH, while the Blob Extensions draft describes delta-based mechanisms such as application/x-rdiff-delta, DeltaRecipe, PatchRecipe and chunkSize.
Our intended use case would eventually be something like this:
A customer has a 10 GB file synchronized locally. They modify approximately 20 MB of that file. Instead of uploading the complete 10 GB file again, the sync client calculates a delta and transfers only the changed data. Stalwart would then apply that delta to construct the new version.
This leads to a few questions:
- Does Stalwart plan to implement the newer FileNode direct-write/PATCH functionality and the delta mechanisms from the Blob Extensions draft?
- Is any of this already on the Stalwart roadmap?
- Would this architecture make sense for a native sync client built around Stalwart, or are we misunderstanding the intended use of these JMAP extensions?
- If this functionality is not currently planned, would Stalwart Labs potentially be interested in implementing it if there were commercial interest in it?
We would potentially be open to discussing sponsoring or contributing towards such development if that could help move this functionality upstream.
For us, the ideal long-term architecture would be to keep Stalwart responsible for the central data — including File Storage — and build the native sync client against standard JMAP/FileNode APIs rather than introducing a proprietary block-sync protocol or a separate storage platform.
There is no immediate urgency: our first phase will be web-based. But we would like to make the right architectural choices now and avoid having to migrate customer files to another storage platform later.
I’d be very interested to hear how the Stalwart developers see this.
Thanks!
Joost
I understand that topics in this category are triaged by a bot first but a human reply will follow up. If I’d prefer a human-only reply, I’ll add the no-ai tag to my topic.
on