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 maintainers
  • Seeking new maintainer algorithms 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”
  • Obsolete algorithms 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

klonos’s picture

Component: Other » Metrics

...better component?

klonos’s picture

Title: Mark all projects with certain criteria (or a combination of criteria thresholds) as abandoned/obsolete. » Automatically degrade Maintenance & Development status of projects over time.

...and a more "catchy" title ;)

marktheshark’s picture

Totally with you on this.

I'm also in favor of (auto-)flagging a module as:

  • Currently broken
  • Partially broken
  • Functional with minor defects
  • Fully functional

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.

klonos’s picture

...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.

marktheshark’s picture

Well, 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.

klonos’s picture

True, 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 ;)

...abuse of priority should have repercussions on the user found in violation.

That on the other hand is completely different can of worms though.

marktheshark’s picture

True, 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?

marktheshark’s picture

I'm afraid this thread doesn't have very high visibility.

Should we perhaps start a Drupal Groups discussion?

klonos’s picture

Issues can be followed (as in clicking the "follow" button) - g.d.o discussions cannot.

marktheshark’s picture

It 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...

klonos’s picture

Category: task » feature

I 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.

marktheshark’s picture

It 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.

mgifford’s picture

Issue summary: View changes
Issue tags: +maintain
Related issues: +#2186377: Highlight projects that follow Best Practices

This 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.

mgifford’s picture

As 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.

klonos’s picture

I'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.

What's being proposed here is the stick. I think that's good.

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.

mgifford’s picture

It 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.

klonos’s picture

...very, very, very few maintainers are going to try to game the status page to make it look better maintained than it is.

It'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.

klonos’s picture

It 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.

That 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.

mgifford’s picture

We 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.

mgifford’s picture

I 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.

marktheshark’s picture

Along 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.

mgifford’s picture

@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?

klonos’s picture

What if it works well in D6, but not in D7?

I 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.

mgifford’s picture

Agreed about the simple indicator. That should be easy to pull out of what I've done for the Health Indicator. A simple start.

marktheshark’s picture

Yet another module with major issues never responded to:

Views Data Export

The status of this module should not be marked as actively maintained.

mgifford’s picture

There was a dev release from 2013-Oct-19. How active should "Actively maintained" be?

marktheshark’s picture

The latest dev release date should not be the sole criterion for deriving the maintenance status, imho.

mgifford’s picture

Ok, 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:

  • Activity in git in the last 3 months
  • A release (dev or stable) every 6 months.
  • Activity in the issue queue every month.

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.

Mixologic’s picture

Project: Drupal.org infrastructure » Drupal.org customizations
Version: » 7.x-3.x-dev
Component: Metrics » User interface

Moving from infra to d.o. queue.

cilefen’s picture

Yes, please. There are less-experienced people who see a unmaintained module's page and assume that it works perfectly.

davidhernandez’s picture

This 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.

joshuami’s picture

drumm’s picture

Assigned: Unassigned » drumm
drumm’s picture

The 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.

drumm’s picture

Issue summary: View changes

Pulling in abbreviated definitions from https://www.drupal.org/node/1066982, and marking a few like “Seeking co-maintainer(s)” off-limits to algorithms.

drumm’s picture

Issue summary: View changes

Adding 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.

drumm’s picture

Issue summary: View changes

Adding 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.

drumm’s picture

Issue summary: View changes

Correcting HTML

drumm’s picture

Issue summary: View changes

I’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.

davidhernandez’s picture

That's 4/5 of all projects, right? How does that look if only looking at, say, the top 20% of projects?

drumm’s picture

Issue summary: View changes

Adding numbers for projects used on 500 or more sites, which is close to the 20% most-used projects.

mlhess’s picture

From 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.

mlhess’s picture

Issue tags: -maintain, -find and select projects on drupal.org
ressa’s picture

Issue summary: View changes
drumm’s picture

mlhess - 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.

drumm’s picture

Assigned: drumm » Unassigned

Unassigning 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.

catch’s picture

Title: Automatically degrade Maintenance & Development status of projects over time. » [policy] Automatically degrade Maintenance & Development status of projects over time.
Project: Drupal.org customizations » Drupal.org project ownership
Version: 7.x-3.x-dev »
Component: User interface » Other
Category: Feature request » Plan
Issue tags: +Needs issue summary update

Moving 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.

gisle’s picture

This 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.

apaderno’s picture

Title: [policy] Automatically degrade Maintenance & Development status of projects over time. » Automatically degrade Maintenance & Development status of projects over time.
Project: Drupal.org project ownership » Drupal.org site moderators
Component: Other » Policy
Issue tags: +Needs issue rescope
apaderno’s picture

Title: Automatically degrade Maintenance & Development status of projects over time. » Automatically degrade maintenance and development status of projects over time