Documentation of the terms is at https://www.drupal.org/node/1066982
Maintenance status
- Actively maintained “actively monitors its issue queue”
- Minimally maintained “no fast response is guaranteed”
- Unsupported “no longer being developed”
Seeking co-maintainer(s)algorithms shouldn’t look for maintainersSeeking new maintaineralgorithms shouldn’t look for maintainers
Development status
- Under active development “New features are still being added”
- Maintenance fixes only “considered feature complete”
- No further development “no longer developed at all”
Obsoletealgorithms can’t determine deprecation
Things we can measure
- Last commit / dev release update
- Last issue update, either by a maintainer or anyone
- Last tagged release
Correlation between statuses
Number of projects with both terms.
SELECT td_maint.name, sum(td_dev.tid = 9988) 'Under active development', sum(td_dev.tid = 13030) 'Maintenance fixes only', sum(td_dev.tid = 16538) 'No further development' FROM node n INNER JOIN taxonomy_index ti_maint ON ti_maint.nid = n.nid INNER JOIN taxonomy_term_data td_maint ON td_maint.tid = ti_maint.tid AND td_maint.vid = 44 AND td_maint.tid IN (13028,19370,13032) INNER JOIN taxonomy_index ti_dev ON ti_dev.nid = n.nid INNER JOIN taxonomy_term_data td_dev ON td_dev.tid = ti_dev.tid AND td_dev.vid = 46 GROUP BY td_maint.tid ORDER BY td_maint.weight;
Under active development | Maintenance fixes only | No further development | |
---|---|---|---|
Actively maintained | 23716 | 1676 | 144 |
Minimally maintained | 2649 | 2664 | 646 |
Unsupported | 531 | 89 | 1292 |
Last commit
SELECT td.name, count(1) Total, sum(vo.last_commit > unix_timestamp() - 60*60*24*7*24) '<24wk', sum(vo.last_commit > unix_timestamp() - 60*60*24*7*12) '<12wk', sum(vo.last_commit > unix_timestamp() - 60*60*24*7*4) '<4wk' FROM node n INNER JOIN taxonomy_index ti ON ti.nid = n.nid INNER JOIN taxonomy_term_data td ON td.tid = ti.tid AND td.vid = 44 INNER JOIN versioncontrol_project_projects vpp ON vpp.nid = n.nid LEFT JOIN (SELECT repo_id, max(committer_date) last_commit FROM versioncontrol_operations GROUP BY repo_id) vo ON vo.repo_id = vpp.repo_id GROUP BY td.tid ORDER BY td.weight;
Total | <24wk | <12wk | <4wk | |
---|---|---|---|---|
Actively maintained | 25631 | 3498 | 2365 | 1166 |
Minimally maintained | 6017 | 475 | 304 | 129 |
Seeking co-maintainer(s) | 1874 | 197 | 130 | 56 |
Seeking new maintainer | 922 | 36 | 23 | 10 |
Unsupported | 3705 | 84 | 55 | 24 |
Last issue comment
SELECT td.name, count(1) Total, sum(i.last_issue > unix_timestamp() - 60*60*24*7*24) '<24wk', sum(i.last_issue > unix_timestamp() - 60*60*24*7*12) '<12wk', sum(i.last_issue > unix_timestamp() - 60*60*24*7*4) '<4wk' FROM node n INNER JOIN taxonomy_index ti ON ti.nid = n.nid INNER JOIN taxonomy_term_data td ON td.tid = ti.tid AND td.vid = 44 LEFT JOIN (SELECT fp.field_project_target_id, max(n.changed) last_issue FROM node n INNER JOIN field_data_field_project fp ON fp.entity_id = n.nid GROUP BY fp.field_project_target_id) i ON i.field_project_target_id = n.nid GROUP BY td.tid ORDER BY td.weight;
Total | <24wk | <12wk | <4wk | |
---|---|---|---|---|
Actively maintained | 25631 | 4593 | 3534 | 2058 |
Minimally maintained | 6017 | 719 | 508 | 269 |
Seeking co-maintainer(s) | 1874 | 442 | 344 | 206 |
Seeking new maintainer | 922 | 180 | 136 | 83 |
Unsupported | 3705 | 137 | 101 | 54 |
Correlation between statuses, projects used on >500 sites
Add INNER JOIN project_usage_week_project u ON u.nid = n.nid AND u.timestamp = 1491696000 AND u.count >= 500
to queries.
Under active development | Maintenance fixes only | No further development | |
---|---|---|---|
Actively maintained | 2301 | 248 | 7 |
Minimally maintained | 145 | 334 | 40 |
Unsupported | 5 | 0 | 46 |
Last commit, >500 sites
Total | <24wk | <12wk | <4wk | |
---|---|---|---|---|
Actively maintained | 2562 | 1028 | 757 | 394 |
Minimally maintained | 528 | 102 | 68 | 31 |
Seeking co-maintainer(s) | 370 | 119 | 81 | 49 |
Seeking new maintainer | 172 | 27 | 16 | 11 |
Unsupported | 76 | 6 | 6 | 1 |
Last issue comment, >500 sites
Total | <24wk | <12wk | <4wk | |
---|---|---|---|---|
Actively maintained | 2562 | 2039 | 1782 | 1309 |
Minimally maintained | 528 | 344 | 271 | 173 |
Seeking co-maintainer(s) | 370 | 306 | 269 | 197 |
Seeking new maintainer | 172 | 116 | 97 | 69 |
Unsupported | 76 | 34 | 30 | 21 |
Original issue summary
Coming from the somehow similar issue #1130786: Mark all releases below 6.x as unsupported.
...perhaps we should also somehow mark projects with one or more of the bellow criteria as abandoned/obsolete:
- haven't had a commit for more than say... 2 years.
- their issue queue is inactive for more than say... 1 year.
- they have no 6/7/8 release branches.
- they have low or 0 usage stats.
If they actually are active, then I am pretty sure that one of the maintainers will step up and edit the project's status to reflect reality (we can mail them upon auto-flagging their project, so they will be notified for the change). If not that, then perhaps someone will step up and apply to take over the project someday. Till any of the above happens, I think it is pretty safe to consider such projects obsolete and mark them as such.
PS: I happened to be browsing around and came across http://drupal.org/project/flexinode and noticed the above, so I use that as an example case.
Comments
Comment #1
klonos...better component?
Comment #2
klonos...and a more "catchy" title ;)
Comment #3
marktheshark CreditAttribution: marktheshark commentedTotally with you on this.
I'm also in favor of (auto-)flagging a module as:
This could depend on criteria such as issue priority, number of open critical issues, etc.
A time delay could also apply to some criteria in order to not immediately affect the status of the module and allow the maintainer sufficient time to respond and solve or acknowledge the issue.
We really need some kind of community-based quality control in Drupal. It could save hundreds of man-hours of work and investigation.
Comment #4
klonos...yeah, the reason why I choose to refrain from suggesting that the number of criticals should play a role in this automation is that people tent to mis-use issue priority. *A LOT*.
Number of unanswered open issues for a long (TBD) period though makes sense.
Comment #5
marktheshark CreditAttribution: marktheshark commentedWell, a time delay in affecting the "rating" would help here. In this time frame the proper priority can be set by the maintainer or even the community, if the issue is not that important or not an issue after all.
Also, community testing guidelines should be issued and abuse of priority should have repercussions on the user found in violation.
Comment #6
klonosTrue, if a project is well-maintained, then it's most likely that the maintainer(s) will restore proper priorities to issues. If they don't, well it most likely means that the project is not well-maintained ;)
That on the other hand is completely different can of worms though.
Comment #7
marktheshark CreditAttribution: marktheshark commentedTrue, but you do have to warn and/or revoke issue-opening rights for e.g. a few weeks, when priority is abused in order to speed up responses to one's issues.
Anyway, how can we get more people to join this discussion?
Comment #8
marktheshark CreditAttribution: marktheshark commentedI'm afraid this thread doesn't have very high visibility.
Should we perhaps start a Drupal Groups discussion?
Comment #9
klonosIssues can be followed (as in clicking the "follow" button) - g.d.o discussions cannot.
Comment #10
marktheshark CreditAttribution: marktheshark commentedIt seems there is no interest in this or this thread is has not been read by anyone from the core Drupal team.
To be more specific, here are some very important projects which now appear to be minimally maintained and should probably be marked as such:
Commits date back almost half a year, the number of major issues is very large and most comments are a case of "me too" "subscribing".
I personally have some encountered some issues in these modules for which no solution appears to be in the cards...
Comment #11
klonosI hear you, but I believe the main reason for this issue not receiving much interest is that we're in the middle of upgrading d.o from D6 to D7. Once this task is done, we'll have more chances to see some action here ;)
Switching to a feature request as it seems more appropriate.
As for the Date and Calendar modules you mention, as far as I know the main person behind them is KarenS (the percentage of her commits to each one of these projects confirms this) and indeed she seems to not have much time lately. On the other hand, date is now part of D8 core and I hope that we'll see quite a lot of things being backported to the 7.x version of Date soon as D8 is released. Most of the devs are busy with D8, so I guess its natural to not see any progress in contrib in general.
Comment #12
marktheshark CreditAttribution: marktheshark commentedIt is natural to reallocate resources to 8.x and I'm sure everyone will agree that KarenS's work is most appreciated.
However, in the mean time, the nearly abandoned state of the 7.x versions of these modules are being used by a lot of people who would have the logical expectation that these modules would be regularly maintained.
A new user wanting to add a calendar to their site should not need to dive into the issue queue to see why their calendar page is throwing dozens of PHP warnings.
Other modules, such as Views Calc, do not appear to be working at all.
Note that there appears to be no alternative to Date, if you need that kind of functionality.
A warning on the project page would be most useful to advise users to install the module with caution or not install it at all if it is currently broken.
Comment #13
mgiffordThis is kinda the opposite end of #2186377: Highlight projects that follow Best Practices (the carrot).
What's being proposed here is the stick. I think that's good.
There are elements that we can degrade over time. Might even want to have those show as colors when looking at people's profile pages.
Great idea.
Comment #14
mgiffordAs far as the Date/Calendar modules go & KarenS' participation in D8.
What are our incentives for people to contribute back to complex modules like the this one? I posted this issue asking #2183117: Dates are Important - So Why Are there over 1000 open issues?
I've also posted a series of other issues about maintenance of modules.
Our motivation structure really hasn't kept up with the growth of the community.
Comment #15
klonosI'm glad that this issue here has a chance to get some attention (closing to almost 3 years since I initially filed it). And hey, thanx for the link to #2186377: Highlight projects that follow Best Practices.
Yeah, I figure that this might seem a bit harsh on module maintainers (provided this is open source and work is done when/if spare time is available and all - totally respected), but on the other hand we need to be fair to end users and decision makers when it comes to selecting which modules to pick to use when building a website. Providing an actual, honest and up-to-date overview should be our goal here. We cannot leave this task of keeping the projects' statuses up to date up to any of these two sides/groups of people because:
a) having the false belief that module maintainers that don't even have the time to maintain their projects (that is performing actual tasks like committing already provided and RTBC'ed patches, making new releases available, being active in the queue etc) will take the time to update these two statuses manually is plain wrong - actually some maintainers seem to be unaware that these even exist as tools that they can use to communicate project status. After all, if I were in their shoes and got some time on the side, I'd first give priority to the above-mentioned actual tasks than doing this tedious thing.
b) giving the "power" of updating these statuses to the end users is also plain wrong because I'm sure that there'll be these inpatient newcomers that mark projects as unmaintained as soon as they are ignored in the queues (for perfectly legit reasons) - same way as some abuse the priority field to set for example feature requests as "critical" :P
...anyways, main point is that if we can automate tedious tasks with a decent logic behind the whole automation, then we should. Less work for everybody at the end of the day.
Comment #16
mgiffordIt should be clear which modules are being maintained by well meaning hobbyists who will get to it when time allows and by Drupal shops which are paying someone (or a group of people) to ensure that a popular module is going to be a stable and reliable choice when implementing a site.
There are lots of excellent folks who contribute to drupal.org on the side and who really know Drupal inside & out. However, the scratch an itch approach really only gets us so far. It's not a great incentive for maintaining a popular project.
I'd be fine with giving the project maintainer the ability to change the project status. However, if the project still doesn't meet the standard the next time it is evaluated it would just be changed.
Ultimately, project maintainers just get too busy most of the time to go back and even look at their projects. We're really not going to have a problem as very, very, very few maintainers are going to try to game the status page to make it look better maintained than it is.
Comment #17
klonosIt's not that I'm saying that they don't mean well... It's simply that some seem unwilling to "give their baby up" (if you like the metaphor). They refuse to accept perfectly qualified people as co-maintainers while at the same time fail to commit RTBC code or keep up with the issue queue or do simple things such as keeping the project page up to date with minor edits suggested by users in the queue (link to alternative modules for example). So, time constraints are perfectly justified and understandable, but the of luck of time/energy combined with any unwillingness to delegate tasks is what actually hurts projects the way I see it.
The maintenance and development status indicators are (or at least should be) there as a means of information towards end users - not as means of how maintainers feel about their project. That's why I strongly believe that these should be automatically adjusted based on a certain logic. Now, if this logic proves to be unfair somehow, I'm sure that over time we'll tweak it to a point where it feels right.
My point is that project pages should not be seen as "products" that need advertisement of some kind - they instead need to be acting as points of as neutral as possible data. Projects themselves need hard evidence to justify the status tags they are assigned. Look at it this way if it helps: The projects are brainchildren of their creators and maintainers and all credits certainly go to them, but they still are kindly hosted on d.o and the status tags should not be treated as "property" of the project owners. They are more of a rating assigned to them once it's been calculated from raw data. Leaving them free to be adjusted by the project maintainers seems to me as unfair as it would be to allow them (maintainers) to also define an estimation of their project's usage stats and display that to end users instead of actual data. That to me -and sorry if I sound harsh- is plain misinformation.
Comment #18
klonosThat sounds fair enough, but as I explained to my previous post, it has nothing to do with the maintenance and development status tags and how they should be assigned. Being a part-time, best-effort maintainer is perfectly fine. Stating that a project is under *active* development while it is actually not (for whatever perfectly justified reasons) is not fine at all.
Same for the Drupal shops use case you mention. Paying someone to keep a project up to standards does not necessarily mean that they will actually do it. Besides, what's wrong with having a neutral way to inspect an overview indicator of their job anyways? Whether project maintainers do the actual tasks that are expected by our defined standards (and the respective logic behind the automatic tag assignment) or not, then that will be reflected to the maintenance and development status tags. I do not see anything wrong with that. These indicator will not be there to hurt them - they will be there to let people coming to the project page have an overview that'll be closer to reality. This is what decision makers rely on.
Comment #19
mgiffordWe want to support the behaviors that help the code and community, and put up additional barriers against those behaviors that don't.
I've got no problem with investing in a neutral way to inspect a project and provide an overview indicator that is easily understandable. I'm just thinking about other options.
Ultimately, we need to be able to work experimentally on these issues.
We could apply these changes with an A/B type mentality so we can look at the results. Simply looking at even/odd projects we should be able to get a sense in a month or less what the impact of putting up these ratings might be for an individual project.
We need to understand the impacts on the community and iterate quickly to be able to improve on the feedback we're given.
Comment #20
mgiffordI put up a patch #2186377-4: Highlight projects that follow Best Practices which has some of the metadata that you'd need to do this.
You'd want to build a function that probably uses drupalorg_project_cron() to do this nightly or something.
Comment #21
marktheshark CreditAttribution: marktheshark commentedAlong with an over-time degrading maintenance status, it would also be useful imho to have an indication whether the module / theme currently delivers on what is "advertised", e.g. whether the core functionality works or if it is partially or totally broken.
If the module comes with tests, a github-like indication on whether the latest official or dev branches are passing or failing would also be nice to have.
Comment #22
mgifford@marktheshark - can you think of any way to automate that for the 20k some odd modules in contrib?
Is it just a matter of adding another category in the status more serious than critical?
Maybe it's just a matter of counting the number of criticals?
What if it works well in D6, but not in D7?
Comment #23
klonosI initially thought about this too. For example, while calculating the part of the factor that would define the final health indicator of a project based on the age of open/unanswered issues in the queue, it would be unfair to include issues assigned to unsupported branches. That's why in cases like these we should either take under account only the currently supported branches (6.x and 7.x as we speak). Besides, issues tent to be bumped to next versions anyways, so issues against older versions will eventually either dwindle in numbers or be closed I guess.
Anyways, my point is that we should focus into getting a simple indicator in place and worry about the details later. So it should be based on really basic factors that make sense now and then we can think and improve the algorithm as we go. This can be done by adding/removing or tweaking existing factors with ideas that come up about what should be included as a factor and how much it should count.
Comment #24
mgiffordAgreed about the simple indicator. That should be easy to pull out of what I've done for the Health Indicator. A simple start.
Comment #25
marktheshark CreditAttribution: marktheshark commentedYet another module with major issues never responded to:
Views Data Export
The status of this module should not be marked as actively maintained.
Comment #26
mgiffordThere was a dev release from 2013-Oct-19. How active should "Actively maintained" be?
Comment #27
marktheshark CreditAttribution: marktheshark commentedThe latest dev release date should not be the sole criterion for deriving the maintenance status, imho.
Comment #28
mgiffordOk, but this needs to have some numbers.. As I've shown here, there is a lot that can be done #2186377: Highlight projects that follow Best Practices
But someone needs to define Actively maintained.
It would be great if we could find an automated way to get to comment #3. But not sure that is possible.
We can define Actively maintained as:
I really am not sure what numbers to run for, but we really don't want to start off failing the majority of all modules. We have to start off at a level where most are passing. If the norm becomes understood as unattainable then it won't be a motivator.
So based on the current list https://drupal.org/node/1066982
I can see dropping a module to Minimally maintained.
I can see it becoming Unsupported if it doesn't have a D7 release (at this point) or hasn't had activity of any sort in a year.
Comment #29
MixologicMoving from infra to d.o. queue.
Comment #30
cilefen CreditAttribution: cilefen commentedYes, please. There are less-experienced people who see a unmaintained module's page and assume that it works perfectly.
Comment #31
davidhernandezThis is something we need to address. I've been working on getting some project application policy changes, and those changes will only increase the number of projects and maintainers we have.
One of the biggest concerns has been, and will always be, security. The number of contrib SAs seems to be increasing, and we may reach a point where there is too much for the security team to caretake. We need to protect our user base, many of whom are not savvy enough to recognize a project that is not well maintained. And we also need to be mindful of the many reasons why a module reaches a certain state. Some are perfectly fine in the condition they are, even if they haven't had a recent release, and some are not of the highest quality even with a recent release.
If we want a more robust contrib ecosystem, especially one that is designed to reward and promote quality maintainership, we'll need to start implementing some of these ideas.
A rating system has been discussed for the d.o roadmap, as well as auto-scanning projects for security and health. The scanning is a good start, and if the project application changes are approved we can put that infrastructure in place. Some of the things discussed with the scan involved displaying stats or levels of health on the project page. I'm not sure how this will actually look though.
If the project statuses are automatically changed because of inactivity, is there a point to "minimally maintained"? It seems like we should go to "unsupported" or maybe we need to come up with a new set of statuses that better reflects these changing states. I see a difference between a module that has problems and isn't being fixed, versus one that isn't broken but may have outlived its usefulness.
Comment #32
joshuamiComment #33
drummComment #34
drummThe idea of counting critical issues has come up a couple times. As a maintainer, I’ve had plenty of issues moved back to a higher priority after I’ve done my best to give it a fair priority. I usually don’t bother updating the status anymore, there’s more useful things to do than nudge priorities. I wouldn’t want to build a system to attempt to restrict priority changes; there are cases where a maintainer does miss something and get it wrong.
Comment #35
drummPulling in abbreviated definitions from https://www.drupal.org/node/1066982, and marking a few like “Seeking co-maintainer(s)” off-limits to algorithms.
Comment #36
drummAdding things we can measure to the issue summary - taking factors from #28 and the original issue summary.
I’m leaving off “they have low or 0 usage stats” since something could be very well maintained, but that doesn’t mean people use it.
Comment #37
drummAdding some stats to issues. Very broadly - if we say “not active” is not having a commit or issue comment in the last 24 weeks, about 4∕5 of projects will be moved out of their status.
Comment #38
drummCorrecting HTML
Comment #39
drummI’m not sure where project pages were when this issue was filed, but we do show commits and issue queue activity on project pages. We could de-emphasize these terms, and display activity more clearly, grouped together and more readable.
Comment #40
davidhernandezThat's 4/5 of all projects, right? How does that look if only looking at, say, the top 20% of projects?
Comment #41
drummAdding numbers for projects used on 500 or more sites, which is close to the 20% most-used projects.
Comment #42
mlhess CreditAttribution: mlhess as a volunteer commentedFrom the security team's prospective, this is an awesome idea. However, I would take it a step further.
A bot will create an issue in the public queue. A maintainer would have to mark the issue closed (fixed) If a non maintainer did that, it would just reopen it.
If that happens great. If not 3 weeks later, the bot would move the supported status of the module and maybe tweet or something about it to get attention. This would have prevented what happened with the references module.
Comment #43
mlhess CreditAttribution: mlhess as a volunteer commentedComment #44
ressa CreditAttribution: ressa commentedComment #45
drummmlhess - I think that would be a separate issue.
davidhernandez - with the limit to projects used on over 500 sites, the 4/5 number becomes 1/5 of projects marked “Actively maintained” have not had an issue comment from anyone in the last 24 weeks.
Comment #46
drummUnassigning myself since I’m not actively working on this. I’d like to spend some time shoring up the visibility of quantitative activity measures, and reducing use of these terms in general.
Comment #47
catchMoving this over to the project ownership queue, since it's related to #3231027: One-off process to encourage adoption of Drupal 8 projects without a Drupal 9 compatible release.
We either need an issue summary update on this issue, based on that discussion, or since this issue originally dates from 2011, it might be worth starting a brand new issue with a summary and closing this one as duplicate.
Comment #48
gisleThis topic need to be re-focused.
My impression is that projects that re not being updated get their "Actively maintained" and "Under active development" stautuses hidden when certain criteria are, but that nothing is actually degraded.
If that's correct, I think it is an excellent solution. The problem at the core here is that some project's status does not reflect reality. By hiding a status that's probably misleading, that problem is solved. Mark this one as "Fixed".
However, as shown by the #3231027: One-off process to encourage adoption of Drupal 8 projects without a Drupal 9 compatible release, we have a different problem whenever a major core version approaches EOL: How to identify and encourage adaption of contributed project that does not have a release compatible with the next major core release.
We need to find a policy for handling this for all future major releases. I am not even sure that this need to have anything to do with the metadata for maintenance and development status, so to focus on that, we need to have a new issue.
So – after 11 years – we need to close this and open up a new issued focused on the problem of encouraging adoption of abandoned contributed projects.
Comment #49
apadernoComment #50
apaderno