Hi! Wanted to get some opinions and ideas on how to best collaborate on Pluto notebooks and what’s worked for you.
Some context: I have a pretty large monorepo with packages that I manage with LocalRegistry at work. Something that’s proven useful is to use Pluto for some highly interactive dashboards, like Power BI or Tableau on steroids that also reuses all of my Julia code. When it was just me, it was pretty easy to manage: I’d create a new package with some new functionality, create a notebooks folder/environment that had a pinned Pluto, and then create the notebook while trying to move as much functionality as possible to the parent package. During development I’d use the “Pkg cell” pattern then use PlutoLinks.jl to auto-revise my package as I developed. I’d remove those and publish my package so that the notebook was reproducible by colleagues.
Now, however, I have more than just myself working on the code, including the dashboards. With the package code it’s standard git - no problems there. With the Pluto notebooks it’s a bit more challenging. Sometimes cells are moved, perhaps innocuously, or accidentally, or even intentionally but would not result in “logic” changes. Sometimes the notebook might have been started with a different Pluto version, or packages updated, etc. These are a bit more difficult to track in git diffs in terms of what logically has changed. When multiple individuals make changes, it can get confusing.
I’m super grateful for even having this sort of functionality in the first place. As far as I’m aware, trying to merge diverging changes from something like Power BI seems impossible. Right now our solution for Power BI is to let everyone know if someone is going to “checkout” the shared file for editing, effectively just having one person able to work on it at a time, with no way of hard enforcing coordination. The fact that I at least get diffs in Pluto is already a huge step up.
But I’d like to know if there’s anything I’m missing/could do better. Should I be enforcing stricter behaviour on how to develop notebooks - e.g., more encouragement of starting Pluto in the same way, actively checking diffs to make sure cells weren’t moved accidentally, etc.? Are there tools that I’m missing out on that can help with this sort of management?
Would love to hear from experiences in the community
.