[development] using #downloads for quality of modules

Nedjo Rogers nedjo at islandnet.com
Wed Jan 25 16:13:57 UTC 2006

> Can I get a url to the discussion.

Here's the patch that went in:


When a site chooses to enable the drupal.module and post data on its 
installed modules, cron will call XML-RPC to upload information on the 
site's name, url, etc. and all enabled modules.  Optionally, sites can also 
send (a) total number of users, and (b) total number of nodes.  These extra 
data are designed to provide some quantifable parameters of how large a site 
is, which we could use to add weight to that site's statistics.

Data posted from sites are stored in the core tables 'client' (the basic 
information about a client site) and 'client_system' (the data on enabled 
modules, themes, theme engines--the same as what are found in the 
system.module).  You can see the database definitions in database.mysql and 
database.pgsql.  Clients are identified by a client id (cid), created the 
first time they connect and reused when they reconnect.  In the table 

'cid' -> this is the client id
'name' -> this the name of an enabled system component, e.g., 'page'
'type' -> this is the type of the enabled system component, e.g., 'module'

To convert this into usable statistics we can use for browsing projects on 
drupal.org, we'll need to do at least two things:

1. Relate the system component to the project.

Taking e-commerce as an example, there are many different modules, each of 
which will appear separately in the client_system table.  We can use the 
data in the cvs module's tables to find out what project each component maps 

2. Use a hook implemented by the Project module to implement a new browsing 

Project module uses a hook, _project_sort_methods(), to provide the 
information needed to implement project browsing options.  See function 
project_project_sort_methods() in project.module.  We'll need to implement a 
new sort method, e.g., 'popularity'.  This could either be added to function 
project_project_sort_methods() or put in a different module, e.g., cvs.

Thanks for stepping forward!  I'll be happy to work with you, Gordon, or any 
others on implementing this.


More information about the development mailing list