Problem/Motivation

As an individual with contributing experience, oftentimes for free, it is my own opinion that a hard dependency on the Contribute module from Webform is the wrong place to advocate for the contributing cause. To me, Drupal is ultimately to me a tool for other developers. And I think the tool we use should have a separate purpose from the community. When I run composer diagnose, I don't want to get information about contributing to Composer. As the maintainer of Pathauto, I've always thought about adding in a module that allowed a site to make a donation based on the number of automatic URL aliases that were generated. Something that showed how useful the module in its functionality and operation. And whenever I've thought about this, it was always going to be an optional thing that could be disabled and removed. I know that Contribute advocates for contributions, not donations, but I consider the advocation similar.

I am more than capable of having the conversation with my clients about becoming an organization on Drupal.org, supporting the DA, etc. I would be ok with the Contribute being a part of Core that could be turned off for those of us capable of having that conversation with clients and end-users, but having it as a dependency for a module just to make a statement really feels like the wrong place. We should be giving developers the tools to have this conversation, not forcing it to happen.

The problem with a dependency is that I cannot disable the module without patching, and I'm unable to patch the module until it has already downloaded the contribute module into my codebase via composer. Why do I need to explain to customers that I had to patch a very popular module for this reason? I think until we have something like #820054: Add support for recommends[] and fix install profile dependency special casing where we can add the Contribute module as a recommends[], or Contribute is part of core, this dependency should be removed.

I'm totally down for advocating for our community and contributors to Drupal happening anywhere on Drupal.org and coming from any maintainer, but at the lower level of modules, I don't personally feel this is the right place.

Proposed resolution

Remove the dependency from composer.json and the info.yml file.

Remaining tasks

Possibly disable contribute module in an update hook? Remove the existing update hooks to stop the module from being enabled for existing users that haven't updated?

User interface changes

No more Contribute module.

API changes

None

Data model changes

None

Support from Acquia helps fund testing for Drupal Acquia logo

Comments

Dave Reid created an issue. See original summary.

Dave Reid’s picture

Dave Reid’s picture

Issue summary: View changes
abramm’s picture

I'm agree with Dave's arguments. I'm using Silent Contribute to avoid patching and downloading Contribute module but generally I'd prefer if dependency was removed.

Dave Reid’s picture

Issue summary: View changes
Dave Reid’s picture

Issue summary: View changes
markhalliwell’s picture

Status: Active » Postponed (maintainer needs more info)

Attributing the contribute module with "donations" is what is wrong. It merely suggests supporting the community by contributing (any way you can).

You make it sound like the module is malicious and disruptive, it's not. It doesn't even have a very large file footprint. The only place this is visible (to anyone) is on the status report page.

IMO, there are far greater dependency issues in this module to be complaining about, not a module that is practically and purely cosmetic in nature.

I really don't understand why people are so adamant about making this into more than it's not.

Setting status to PMNMI since there are currently no mechanisms in place (other than a "hard" dependency) to bring awareness to the reality that is FOSS.

Dave Reid’s picture

I will strongly disagree that I'm attributing anything to malice. I was trying to give a personal example of how I thought we could get end users to help think about how someone was behind this module, how useful they are as tools every day, etc. I'm not equating the Contribute module with donations AT ALL. I just think this is the wrong hill to die on.

I point clients to the status report page for the very first thing to check when they see something wrong. I don't think this is the right place for this.

Dave Reid’s picture

I'll respect your decision to mark this a NMI since this will stay visible in the issue queue for others to be able to apply the patch in Composer.

Dave Reid’s picture

Issue summary: View changes
dpagini’s picture

I made the same comment over in #2936020.
Careful with this approach as a patch. You cannot alter a packages' composer file with the composer-patches approach. It will download this file and all its dependencies (including contribute) before patching the `composer.json` file, meaning you WILL HAVE contribute in your code base. Next, this does not address the update hook `webform_update_8106` which, when run, will install the contribute module, since it exists in your code base b/c of the previous point.
So this approach works for a new install of webform... you will not have contribute installed, but it will likely be in your codebase. For an existing install, you will likely still end up with the module installed.

markhalliwell’s picture

One is a model for a project's (personal) monetary gain/compensation, the other is to bolster community involvement (as a whole). No, they aren't even remotely similar... at all.

Dave Reid’s picture

Thank you for your opinion @markcarver, I think we are agreeing to disagree at this point.

Dave Reid’s picture

Updated patch with nullification of the update hook.

Dave Reid’s picture

@dpagini Yes this is one of the problems I point out in the summary, that even applying the patch won't prevent the module from being included in the codebase at all.

markhalliwell’s picture

Wow... what a polite way to tell me to STFU. Not sure how an empirical fact turned into "my opinion" unless somehow that also implies that this is suddenly "your" issue simply because you opened it and provided the patch an initial issue summary.

xmacinfo’s picture

I do agree with Dave Reid on this point. The Contribute module is not REQUIRED for Webform to work.

Jacob Rockowitz said that it wanted to make a “political” point by forcing it into Webform installations. That he will eventually remove the dependency before reaching a final version.

@markcarver, please do not make it a personal issue. You are not attacked in any way.

The issue here is the pure definition of a “dependency”! The issue is not who is a contributor or who contributes more than the other, contributing to open source cannot be calculated because one developer have a larger profile than the other.

mmjvb’s picture

Status: Postponed (maintainer needs more info) » Closed (won't fix)
Dave Reid’s picture

Status: Closed (won't fix) » Postponed (maintainer needs more info)

I would like to request that a module maintainer make the final decision to won't fix this, otherwise others looking to patch the module will not see this listed in the issue queue. I have read the referenced issue and this is in response to it.

xmacinfo’s picture

@mmjvb: Please do not close this issue.

Even if the Webform 5 maintainer wants to add a false dependency, he must remember that his decisions may affect millions of users and thousands of contributors. If he want to add dependencies to a “toaster”, we must remind him that a “toaster” is not required for Webform to work.

https://www.drupal.org/dcoc#consideration

Consideration
Our work will be used by other people, and we in turn will depend on the work of others. Any decision we take will affect users and colleagues, and we should take those consequences into account when making decisions. Drupal has millions of users and thousands of contributors. Even if it's not obvious at the time, our contributions to Drupal will impact the work of others. For example, changes to code, infrastructure, policy, documentation, and translations during a release may negatively impact others' work.

jrockowitz’s picture

Priority: Normal » Major
Status: Postponed (maintainer needs more info) » Postponed

@Dave Reid I agree that this issue is a reasonable response and should remain open and marked as 'Postponed' so that people can easily find the ticket and the attached patch.

Even though I am not removing this dependency today. I have clearly stated that this dependency will be removed before stable release is tagged.

I also decided pre-emptively bump the priority to 'Major', maybe just to prevent someone from marking this as 'Critical'.

The overall discussion should continue via #2944651: Encourage participation, acknowledge contributions, and improve sustainability within Drupal (the software).

mmjvb’s picture

Surprised and disappointed to hear this, at least it provides clarity.
Understood it wasn't a permanent dependency, but didn't get that it would be removed upon release.

BTW Is the abuse of the issue queue here documented somewhere?

jrockowitz’s picture

I don't feel that there is an abuse of the issue queue just a passionate conversation.

borwickja’s picture

There is another issue here that to me weighs in favor of removing the contrib module dependency.

Syncing configuration data is now more difficult. Importing configuration from a D8 install with Webform release candidate 1 into a D8 install with Webform release candidate 3 fails. The config from release candidate 1 tries to uninstall the contrib module, and that breaks the import. The use case here is that I was testing release candidate 3 locally and was ready to push it up to production but needed to make sure that configuration data from production was in local so that pushing up through the repo would put everything in sync.

"Drupal\Core\Config\ConfigImporterException: There were errors validating the config synchronization. in Drupal\Core\Config\ConfigImporter->validate()
The import failed due for the following reasons: [error]
Unable to uninstall the Contribute module since the Webform module is installed.
Unable to uninstall the Contribute module since the Webform Bootstrap module is installed.
Unable to uninstall the Contribute module since the Webform UI module is installed."
etc

karenann’s picture

My Issue is that as of today, the Contribute module is still in beta.

If it were a stable release and covered by the security advisory policy, I could probably make a case internally for this. Right now, this fails our vetting process and I cannot update webform.

I was able to get a pass for webform not being stable and covered due to the unique and powerful role it serves. Contribute would be the equivalent to an appendix in our installation.

jrockowitz’s picture

@karanaan Are you okay holding off upgrading to RC3 or using the patch?

As stated in my blog post will be removed in the near future.

Alan D.’s picture

After DrupalCon Nashville (April 9-13, 2018), I look forward to tagging a stable release of the Webform module for Drupal 8 which won't include the Contribute module dependency.

Awesome news (reg: stable release) and big thanks for all the hard work to all. :)

recrit’s picture

re-roll against latest dev#55e7b560

Rajab Natshah’s picture

Thank you ... using #28

Rajab Natshah’s picture

This patch for Webform 8.x-5.0-rc3

Rajab Natshah’s picture

Rajab Natshah’s picture

FileSize
1.16 KB
Rajab Natshah’s picture

Sorry, but Not sure seems that we have to use the DEV version
I'm switching to use

"drupal/webform": "5.x-dev#385cb39037cc966b286fbe42e591a4119d482c85",

with #28

      "drupal/webform": {
        "Issue #2944792: Remove Contribute dependency.":
        "https://www.drupal.org/files/issues/webform-2944792-remove-contribute-dependency-28.patch"
      }
Rajab Natshah’s picture

Rajab Natshah’s picture

After more study over this issue
I will follow with Jacob Rockowitz (jrockowitz) current option on Webform 8.5.0-rc3

Just to NOTE that the composer will get the contribute module, but we need to add the following, for Drupal.org build to work.

projects[webform][type] = module
projects[webform][version] = 5.0-rc3

projects[contribute][type] = module
projects[contribute][version] = 1.0-beta7
P44T’s picture

Besides that I question the decision to let this module depend on the contribute module, there's an issue while upgrading using Drush too. The contribute module is not downloaded automatically, which leads to a failing database update (which tries to enable this dependency).

I also can't see how webform, which has an RC status, could depend on a module that is still in beta, while it's not crucial to the operation of webform.

Tess Bakker’s picture

FileSize
1.23 KB

Patch for webform 8.x-5.0-rc3 to use with composer.json

To recreate the patch for newer versions:

  1. Download webform (tar or zip)
  2. git init
  3. git add .
  4. make changes
  5. git diff > filename.patch
jrockowitz’s picture

Status: Fixed » Closed (fixed)

Automatically closed - issue fixed for 2 weeks with no activity.

karenann’s picture

@jrockowitz Re: #25/#26 At that time, the patch in #14 either didn't work for me or I didn't see it (I can't recall). I worded my post in a effort to support the dependency removal as I hadn't seen your blog post and wasn't clear that the choice to remove was a done deal. I probably should have worded my post differently. Sorry for the lack of clarity. Thanks for your work on this module!!! I'm really thrilled to see it moving forward!

jrockowitz’s picture

@karenann It is very hard to track everything that is happening in a Drupal.org issue queue which is why I am trying to be as transparent as possible by explaining everything I am doing and responding to feedback on my blog.