JuliaManifolds / Manifolds.jl

Manifolds.jl provides a library of manifolds aiming for an easy-to-use and fast implementation.
https://juliamanifolds.github.io/Manifolds.jl
MIT License
373 stars 55 forks source link

(Update / Improve) A Developer guide #750

Closed kellertuer closed 2 weeks ago

kellertuer commented 1 month ago

in @Affie said in https://github.com/JuliaManifolds/LieGroups.jl/issues/5

Perhaps it will help to develop a developer guide over time with steps that has to be checked off with details such as: run the formatter, put tests here, add docstrings like this, add these traits.

I will check what needs to be done, but to first document the state “as is”: We have

So at first glance I can spot two things we missed to update, probably in the last file

Let me know what else we a re missing and I will do a PR working on / improving these here; I will check afterwards wherelse this should then be adapted (ManifoldsBase/Manopt/LieGroups/...)

Affie commented 1 month ago

I haven't seen all the pages you linked before, only https://juliamanifolds.github.io/Manifolds.jl/stable/misc/CONTRIBUTING.html The paragraphs bellow this just helped me quite a bit when I read it now.

I used https://juliamanifolds.github.io/ManifoldsBase.jl/stable/tutorials/implement-a-manifold/ before to create our own group but just ended up changing the article functions slightly to use manifolds.jl ones. I now know roughly that I should have decorated some manifold with a group, done something with get_coordinates and get_vector to get hat and vee, maybe define exp_lie, log_lie, adjoint, etc., done something with Cartan-Schouten-connections to get the exp I want, etc.

I would say what is missing is the step-by-step list so you find everything that you need to know about. Mabye a good analogy is the julia docs on interfaces

kellertuer commented 1 month ago

Thanks for your feedback! You can work without a decorator for sure, you just gain a few things automatically if you work with a decorator (yes you also gain automatically more complicated error messages).

The “problem” with the tutorial you used is, that it is (plain) manifold centred, so it does not cover decorators. But a new tutorial in LieGroups (where LieGroups are also not modelled as decorators) is planned there for sure.

I will check your link and think about how to best improve our docs pages then, also taking into account your other remarks.

kellertuer commented 1 month ago

Oh, I noch clicked on your “Julia docs on Interfaces” – and that is the ManifoldsBase docs? So which Julia docs do you refer to?

Affie commented 1 month ago

Sorry, https://docs.julialang.org/en/v1/manual/interfaces/#man-interface-iteration

kellertuer commented 1 month ago

see, our interface is all full doc strings; so maybe we could add a small overview upfront.

Affie commented 1 month ago

Don't get me wrong, I find the documentation very good. There is just a lot when you look at contributing some functionality or manifold.

kellertuer commented 1 month ago

Thanks for the comment, much appreciated – and no worries, I did not understand/see your comments as generically saying the docs are bad.

Then, as the summary I already pointed out, maybe a bit of a guide where to find stuff could be added in a few places.