AmendableCode? will be a webservice for group governance with the following distinct features:
The rest of this page is notes to myself and may not be very comprehensible to others.
RESTful, i hope...
/api/version/ /user/ n news by-id/ /* influence payout stake effectiveStake strength news constituency/ nominees position /* by-strength/ /* dup -- only lists up to 50% (the # needed to calc n) pending/ (post here to apply to join) */ search /forum news /proposal id/ */ search /slot */ /user/ /* token proposal /official /tribune news /senior /website /pending-resolution * /published /middle /website /mediation /published /junior /website /published /exec news /ceo /website /portfolio */ reassign/ */ (confirmed cabinet members) nominate /eeo dup /cabinet by-user/ */ website portfolio/ */ dup by-portfolio */ user/ dup description [plugin] /chair news /emergency /lock [plugin] /judge news /by-user term /by-court /elect news /primary /election term /beginDate /nextElectionDate election/ current/ vote/ ballot/ * result/ */ candidate/ nominator/ round/ winner/ candidate/ */ support/ score/ user/ website vote */ (proposals) ceo/ */ (vote; -1,0,1) chair announce/ chair ceo /external dup (except eeo, not ceo) /delegate announce news user/ chair /constituency announce news constituency/ */ news join election/ candidates */ support score ballot/ */ delegate/ announce website user beginDate history strength member/ */ nominated/ */ (user ids of nominators) history superconstituency link subconstituency/ */ link history forum/ search user/ */ constituency /xcouncil announce news council/ */ location vote/ pending/ */ supporting-user/ */ history/ user/ */ council apply resign /court news /by-id high/ judge/ /* pendingResolution/ */ valid/ (list of judges) invalid/ (list of judges) case/ tribune-initiated/ */ dup strike/ */ forceClarify/ value supporter/ */ (list of judges) comment dissenter/ */ (list of judges) comment text beginDate endDate success/ value yes/ */ (list of judges) comment no/ */ (list of judges) comment fix/ (only if success value == false) (a patch to the policies) */ (list of judges) findRight/ tribune-restraining/ pending/ (b/c we have to see if the other tribunes will sign onto it) */ office-initiated/ appeal/ pending/ */ dup acceptCase/ */ (list of judges) ordinary/ (only if there are no other courts) foundRight/ */ text comment supporter/ */ id comment dissenter/ */ id comment pending/ dup /* judge/ /* case/ dup case/ by-id/ */ type news round/ (orig, appeal, etc) */ announce/ */ status plaintiff/ defendent/ complaint/ */ statement type uri violation argument/ due plaintiff/ text date history/ defendent/ text date history/ decision/ decision date detail/ [plugin] (vote count of multiple judges, etc) remedy comment dissent/ judge/ comment question/ rule */ status due plaintiff/ opinion (true or false or freeform) text date history/ defendent/ decision dup (no remedy) fact */ dup by-start-date/ by-end-date/ search /announce /auto [plugin] */ /chair */ /tribune */ /finance term comment income/ total comment class/ */ transactions/ by-date/ */ by-class/ dup by-id/ dup by-class/ dup by-id/ party authorizer/ */ (mb multiple ppl had to sign off) amount class date comment [plugin] expenses/ dup netIncome cashFlow/ netCashFlow class/ */ amount comment comment balanceSheet/ asset/ comment class/ */ amount asset/ */ value comment uri (link to asset management URI) liability/ dup equity/ (omitted for groups w/o equity) retainedEarnings ? [plugin] /news /document /act /policy /by-id /by-class bylaws/ foundRight/ */ majorContract/ */ (whatever policy classes have been created) misc/ ordinary/ (whatever policy classes have been created) misc/ */ /otherDocument /asset /software /self repo/ hg [plugin] [plugin] /history/date/ (same API, but looks in archive, if available)
[plugin]
[plugin]
If you contact us or members of our team, your message may be posted to the public mailing list; also, you waive any intellectual property rights to any content or ideas in your email.
plugins: py-notify or trellis? PEAK's plugin? plugins dependency management, packaging? plugins should themselves be able to have plugins should mb do it "the django way" as much as possible use of WSGI? can separate web services be plugins? use Parliament? glossary: "extension points" components w/ 1st-class interfaces (zope.interface -- which can be used w/o C) plugin registry: PEAK's hook? grok's martian (adds additional level of indirection) w/ a simple dictionary (or w/ PEAK's hook)? ZCA (note: would have to use that patch that makes it C-independent)?
answers so far: py-notify or trellis? py-notify PEAK's Plugin? yes plugins dependency management, packaging? no plugins should themselves be able to have plugins -- enabled by PEAK's Plugin should mb do it "the django way" as much as possible: todo: learn Dj use of WSGI between components? yes, sometimes can separate web services be plugins? no -- security boundary to preserve secret ballot use Parliament? no, tight integration with Django and GAE datastore glossary: "extension points" components w/ 1st-class interfaces (zope.interface): no registry: martian
acCore:
submitPatch acceptPatch rejectPatch listPendingPatches getPendingPatch executeShellCommand updateDirectory getVersionControlSystemInfo getVersionControlInfo getAmendableCodeVersion (event listeners)
ac core2:
runTests replaceProductionVersion replaceBackupVersion executeShellCommand registerEventListener deregisterEventListener
add to parliament:
addMember(id, role, attrib) removeMember listMembers( filter = None) castVote(member, uri, value) # public/private in URI scheme # "vote" is very general isVoteURIPublic(uri) getVote(member, uri) registerEventListener deregisterEventListener
use py-notify