This issue is to discuss a couple policy questions about Panopoly 2.x for Drupal 8, and also to plan out the goals and objectives to get us to the first 2.0 stable release!

@populist and @dsnopek discussed this and came up with the following proposal! However, this is open for discussion and change.

What will be included in Panopoly 2.0?

We decided that we won't aim for 100% feature parity with 1.0 in order to release 2.0 (but eventual feature parity in later releases will definitely be a goal!), instead the key feature to have working in the in-place page editing, which means:

  1. Panels IPE: Being able to click "Customize this page" and "Change layout" and open the IPE like in Drupal 7
  2. Creating new blocks in the IPE: In Drupal 7, this was done by Fieldable Panels Panes. In Drupal 8, custom blocks are already fieldable entities - we just need to be able to create new instances of them from the IPE!
  3. Panelizer: To take over rendering of nodes, provide defaults for the content type and make per-node customizations
  4. Radix Layouts: Our library of layouts, which is actually already ported to Drupal 8! See Radix Layouts 8.x-3.0-rc1.
  5. Panopoly Widgets: Excluding all the widgets that depend on external dependencies which don't have Drupal 8 ports yet (like the Map and Table widget)
  6. Migrations for the stuff that exists - Some migration classes for moving a site from Panopoly 1.x to Panopoly 2.x. However, since there won't be 100% feature parity immediately, this will only be for the stuff that exists. If you're migrating a site, you'll need to wait until everything you need exists in Drupal 8! See: #2736629: Implement basics of panopoly_migrate for migrating from Panopoly 1.x to 2.x
  7. Panopoly Demo: We can't release a Panopoly 2.0 that doesn't have demo data! See: #2732417: Port Panopoly Demo to Drupal 8!

Of course, we'll port some of the basics that exist in core, like the image styles in Panopoly Images, content types in Panopoly Pages, maybe a default WYSIWYG configuration in Panopoly WYSIWYG, etc.

But anything beyond the bullet points above is optional, and can wait until after 2.0. Patches are always welcome! :-)

As the Drupal 8 eco-system comes together, we'll continue adding more missing features after 2.0 (in 2.1, 2.2, etc), and will eventually reach 100% feature parity with Panopoly 1.x.

We believe that this approach will allow us to provide a Drupal 8 version quickly, so that contributors can start using it and improving it, while allowing us to maintain the level of stability and security that you have come to expect from Panopoly.

What will -alphaX, -betaX and -rcX mean?

2.0-alphaX

The -alpha cycle will be about experimenting and laying the groundwork for Panopoly 2.0!

These versions are meant for contributors who want to help make Panopoly 2.0 a reality, and shouldn't be used on production websites.

The -alpha releases will be missing features and there won't be an -alpha to -alpha upgrade path.

2.0-betaX

We'll switch to -beta when we have all the features mentioned above that we're targeting for Panopoly 2.0 (see the list above), and we're ready to start providing -beta to -beta upgrades.

These versions are meant for early adopters who are OK with bugs, and don't need to migrate from Panopoly 1.x.

At this point, you could start using it for new Drupal 8 sites!

2.0-rcX

When we have the bugs to an acceptable level and migration classes for upgrading from Panopoly 1.x (if you don't need any of the missing features), we'll start making -rc releases.

These versions are meant for regular site builders and developers to try out Panopoly, not just early adopters, so we can iron out any critical problems before the 2.0 release.

Once we're reasonable happy that we have a stable -rc release, we'll release 2.0 (which will hopefully be nearly identical to the last -rc).

Specific changes/goals for the 2.0 release

The first Panopoly release was made in March of 2012. At the time, it was really the first "base distribution" ever made! A lot of decisions were made without knowing exactly what the consequences would be.

However, in the 3 years since then, we've learned a TON from the experience of users and contributors using Panopoly to do some amazing things, many of which would never have occurred to us in the beginning. :-)

Based on that experience, we'd like to pursue the following specific changes/goal for Panopoly 2.0:

  1. Eliminate "concentrations of code" in Panopoly, and move them out into contrib. During Panopoly 1.x, we've spent a disproportionately large amount of time maintaining the few concentrations of code in Panopoly. We'd prefer to move those out into to contrib to be maintained by a wider community, and limit Panopoly's code to pulling in, configuring and integrating contrib modules. Specifically, here are some examples:
    1. Panopoly Magic: The primary job of Panopoly Magic is to provide live previews of Panels widgets. In Drupal 8, Panels widgets are blocks, and this functionality could be useful even on a site without Panels! Rather than porting Panopoly Magic to Drupal 8, we'd like to implement this "block preview" functionality within CTools in Drupal 8.
    2. Spotlight widget: The Spotlight widget was intended to be the "simplest slider that could possibly" work, with the idea that if you wanted a real slider, you'd use something from contrib. However, a lot more people used it than expected, and we spent a considerable amount of time fixing bugs in it. Rather than porting it to Panopoly 2.0 as part of Panopoly Widgets, we'd like to have an external app (ex. maybe panopoly_slider?) that uses contrib modules to build a real slider. Ideally, this would be maintained primarily by the community, rather than the core Panopoly developers.
    3. Content Item widget: The "Content Item" widget is a clever Views widget that provides better usability than the CTools "Existing content" widget. It was simple to create using Views, but it turned out that there were a number of subtle edge cases that meant we had to implement several Views hooks for it to work correctly. Looking back, it would have been easier to implement in custom code OR to improve the usability of the "Existing content" widget from CTools. Rather than porting this, it'd be great to just make the CTools widget usable from the beginning!
  2. Put media support in a new Panopoly Media module: In Panopoly 1.x, we have media support in Panopoly Widgets. Media ended up seeping into several other places making for some weird dependencies, but it'd be hard to move without breaking the upgrade promises we made for Panopoly 1.x. For Panopoly 2.x, let's put media in a new Panopoly Media module!
  3. Break Panopoly Widgets into more modules: A common complaint in Panopoly 1.x, is that some users don't want all the widgets included in Panopoly Widgets. While it's possible to disable any individual widget, you're stuck with any modules that widget might depend on which led to several users forking Panopoly Widgets. In Panopoly 2.x, the main panopoly_widgets module will only contain those widgets which have no additional dependencies - if an additional dependency is necessary, it will go in a seperate module. For example, this means that the "Map" widget, which depends on simple_gmap would be in a panopoly_widgets_map module by itself. (The media widgets will move to the Panopoly Media module.)
  4. Break panopoly_search into panopoly_search_solr and panopoly_search_db: For the same reasons as with Panopoly widgets, many people have been unhappy that Panopoly 1.x always includes support for both DB and SOLR search, but their site may only use one or the other. In Panopoly 2.x, let's split these into two sub-modules of the main panopoly_search module!
  5. Drop respondjs: No more IE8 support in Drupal 8! :-)
  6. Include some tours to help site managers get started: Drupal 8 includes the new "tour" module which allows providing interactive walk-throughs, however, Drupal 8 doesn't really provide any tours itself. To help demystify both Drupal and Panels, let's create some really great ones for Panopoly 2.x!

TODO

  1. Open Panopoly issues for each of the features in "What will be included in Panopoly 2.0" above and make this issue their parent issue
  2. Open issues in all the contrib projects for what needs to be implemented their to make that happen, and link to those issues from the relevant Panopoly issue
  3. Start implementing!

Comments

dsnopek created an issue. See original summary.

dsnopek’s picture

Issue summary: View changes
Francewhoa’s picture

Hi all :) Related question in that ticket

dsnopek’s picture

Issue summary: View changes

Remove CTools issue - it was the core issue, not the IPE one, and that functionality is in the IPE already.

dsnopek’s picture

Issue summary: View changes

Added a point about panopoly_demo.

dsnopek’s picture

Issue summary: View changes

In fact, added a whole issue for panopoly_demo: #2549709: [meta] Panopoly 2.x for Drupal 8 battle plan

We need to get out of "code slush mode" and start creating issues for new code!

dsnopek’s picture

Issue summary: View changes
kattekrab’s picture

Hey - I was lookign around for an update on where panopoly for D8 might be at.

Any chance you could give us a quick update on how things are going?

dsnopek’s picture

Unfortunately, not much has changed since the 2.0-alpha3 release back in May. I had a client to sponsor my work on this, but their priorities have changed. :-/ I'd really love to work on it (as I'm sure the other co-maintainers would too!) but it's hard to fit it in.

That said, 2.0-alpha3 did make good progress against some of the points up in the issue summary! Point 1, 3, 4, 5 and 7 have existing implementations, but they are of varying degrees of completeness. I started work on point 6 (back in June) and I think there's a patch in the IPE queue for point 2.

So, we're not actually that far from switching to -beta, we just need to get back to hacking on it. :-)

dsnopek’s picture

Issue summary: View changes

Put correct issue for porting panopoly_demo in the issue summary: #2732417: Port Panopoly Demo to Drupal 8!

dsnopek’s picture

Issue summary: View changes

Points 1, 2, 3, 4 and 7 are done enough to take off this list!

For point 5, there's still #2729249: Implement "Content item" and "Content list" widgets in Drupal 8

Point 6 still has lots to do

And we've added a few smallish child issues that don't represent big points, that should still get done before 2.0

kattekrab’s picture

Awesome @dsnopek - that sounds like great progress indeed! :-)

dsnopek’s picture

I've had an idea for an alternate way (or additional way? it doesn't really prevent the original plan) to approach the Panopoly port to Drupal 8!

Background:

One of the problems with Panopoly in Drupal 8, is that traditionally Panopoly took best practices and well established approaches/modules and assembled them into a coherent whole - however, in Drupal 8, even 2 years after release, best practices are still evolving and it's a little up in the air what the established approaches/modules will be. Panels in Drupal 8 exists and (I say this with love - I wrote a lot of the code in it) kinda still sucks :-) - it needs a lot more work, just more human hours to invest in finishing it. But also, core is encroaching on what Panels and Display Suite and Panelizer did in D7, and it's unclear where exactly that's going to land: will it completely replace Panels/DS/Panelizer and then contrib will extend what's in core? Or will there still be a place for Panels/DS/Panelizer?

However, in working with Drupal 8, there's lots of places that I think Panopoly could contribute! There's still some pretty serious bugs or omissions in core that are being worked on, but still aren't fixed despite being known for a long time. For example:

There's also some things that are very difficult to configure right, like Media or WYSIWYG.

My idea:

So... Instead of trying to make a minimally viable whole, what if we instead focused on making some maximally viable feature modules?

If we made a really, really great panopoly_media module that setup Media in a way that was a good default that also corrected the most glaring existing bugs, that would be useful to people building Drupal 8 sites right now, without (hopefully) betting on an approach or best practice that won't pan out.

The ones I'm mostly thinking about are:

  • panopoly_images
  • panopoly_media
  • panopoly_wysiwyg
  • panoploy_widgets

Those don't depend on Panels, and represent some stuff that could use better defaults and some bug fixes.

I've already started using the first 3 in other projects, actually. And even though they don't have that much functionality currently, it's still nicer to use them than having to recreate their configuration on each site.

candelas’s picture

Panopoly Widgets: Excluding all the widgets that depend on external dependencies which don't have Drupal 8 ports yet (like the Map and Table widget)

Just in case it's useful to you:

Interesting for migrating media https://www.drupal.org/project/media_entity

dsnopek’s picture

@candelas: Great, thanks! It sounds like there aren't any dependencies we're blocked on :-)

kainio’s picture

First I want to thank you guys for creating and maintaining this project, I tried the D7.X of this module in panteon, Ilike it, but I am interested in the D8 port, can some one tell me when a beta version will be available?
I am willing to create an educational distribution based on panopoly.

dsnopek’s picture

Hi @Kaino! Unfortunately, there's no clear deadline. I think it's more likely we'll have some pretty good components that are "beta quality", before we have a complete distro it is.

dsnopek’s picture

I've been thinking about this point lately:

Panopoly Magic: The primary job of Panopoly Magic is to provide live previews of Panels widgets. In Drupal 8, Panels widgets are blocks, and this functionality could be useful even on a site without Panels! Rather than porting Panopoly Magic to Drupal 8, we'd like to implement this "block preview" functionality within CTools in Drupal 8.

It would be sooo great to not have panopoly_magic, and just have all its functionality in core or contrib.

However, now that we're going to be using Layout Builder (rather than Panels, Panelizer and CTools) that means getting stuff into core, and that's a much higher bar to pass. Some of this functionality probably won't be accepted into core, and unfortunately, the process of even definitely determining that it won't be accepted can take months or years.

Also, if we instead put stuff into contrib, it's not totally clear where that should live. In the past, CTools would have been the defacto place to drop optional, generally reusable pieces of functionality that relate to "blocks" (in D8 terms -- they would have been "content plugins" in D7). But now that CTools isn't really involved -- all the block stuff is from core -- that doesn't seem like the right place to put it. We could make lots of little modules, but we've learned from experience that removing a module from Panopoly is hard for various reasons, so we don't want to depend on a ton of little experimental modules, as we wait for them to find a home (whether that ends up being core, or a bigger contrib module).

So, I'm starting to think that maybe we should have panopoly_magic around in Drupal 8, to be an experimental incubator for extensions to Layout Builder. The idea would be to try to move any functionality out of panopoly_magic into a more general place eventually, and if we're successful it'd one day end up being an empty module - but that's ok, because it could be a placeholder for more experiments in the future, without having to deal with removing or adding new modules.

One example case for this I'm thinking of is #2999491: Add reusable option to inline block creation.

There's a core patch on that issue that allows creating reusable widgets in Layout Builder. (By default, in core, all blocks created in Layout Builder are not reusable, and all blocks created in the normal block UI are reusable.) However, it's unclear if that would get accepted into core, and if it did, it would probably take months (or even years) of iteration to get it in.

So, we could put an implementation of the same functionality in panopoly_magic, while simultaneously trying to push the core patch forward. If the patch gets merged, we can remove the code for it from panopoly_magic. If the patch get definitively denied, then we can find a new home in contrib for that functionality, and move it there.

Any thoughts?

entrepreneur27’s picture

I am hoping for some guidance on timelines please. I have a production site based on Panoploly using Drupal 7, and have really appreciated being able to use this distribution. With Drupal 9 coming along and the end of use date for drupal 7 looming I am planning what to do with my site going into 2021. I am wondering whether to count on panoply or come up with some other plan. Given the fact panoply 8 is still in alpha phase and has been for rather a long time, I am curious whether you think there is a prospect of having a stable release for late adopters like me to use (with migration path from D7), and if you have any guesstimates when that might be. Also, should I be planning just skipping D8 altogether and going to D9?

Any advice would be hugely appreciated.

sloyer807’s picture

I have the same questions as Entreprenuer27.

Is there any chance to keep moving this forward into stable Drupal8/9?

I currently have a municipality website Running D7 with Panopoly.
The D8 Port of Panopoly seems to hit a stall and I'd like to know if I have to prep my client that we need to move them to a new solution.