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