I've taken a look at the permissions system, and in my opion, its far from perfect.
It would be nice to seperate permission into namespaces, like the permissions plugin for bukkit does - except yaml, which sucks.
Let's give an example. This is how it looks currently:
load = admin
unload = admin
reload = admin
save = admin
settime = admin
regen = admin
adminonlymsg = admin
I'm a big fan of XML by the way, so my preferred permissions structure would be something like
<groups>
<group>
<name>Admin</name>
<permissions>
<permission>mineserver.server.load</permission>
<permission>mineserver.server.unload</permission>
<permission>mineserver.server.reload</permission>
<permission>mineserver.world.save</permission>
<permission>mineserver.world.settime</permission>
<permission>mineserver.world.regen</permission>
<permission>mineserver.chat.adminonlymsg</permission>
</permissions>
</group>
</groups>
which can be easily compressed to
<groups>
<group>
<name>Admin</name>
<permissions>
<permission>mineserver.server.*/permission>
<permission>mineserver.world.*</permission>
<permission>mineserver.chat.*</permission>
</permissions>
</group>
</groups>
Note: a star gives permission to all permissions in that namespace.
which I can further compress to
<groups>
<group>
<name>Admin</name>
<permissions>
<permission>mineserver.*</permission>
</permissions>
</group>
</groups>
this gives admins full control over the things in the namespace mineserver. But what if a plugin uses a different root namespace?
<groups>
<group>
<name>Admin</name>
<permissions>
<permission>*</permission>
</permissions>
</group>
</groups>
I hope you get my thoughts. I've created the XSD Schema definition for the above samples. It would simplify the permissions system a lot.
<?xml version="1.0" encoding="utf-16"?>
<xsd:schema attributeFormDefault="unqualified" elementFormDefault="qualified" version="1.0" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="groups">
<xsd:complexType>
<xsd:sequence>
<xsd:element maxOccurs="unbounded" name="group">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="name" type="xsd:string" />
<xsd:element name="permissions">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="permission" type="xsd:string" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>