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 20 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.
41 changes: 41 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,44 @@ 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 {doc}`creating a new Plone site </install/add-site>`.
stevepiercy marked this conversation as resolved.
Show resolved Hide resolved

```{seealso}
For more information, see {doc}`/conceptual-guides/distributions`.
```

Distributions are optional.
If your project only uses the `Products.CMFPlone` Python package, you can still create a Plone site in the old way.
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 to change anything.
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)?
- If your site uses the default Volto frontend, you will already have `plone.volto` as a dependency.
This can stay the same.
- If your site uses only the `Products.CMFPlone` package, the frontend is Classic UI.
stevepiercy marked this conversation as resolved.
Show resolved Hide resolved
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.
- If your site uses the `Plone` package, you will have the two new distributions available.
This is fine.
If you know you only need `plone.volto` or only need `plone.classicui`, you can switch to only that one.
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 might want to add `plone.volto` as a dependency.
- If your add-on is only for Classic UI, you might want to add `plone.classicui` as a dependency.
Note though that `plone.classicui` is not available for Plone 6.0.
85 changes: 85 additions & 0 deletions docs/conceptual-guides/distributions.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
---
myst:
html_meta:
"description": "A Plone distribution is a pre-packaged version of Plone that includes specific features, themes, modules, and configurations."
"property=og:description": "A Plone distribution is a pre-packaged version of Plone that includes specific features, themes, modules, and configurations."
"property=og:title": "Plone distributions"
"keywords": "Plone 6, distribution, plone.distribution"
---

(plone-distributions-label)=

# Plone distributions

```{versionadded} Plone 6.1
```

A Plone distribution is a pre-packaged version of Plone that includes specific features, themes, modules, and configurations.
It is a convenient way to get a specific type of website up and running quickly, as the distribution includes everything needed to run that type of site.


## Built-in distributions

Plone comes with two built-in distributions, which correspond to the two Plone user interfaces.

[`plone.volto`](https://github.com/plone/plone.volto)
: Create a Plone site with the Volto frontend.

[`plone.classicui`](https://github.com/plone/plone.classicui)
: Create a Plone site with the Classic UI frontend.
davisagli marked this conversation as resolved.
Show resolved Hide resolved

stevepiercy marked this conversation as resolved.
Show resolved Hide resolved

## Third-party distributions

You can create your own distributions to suit your needs.

```{seealso}
For a how-to guide, see {doc}`/developer-guide/create-a-distribution`.
```

For example, a Plone consulting agency can create a distribution demonstrating its favorite setup for Plone.
This would contain the add-ons that they usually add in each project, including example content.
With this, the agency can create a fully configured Plone site filled with content for a potential client.

Alternatively, an agency or implementer can create a distribution for specific project.
This could 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.

Custom Plone distributions can be distributions for use by others.
Examples of third-party Plone distributions include:

- [SENAITE](https://www.senaite.com)
- [Quaive](https://quaivecloud.com/)
- [Portal Modelo](https://www.interlegis.leg.br/produtos-servicos/portal-modelo/)
- [Portal Padrão](https://identidade-digital-de-governo-plone.readthedocs.io/en/latest/)


## Related packages

The implementation of distributions in the Plone codebase is found in the following Python packages.

- [`plone.distribution`](https://github.com/plone/plone.distribution) provides the framework for defining 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 Volto frontend.
- [`plone.classicui`](https://github.com/plone/plone.classicui) is the distribution to create a Plone site with the Classic UI frontend.

```{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 that in Plone 7, `Products.CMFPlone` will have less code and pull in fewer dependencies, whereas `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.
```

## Comparison with other CMSs

Drupal
: Drupal has distributions for blogs, e-commerce sites, and intranet portals.

WordPress
: WordPress has a similar concept in the form of "WordPress Multisite," which allows users to run multiple websites from a single installation of WordPress.

Joomla
: Joomla has a similar concept in the form of "Joomla Templates," which are pre-designed templates for Joomla websites.

TYPO3
: TYPO3 has a similar concept in the form of "TYPO3 Distributions," which are pre-configured installations of TYPO3 for specific types of websites.
1 change: 1 addition & 0 deletions docs/conceptual-guides/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ This part of the documentation provides explanation of concepts to deepen and br
```{toctree}
:maxdepth: 2

distributions
package-management
make-build-backend-walk-through
```
Loading
Loading