Skip to content

Add Create a backend add-on section in the Developer guide with GenericSetup#1757

Open
stevepiercy wants to merge 28 commits into6.0from
dev-guide-create-a-backend-add-on
Open

Add Create a backend add-on section in the Developer guide with GenericSetup#1757
stevepiercy wants to merge 28 commits into6.0from
dev-guide-create-a-backend-add-on

Conversation

@stevepiercy
Copy link
Copy Markdown
Contributor

@stevepiercy stevepiercy commented Nov 6, 2024

See #1748 (comment)

Closes #1754.

Ping @petschki to take it from here.


📚 Documentation preview 📚: https://plone6--1757.org.readthedocs.build/

Ping @petschki
- Enhance the Development Guide index
- Update the term Buildout in the Glossary to point to dusty old, yet useful, docs in Plone 4.

(cherry picked from commit 8142b96)
- Add term reference for Buildout
Comment thread docs/developer-guide/create-a-backend-add-on.md Outdated
@stevepiercy stevepiercy changed the title Add Create a backend add-on section in the Developer guide. Add Create a backend add-on section in the Developer guide with GenericSetup Nov 24, 2024
@stevepiercy
Copy link
Copy Markdown
Contributor Author

I'm ready to close this issue as won't fix. Does anyone on @plone/classicui-team care about the topic of how to add or create a backend add-on section in the Developer guide with GenericSetup? If so, speak up, and let's get this finished.

@petschki
Copy link
Copy Markdown
Member

@stevepiercy will have a look at this.

@petschki
Copy link
Copy Markdown
Member

I've created a basic "addon creation documentation" and moved the old docs for GenericSetup here. I've also removed several outdated parts/link and tried to update the XML examples. Not finished yet though.

I would recommend to place these docs all inside "Backend" and make a link from "Developer guide / Develop backend add-ons" -> "Backend / Add-ons" (like its done for Volto add-ons)

Further we can add references for several plonecli installation guides (like Classic-UI / theming / create theme addon) to the new "Backend / Add-on" doc ...

What do you think?

@petschki
Copy link
Copy Markdown
Member

petschki commented Nov 25, 2025

what's also missing is something like "Installing backend Add-on" ... at least I didn't find it... would also make sense to add it to "Backend / Add-ons" chapter.

EDIT: I mean adding a pypi package or source checkout to cookieplone/buildout project ...

@stevepiercy
Copy link
Copy Markdown
Contributor Author

what's also missing is something like "Installing backend Add-on" ... at least I didn't find it... would also make sense to add it to "Backend / Add-ons" chapter.

EDIT: I mean adding a pypi package or source checkout to cookieplone/buildout project ...

Was this what you couldn't find?

https://6.docs.plone.org/admin-guide/add-ons.html

The plan is to merge the Admin section into Develop section so that people don't have to think of what role they're in versus the task they want to perform. See #1997.

Comment thread docs/developer-guide/create-a-backend-add-on.md Outdated
@github-project-automation github-project-automation Bot moved this from Todo to In Progress in Plone Documentation Dec 1, 2025
@stevepiercy
Copy link
Copy Markdown
Contributor Author

stevepiercy commented Dec 8, 2025

@petschki @erral are there any other technical issues to resolve before I dive in for a general editorial review? Please let me know. Thank you!

Co-authored-by: Mikel Larreategi <mlarreategi@codesyntax.com>
@petschki
Copy link
Copy Markdown
Member

petschki commented Dec 9, 2025

@petschki @erral are there any other technical issues to resolve before I dive in for a general editorial review? Please let me know. Thank you!

I still need to go through the genericsetup doc technically. There are some outdated bits which have to be removed.

@stevepiercy
Copy link
Copy Markdown
Contributor Author

I still need to go through the genericsetup doc technically. There are some outdated bits which have to be removed.

@petschki I don't see a commit to remove the outdated bits. Did you forget to push it? Please let me know. Thank you!

@MrTango
Copy link
Copy Markdown
Contributor

MrTango commented Jan 15, 2026

I would use plonecli for all, after @erral did the final release in the comming days.
It will then work as it was working for Plone 5 development, with the difference that now the create addon part is using cookieplone backend_addon under the hood. This is exactly why we have plonecli, to hide stuff under it and give the developers a clean cli.

example:

uv tool install plonecli
plonecli create addon collective.myaddon

cd collective.myaddon
plonecli add content_type
...

make add, would be an abstraction, which calls an abstraction (plonecli), which calls a bobtemplate.
I don't mind that the make command exist, for who want to do it this way, but i would not put this out as the default, otherwise we can take out plonecli from the mix and do it purely in Make.

We could even create a full cookieplone project with plonecli.

plonecli create volto-project

or

plonecli create cookieplone-project

or

plonecli create plone-project

it doesn't matter and we are flexible to replace part under it, with the next cool tool, someone creates, without destroing exiting docs and api's.

my 50cent...

@petschki
Copy link
Copy Markdown
Member

petschki commented Jan 15, 2026

@MrTango I had documente the plonecli part initially and removed it as @erral's request ... can we find a consent here?

I think, due to the fact that the whole plone installation and theme development documentation uses cookieplone, we should at least use it for the inital addon package creation too ... when adding further features inside the addon, we can document this with using plonecli ...

@erral
Copy link
Copy Markdown
Member

erral commented Jan 15, 2026

@petschki @MrTango sorry for the mess...

with plonecli right now we can create an add-on calling plonecli create addon which creates a backend_addon calling uvx cookieplone backend_addon.

I haven't checked to do the same for volto addon, project, etc, but could be done, and it is not that hard.

If we do that we can document everything to use plonecli indeed, and cookieplone would be just an "implementation detail".

But we also have documentation to create Volto projects using uvx cookieplone so the mess is bigger...

@yurj
Copy link
Copy Markdown
Contributor

yurj commented Jan 15, 2026

cookieplone is the framework with utils to full manage a Plone project while plonecli is a client that implements the frameworks (past and present).

@stevepiercy
Copy link
Copy Markdown
Contributor Author

What are the use cases that we're trying to solve with this page of documentation? Maybe that answer will help us give a direction. Would y'all agree there are essentially two scenarios?

  1. Create a backend add-on only.
  2. Create a backend add-on along with a combination of anything else, such as a full Plone project, a Volto add-on, project documentation scaffold, and devops.

Neither Cookieplone nor plonecli are going away anytime soon. If we have two or more ways of doing the same thing, that's fine, too, provided we give sufficient information for the reader to choose which tool is best for them. For an example of that, see Choose a user interface. It's also OK if we use one tool to do one part, such as using Cookieplone to create a monorepo with all the things, and another tool to do another part, such as add new features to the backend add-on.

Does this help at all?

@petschki
Copy link
Copy Markdown
Member

@erral @MrTango I've now replaced the cookieplone part with my formerly removed plonecli part ...

erral
erral previously approved these changes Jan 16, 2026
@github-project-automation github-project-automation Bot moved this from In Progress to Approved in Plone Documentation Jan 16, 2026
Copy link
Copy Markdown
Member

@davisagli davisagli left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's see if we can get this over the finish line.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I just skimmed through to check that this is still accurate/relevant information. It is and we should prioritize getting this merged. It does need some editing to match current doc styles.

Comment thread docs/developer-guide/create-a-backend-add-on.md
@erral
Copy link
Copy Markdown
Member

erral commented Apr 16, 2026

I have just released new versions for mr.bob, plonecli and bobtemplates removing all pkg_resources style namespaces. I tested the three of them together and it works as expected. I will review this PR tomorrow to check that everything is Ok.

Copy link
Copy Markdown
Member

@erral erral left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I have checked the output of uvx plonecli and it is a bit different than the previous version.

Comment on lines +39 to +87

--> Package description [An add-on for Plone]:

--> Plone version [6.0.0]:

--> Python version for virtualenv [python3]:

--> Do you want me to activate VS Code support? (y/n) [y]:



isort-apply: successful:
isort-apply: install_deps> python -I -m pip install isort -c constraints.txt
isort-apply: commands[0]> isort /Users/<username>/Development/collective.addon/src
/Users/<username>/Development/collective.addon/setup.py
Fixing /Users/<username>/Development/collective.addon/src/collective/addon/testing.py
Fixing /Users/<username>/Development/collective.addon/src/collective/addon/tests/test_setup.py
isort-apply: OK (2.57=setup[1.94]+cmd[0.63] seconds)
congratulations :) (2.59 seconds)


Identified `/` as project root containing a file system root.
Sources to be formatted: "Users/<username>/Development/collective.addon/src",
"Users/<username>/Development/collective.addon/setup.py"
src/collective/__init__.py wasn't modified on disk since last run.
src/collective/addon/browser/__init__.py wasn't modified on disk since last run.
src/collective/addon/locales/__init__.py wasn't modified on disk since last run.
src/collective/addon/tests/__init__.py wasn't modified on disk since last run.
src/collective/addon/interfaces.py already well formatted, good job.
reformatted src/collective/addon/__init__.py
reformatted src/collective/addon/setuphandlers.py
reformatted src/collective/addon/testing.py
reformatted setup.py
reformatted src/collective/addon/locales/update.py
reformatted src/collective/addon/tests/test_setup.py

All done! ✨ 🍰 ✨
6 files reformatted, 5 files left unchanged.

black-enforce: successful:
black-enforce: install_deps> python -I -m pip install black -c constraints.txt
black-enforce: commands[0]> black -v src setup.py
black-enforce: OK (2.60=setup[2.12]+cmd[0.48] seconds)
congratulations :) (2.61 seconds)


git init is disabled!
Generated file structure at /Users/<username>/Development/collective.addon/collective.addon
```
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
--> Package description [An add-on for Plone]:
--> Plone version [6.0.0]:
--> Python version for virtualenv [python3]:
--> Do you want me to activate VS Code support? (y/n) [y]:
isort-apply: successful:
isort-apply: install_deps> python -I -m pip install isort -c constraints.txt
isort-apply: commands[0]> isort /Users/<username>/Development/collective.addon/src
/Users/<username>/Development/collective.addon/setup.py
Fixing /Users/<username>/Development/collective.addon/src/collective/addon/testing.py
Fixing /Users/<username>/Development/collective.addon/src/collective/addon/tests/test_setup.py
isort-apply: OK (2.57=setup[1.94]+cmd[0.63] seconds)
congratulations :) (2.59 seconds)
Identified `/` as project root containing a file system root.
Sources to be formatted: "Users/<username>/Development/collective.addon/src",
"Users/<username>/Development/collective.addon/setup.py"
src/collective/__init__.py wasn't modified on disk since last run.
src/collective/addon/browser/__init__.py wasn't modified on disk since last run.
src/collective/addon/locales/__init__.py wasn't modified on disk since last run.
src/collective/addon/tests/__init__.py wasn't modified on disk since last run.
src/collective/addon/interfaces.py already well formatted, good job.
reformatted src/collective/addon/__init__.py
reformatted src/collective/addon/setuphandlers.py
reformatted src/collective/addon/testing.py
reformatted setup.py
reformatted src/collective/addon/locales/update.py
reformatted src/collective/addon/tests/test_setup.py
All done! ✨ 🍰 ✨
6 files reformatted, 5 files left unchanged.
black-enforce: successful:
black-enforce: install_deps> python -I -m pip install black -c constraints.txt
black-enforce: commands[0]> black -v src setup.py
black-enforce: OK (2.60=setup[2.12]+cmd[0.48] seconds)
congratulations :) (2.61 seconds)
git init is disabled!
Generated file structure at /Users/<username>/Development/collective.addon/collective.addon
```
```suggestion
--> Author's name [John Doe]:
--> Author's email [johndoe@plone.org]:
--> Author's GitHub username:
--> Package description [An add-on for Plone]:
--> Do you want me to initialize a GIT repository in your new package? (y/n) [y]:
--> Plone version [6.0.0]:
--> Python version for virtualenv [python3]:
--> Do you want me to activate VS Code support? (y/n) [y]:
╭────────────────────────────────────────────────────────────────── cookieplone ──────────────────────────────────────────────────────────────────╮
│ │
*******
***************
*** *** ********* *** ***
*** *** *** *********** *** * R * │
*** ***** *** *** *** *** ***
*** *** *** *** *** *** **** *** *** ****
*** *** *** *** *** *** ******** ********* ********
*** ***** *** *********** *** *** *** **** *** *** ***
*** *** *** *** ********* *** *** *** *** *** **********
*** ***** *** *** *** *** *** *** *** *********
*** *** *** *** **** *** *** *** *** *** ... │
*** *** *** ***** ******** *** *** ********
*************** *** *** **** *** *** ****
*******
│ │
╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
╭────────────────────────────────────────────────────────────────── Plone Addon ──────────────────────────────────────────────────────────────────╮
│ │
│ Creating a new Plone Addon │
│ │
│ Sanity check results: │
│ │
│ - Cookieplone: ✓ │
│ - uv: ✓ │
│ - git: ✓ │
│ │
╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
-> Remove files used in classic UI setup
-> Create namespace packages
-> Format code
-> Initialize Git repository
-> Generate documentation scaffold
-> Setup VSCode configuration
-> Setup GitHub CI
╭──────────────────────────────────────────────────────────── New addon was generated ────────────────────────────────────────────────────────────╮
│ │
│ collective.addon │
│ │
│ Now, enter the repository, start coding, and push to your organization. │
│ │
│ Sorry for the convenience, │
│ The Plone Community. │
│ │
https://plone.org/
╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
Done
Generated file structure at /tmp/collective.addon

@github-project-automation github-project-automation Bot moved this from Approved to In Progress in Plone Documentation May 3, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Todo
Status: In Progress

Development

Successfully merging this pull request may close these issues.

Port GenericSetup docs

8 participants