Lately, at least two companies have begun to seriously game the marketplace system ever since #2833508: Consider weighting issue credits by project usage when ranking Marketplace organizations and potentially other algorithm changes landed.
First let me explain the two ways they are gaming the system:
- Their employees go over all projects with good usage statistics and run a code analysis on them, checking for obvious flaws such as long array syntax in D8, unused variables, etc.
- Their employees "re-roll" patches for core, getting their name on the list of credited people for a marginal effort compared to the people who actually worked on the issue. The reason I quoted re-roll is because a lot of the time, their re-roll breaks stuff or wasn't necessary to begin with.
So while 1. is still a shameless act of gaming the system, at least it helps modules adhere to coding standards. But it also creates a lot of noise for module maintainers as they report things that aren't even broken too. It's mainly 2. that is seriously starting to annoy me, though.
I'm going to be honest here: I work on core and contrib for many reasons, one of them being the selfish reason of wanting to get visible credit for my work. Seeing someone swoop in on an issue that took me days to debug and write code for, only to get equal credit for re-rolling the patch incorrectly is seriously discouraging.
Examples of this can be found here and especially here.
Please do something about this. If you look at the top companies in the marketplace and their issue credits, it will quickly become obvious which ones are gaming the system and which ones are legit.
Disclaimer: I do realize that these companies actually put some effort into it, but it just doesn't feel right to allow this to go on.
Comments
Comment #2
nwom commentedWhen committing a patch, doesn't the module maintainer have the ability to specify who is the author?
I have re-rolled actually needed changes, and felt bad when I received the credit for someone else's work, however I also noticed that with other re-rolls, I didn't get credit. I'm unfamiliar with how it is from the module maintainer's standpoint, but it looks like it is manually defined. If this is the case, then the problem is a training issue where module maintainers should pay attention and select only people that contributed (rather than automatically selecting the last patch submitter).
I definitely agree this is an issue that needs to be looked into and potentially solved either via training or a way for patch submitters to flag an issue for re-evaluation in regards to credit.
There are also circumstances where the module maintainer doesn't give anyone credit and instead just sets the issue as committed, and applies the changes themselves (which is infuriating).
Comment #3
kristiaanvandeneyndeI'm talking about issue credit, not commit credit. When an issue is marked as Fixed, everyone with their name checked at the bottom will receive an issue credit. This is what's being used to gauge how high the company they work for ranks in the marketplace. Git author credit is a different topic (and frankly one I care much less about).
The way they are gaming the system as explained in 2. is that when you submit a patch, even if it contributes absolutely nothing, your name becomes automatically checked at the bottom of the page. So when the issue is finally fixed, you are granted an issue credit unless someone spots that you actually didn't contribute at all and manually unchecks your name.
Comment #4
kristiaanvandeneyndeMoved to webmasters queue as suggested by mlhess on Slack.
Comment #5
kristiaanvandeneyndeI guess this qualifies a spam somehow?
Comment #6
nwom commented@kristiaanvandeneynde thank you for the clarification. I had no idea it worked this way.
Comment #7
dddave commentedComment #8
dddave commentedNot sure if this is the right place, or the customs or content queue. I agree though that this is becoming a problem we need to adress.
Comment #9
avpadernoIMO, it should go on the Drupal.org customizations queue if there is code to change, and there is an agreement with in which way to change it.
Comment #10
mlhess commentedAt some point there might be code to change, I think it needs to be here to monitor and figure out how bad this issue is.
Comment #11
hestenetThis is an important problem statement, and definitely one of the areas of concern for the issue credit system. I know that some maintainers (particularly the core folks) make it a big part of their workflow to be very deliberate about whose credit boxes get checked/unchecked when closing an issue/granting credit. However, as was mentioned above, this puts the burden of moderation on the maintainer.
I suppose the question is: What could be done about it?
Just brainstorming at the moment, but curious to hear others' ideas.
Comment #12
kristiaanvandeneyndeWell a first point of action would be to address the worst offenders (here, here and here) to let them know that this sort of behavior is very undesired.
If the core re-rolls that serve no purpose would at least stop right away, that would be a win in its own right. Trying to piggyback on top of people's hard work like that is just downright disgusting.
Then we should look into the scoring algorithm and whether we can avoid companies scoring so high on the marketplace with non-issues like:
If that's too hard to pull off, perhaps we should run a one-time script that searches for these issues and strips the credit from all of them. The important part here would be to first converse with the offending parties to make sure they don't keep doing it after the script has run, but also to kindly inform them of why this is being done in the first place.
After all, contribution should be encouraged by all means. And if you occasionally want to open an issue to address a coding standards problem, that should be fine. But given the amount of similar issues they have created recently, it's beyond doubt that they did not create them to improve modules, but rather to influence the marketplace ranking of the company they work for.
Comment #13
kristiaanvandeneyndeJust a thought about the coding standards issues: If we change the algorithm to take into account issue priority (critical, major, normal, minor) to score based on it and have minor issues score really low, then all we need to do is retroactively set all of those issues to minor.
The "effort" they put into it will then still be given some credit, but not as much as it receives now. Example:
This would mean it takes 20 coding standards "fixes" to gain the same Marketplace merit as one "real" fix.
Disclaimer: The core re-rolls should (IMO) still be dealt with more severely, though. And we'd still need to have an open discussion with the offenders to make sure they stop spamming the issue queues with this kind of stuff. But this way they'd at least get some credit for the work that has been done so far.
Comment #14
amateescu commentedAs someone who has been burned as well by this problem in the core issue queue, I really like the proposal to take issue priority into account :)
Comment #15
kristiaanvandeneyndeIs there anything we can/should do to help resolve this? I'm a bit unclear as to what the next steps would be to address this issue.
Comment #16
xjmI spoke to hestenet about this issue and braindumped some information and ideas. However, before we write all the things up here that that the DA and committers are already working on related to this, please:
Assume good intentions.
Stop assuming you know why you are seeing the behaviors you see, or what the people behind them are doing. Stop using words like "offenders" and "disgusting". If you'd treated me that way when I eagerly rerolled patches and fixed coding standards, you'd be down a release manager, and possibly D8 wouldn't even be out yet. :P
And also, stop assuming that people doing things like broken rerolls will get credit just because you saw a broken reroll being posted. The two core issues you linked aren't even marked fixed yet, so no one has received any credit for anything. Core is not maintained by robots. Committers go over the crediting section thoughtfully to decide who gets credit when we mark the issue fixed, and if we do make a mistake, it can still be corrected after the issue is fixed.
I'll work with other committers to post a more constructive reply later explaining what committers already do to manage crediting for lower-quality contributions, but please start being respectful of the contributors and companies you're referring to. They're contributing back to Drupal too, unlike thousands of other companies that don't contribute so much as a reroll or a cent.
Comment #17
xjmComment #18
catchJust want to add that I agree with @xjm 100% here. When I started contributing to core in 2006-ish, I did a lot of patch re-rolls, docs and coding standards fixes, manual testing when there was no automated tests at all etc.. I was teaching myself PHP more or less from scratch, in my own time while being a new parent, and core contribution was a way to get free training from very skilled people and assist in getting a few bugs that were really annoying me fixed. I was using Drupal for personal projects but not for work. By 2008 I was doing Drupal full time mostly due to very constructive help from people in the core queue.
While a lot of very minor fixes are automated, it's really disappointing to see some of the more minor fixes and re-rolls denigrated as simply gaming. People have been doing stuff like this long before there was issue credit, and often didn't get explicit commit mentions if they only re-re-rolled, but they still did it to keep issues moving/passing test bot etc.
There are ten year old issues in the queue, sometimes older, and many of them have had to be re-rolled literally dozens of times - this in itself can be dispiriting when that's the only attention an issue gets for months. Automated re-rolls and coding standards interdiffs or similar would be great, we don't have them yet.
Comment #19
kristiaanvandeneyndeI appreciate the sentiment of giving the benefit of the doubt. I actually lead my life by that rule. If someone is accused of something, I wait until a judge has cast their verdict before accepting the stories that are told as truth (and even then...). That being said, I am not naive either. To make assumptions based on the evidence in front of you is not wrong. Naming and shaming people or considering them guilty without a proper investigation is.
As I specifically mentioned in the summary, #12 and #13: We should still value the work they have done because we cannot know the true intentions behind the actions discussed here.
But intentions and how the marketplace works are two different beasts and we must be careful not to confuse them. The way the marketplace currently works, allows for manipulation. What we are seeing now is, in fact, gaming of the system. Whether it's intentional or not, it's undeniably the case.
So we can go about this in very different ways: We can go with the repressive way of punishing people based on assumptions. This is a horrible idea in my book, but I wanted to explicitly state it as an option because it is an option some regimes love to pick. Or we can actually fix the system independently from any intentions and as a result even fix the side-effects of any potentially bad intentions.
By fixing the marketplace so that small patches like "short array syntax" score very low, perhaps as suggested in #13, we actually fix the whole problem:
So in conclusion: If we fix the system so that it cannot be easily gamed, we will also stop people from making assumptions about certain companies' behavior or denigrating their work.
P.S.: Telling me to stop assuming certain things is arguably equally offensive as me using words like "offenders" and "disgusting". Because now you're assuming that I assume the worst of certain people or companies. There's a fine line between an assessment and an assumption when emotions are involved. All I am trying to do here is point out an issue that apparently has bothered others as well. I do not think I have intentionally offended anyone here.
P.P.S.: The irony of the P.S. is that I am now assuming that you are assuming that I am assuming certain things :)
Comment #20
catchThe marketplace is only gamed to much the same extent as http://drupalcores.com/ is gamed. drupalcores counts raw commit mentions parsed from commit logs, it doesn't take into issue priority either, and afaik it counts contributions with no time limit (at least since 8.x opened up).
While there has been some level of critique of drupalcores (that it ranks based on quantity rather than quality, even though those do in many cases correlate), no-one to my knowledge has accused any of the individuals on that listing (or the companies listed at http://drupalcores.com/companies.html) of 'gaming' anything, even though people do use 'top 30 Drupal core contributor' and similar in job applications. As soon as similar metrics are applied to the marketplace listing, the tone changes.
Things like adding weighting to critical issues is fine (and for me would be an improvement regardless of any gaming, as long as it doesn't result in issue priority wars (given this already happens especially between critical and major issues)), but there are also many minor contributions made to critical issues - re-rolls, docs fixes, coding standards fixes, sometimes manual testing etc. which are entirely welcome and good even if it would be useful to automate more of these.
Comment #21
xjm@kristiaanvandeneynde, I've already (before I first commented here) spoken to someone at the company that employs the contributor you referenced in your original post, asking about how they might incentivize contribution within the company. Based on the discussion, your posts' implications that the contributions were just intended to manipulate marketplace rankings are not correct. As far as I can tell, what is actually going on at that company is that they have access to a great, enthusiastic mentor who is helping them learn the simple novice tasks we encourage at sprints and in the handbook. For example:
So, unless you specifically have other firsthand information from someone at the same company that contradicts my own secondhand knowledge, you have in fact... well... let's say drawn an incorrect conclusion based on very incomplete data and perspective? :P
I'm not dismissing that contribution crediting (and especially the marketplace ranking based on it) is difficult and sometimes fraught or inequitable. As I tried to explain above, core committers have been observing and managing some of the things that concern you for as long as the contribution crediting system has existed. Others definitely share your concerns.
As I tried to point out above, I'm working with the other core committers to try to provide folks with a more holistic picture on this problem space (not because of this issue node; it's been a backlogged agenda item in core committer meetings for ages).
There are lots of existing infrastructure issues proposing specific adjustments, so the merits and drawbacks of those adjustments are best discussed in the dedicated issues. For example, the notion of weight by priority has been discussed since long before the system was even deployed, and I specifically asked the DA to hold off on it because it has lots of drawbacks (edit: adds more burden on maintainers, incentivizes exaggerating priority, incentivizes the gaming you are concerned about on issues that matter the most instead of just on any old issue, etc.). Still, there is at least one issue for this proposal from wayback and I think @effulgentsia created another duplicate of it recently.
Similarly, we already have consistent expectations among the D8 committers in a draft doc. In a revision to this document from May 24, 2015 (I would almost abuse my webmaster privs to add a blink tag around that), I added a note that "Useless file attachments" should not be credited:

We've followed that as long as the contribution crediting system existed, and meant to make that into a public handbook page for ages, because it will increase transparency, set clearer expectations, and also serve as a resource for contrib maintainers. (Keep in mind though that the time we spend working to create such documentation is time we are not reviewing RTBCs, so your patience is appreciated.)
And so on and so on and so on.
I'm marking this issue postponed while we (DA, core committers, etc.) help provide more firsthand information about this problem space. Edit: As well as examples of effective and courteous ways to encourage more valuable contributions, because I think it's really important to help the community understand how the emotional labor we put into these things effects positive change.
Comment #22
xjmAnd also, I want to restate that I really actually became the #1 "top" D8 contributor in 2011 by rerolling patches, fixing coding standards in others' patches, and nitpicking documentation.
In particular, I wrote a shell script to reroll patches for the
/coredirectory move and used it on dozens of patches in the span of a couple weeks. It was a very similar situation to the array syntax standards change: one scheduled commit invalidated and disrupted core patches on a massive scale, but patches could be corrected with an automated tool if one just took the short minutes time to curl them down, reroll them, and reupload them. And I did that. A lot.I didn't do it because I wanted my username to appear in giant letters in a tag cloud in a presentation by Dries (which happened), nor to make the University of Wisconsin (srsly) a big name in Drupal. I did it because I'd found a way I could do a small thing that would save a little pain/annoyance for core contributors who'd patiently helped me when I was struggling with D7 APIs.
People were patient and respectful to me even though I got so much undue recognition for something so trivial (versus calling me "disgusting" or posting issues calling my rerolls spam), and that support gave me the encouragement I needed to keep learning and eventually do things like review 400K API rewrites. That potential could be in any broken reroll, if you take the time to be patient and kind.
Comment #23
xjmComment #24
kristiaanvandeneyndeGiven the above explanation I am fine with postponing this issue awaiting further action taken by the DA.
While I do believe the suggestion made in #13/#19 would "fix" the Marketplace for now, there is no doubt that any algorithm change we come up with on such short notice will still be open to some form of gaming. I remain worried about the quality of issues reported going down and becoming spammy but that's a worry, not fact. We'll just have to wait and see how it evolves.
Thanks for taking the time to write up such a detailed background story.
P.S.:
LOL, touché
Comment #25
kristiaanvandeneyndeAt the risk of sounding a bit cynical: Does this mentor work at several different companies?
It's starting to get out of hand. There are now quite a few companies in the marketplace contributing very little aside from coding standard reports. Another example of people focusing on nothing but such reports can be seen here: #2880339: Coding Standard issues #2880256: Coding Standard issues
If you look up that user's recent post history, I sincerely doubt he is learning anything about Drupal from this type of work. Also, if I were mentoring people I'd sure as hell wouldn't have them spend days running the same script and then copy-pasting the same text all over the issue queues. That would be pretty awful mentoring if you ask me.
I'm not saying we need to start a witch hunt here, but there must be some way to disincentivize this behavior without creating a PR shitstorm? I get that the last thing we want are headlines like "Drupal tells small committers to GTFO in a surge of elitism", but the current situation is far from fun either for module maintainers.
Edit: Just to re-iterate: I appreciate that the DA is looking into this behind the scenes, but is there really nothing we can do in the mean time?
Comment #26
bojanz commentedThis has become crazy. Valuebound employees with hundreds of commits and credits consisting only of short array and $this->t() changes.
This poisons the system of low hanging fruit issues which definitely has great value in attracting more long-term contributors. I've had to start "won't fix"-ing all such trivial patches, and I'm not the only one.
Furthermore, it devalues the whole Marketplace ranking system to see them ranked #2, higher than shops that spend hundreds of thousands of dollars contributing to Drupal. It's also detrimental to Valuebound itself, cause now people get to associate them with gaming the system and producing no value, even though they also have real Drupal people doing real work (#2854495, #2856505, just in my queues).
Comment #27
xjmWe are currently working on making testbot automatically apply coding standards fixes #2881456: Phpcs: automatically generate patch to fix coding standards violations and link them on issue #2851916: Expose phpcs patches to comment stream which will remove trivial coding standards cleanups on larger issues as a way of receiving issue credit. We will only deploy it for core at first, but eventually it should be rolled out for contrib as well.
Core also has strict issue scope guidelines https://www.drupal.org/core/scope to prevent racking up trivial credits for issues only about coding standards fixes.
It is still up to the maintainers of each project to determine who receives credit and what patches they will accept. Core maintainers are very thoughtful and careful about credit -- we do not credit broken rerolls or other unhelpful attachments, and if you see that credit has been granted for such an attachment for an issue that has been marked fixed, please inform a committer and we will remove the credit. (Edit: Keep in mind that only issues that are marked fixed with a comment from a maintainer receive any issue credit, and we evaluate credit at the time of commit.)
If maintainers grant credit for unhelpful contributions, that is the maintainers' fault, not the contributors'.
Comment #28
xjmFor what it's worth, after having discussed it with @catch, I do support a slight Marketplace weighting by issue priority, at least a slightly lower weight for minor issues, so long as the issue priority field cannot be changed by non-maintainers after an issue is fixed. (I still would not add weighting for normal vs. major vs. critical until we see how it goes with minor issues, because I don't want to incentivize priority wars if we don't have the capacity to manage it as committers.) This will require infrastructure changes, and I'm pretty sure a dedicated issue might already exist for it.
There are in fact dozens of dedicated issues for thing surrounding this, so people who are very concerned about this problem could invest their energy in linking the issues here and writing an emotionally neutral issue summary that respects attempted contributions while also listing the issues that attempt to fix it.
Comment #29
xjmAlso, @kristiaanvandeneynde:
Until I see you spending your DrupalCon working with other overworked volunteers trying to scale to the demand of hundreds of people who want to give back to Drupal but don't know how, you have no context to make such judgments. The sprint mentor signup form for Vienna is here: https://events.drupal.org/vienna2017/sign-up-to-mentor
Comment #30
xjm@bojanz:
Thank you for recognizing this. To me, this is actually the most important problem, because the hostility directed at companies and individuals who are trying to contribute is toxic.
Comment #31
kristiaanvandeneyndeWell, the issue I linked in the issue summary got committed to core with credit given for one sloppy re-roll with no further involvement in that issue whatsoever: #2848120: Short term fix: Make ContentTranslationController recognize 'add' and 'edit' form handlers.
Asking us to PM a core committer for incorrect credit someone else got doesn't feel right. No-one wants to be "that guy" who "snitches" on his colleagues. I'd rather see this being discussed publicly than privately.
I already have spent time mentoring. As someone telling others to assume good intentions you sure seem to jump to the conclusion that I haven't mentored before.
And even if I hadn't, I still stand by my statement that having someone run a script 24/7 teaches them little to nothing. It doesn't take an overworked volunteer to figure that out.
P.S.: I spent my time trying to make people understand the more difficult parts of D8 (like the caching system) so that we have more people who can contribute to those parts of Drupal. I know that this requires the trainees to already know a fair bit about PHP, but not all trainees are absolute rookies. There is value in helping good programmers become great programmers.
Comment #32
xjmAs I have documented above, core committers do not intend to grant credit for a broken reroll. Therefore, you are not being a snitch if you tell a core committer that credit was granted for a broken reroll. You are helping a committer, who is a human being, correct a minor oversight that is easily corrected. And it's appropriate to do so in public, if you post politely that it appears that credit was granted by mistake in a scenario where it is documented that credit is not normally granted.
Comment #33
xjmSo you go do that, then, and stop passing judgments on the core mentoring program and the mentees they have taught who are in turn mentoring the people you are judging, or being insulting on this issue about the mistakes of novices. Until you have mentored novices at a DrupalCon and know how draining and exhausting it is to meet the demand of hundreds of people trying to set up a dev environment for the first time and work on a first core patch, you are not in a position to be passing judgment on what the documented novice tasks are. When you have 10, 15 peoeple needing your help all at once, it's not really possible to sit down and teach someone how to be a better programmer. What you can do is give them a simple task they have the background to complete, and help them perform that simple task in a minorly helpful way on a core issue.
Why do you think anyone told anyone to run a script 24/7? See my story above about the
core/move rerolls and why I did them. No one told me to do it and I thought I was helping. And people thanked me for it, so I was helping. And all I was doing was running a script and attaching new patches to issues with the script run on them. Now I'm a release manager, because people weren't jerks to (or about) me when I was just a noob doing a noob thing and they got the same amount of credit I did.Comment #34
xjm@kristiaanvandeneynde, I've just checked the issue you linked, and the reroll was not sloppy or broken. It applied, had all the needed hunks, and was a necessary reroll as your previous patch did not apply at the time (I checked out commit hashes on the relevant days to verify this). Furthermore, @tstoeckler also said it looked good.
So, the individual contributed to the issue, and therefore has received issue credit for it.
Comment #35
xjmI apologize for participating on the offtrack discussion here in the most recent comments. I don't think this issue thread is helping solve anything at this point, so I am closing it "works as designed" (because in the two examples given in the original issue report, it is working as designed).
If you want to help resolve instances of repeated low-quality contributions, help by mentoring the person you see making a low-quality contribution, using constructive feedback and writing your comment in a way that assumes good intentions, or contribute to the higher-level problem by helping with the dozens of existing issues around improving the contribution crediting system, automated rerolls, automated coding standards cleanups, etc.
Comment #36
kristiaanvandeneyndeI agree it may be best to close this topic as it cannot lead anywhere that isn't already on your radar as explained in #21.
It's also obvious you and I are looking at this problem space from a different angle. You are very invested in helping people of any skill level contribute back to core, as I've witnessed myself at various conventions, and that's a very admirable thing to do. I am very invested in trying to polish the more difficult parts of core (and Group), which can take a lot of time for just one issue.
I can imagine it not being fun for you to see someone call rookies "people who were told to run scripts" as I hope you can imagine it's equally unsatisfying to see people gain the same credit for taking 15 minutes of time to re-roll a patch you worked 20+ hours on.
For the record, I'm not trying to be a jerk about anyone here. I tend to express myself without a filter; i.e. I say things as I see them. In Dutch we have a phrase "calling a cat a cat", which means you name something as it appears to you. I believe the English version is calling a spade a spade. In this case a see a system that is being gamed whether intentional or not. I also see people doing the same task in rapid succession, whether told to do so or not.
I do assume good intentions or actually give people the benefit of the doubt. In my book, raising an issue like this without attacking certain individuals personally can actually be seen as constructive feedback. It's only when faced with different points of view that a good discussion can take place.
Comment #37
kristiaanvandeneyndeThis is actually my greatest concern too. Not everyone is as loud as I am when they are upset about something. Companies will get a bad rep from this because not everyone will find this issue or take the time to read it and see both sides of the discussion. All they might see is a company which is ranked #2 on the Marketplace for fixing short array syntax in a couple hundred modules.
I would actually love to help improve the crediting system. If there are any issues you had in mind, I'll gladly follow them and participate in the discussion. Contrary to how you may perhaps perceive my contribution here, my goal is first and foremost to help improve Drupal and the people around it.
Perhaps this might clear things up:
Where I come from, people tend to be very direct and loud about what they see. We don't beat around the bush. That doesn't necessarily makes us jerks IMO, i.e. we don't set out to offend people. We just want to be able to discuss sensitive topics without having to worry about tripping over ourselves trying to find ways to say things "nicely". From what I've gathered, this seems to be perpendicular to how conversational behavior is evolving in the UK and US.