Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Document distributions in the 6.1 upgrade guide. #1733

Merged
merged 42 commits into from
Nov 5, 2024
Merged
Show file tree
Hide file tree
Changes from 14 commits
Commits
Show all changes
42 commits
Select commit Hold shift + click to select a range
4a4cc22
Document distributions in the 6.1 upgrade guide.
mauritsvanrees Oct 8, 2024
7a20cee
Review of Distributions documentation
stevepiercy Oct 9, 2024
1bc1a9b
Align term definition with upgrade guide docs, avoiding circular refe…
stevepiercy Oct 9, 2024
d370c78
Fix admonition syntax
stevepiercy Oct 9, 2024
bb99d92
Add link to repo
stevepiercy Oct 9, 2024
7331a00
Enhance screenshot with card syntax
stevepiercy Oct 9, 2024
74dae32
Merge branch '6.0' into maurits-upgrade-61-distributions
stevepiercy Oct 9, 2024
06e3008
Merge branch '6.0' into maurits-upgrade-61-distributions
stevepiercy Oct 9, 2024
a1059ca
plone.exportimport is not for upgrading Plone.
mauritsvanrees Oct 9, 2024
486def1
Here we do not start a new project, I just mean: start Plone.
mauritsvanrees Oct 9, 2024
47da6fd
These are not 'frontend distributions'.
mauritsvanrees Oct 9, 2024
8c6e57f
Creating a 6.1 CMFPlone site differs from 6.0, that is the main point…
mauritsvanrees Oct 9, 2024
73facb0
Don't mention installing add-ons here, activating is enough.
mauritsvanrees Oct 9, 2024
729b306
Merge branch '6.0' into maurits-upgrade-61-distributions
stevepiercy Oct 9, 2024
4001a5a
Merge branch '6.0' into maurits-upgrade-61-distributions
MrTango Oct 25, 2024
8052b2a
reorganize distribution docs
davisagli Oct 31, 2024
ac367b7
Apply suggestions from code review
davisagli Nov 1, 2024
01869a2
Merge branch '6.0' into maurits-upgrade-61-distributions
davisagli Nov 1, 2024
f9b845c
Merge branch '6.0' into maurits-upgrade-61-distributions
stevepiercy Nov 3, 2024
e25b72d
Update conceptual guide for distributions, where the significant chan…
stevepiercy Nov 4, 2024
d36830f
Create an entry in `index.md` to include a new `developer-guide/index…
stevepiercy Nov 4, 2024
a7ead92
Update glossary reference to other distribution material
stevepiercy Nov 4, 2024
007a755
Add cross-reference
stevepiercy Nov 4, 2024
5c0f197
Add JSON Schema to Glossary
stevepiercy Nov 4, 2024
5c45891
Tidy up create-a-distribution.md.
stevepiercy Nov 4, 2024
28d42ec
Revert distribution names and enhance `ALLOWED_DISTRIBUTIONS` usage.
stevepiercy Nov 4, 2024
ba0e074
Tidy up add-site.md, mostly docs style guide stuff, and a rewording o…
stevepiercy Nov 4, 2024
7f78901
Tidy up distributions section in upgrade-to-61.md
stevepiercy Nov 4, 2024
11d6d6c
Update docs/backend/upgrading/version-specific-migration/upgrade-to-6…
stevepiercy Nov 5, 2024
f024469
Merge branch '6.0' into maurits-upgrade-61-distributions
stevepiercy Nov 5, 2024
606af43
Move add-site into Admin Guide.
stevepiercy Nov 5, 2024
fcd9757
Remove stray characters from bad merge
stevepiercy Nov 5, 2024
7ccaecd
Resolve TODOs by moving file and adding link to new choose-user-inter…
stevepiercy Nov 5, 2024
769336a
Merge branch '6.0' into maurits-upgrade-61-distributions
stevepiercy Nov 5, 2024
9267edb
Update glossary with Zope instance and cross-references to Zope itself.
stevepiercy Nov 5, 2024
3d900d1
Fix cross-references
stevepiercy Nov 5, 2024
6fb37ee
Fix link
stevepiercy Nov 5, 2024
585ef0a
Ignore link to static images
stevepiercy Nov 5, 2024
0fc4efe
Ignore searches on GitHub as it rate limits and times out.
stevepiercy Nov 5, 2024
469e63c
Merge branch '6.0' into maurits-upgrade-61-distributions
stevepiercy Nov 5, 2024
4612c57
Merge branch '6.0' into maurits-upgrade-61-distributions
davisagli Nov 5, 2024
90f20f6
Update docs/developer-guide/index.md
stevepiercy Nov 5, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
stevepiercy marked this conversation as resolved.
Show resolved Hide resolved
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
82 changes: 82 additions & 0 deletions docs/backend/upgrading/version-specific-migration/upgrade-to-61.md
stevepiercy marked this conversation as resolved.
Show resolved Hide resolved
Original file line number Diff line number Diff line change
Expand Up @@ -117,3 +117,85 @@ If you have an existing Plone 5.2 or 6.0 site and you migrate to 6.1, then migra
- If the `plone.app.discussion` Python package is _not_ in your setup, but the site has existing comments (discussions), then the migration code stops with an error.
Apparently you _were_ using comments in your site.
Add the `plone.app.discussion` package to your dependencies, and run the migration again.


## Distributions

Plone 6.1 introduces the concept of a Plone {term}`distribution`.
A Plone distribution is a Python package that defines specific features, themes, add-ons, and configurations that get activated when creating a Plone site.
Now it is available in core Plone as the recommended way for creating a Plone site.

When you install the [`Plone` 6.1 Python package](https://pypi.org/project/Plone/), you get several new packages and two distributions:
davisagli marked this conversation as resolved.
Show resolved Hide resolved

- [`plone.distribution`](https://github.com/plone/plone.distribution) is the new main package that offers the basis for distributions.
- [`plone.exportimport`](https://github.com/plone/plone.exportimport) imports and exports content, users, and other objects between Plone sites.
`plone.distribution` uses it.
- [`plone.volto`](https://github.com/plone/plone.volto) is the distribution to create a Plone site with the default frontend Volto.
This package was already present in Plone 6.0, but was upgraded to a distribution.
- [`plone.classicui`](https://github.com/plone/plone.classicui) is a new package and is the distribution to create a Plone site with the Classic UI frontend.

When you start Plone, the launch screen prompts you to choose a distribution when creating a new Plone site.

````{card}
```{image} /backend/upgrading/version-specific-migration/images/distribution-chooser.png
:alt: Launch screen for choosing a distribution
:target: /_images/distribution-chooser.png
```
+++
_Launch screen for choosing a distribution_
````

After you select a distribution, you will fill out a brief form to configure your new Plone 6.1 site, similar to the process for Plone 6.0.
davisagli marked this conversation as resolved.
Show resolved Hide resolved

Distributions are optional.
If your project only uses the `Products.CMFPlone` Python package, you can still create a Plone site in the usual way.
davisagli marked this conversation as resolved.
Show resolved Hide resolved
Consider, however, the following differences from distributions and from Plone 6.0.
davisagli marked this conversation as resolved.
Show resolved Hide resolved

- The configuration form is simpler and shorter.
- The created site has no content, and therefore no {guilabel}`News` or {guilabel}`Events` folders.
- You must activate add-ons through the {guilabel}`Add-ons` control panel.

There are a few things you should consider when upgrading a project to, or making an add-on compatible with, Plone 6.1:

- In general, you don't need no change anything.
davisagli marked this conversation as resolved.
Show resolved Hide resolved
Your existing site will keep working.
But adding a new site may change in the ways described earlier.
- Do you want to use the `Products.CMFPlone` package (0 distributions), either `plone.volto` or `plone.classicui` (1 distribution), or `Plone` (2 distributions)?
- When your site used the default Volto frontend, you will already have `plone.volto` as a dependency.
davisagli marked this conversation as resolved.
Show resolved Hide resolved
This can stay the same.
- When your site uses only the `Products.CMFPlone` package, the frontend is Classic UI.
This can stay the same, but you may want to depend on `plone.classicui`.
With that package you can still create a new site and have the same content as before.
- When your site is using the `Plone` package, you will have the two new distributions available.
davisagli marked this conversation as resolved.
Show resolved Hide resolved
This is fine.
If you know you only need `plone.volto` or only need `plone.classicui`, you can switch to that.
davisagli marked this conversation as resolved.
Show resolved Hide resolved
You can also limit the options for selecting a distribution by setting the environment variable `ALLOWED_DISTRIBUTIONS` with fewer options.
Set `ALLOWED_DISTRIBUTIONS=default` for the distribution targeting the default Volto frontend (`plone.volto`).
Set `ALLOWED_DISTRIBUTIONS=classic` for the distribution with the Classic UI frontend (`plone.classicui`).
- If you switch from `Plone` to `plone.volto` or `plone.classicui`, you might want to install extra core add-ons, for example `plone.app.upgrade` or `plone.app.caching`.
- If your add-on is only for Volto, you may want to add `plone.volto` as a dependency.
davisagli marked this conversation as resolved.
Show resolved Hide resolved
- If your add-on is only for Classic UI, you may want to add `plone.classicui` as a dependency.
davisagli marked this conversation as resolved.
Show resolved Hide resolved
Note though that `plone.classicui` is not available for Plone 6.0.

You can create your own distributions to suit your needs.

- Create a distribution demonstrating your favorite setup for Plone.
This would contain the add-ons that you usually add in each project, including example content.
With this you can create a fully configured Plone site filled with content for a potential client.
Or they can try it themselves if the distribution is available publicly.
- Create a distribution for an internal or client project.
This would create a site with all add-ons activated and configured for this project, including example content, and optionally users and groups.
During the development phase of a new project, all developers would use this to create a fresh site locally so that everyone has the same configuration and content.
Before the project goes live, you can use the distribution to create the initial setup.

```{note}
For Plone 7, the [Plone roadmap](https://plone.org/why-plone/roadmap) guides development toward a clearer separation between the Classic UI frontend and the core `Products.CMFPlone` backend.
This means in Plone 7 `Products.CMFPlone` will have less code and pull in fewer dependencies.
davisagli marked this conversation as resolved.
Show resolved Hide resolved
`plone.classicui` may have more code and pull in more dependencies.
This is the direction in which the backend is heading, and the introduction of the `plone.classicui` distribution package is an important step along this path.
```

For detailed information, see the source code of the new packages.

- [`plone.distribution`](https://github.com/plone/plone.distribution/)
- [`plone.exportimport`](https://github.com/plone/plone.exportimport/)
11 changes: 10 additions & 1 deletion docs/glossary.md
Original file line number Diff line number Diff line change
Expand Up @@ -777,7 +777,7 @@ Load balancer
CI
continuous integration
Continuous integration (CI) is the practice of integrating all your code changes into the main branch of a shared source code repository early and often, automatically testing each change when you commit or merge them, and automatically kicking off a build.

Read about Plone's {doc}`/contributing/core/continuous-integration`.

CD
Expand All @@ -794,4 +794,13 @@ lazy loaded
reference implementation
A reference implementation is a program that implements all requirements from a corresponding specification.
The reference implementation often accompanies a technical standard, and demonstrates what should be considered the "correct" behavior of any other implementation of it.

distribution

```{versionadded} Plone 6.1
```

A Plone distribution is a Python package that defines specific features, themes, add-ons, and configurations that get activated when creating a Plone site.
It is available in core Plone as the recommended way for creating a Plone site.
[`plone.distribution`](https://github.com/plone/plone.distribution) is the main package that offers the basis for distributions.
```
Loading