Page MenuHomePhabricator

The great big BSU Rewrite
Open, NormalPublic


Plan is to completely rewrite BSU and get it into a state that

  • Supports Multiple Presets Easily
  • Is Publicly Releasable

To achieve this:

  • Rewrite BSU.Sync in .NET Core, utilising zsyncnet once its fully compatible (no more nasty java IKVM stuff)
    • Written in a completely state-less manner where possible to avoid the hassle of having to "load" server to do an update
    • Fully backwards / forwards compatible with current tooling
  • Rewrite BSU "server" side tools to work as command line tools that can be automated using bash scripts etc.
  • Create "proper" BSU Client using WPF / .NET Core 3 (Or .NET 5, Microsoft need to make up their mind on the branding)

Main goal is to make BSU much easier to work with both for users / server admins and as developers (to enable integration into other stuff down the line)

Reliant on the next version of .NET to enable WPF usage. Plan is to make everything as cross platform (minus the windows desktop client) as possible to avoid having to use mono anywhere along the line.

Related Objects


Event Timeline

jsm triaged this task as Normal priority.May 12 2019, 11:52 PM
jsm created this task.

Random thought:
Evaluate how hard/usefull it would be to create some form of compatibility with existing sync tools:

  • Which tools exist, what do they do: Arma3Sync, workshop, that finland sync thing, swifty. Any other well known ones?
  • How can we make it easier for people using those to join us?
  • How can we make it viable for people using those to use BSU?
  • In general, how can we make BSU play nice with those tools?

Not sure if any of this is doable, but it might be worth a thought.

In theory BSU plays nicely with mods downloaded through other sources, as long as the files are identical and in the same place. So for example if a user has downloaded (say) RHS using Swifty and they point BSU to the same folder we won't redownload any files in RHS unless we are running a different version to them.
Should be the same for workshop, but the problem there is where its downloaded to.

Potentially we could have an option to let BSU search multiple folders, so we have one download folder but we let users to say "hey i also have mods in folders x y z" and we don't redownload those files (and perhaps update them).

Some stuff noted in current BSU:
Folder paths are a pain. trailing slash or not?
Linux vs Windows path separator
Zsync files can only be created during updates. If the folders are copied, but zsync failed -> have to delete everything and rerun. (or magic it)

copying mods to server and then updating repo from there seems a bit redunant, and is annoying

dumping the smart update process on the server, and just re-creating zsync files might be an option

Subject to performance testing it should be good. If it's an IO limit we
can put the preset on a high speed, high IOPS device.

In T561#8616, @Keithen wrote:

copying mods to server and then updating repo from there seems a bit redunant, and is annoying

This exists in order to have a staging phase