Quiver: A modern commutative diagram editor
github.com
github.com
Let me also point out that I wrote a short blog post about the motivation behind quiver, as well as some of its key features, here: https://varkor.github.io/blog/2020/11/25/announcing-quiver.h...
Nice app by the way.
The path forward are PWAs and the ability to use them in any browser.
Otherwise don't cry that Web has turned into ChromeOS, when everyone and their dog is shipping Chrome alongside their application.
One nitpick: Why do you use a Makefile without using any of the features of Make and then even requiring a special GNUMake feature to make things work like a shell script? Why not simply provide shell scripts in the first place?
* It's an old habit, I'm used to handwriting my own Makefiles for every project, and every time I start a new project it's an instinct to create a .gitignore and Makefile
* There is always a possibility of needing make features in the future. Like nowadays my makefiles have `make build` recipe which builds docker containers via docker-compose and a `make run` that depends on `build` and then shells into that container.
* make is easier to use than shell scripts since you can just do `make <cmd>` to run your command
I'm sure the graders appreciated it, too, since my handwriting/drawing skills are lacking.
It's by far the best diagramming tool for Latex.
I do not find it especially good for commutative diagrams, though. I usually type tikz-cd code for those cases.
Out of curiosity: Is there a way to do commutative diagrams well with graphviz ? I'd instinctively prefer do do such diagrams in a declarative way and let a layout engine worry about making it look nice. However, I never had to dabble into area that makes heavy use of such diagrams – maybe it's just too hard to make look good for typesetting.
I also have a theory that it would be good to have a re-implementation of the graphviz core to it more modular and make extensions such as Quiver more feasible, as from an outside, layman's view graphviz is pretty old and does not necessarily work well in today's frameworks other than encapsulating it with lotsa layers above it.
A quick thing that occurs to me, adding all those elements by point and click appears to be extremely tedious, reminds me of working with music notation software and how I prefer much more something like lilypond.
This makes me wonder, is there some text serialization that could be written by hand? I picture something like graphviz notation. Quiver could use a force-directed layout as a first rough step, but users would then have to manually fix the diagram by dragging and dropping the nodes.
As a backend developer curious about such frontend development, could you write up on how to architecture large apps without a reactive view framework behind. Or, if a write-up like that exists, a pointer would also be great.
I'm not sure I would recommend this strategy to others. It very much comes down to a personal preference, and I imagine using an existing framework would be much more accessible to someone starting frontend development. I feel I might get some stick if I were to suggest this to newcomers :) I'm afraid I don't know of any existing write-ups!
Some UI troubles:
1. I would like to be able to move a node by dragging it around.
2. While the "b" key does its job to move the objects, it is very confusing because it pans the view so that the moving object is fixed, giving the impression that everything moves but the object in question.
I also agree that fixing the view to the vertices with B can be confusing. My plan is to change this.
Thanks for your comments!
Besides, in tikz I draw 3D commutative diagrams whose arrows pass in front/behind of each other. It is rather annoying to write the code for that, and it would be nice to do that somewhat automatically. Does quiver support this? For example, to draw a 3D cube.
EDIT: more comments: there are some important missing arrowhead styles. For example, if there are bijections in your diagram, it is common to use a single bidirectional arrow with two arrohweads.
- Crossing over arrows: https://github.com/varkor/quiver/issues/19
- Two-headed arrows: https://github.com/varkor/quiver/issues/37
I hope to get to them before too long. Thanks for the suggestions!
It's on my list of side projects that I never seem to put a dent into.
Still a great job!