Module.json

What are thoughts on migrating module.xml to json. XML is very resource heavy for this purpose. I understand that was the option back in the day but we have new structures availible now that seem like they fit better in to the usecase and don’t take the same resources to parse out. Not to mention the XML representation in the database is hideous.

Not asking this to be an overnight change but maybe offer dual support in 12 or 13 and transition over a few versions.

Example: (hope this renders right)

{
  "module": {
    "rawname": "userman",
    "name": "User Management",
    "version": "2.11.2",
    "publisher": "Schmooze Com Inc",
    "license": "AGPLv3+",
    "licenselink": "http://www.gnu.org/licenses/agpl-3.0.txt",
    "repo": "standard",
    "description": "
                This Module manages all FreePBX users excluding Administrators (at this time).
                It allows an Administrator to create a User Account that can be used by other applications for login or API purposes.
                Modules like iSymphony or Rest API or the Upcoming User Control Panel will use this module to manage their users.
        ",
    "changelog": "
                *2.11.2* Cleanup and languaging and some javascript helpers
                *2.11.0beta10* Update license
                *2.11.0beta9* Fixe bug when assigning a user to an extension
                *2.11.0beta8* Fixes FREEPBX-7253 dont try to use the array if its false
                *2.11.0beta7* Fixes FREEPBX-7245 forgetting user data on inital add
                *2.11.0beta6* Skinning Changes
                *2.11.0beta5* Spelling Mistakes
                *2.11.0beta4* Cleanup and Extensive Documentation
                *2.11.0beta3* Move Processes into hook function for 2.11
                *2.11.0beta2* Fixed the order of updating users
                *2.11.0beta1* Change to beta
                *2.11.0alpha2* Add more fields
                *2.11.0alpha1* Initial Module
        ",
    "category": "Admin",
    "menuitems": {
      "userman": {
        "-beta": "yes",
        "#text": "User Management"
      }
    },
    "depends": {
      "phpversion": "5.3.3",
      "version": "2.11"
    },
    "supported": { "version": "2.11" }
  }
}

Something to consider is that the server side has to deal with this as well and currently the server side is all XML based. Of course your supported version is inaccurate as you wouldn’t want a json only file to show up in 2.11. Adding on to that you will have to try to figure out how or where to reassign the attributes (beta=“yes”, hook attributes) that are normally in the XML as there are no attributes in json.

It’s definitely something we have thought about, though I am not really sure you’d see a performance gain.