-
Notifications
You must be signed in to change notification settings - Fork 49
Description
Hi
This is more a discussion than a question.
I suppose this is a common use case in dev team where people have different habits : multiple tools, multiple workflow, multiple os.
I'm very interested to develop Literate Programing in my works but i found this is very difficult to impose this LP habits to other people working with me.
For example, if i wrote (me/reyman) a software in python using powerfull org-mode, org-transclusion, i generate a myprogram.org
document that weave/tangle in myprogram.py
and myprogram.md
before executing.
The function A need B to do the right thing correctly bla bla bla ...
#+NAME functionA
#+BEGIN_SRC python :tangle modules.py
def myfunctionA():
<<functionB>>
...
#+END_SRC
The function B order thing using a state of the art algorithm in machine learning bla bla bla ...
#+NAME functionB :tangle modules.py
#+BEGIN_SRC python
def myfunctionB():
... do something ...
#+END_SRC
Finally the program run this two very important function like this ... bla bla ...
#+NAME functionB
#+BEGIN_SRC python :tangle main.py
from module import *
def main():
var result = myfunctionA()
#+END_SRC
My friends use directly myprogram.py
file because like 90% of programmers they don't want LP in their workflow, and they use an IDE that don't understand anything about org file. So they directly modify the result tangled file.
So even with very small refactoring, if they decide to change the name of myfunctionA
to myfunctionA1
or ... rename the source file that contain the function A and B to modulexx.py
, my org file will be automatically broken and not in sync with these modification.
I think one way to limit interference will be to integrate unique uuid as code comment for each chunk during tangling of file, so even with little modification (like moving or renamming file) the uuid follow and it will be possible to re-sync the content after my friend modification.
Or, probably this is most complicated, and perhaps the only way to do that will be to use syncweb
(https://github.com/aryx/syncweb) software ? I didn't found integration for this tool with org, do you know something about that ?
Do you think this is a discussion i need to move to org mailling liste ?