= MacPorts Port Statistics Ideas = This page is a collection of ideas that could be implemented to improve or make use of the MacPorts statistics server. Feel free to edit this page and add your own idea! [[PageOutline]] == Statistics Test Server == [[cal|Clemens]] has set up a test installation of the statistics server component at [[http://stats.macports.neverpanic.de|stats.macports.neverpanic.de]]. The server is written in Ruby on Rails, its sources currently live in browser:branches/gsoc11-statistics/stats-server. The statistics client requires MacPorts 2.3 (for `curl post`) and is currently not in the main ports tree for this reason. It's source is at browser:users/cal/ports/macports/mpstats and it can be installed in a single command using `port install https://neverpanic.de/documents/mpstats.tar` (this URL will be updated with the latest version on each update). == Ideas == === Move to stats.macports.org and get an SSL certificate === The stats server should be moved to a more official domain, such as stats.macports.org. It also should support SSL, especially for submitting data. A free email-validated StartCom SSL certificate is probably enough; deploying the main macports.org wildcard certificate on Clemens' server is something he doesn't want. === Inform users and explain opt-in === When a user upgrade to 2.3.0 (or installs MacPorts from scratch), it would be nice to show a short notice saying something like {{{ You are welcome to participate in anonymous collection of statistics of installed ports by running `sudo port install mpstats'. See http:// for more details. }}} so that every user would see the notice once for each major upgrade. (No notice if mpstats is already activated.) === Create a versioned API === Add a field stating the version of the data format. In case that the format changes in future, it would be nice to still be able to handle submissions from users running the older version of MacPorts. === Track the requested state === Add a field '"requested": true' for requested ports (even if the application isn't yet able to display any useful statistics related to that, it will be easier to change the app in the future than to convince everyone to apply the fix). === Submit variants as list rather than as string === Variants are currently submitted as a plain string: {{{ "variants": "biosig + python27 +"; }}} It would be a lot cleaner to use a list instead: {{{ "variants": ["biosig", "python27"] }}} === Track CommandLineTools version instead of GCC version === Remove "gcc_version" from submitted data, since GCC isn't a thing on recent versions of OS X anymore. === Port the server's dependencies to MacPorts === It would be nice if MacPorts would allow installing dependencies to allow running the app locally without much hassle. The app needs rails 3.2. === Simple port hierarchy / group (sub)ports === Ports like `py-name`, `py27-name`, `py33-name`, ... should be grouped in some way. === Direct and meaningful links to ports === Port statistics is currently accessed via `http:///categories//ports/`. It should be `http:///port/` or `http:///show/port/` for example (or something equivalent excluding category and not displaying any numbers). === Direct links to maintainer's ports === One can search for maintainer's ports, but only via `http:///ports/search/maintainers/` to some extent. The search is more problematic for non-committers with `:` in the name and the search is not unique (searching for `cal` returns `mcalhoun`'s ports etc.). It would make sense to search through `nomaintainer` and `openmaintainer` ports. Maybe something like `http:///show/maintainer/macports.org/` and `http:///show/maintainer/gmail.com/name.surname` for direct access or simply `http:///show/maintainer/id/` would allow clicking the maintainer in the same way as one can follow a link for categories, variants, ... === Sort ports alphabetically === Complete list of ports shows {{{ ← Previous 1 2 3 4 5 6 7 8 9 … 366 367 Next → }}} It would be helpful to have alphabetic index available. === Highlight default variants === Highlight default variants on the port statistics page. === Link to port's homepage, `Portfile`, tickets === Create a link to port's homepage and a link to SVN folder where the `Portfile` is stored. Maybe also a link to `(svn co) https://svn.macports.org/repository/macports/trunk/dports//` and a link to open tickets for the port (the slight problem is that the tickets are a bit fuzzy as well – try searching for `spe` for example). === Display number of users of a port in Query Results === When listing ports (either all ports, those from specific category, by specific maintainer, ...), it would be nice to see the number of users (and the number of users who requested installation of that port) already on the list of ports, before asking for specifics. It's a bit annoying clicking on a port just to discover that there are no users anyway. === Make Query Results more compact === It's actually nice to allow both views (the current one also has benefits), but usually I would prefer to see a table with one line per port. Name, (maybe version), description, category, number of (requested) installations. I'm not interested in maintainers and variants when searching the port. It would be way more useful to be able to see maybe 200 rather than 50 ports per page and to be able to sort at least by name and number of (requested) installations. Maybe some filters to browse ports would be even more useful (check the set of categories, select the maintainer, provide part of the name etc.), but more difficult to implement and not really required at this point. === Show OS X version statistics for every port === As a port maintainer, one key thing I'd like to know is the breakdown of OS versions that my users are running. (Xcode version and architecture might also be relevant.) === Bar graphs instead of pies === > I'm not a big fan of pie (or donut) graphs. It is much easy to compare magnitudes of a bar as opposed to sections of a donut. This probably needs a bit of experimenting. === Link mpstats with trac === One could think about linking information available in mpstats' db to the current state of trac. For example one could identify tickets for the most requested or most installed ports and similar things.