projects-amendableCode-acnotes

Difference between revision 3 and current revision

No diff available.

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.

API

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)


Types of software-executable acts

officials

documents (including policies)

classes

cases

portfolios

configuration

users

emergency

assets

software

other assets

[plugin]

other

[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