so, my understanding is that this:

    define([
        "underscore", "jquery", "backbone", "brooklyn-utils", "view/viewutils",
        "view/activity-details", "text!tpl/apps/activities.html", 
        "bootstrap", "formatJson", "jquery-datatables", "datatables-extensions", "moment"
    ], function (_, $, Backbone, Util, ViewUtils, ActivityDetailsView, ActivitiesHtml) {

serves several purposes:  (1) it ensures the dependencies are loaded; (2) it ensures the right order of loading them; and (3) it exports them with the appropriate name for use in the module.

things like `bootstrap` onwards don't have a corresponding parameter, which means the module must refer to them either using symbols defined in the referenced dependency or using symbols defined in an `exports:` line in `config`.

for things like `underscore` and `jquery`, so long as they are in the `define` list, we are guaranteed (1). and we already have (3) from the global `exports`, so moving them to the end means we don't have to redeclare the symbol as an argument to the `function`, which i thought was nice.

but your point is that (2) could bite us, if some module `define`d earlier in the list introduces a different version or symbol clash?

but we don't have any multiple versions floating around so it's a bit academic ... however i reckon you convince me -- plus it is nice if the modules declare their dependencies (could help with testing / modularity too?) -- so i will start making them consistent and complete in the future.

if my mental model is not quite right however please correct me!