plone / papyrus

A buildout to run multiple versions of the plone documentation
GNU General Public License v2.0
8 stars 7 forks source link

External documentation must respect versions from coredev/ release #55

Closed jensens closed 9 years ago

jensens commented 9 years ago

This is a copy of issue plone/documentation#275 moved here because its a papyrus related issue

Story

I have this PR #192 open and in there we figured out to better include buildout.coredev documentation instead of repeating ourselves here.

So I tried to add the buildout.coredev/docs to externals.txt like this:

https://github.com/plone/buildout.coredev.git,source/documentation/develop/coredev

Problem

This fetches the 4.3 docs (because its set as default branch). I don't see a way to set the branch to 5.0.

This is valid for all external packages.

Criticism

Ideas/ solution

Why don't we use mr.developer and the sources files in buildout.coredev? For some (what we consider core docs?) we already do.

@svx answered:

Hi,

Ok let me explain:

We do have versions of the docs for different versions of plone, all of this is done in https://github.com/plone/papyrus here we have branches for version 3,4,5 and in this branches is also configured which version of the docs should be pulled, this is maybe not ideal but it is proven to work.

Release of docs have also a git tag, at least that is on our list, but there tagged with the release date of the docs, and the reason for that is,with that tag, the build server builds automatically pdfs, zeal/dash/, docker cts and lots of other stuff.

Git-sparse is in git since version 1.7 in the ubuntu world that means since 12.04, I am quite sure that you are developing on a newer version :)

This said, I completely agree spars is not perfect, and it is sometimes hard to use, but it is also not something what is rare to use, it works.

Some other points you mentioned are really interesting and I certainly would like to test them, but please keep in mind, the docs 'core' team is quite small we are two people at the moment, so we simply have a time issue. Second, we also have to keep in mind, that not all of the user are developers, so we also have to try to think as a user, this is hard, but the docs in general are not developer only, this may not be the case for core devs, but imho we have to find a sane way to work on both equal easy.

At the end I also want to say, that the whole docs project is also, like the readme of papyrus says, work in progress and we are learning and figure things out all the time, and yes sometimes we do not get it right straight form the beginning, but at least when I look what we currently have and how other projects doing it [as we talk and work together with other docs writers, even with professional ones] we maybe not perfect but we also not doing that bad.

jensens commented 9 years ago

Goal in short:

I looked a bit further into the issue.

Current:

Implementation for latest :

Implementation sketch for release fixed docs (much more effort):

Responsibility

svx commented 9 years ago

Hm,

I guess I do not understand what you mean,

I do not understand why you only focus on buildout.coredev. the docs are more than coredev, can you please explain ?

I do not understand what you want to do with tags and build releases can you please explain ?

And I certainly do not see our current setup as a bug, there is place for improvements sure ! But labe this issue as bug, I certainly do not agree :).

jensens commented 9 years ago

look, i.e. plone.app.theming is always at master.

jensens commented 9 years ago

btw, i have a simple solution to use the externals from the matching coredev with mr.developer and a simple generated script. this would simplify the whole a lot too.

polyester commented 9 years ago

I think there's a misunderstanding at play here. But let's see your solution, @jensens and see what it does.

I have a feeling it may have to be tweaked, since there is a specific reasoning behind which packages go where in the docs, and which ones we currently not include at all. But it's much easier to talk if you make a papyrus feature branch, so we can all see what it actually does.

Because now we're at semantics and misunderstandings, which does not clear the picture.

jensens commented 9 years ago

yes, more at semantics. i'll prepare a solution on a branch. stay tuned.

just another try to explain: plone.app.theming uses 1.1.x branch for 4.3.x - ans so the docs there targeting 4.3.x, right? https://github.com/plone/buildout.coredev/blob/4.3/sources.cfg#L112

but it targets master for 5.0 https://github.com/plone/buildout.coredev/blob/5.0/sources.cfg#L76

papyrus external.txt does not take branches into account. so the plone.app.theming addon docs are the same master docs for both docs.plone.org (4.3 and 5.0).

polyester commented 9 years ago

Yes, that makes it clearer. It was always meant for externals.txt to have versions (it has some different lines for instance for 4 and 5), we just never fixed the versions proper. So yes, they should be pinned.

Only, we fetch more packages than just mentioned in coredev, we also fetch for some add-ons. And, we really don't want full packages, just the /docs dir (and readme.rst + changes.rst), since otherwise it messes up the translating setup and makes it extremely confusing for non-developers to contribute to the docs.

svx commented 9 years ago

Ah now I get it !

yes that is right, currently papyrus does not take care about that, yet.

I would like to see that fixed, but there is one important step to keep in mind, and this is partly the reason why we not dealt with that so far.

We have to make sure that all the docs of the different version are ok, meaning we have proper docs for all versions of the includes, following our best practices and style guidelines. How we make want to make sure we have this in a short period of time?

If we do not do that, our quality we decrease a lot.

I am looking forward to your branch !

jensens commented 9 years ago

Here we go https://github.com/plone/papyrus/tree/jensens-external-refactoring This is the rough idea including sparsing the git repos (which tooks the most time btw.) Also make html works as it seems, but i did not check translations and all the other shiny but complex stuff.

jensens commented 9 years ago

some remarks:

svx commented 9 years ago

@jensens please remember when we decided to try out and use git-sparse [Munich sprint year] there was not the shiny new version of mr.developer, so we had to go with something what was already there.

We knew from the beginning that is was not really perfect had had/has some issues, for our use case.

So yes, it is not perfect but well for the beginning it was better than other possible solutions. Please also see that at this point last year, it was not quite clear where we will go with the docs, that is something what evolved during the last year, through learning, getting knowledge, experience and talk with other documentarian.

svx commented 9 years ago

btw: maybe you already saw it:

https://github.com/plone/papyrus/issues/54

As you can see we already started to lock into the new version of mr.developer .....

just saying :)

jensens commented 9 years ago

I know. The problem here is not mr.developer, it is that git clone --depth is quite complex and its behavior is not all the time what you would expect at the first place.

jensens commented 9 years ago

@svx Also dont take it too much as critics, the idea to collect all the docs from the different sources is great and improves the docs a lot!

I just want to offer a solution for the problem described above using our usal tool chain of buildout and mr.developer plus some additional declarative generated scripts and so reducing the overhead of/ time used by the documentation team by pointing to sources/branches already maintained by the developers. The only major difference is the symlinking used in that approach

What do you think about the solution? Shall I turn it inot a Pull Request?

svx commented 9 years ago

It definitely looks really nice and interesting that for sure, I had no time to play with it yet, I will do that next week, maybe we could use to start your solution on Plone 5 documentation, I will have a look after Tokyo, meaning in the next 6 days.

jensens commented 9 years ago

take your time.

Sure, we can start using it for Plone 5.

But with this approach we even dont need to have papyrus branches for different versions of the docs anymore, we can just need for each docs-version a different checkouts-documentation.cfg, like checkouts-documentation-3.3.cfg, checkouts-documentation-4.3.cfg, checkouts-documentation-5.0.cfg and so on. In its details this need some hirnschmalz (deeper thinking about it). But it would reduce complexitiy in terms of multiple parallel branches here.

svx commented 9 years ago

@jensens can you write some docs how 'assemble-docs.tpl.genshi' works ?

svx commented 9 years ago

@jensens Would you mind to document or explain this part too:

[assembly-information]

first is order for symlinking,

divided by dash,

second is either

the package path to documentation in mr.developers sources-dir

or a COMMAND (executed before the sym-linking)

1-COMMAND = mkdir -p ${buildout:docs-dir} 1-documentation = documentation 2-bobtemplates.plone/docs = documentation/develop/addons/bobtemplates.plone 2-buildout.coredev/docs = documentation/develop/coredev 3-COMMAND = mkdir -p ${buildout:docs-dir}/documentation/external 3-ansible-playbook/docs = documentation/external/ansible-playbook 3-collective.transmogrifier/docs = documentation/external/collective.transmogrifier 3-diazo/docs = documentation/external/diazo 3-plone.api/docs = documentation/external/plone.api 3-plone.app.caching/docs = documentation/external/plone.app.caching 3-plone.app.contentlisting/docs = documentation/external/plone.app.contentlisting 3-plone.app.contenttypes/docs = documentation/external/plone.app.contenttypes 3-plone.app.dexterity/docs = documentation/external/plone.app.dexterity 3-plone.app.multilingual/docs = documentation/external/plone.app.multilingual 3-plone.app.robotframework/docs = documentation/external/plone.app.robotframework 3-plone.app.testing/docs = documentation/external/plone.app.testing 3-plone.app.theming/docs = documentation/external/plone.app.theming 3-Products.TinyMCE/docs = documentation/external/Products.TinyMCE 3-tutorial.todoapp/docs = documentation/external/tutorial.todoapp

this numbering thing is just confusing me at the moment and if I try to add or change something it will break... we have always to remember, the idea is, that also less technical people are able to contribute to the docs, meaning we need to document what, why, where and how we are doing stuff and/or use solutions which will also work for people like me for example :)

Thanks for your implementation I am still playing with it ! :)

polyester commented 9 years ago

After a hand-merge and some extra documentation, this is now merged with https://github.com/plone/papyrus/commit/85431194f301caa9f6154588461ebd375e114f6f