{"action":"created","issue":{"url":"https://api.github.com/repos/tlaplus/tlaplus/issues/157","repository_url":"https://api.github.com/repos/tlaplus/tlaplus","labels_url":"https://api.github.com/repos/tlaplus/tlaplus/issues/157/labels{/name}","comments_url":"https://api.github.com/repos/tlaplus/tlaplus/issues/157/comments","events_url":"https://api.github.com/repos/tlaplus/tlaplus/issues/157/events","html_url":"https://github.com/tlaplus/tlaplus/issues/157","id":312281384,"node_id":"MDU6SXNzdWUzMTIyODEzODQ=","number":157,"title":"Improvements to source control integration","user":{"login":"DaveCTurner","id":5058284,"node_id":"MDQ6VXNlcjUwNTgyODQ=","avatar_url":"https://avatars3.githubusercontent.com/u/5058284?v=4","gravatar_id":"","url":"https://api.github.com/users/DaveCTurner","html_url":"https://github.com/DaveCTurner","followers_url":"https://api.github.com/users/DaveCTurner/followers","following_url":"https://api.github.com/users/DaveCTurner/following{/other_user}","gists_url":"https://api.github.com/users/DaveCTurner/gists{/gist_id}","starred_url":"https://api.github.com/users/DaveCTurner/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/DaveCTurner/subscriptions","organizations_url":"https://api.github.com/users/DaveCTurner/orgs","repos_url":"https://api.github.com/users/DaveCTurner/repos","events_url":"https://api.github.com/users/DaveCTurner/events{/privacy}","received_events_url":"https://api.github.com/users/DaveCTurner/received_events","type":"User","site_admin":false},"labels":[{"id":456103425,"node_id":"MDU6TGFiZWw0NTYxMDM0MjU=","url":"https://api.github.com/repos/tlaplus/tlaplus/labels/Toolbox","name":"Toolbox","color":"fbca04","default":false},{"id":456103490,"node_id":"MDU6TGFiZWw0NTYxMDM0OTA=","url":"https://api.github.com/repos/tlaplus/tlaplus/labels/Tools","name":"Tools","color":"b60205","default":false},{"id":320288052,"node_id":"MDU6TGFiZWwzMjAyODgwNTI=","url":"https://api.github.com/repos/tlaplus/tlaplus/labels/enhancement","name":"enhancement","color":"84b6eb","default":true}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":15,"created_at":"2018-04-08T07:34:21Z","updated_at":"2018-10-03T18:54:59Z","closed_at":null,"author_association":"NONE","body":"I am part of a team working on TLA+ modelling, using `git` for coordination. There are a number of things that TLA+ and/or the toolbox do that get in the way of this workflow a bit, which largely boil down to a lack of clean separation between source and generated ones.\r\n\r\nThis is kind of a meta-issue since it covers a handful of different things. I thought it better to open one issue covering all of the below than four separate issues, because I think subsequent discussion will cut across them all, but I can break it down to separate task-based issues if that'd be preferred.\r\n\r\n## Source and generated files share directories\r\n\r\nWe have arrived somewhat empirically at a [`.gitignore` file](https://github.com/elastic/elasticsearch-formal-models/blob/6004e822f9e47a2e1e8fcb956d8edf02257baa45/.gitignore) that works ok as long as all of our models are called `model`, but it would be much preferable if all the files we did want to ignore were in a single directory.\r\n\r\n## PlusCal translation modifies its own source file\r\n\r\nWe don't always use PlusCal, but when we do it works well to [commit just the changes to the PlusCal code](https://github.com/elastic/elasticsearch-formal-models/pull/29/commits/2306b4816f3ad067ec8c642784302226bc0d7c01) meaning that [reviewing the commits](https://github.com/elastic/elasticsearch-formal-models/pull/29/commits) is easier. This is a bit of a pain at commit time as it requires extra effort to avoid committing unwanted changes. It's particularly tricky if one changes something below the translated code (e.g. [an invariant](https://github.com/elastic/elasticsearch-formal-models/pull/29/commits/2306b4816f3ad067ec8c642784302226bc0d7c01#diff-3e9a0233560739b98f9c511b2f9e1db9R824)) as tools like `git add --interactive` work through the changed hunks in file order. \r\n\r\nIt is also easy to [forget to do the final translation before merging](https://github.com/elastic/elasticsearch-formal-models/commit/4e12262e76ba4acdc325555167b6f6813c6aec49). Ideally we wouldn't need to commit any translated code, as it would be considered \"generated\" and stored in the separate directory mentioned above.\r\n\r\n## Modification history by default\r\n\r\nA very minor thing is the `Modification History` footer comment that's included by default. Yes, you can [delete it](https://github.com/elastic/elasticsearch-formal-models/pull/29/commits/a1c7b7fcb01e82ce3608edd6723be58c6b5c9700) and it doesn't come back, but is it really necessary at all?\r\n\r\n## Readability of model description\r\n\r\nIt's nice that there's a GUI for defining the model, but when we're reviewing changes we look at diffs. Fortunately it's [not _completely_ unreadable](https://github.com/elastic/elasticsearch-formal-models/pull/29/files#diff-21184bccf6b6630eb553418f79871444R40) and a bit of experimentation is enough to work out how to parse the model parameter definitions, but it'd be nice for reviewers if this file were more readable."},"comment":{"url":"https://api.github.com/repos/tlaplus/tlaplus/issues/comments/426756127","html_url":"https://github.com/tlaplus/tlaplus/issues/157#issuecomment-426756127","issue_url":"https://api.github.com/repos/tlaplus/tlaplus/issues/157","id":426756127,"node_id":"MDEyOklzc3VlQ29tbWVudDQyNjc1NjEyNw==","user":{"login":"DaveCTurner","id":5058284,"node_id":"MDQ6VXNlcjUwNTgyODQ=","avatar_url":"https://avatars3.githubusercontent.com/u/5058284?v=4","gravatar_id":"","url":"https://api.github.com/users/DaveCTurner","html_url":"https://github.com/DaveCTurner","followers_url":"https://api.github.com/users/DaveCTurner/followers","following_url":"https://api.github.com/users/DaveCTurner/following{/other_user}","gists_url":"https://api.github.com/users/DaveCTurner/gists{/gist_id}","starred_url":"https://api.github.com/users/DaveCTurner/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/DaveCTurner/subscriptions","organizations_url":"https://api.github.com/users/DaveCTurner/orgs","repos_url":"https://api.github.com/users/DaveCTurner/repos","events_url":"https://api.github.com/users/DaveCTurner/events{/privacy}","received_events_url":"https://api.github.com/users/DaveCTurner/received_events","type":"User","site_admin":false},"created_at":"2018-10-03T18:54:59Z","updated_at":"2018-10-03T18:54:59Z","author_association":"NONE","body":"> Generally, the reasoning seems upside-down here. Source control management is an auxiliary tool to simplify the life of software engineers, not dictate how (programming/specification) languages should be designed.\r\n\r\nI hold a different viewpoint. SCM is a tool, but so are programming & specification languages; both are important, and neither is above the other in terms of influencing their respective designs. Working as well as possible with other tools in the ecosystem is an important feature to me, which is why I opened this issue instead of just living with it. It is definitely an unusual design to mix source and generated code in a single file (vs, say, combining them in the UI) but it's not unusable, and I can see why it might be preferred in some workflows."}}
{"actor":{"display_login":"DaveCTurner"}}