unfoldingWord-dev / ts-desktop

translationStudio Desktop App
http://ufw.io/ts
Other
41 stars 29 forks source link

RFC: tC + tS Interop Proposal #1243

Open da1nerd opened 5 years ago

da1nerd commented 5 years ago

UPDATE: See new specification in this comment below.

Use case: translationCore and translationStudio need to be able to open and edit each other's projects.

Requirements

Proposal/Progress

TLTR; content changes will be shared through the top level usfm file.

Here is a sample top level structure. This is what tC is currently using except for the extra rut.usfm file that it doesn't appear to use anyway. Note: in the case of tS projects the rut dir may not exist. image

Implementation

When importing a project into tC or tS the application should parse the top level usfm file and then just update the target translation with the data.

Note: alignment information in the usfm file is ignored for the purpose of this import since a) tC generates this automatically, and b) tS does not provide this data, and c) the goal of this compatibility update is to share textual changes between applications.

Final Remarks

The "bible burrito" is a new specification being developed that will replace both the ResourceContainer spec and the project formats in use with tC and tS. The proposal above is a temporary solution until the bible burrito can be completed and properly implemented.

PhotoNomad0 commented 5 years ago

Let's change from using terminology of USFM 2 & USFM 3 to using USFM with & without alignments.

Since this will require changes to tS and tC, what should we do for older project support? We could:

da1nerd commented 5 years ago

@PhotoNomad0 tS is actually only generating usfm 2.

da1nerd commented 5 years ago

I just thought of a complication.

the tc and ts data is fundamentally differently in how it's organized. tS is prone to merge conflicts so we had a whole ui in the app to handle that. tC resolved that by timestamping everything so this was never an issue. but because of this difference we cannot actually support importing a whole project from tS to tC and vice versa. The best we can do is import some of the data out of the project. The biggest problem is with importing tS projects into tC. it will not be possible to maintain any of the tS metadata during that process without encountering eventual merge conflicts and corrupting the project. so we cannot do anything like moving a project from tS->tC->tS to do that would either require a) a complete overhaul of the tS project structure or b) add support to tC to handle merge conflicts :sweat:.

With all that in mind I'm back at my previous idea which was to simply add support for importing/exporting usfm and support merging that usfm with existing projects.

mannycolon commented 5 years ago

@neutrinog I thought tC supported merged conflicts. am I missing something ? @benjore @PhotoNomad0 @cckozie

da1nerd commented 5 years ago

@mannycolon I was not aware of that. Do you know how that works?

mannycolon commented 5 years ago

@RoyalSix Hey could talk a little bit about how we handle merged conflicts. I remember you worked on that feature.

mannycolon commented 5 years ago

@neutrinog tC does handle merged conflicts

da1nerd commented 5 years ago

After extensive discussion we have decided on the below solution. The tC issue for this at https://github.com/unfoldingWord-dev/translationCore/issues/5958

For both tools the following rules should be followed:

jag3773 commented 5 years ago

@neutrinog Under this scenario, what would the (flowchart) workflow look like for someone who wants to go back and forth between tS and tC on a daily basis?

da1nerd commented 5 years ago

@jag3773

  1. do work in tC and upload to DCS (tc repos are named differently than tS so there should not be a collision)
  2. import work from tc repo and merge with project in tS
  3. do work in tS and upload to DCS (will go into a different repo because of the naming difference)
  4. go back to tC and import the ts repo and merge into the tc project.
  5. repeat

So two different repositories will be regularly used.

jag3773 commented 5 years ago

OK, not ideal, but that should work. Thanks!