My goal, and one we discussed as part of the build/test/release working group, is to create a reference manual for edx-platform, and later for all other Open edX services. This is groundwork that is a strong requirement before the working group can even start talking about crafting the named releases.
As you guessed, there is a lot of work involved which is why we need you! We are looking for early feedback on these docs: what would you like to find there? what is the best format and layout? can you write some of the docs?
If youâd like to contribute, Iâll be more than happy to add you to the openedx-btr-wg organization on Github. You can then directly push your changes to the PR. Just send me a personal message with your Github nickname.
Also, feel free to hack this topic to post your comments as much as you want
@nedbat As you know, Iâm having trouble documenting the FEATURES variable from the edx-platform settings, using only standard tooling from sphinx and autodoc. I recently realised it would be much easier to document this variable if it were a separate module or a class with static attributes. Also, I think it would be an improvement over a dict, as is illustrated by this example:
if settings.FEATURES.get("ENABLE_THINGY"):
do_something()
In that example, when the âENABLE_THINGYâ feature is removed or renamed, the code keeps working, but the do_something function is no longer called. I think it would be better if this code raised an error, as we would get with:
if settings.FEATURES.ENABLE_THINGY:
do_something()
What are your thoughts? There are 1300 calls to FEATURES in edx-platform, so it would be a rather big PR, but if you agree then I can get started. I can always keep the .get() interface to maintain backward compatibility:
We talked about this problem a bit last week. I think the consensus was that namespacing all the âfeaturesâ into FEATURES wasnât actually gaining us anything. No one could explain what should go in FEATURES, and what should be a top-level Django setting.
So how about just dumping the whole dictionary into the Django settings?
Iâve done some prototyping for moving FEATURES to a dedicated module or unloop it in the settings. Itâs tedious, but completely doable. However, this is a rather big change and Iâd rather avoid solving both questions at the same time. I think itâs best if we open a separate PR to migrate the FEATURES settings and document them. Can I suggest we focus on documenting other settings for now? Iâll work on improving my PR.
toxinu
(Geoffrey L. (OpenCraft) - opencraft.com/help)
7
Thatâs a great idea overall!
Documenting all the settings is really nice and I personally prefer to document it near the code instead of a separated text file (like Django project do), it keeps it easier to maintain.
My main worry is that as a newcomer developer it already feels like the documentation is a bit scattered between the edx-developer-docs, docs.edx.org and the repository docs. At first glance it doesnât look like a very well maintained documentation and doesnât seems to be truthlike. Maybe at a first step we should discuss about how this new resource will be accessible compare to the existing ones because the better the documentation is written if it is not easily readable, it wonât be very useful.
I understand that it is a bit out of scope of the build/test/release working group but, thatâs my two cents.
Thanks for your answer @toxinu! I agree that the docs are too scattered and not very well organised. Fixing this is a rather big task in itself and it would be the working groupâs job to do this; unfortunately, 1) weâre spread thin at the moment and 2) I do not have access to the deployment scripts that edX uses to deploy those docs. Thus, the best I can do for now is to improve the docs in the edx-platform repo and host them myself. For instance, this is the result of the ongoing PR: https://docs.openedx.overhang.io/reference This is very much a work-in-progress of course.
I added a few DOCUMENTME tags here and there in the pull request. Everyone in the BTR working group should feel free to add commits to this PR to replace those tags, or add a few more.
Actually, I was about to comment on this. I think âReference Manualâ is too broad a term. I donât see the point in having one book that covers both REST API docs and settings/deployment docs. Why donât we keep it simpler, and call this the âSettings/Deployment Reference Manualâ?
Naming is one of those hard and important things How we name this manual will impact what we actually put in it.
My vision for this manual is âthe thing that developers and platform administrators will turn to to figure out what does what in edx-platformâ. Also, what goes into this manual is what should be considered sufficiently important that we should keep track of changes made to its content. API docs fits both these criteria: developers want to have a reference of API endpoints (and the existing docs are great for that) and they want to be informed of changes made to the API docs.
Admittedly, the API docs is more developer-oriented, and the settings and operational command docs are more administrator-oriented. But this is a narrow distinction: in practice, developers are also in charge of deploying the platform, and vice versa.
Also, itâs just more convenient to have a unified ./docs folder that contains a single sphinx project. It makes it easier to compile and deploy the docs.
This question is yet another one of those where I have a strong opinion, but I donât think itâs a big deal if we donât do things my way. So if youâd rather keep the API and the settings/operational docs separated, Iâm fine with that. But then we need to find a more concise name than âSettings/Deployment Reference Manualâ. Something like âedx-platform developer/administrator handbookâ â but better.
@toxinu@sambapete@BbrSofiane@jmaupetit@morenol@jramnai Hi! You guys mentioned before that you were interested in contributing to the build/test/release working group. As you may already know, I have started a pull request on edx-platform to kickstart the documentation effort: https://github.com/edx/edx-platform/pull/23183 I would like you to help document the settings and operations involved in the deployment of Open edX (more specifically: edx-platform). To do so, I would like you to add commits to this PR.
Are you guys still interested in this? Does the current containment situation somehow limit your work capacity? (it does affect mine) If you donât think this pull request is relevant, why?
I would like to have feedback from everyone. As far as I am concerned, a simple âI donât have time for this at the momentâ is enough. I just need to know who would like to be really involved and what limits your participation.
@regis! Iâm truly sorry for my lack of responsiveness, but as you expected, since a few weeks now, our house became a noisy school and playground for our kids. And this really impact my work capacity
Apart from parenting, we also have new high order priorities at FUN to handle our increased traffic and requests from the french government⊠so yeah, I donât have much time to help you or provide relevant feedback at this time.
From the start I was willing to participate as a reviewer for the documentation and I was mostly interested by the build, test and release. I may be totally wrong on this, but it is becoming the documentation / build / test / release group.
But I clearly understand the importance of documenting in order to build, test and release.
@regis Sorry for the radio silence! Yes, the last couple of weeks have been hectic as we had to re-think our strategy for the next couple of weeks.
Fortunately, online content is at the center of it. I am definitely interested in contributing. I will catch up on the work in the next couple days (will probably message you on slack at some point).
toxinu
(Geoffrey L. (OpenCraft) - opencraft.com/help)
16
Hi @regis
Last weeks at OpenCraft we tackled some Juniper related bugs but hopefully we will have more time to contribute to the documentation very soon.
Thanks everyone for your quick reactions, I appreciate it! Itâs OK if you are not available for working on the reference docs; as Juniper is around the corner, Iâm sure weâll have other opportunities to work together really soon