From b8f4b7b66400c47bb8e70a888adb8fa5bf61cefe Mon Sep 17 00:00:00 2001 From: Timothy Carstens Date: Sun, 28 Nov 2021 00:11:04 -0800 Subject: [PATCH] Refined content --- docs/build/doctrees/environment.pickle | Bin 97536 -> 91976 bytes docs/build/doctrees/principles.doctree | Bin 15349 -> 26726 bytes docs/build/doctrees/project_structure.doctree | Bin 79285 -> 79295 bytes docs/build/html/_sources/principles.rst.txt | 196 ++++++-------- .../html/_sources/project_structure.rst.txt | 9 +- docs/build/html/index.html | 23 +- docs/build/html/principles.html | 254 +++++++++++------- docs/build/html/project_structure.html | 8 +- docs/build/html/searchindex.js | 2 +- docs/source/principles.rst | 196 ++++++-------- 10 files changed, 334 insertions(+), 354 deletions(-) diff --git a/docs/build/doctrees/environment.pickle b/docs/build/doctrees/environment.pickle index 79b972c9c2b3c9b1fd79ac7193ebccf2c0229180..c8d435ff1c3592146d7d371e6675f5bade20e2f5 100644 GIT binary patch literal 91976 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%0AZMjY$bV=mm^y6y2N$wi*bvR)VPj%`e#tq9lUu8C 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 CPuo5MDfL zx0^j5d*rY5t>JjWh(fO^55*g8h-zCq>h_wc@ZeZ>fUN*w+kL8Vk{ywQBR$j$%&6@( zSGpvr?U*a@0u#dvYez{*rjl0JT(Se3OLVf?wgXyeN{0tVN-`iY$j4z!fFXcanefvX zP)!1BF4*+T7xY6KJ+s$@O?-1XqBl-Q=CJ`ule8V{VgtA3<>i^)Dt>3eo$>s|*|xbf z3uG|ck9SiEs*y@G@k<4m^q_#U1;-l~U2!$sGT|?@3eC_F*~}i%Oz3&|RS(+?7g#e^ z*zKT+(a@O35NL;1|LB%@F9g+XreiCm-wd!{iP?W5o?>h;&tdxP*9=UTeAI@Jx8g@d zAY=X~2Hy5y6&o?GG%b74>fnFKbaThU0(CqdbPbHBQxS%5fRek|-~7*J$7>;4G7s*> zRToAIdWjD!^ccmTCQ6@-dLTo;Rl~d`msX zcn2DSDnk5#3Zg%Lr;ik}o5Zn}6kmjb)@*FpXW(T<`GzG&= zp?g(s3SG=IQ`j|86mQFln)!KK%SOzmj)L#`5ehs4$2&B8gyS%@A?@zG*Gb0-gPvVD zn4(8>HI9l_S)rY|`jJEYkdoH!VqM7@?3#$M*zzK_>>Y1y;XxKi5H=t+jvPsjKZPE9 qtbZqkApDvQ#tVdu3kTj{8Xa?ox2A`gxbgEG2-rz%qpJjLmioU6*lV}| literal 15349 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 xp({oH=RmP%$JeQg#^qA{dpP^t53cGy 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 Lxu(tOE^_}L1%32M delta 11796 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 diff --git a/docs/build/html/_sources/principles.rst.txt b/docs/build/html/_sources/principles.rst.txt index 1af549d..7c23ee6 100644 --- a/docs/build/html/_sources/principles.rst.txt +++ b/docs/build/html/_sources/principles.rst.txt @@ -2,156 +2,126 @@ Principles ========== -Personas --------- - -Curious person -~~~~~~~~~~~~~~ - -Examples include: - -* Students -* Professionals in industry - - -Researcher -~~~~~~~~~~ - -Examples include: - -* Academic researchers -* Tech leads in industry - - -User -~~~~ - -TODO - - -Contributor -~~~~~~~~~~~ - -TODO - - -Platform maintainer -~~~~~~~~~~~~~~~~~~~ - -Examples include: - -* Coq Platform maintainers -* Nix package maintainers - - -Upstream maintainer -~~~~~~~~~~~~~~~~~~~ - -Examples include: - -* Coq maintainers +Roles & personas +---------------- + +Many different roles & personas have an interest in project style. + +* Curious person + * Student + * Academic researcher + * Professional in industry +* Researcher + * Academic researcher +* User + * Student + * Academic researcher + * Professional in industry +* Contributor + * Student + * Academic researcher + * Professional in industry +* Platform maintainer + * `Coq Platform `_ maintainers + * Nix package maintainers + * Academic researcher +* Upstream maintainer + * Coq maintainers + * Academic researcher + * Professional in industry Use cases --------- -Browsing the code (in a browser) -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -*Curious person, researcher, user, contributor* - -TODO - - - -Browsing the code (in a proof assistant) -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -*Curious person, researcher, user, contributor* - -TODO - - -Isolating & resolving build issues -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -*User, contributor, platform maintainer* - -TODO - - -Exploring undocumented features -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -*Researcher, user* - -TODO - - -Understanding the architecture -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -*Researcher, user, contributor* - -TODO - - -Shipping new features -~~~~~~~~~~~~~~~~~~~~~ - -*Contributor* - -TODO - - -Refactoring -~~~~~~~~~~~ - -*Contributor* - -TODO - +Project style impacts several frequent use cases. + +* Browsing the code (in a browser) + * Curious person + * Researcher + * User + * Contributor + * Platform maintainer + * Upstream maintainer +* Browsing the code (in a proof assistant) + * Curious person + * Researcher + * User + * Contributor + * Platform maintainer + * Upstream maintainer +* Isolating & resolving build issues + * User + * Contributor + * Platform maintainer + * Upstream maintainer +* Exploring undocumented features + * Researcher + * User + * Contributor +* Understanding the architecture + * Researcher + * User + * Contributor +* Shipping new features + * Contributor +* Refactoring + * Contributor + * Platform maintainer + * Upstream maintainer + + +Desired outcome +--------------- + +This style guide seeks to drive the following outcomes: -Objectives ----------- Mitigate bike-shedding ~~~~~~~~~~~~~~~~~~~~~~ -TODO +* Shipping new features +* Refactoring Style is enforcable by a linter ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -TODO +* Shipping new features +* Refactoring Find & replace work as expected ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -TODO +* Browsing the code (in a browser) +* Browsing the code (in a proof assistant) +* Isolating & resolving build issues +* Exploring undocumented features +* Understanding the architecture +* Shipping new features +* Refactoring Code is robust against changes to the Coq engine ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -TODO +* Isolating & resolving build issues Code is minimally impacted by changes in upstream components ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -TODO +* Isolating & resolving build issues Code changes have minimal impact on downstream users ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -TODO +* Isolating & resolving build issues Upstream maintainers are not punished for offering to help ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -TODO +* Isolating & resolving build issues diff --git a/docs/build/html/_sources/project_structure.rst.txt b/docs/build/html/_sources/project_structure.rst.txt index 37e0be1..01e988e 100644 --- a/docs/build/html/_sources/project_structure.rst.txt +++ b/docs/build/html/_sources/project_structure.rst.txt @@ -38,14 +38,13 @@ Dependencies Source control -------------- -Use :code:`git`. - +Use :command:`git`. *Rationale:* -* :code:`git` is ubiquitous in the Coq ecosystem. It is well-known by all of the personas. -* :code:`git` submodules are widely used in the Coq ecosystem. This is particularly true for bleeding-edge development. It is wise to be compatible with this practice. -* :code:`git` works well with :code:`opam`. +* :command:`git` is ubiquitous in the Coq ecosystem. It is well-known by all of the personas. +* :command:`git` submodules are widely used in the Coq ecosystem. This is particularly true for bleeding-edge development. It is wise to be compatible with this practice. +* :command:`git` works well with :code:`opam`. Continuous Integration diff --git a/docs/build/html/index.html b/docs/build/html/index.html index 7e00370..44b6197 100644 --- a/docs/build/html/index.html +++ b/docs/build/html/index.html @@ -40,26 +40,9 @@

Table of Contents
  • Principles
      -
    • Personas -
    • -
    • Use cases -
    • -
    • Objectives
        +
      • Roles & personas
      • +
      • Use cases
      • +
      • Desired outcome
        • Mitigate bike-shedding
        • Style is enforcable by a linter
        • Find & replace work as expected
        • diff --git a/docs/build/html/principles.html b/docs/build/html/principles.html index 3283088..5603057 100644 --- a/docs/build/html/principles.html +++ b/docs/build/html/principles.html @@ -34,115 +34,190 @@

          Principles

          -
          -

          Personas

          -
          -

          Curious person

          -

          Examples include:

          +
          +

          Roles & personas

          +

          Many different roles & personas have an interest in project style.

            -
          • Students

          • -
          • Professionals in industry

          • +
          • +
            Curious person
              +
            • Student

            • +
            • Academic researcher

            • +
            • Professional in industry

            -
          -
          -

          Researcher

          -

          Examples include:

          -
            -
          • Academic researchers

          • -
          • Tech leads in industry

          • + + + +
          • +
            Researcher
              +
            • Academic researcher

            -
          -
          -

          User

          -

          TODO

          -
          -
          -

          Contributor

          -

          TODO

          -
          -
          -

          Platform maintainer

          -

          Examples include:

          -
            -
          • Coq Platform maintainers

          • + + + +
          • +
            User
              +
            • Student

            • +
            • Academic researcher

            • +
            • Professional in industry

            • +
            +
            +
            +
          • +
          • +
            Contributor
              +
            • Student

            • +
            • Academic researcher

            • +
            • Professional in industry

            • +
            +
            +
            +
          • +
          • +
            Platform maintainer
              +
            • Coq Platform maintainers

            • Nix package maintainers

            • +
            • Academic researcher

            -
          -
          -

          Upstream maintainer

          -

          Examples include:

          -
            + + + +
          • +
            Upstream maintainer
            • Coq maintainers

            • +
            • Academic researcher

            • +
            • Professional in industry

            • +
            +
            +
            +
          -

          Use cases

          -
          -

          Browsing the code (in a browser)

          -

          Curious person, researcher, user, contributor

          -

          TODO

          -
          -
          -

          Browsing the code (in a proof assistant)

          -

          Curious person, researcher, user, contributor

          -

          TODO

          -
          -
          -

          Isolating & resolving build issues

          -

          User, contributor, platform maintainer

          -

          TODO

          -
          -
          -

          Exploring undocumented features

          -

          Researcher, user

          -

          TODO

          -
          -
          -

          Understanding the architecture

          -

          Researcher, user, contributor

          -

          TODO

          -
          -
          -

          Shipping new features

          -

          Contributor

          -

          TODO

          -
          -
          -

          Refactoring

          -

          Contributor

          -

          TODO

          -
          +

          Project style impacts several frequent use cases.

          +
            +
          • +
            Browsing the code (in a browser)
              +
            • Curious person

            • +
            • Researcher

            • +
            • User

            • +
            • Contributor

            • +
            • Platform maintainer

            • +
            • Upstream maintainer

            • +
            +
            +
            +
          • +
          • +
            Browsing the code (in a proof assistant)
              +
            • Curious person

            • +
            • Researcher

            • +
            • User

            • +
            • Contributor

            • +
            • Platform maintainer

            • +
            • Upstream maintainer

            • +
            +
            +
            +
          • +
          • +
            Isolating & resolving build issues
              +
            • User

            • +
            • Contributor

            • +
            • Platform maintainer

            • +
            • Upstream maintainer

            • +
            +
            +
            +
          • +
          • +
            Exploring undocumented features
              +
            • Researcher

            • +
            • User

            • +
            • Contributor

            • +
            +
            +
            +
          • +
          • +
            Understanding the architecture
              +
            • Researcher

            • +
            • User

            • +
            • Contributor

            • +
            +
            +
            +
          • +
          • +
            Shipping new features
              +
            • Contributor

            • +
            +
            +
            +
          • +
          • +
            Refactoring
              +
            • Contributor

            • +
            • Platform maintainer

            • +
            • Upstream maintainer

            • +
            +
            +
            +
          • +
          -
          -

          Objectives

          +
          +

          Desired outcome

          +

          This style guide seeks to drive the following outcomes:

          Mitigate bike-shedding

          -

          TODO

          +
            +
          • Shipping new features

          • +
          • Refactoring

          • +

          Style is enforcable by a linter

          -

          TODO

          +
            +
          • Shipping new features

          • +
          • Refactoring

          • +

          Find & replace work as expected

          -

          TODO

          +
            +
          • Browsing the code (in a browser)

          • +
          • Browsing the code (in a proof assistant)

          • +
          • Isolating & resolving build issues

          • +
          • Exploring undocumented features

          • +
          • Understanding the architecture

          • +
          • Shipping new features

          • +
          • Refactoring

          • +

          Code is robust against changes to the Coq engine

          -

          TODO

          +
            +
          • Isolating & resolving build issues

          • +

          Code is minimally impacted by changes in upstream components

          -

          TODO

          +
            +
          • Isolating & resolving build issues

          • +

          Code changes have minimal impact on downstream users

          -

          TODO

          +
            +
          • Isolating & resolving build issues

          • +

          Upstream maintainers are not punished for offering to help

          -

          TODO

          +
            +
          • Isolating & resolving build issues

          • +
          @@ -165,26 +240,9 @@

          vstyle

          Navigation

          diff --git a/docs/build/html/searchindex.js b/docs/build/html/searchindex.js index d652630..e00eee6 100644 --- a/docs/build/html/searchindex.js +++ b/docs/build/html/searchindex.js @@ -1 +1 @@ -Search.setIndex({docnames:["alectryon_examples","definitions","extraction_c","extraction_haskell","extraction_ocaml","formatting","index","ltac","naming_conventions","principles","project_structure","scope_management","types"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":3,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":2,"sphinx.domains.rst":2,"sphinx.domains.std":2,sphinx:56},filenames:["alectryon_examples.rst","definitions.rst","extraction_c.rst","extraction_haskell.rst","extraction_ocaml.rst","formatting.rst","index.rst","ltac.rst","naming_conventions.rst","principles.rst","project_structure.rst","scope_management.rst","types.rst"],objects:{},objnames:{},objtypes:{},terms:{"120":5,"byte":6,"case":[6,10],"class":6,"default":10,"export":6,"float":6,"function":10,"import":[6,10,12],"int":6,"new":[6,10],"switch":10,"true":10,"try":6,For:10,Not:10,The:10,There:10,These:10,Use:[6,10],_coqproject:6,abil:10,about:10,abov:10,absurd:6,academ:9,accur:10,achiev:[],addit:10,admit:6,advis:10,against:6,alectryon:[6,10],all:[0,10],allow:10,also:10,alwai:[],ani:[],announc:6,anoth:10,antisymmetr:12,appli:[0,6,10],appropri:10,architectur:6,archiv:10,argument:6,arrai:6,ascii:6,assert:6,assist:6,assumpt:6,asymmetr:12,attribut:6,auto:6,automat:6,awesom:10,basic:6,becaus:10,been:10,behav:10,being:10,below:10,bike:6,bleed:10,bool:6,both:10,box:6,brace:6,brows:6,browser:6,build:[6,10],bullet:6,bytevector:6,cannot:10,canon:6,cbv:6,certain:10,chang:6,charact:6,chat:[],citat:10,cite:10,clean:10,clear:6,clearli:10,club:10,code:[6,10],coercion:6,cofixpoint:6,coinduct:6,com:[],combin:[],command:10,common:6,commun:10,compat:10,compon:[6,10],concern:10,concis:10,configur:6,congruenc:6,consid:7,consol:10,constructor:6,contain:[6,10],context:6,continu:6,contradict:6,contribut:6,contributor:[6,10],control:6,convent:6,copyright:10,coq:7,coqdoc:10,coqext:10,coqid:10,coqlang:10,coqproject:[],corollari:6,criteria:[],curiou:6,custom:6,date:10,decid:12,decidableclass:6,decidableequival:12,decidablesetoid:12,defin:6,definit:[6,10],dep:6,depend:6,deriv:[],descript:10,destruct:6,develop:10,directori:10,discours:10,distribut:6,doc:6,docker:10,document:6,doe:10,downstream:[6,10],each:10,easi:6,eassumpt:6,eauto:[0,6],ecosystem:10,edg:10,edit:10,eenough:6,eintro:6,either:10,els:6,enabl:7,encourag:[],end:[6,10],enforc:6,engin:6,enough:6,ensur:10,enumer:10,epic:6,eqdec:12,equival:12,equivdec:6,erefin:6,etc:10,evar:6,even:10,everi:10,exact:[0,6],exampl:[6,9],exfalso:6,exist:6,expect:[6,10],explor:6,expos:[],express:6,ext:6,extend:10,extlib:6,extract:6,fact:6,featur:6,feedback:6,file:[6,10],fin:6,find:6,fixpoint:6,follow:10,foral:0,format:6,found:10,from:[10,12],gener:[6,10],get:10,git:10,github:[6,10],give:10,give_up:6,global:6,goal:6,guidanc:[6,10],guidelin:10,has:10,haskel:[6,10],have:[6,10],header:10,help:6,here:10,hierarchi:10,holder:10,how:10,http:[],identifi:10,ihi:0,imag:10,impact:6,includ:[9,10],inclus:10,indent:6,induct:[0,6],industri:9,infer:6,info:0,info_eauto:0,inform:10,inherit:6,instal:10,instanc:[6,10],instanti:6,instead:10,instruct:10,integr:6,intro:6,invers:0,invok:[],irreflex:12,isol:6,issu:[6,10],its:10,javascript:10,kind:10,known:10,languag:[],lastli:10,layout:[],le_:0,le_l:0,le_n:0,lead:9,left:6,lemma:[0,6,10],length:6,let:6,level:[],lia:6,librari:[10,12],licens:6,line:6,linter:6,list:[6,10],local:6,longer:10,ltac:6,mai:10,mail:10,main:10,maintain:[6,10],make:10,makefil:6,manag:[6,10],mangl:7,mani:[],map:10,match:6,metadata:10,method:10,might:10,minim:6,minimum:[],mitig:6,mode:10,modul:6,monad:6,more:10,most:10,mset:6,msetrbt:12,must:10,mydep:10,mydepext:10,myproject:6,name:[6,10],nat:[0,6],nath:0,natihi:0,necessari:10,need:10,nia:6,nix:9,non:[6,10],notat:6,note:12,notifi:10,now:6,numer:6,object:6,ocaml:[6,10],offer:6,one:10,onli:10,opam:6,opaqu:6,oper:10,option:[6,10],orchestr:10,org:10,other:10,own:10,packag:[9,10],page:0,part:12,particularli:10,path:10,pattern:6,per:12,perform:10,person:6,persona:[6,10],place:10,platform:[6,10],polymorph:6,popular:10,pos:6,pose:6,possibl:10,potenti:10,practic:10,predic:6,prefer:10,preorder:12,presenc:10,present:10,primit:6,principl:6,prior:[0,10],procedur:10,process:[],prod:6,product:6,profession:9,program:6,progress:6,project:6,proof:6,properti:6,proposit:6,provid:10,publish:[6,10],pull:[6,10],punish:6,qed:0,rational:10,readm:6,readthedoc:10,reason:10,recent:10,recogn:10,recommend:10,record:6,red:6,reddit:10,refactor:6,refer:10,referenc:10,refin:6,reflex:[6,12],relationclass:6,releas:[0,6],reli:[7,10],remark:6,rememb:6,remov:[0,10],renam:6,replac:6,repo:6,repositori:10,repres:10,represent:6,request:[6,10],requir:[10,12],research:6,resolv:6,respons:10,rest:10,result:10,revert:6,rewrit:6,right:6,robust:6,samp:[],sampl:10,satisfi:10,schema:10,scope:6,search:10,section:6,see:10,select:10,sensibl:10,sentenc:10,separ:10,set:[],setoid:12,setoidclass:6,setoiddec:6,shed:6,ship:6,should:[0,10],sigma:6,simpl:[0,6],slate:10,softwar:10,some:10,somewher:10,sourc:6,space:6,special:6,specif:6,specifi:10,sphinx:10,src:6,standard:10,step:[],store:10,strictord:12,string:6,structur:6,student:9,sub:[],subdirectori:10,subject:10,submit:10,submodul:10,subrel:12,subst:[0,6],sum:6,sumbool:6,sumor:6,suppos:10,sure:[],symmetr:12,symmetri:6,system:10,tab:6,tactic:6,tag:10,tech:9,test:[0,10],than:10,thei:10,theorem:6,theori:6,thereof:[],thi:[0,6,10,12],those:10,todo:[1,2,3,4,5,7,8,9,11,12],tool:10,top:[],transit:[6,12],transpar:6,trivial:6,twitter:10,type:6,typeclass:6,ubiquit:10,unbox:6,understand:6,undocu:6,uninstal:10,univers:6,updat:10,upstream:[6,10],url:10,usag:10,use:[5,10],used:10,useful:10,user:[6,10],using:10,valid:10,vari:10,variabl:[6,10],variant:[6,10],variou:10,vector:12,vectordef:6,venu:10,verifi:10,version:6,via:12,vscode:[],vscoq:10,want:[],websit:10,welcom:6,well:10,when:10,where:10,which:10,whose:10,wide:10,wise:10,within:10,without:10,work:[6,10],would:10,written:10,yet:10,yh1:0,you:[],your:10,zulip:10},titles:["Alectryon examples","Definitions","Extraction to C","Extraction to Haskell","Extraction to OCaml","Formatting","Style Guide for Coq","Ltac","Naming conventions","Principles","Project structure","Scope management","Types"],titleterms:{"byte":12,"case":9,"class":12,"export":11,"float":12,"import":11,"int":12,"new":9,"try":7,Use:9,_coqproject:10,absurd:7,admit:7,against:9,alectryon:0,announc:10,appli:7,architectur:9,argument:1,arrai:12,ascii:[5,12],assert:7,assist:9,assumpt:7,attribut:1,auto:7,automat:7,basic:0,bike:9,bool:12,box:12,brace:7,brows:9,browser:9,build:9,bullet:7,bytevector:12,canon:12,cbv:7,chang:[7,9],charact:5,clear:7,code:9,coercion:12,cofixpoint:1,coinduct:12,common:12,compon:9,configur:10,congruenc:7,constructor:7,contain:12,content:6,context:7,continu:10,contradict:7,contribut:10,contributor:9,control:10,convent:8,coq:[6,9,10,12],coqdoc:[],corollari:1,curiou:9,custom:7,decidableclass:12,defin:7,definit:1,dep:10,depend:10,destruct:7,distribut:10,doc:10,document:10,downstream:9,easi:7,eassumpt:7,eauto:7,eenough:7,eintro:7,els:1,end:1,enforc:9,engin:9,enough:7,epic:7,equivdec:12,erefin:7,evar:7,exact:7,exampl:[0,1,10],exfalso:7,exist:7,expect:9,explor:9,express:1,ext:10,extlib:12,extract:[2,3,4],fact:1,featur:9,file:8,fin:12,find:9,fixpoint:1,format:5,gener:7,give_up:7,global:11,goal:7,guid:6,guidanc:7,haskel:3,have:9,help:9,impact:9,indent:5,induct:12,infer:1,inherit:12,instanc:12,instanti:7,integr:10,intro:7,isol:9,issu:9,layout:[],left:7,lemma:1,length:5,let:1,lia:7,licens:10,line:5,linter:9,list:12,local:11,ltac:7,maintain:9,makefil:10,manag:[7,11],match:1,minim:9,mitig:9,modul:[8,11],monad:12,mset:12,myproject:10,name:[7,8],nat:12,nia:7,non:5,notat:[5,11],now:7,numer:12,object:[9,12],ocaml:4,offer:9,opam:10,opaqu:1,option:12,pattern:7,person:9,persona:9,platform:9,polymorph:12,pos:12,pose:7,predic:8,primit:12,principl:9,prod:12,product:12,program:1,project:[8,10],proof:[7,9],properti:1,proposit:1,punish:9,readm:10,record:12,red:7,refactor:9,refin:7,reflex:7,relationclass:12,releas:10,remark:1,rememb:7,renam:7,replac:9,repo:10,represent:12,research:9,resolv:9,revert:7,rewrit:7,right:7,robust:9,scope:11,section:11,setoidclass:12,setoiddec:12,shed:9,ship:9,sigma:12,simpl:7,sourc:10,space:5,special:7,specif:7,src:10,string:12,structur:[10,12],style:[6,9],subst:7,sum:12,sumbool:12,sumor:12,symmetri:7,tab:5,tabl:6,tactic:7,theorem:1,theori:10,transit:7,transpar:1,trivial:7,type:[1,8,12],typeclass:12,unbox:12,understand:9,undocu:9,univers:12,upstream:9,user:9,variabl:7,variant:12,vectordef:12,version:10,work:9}}) \ No newline at end of file +Search.setIndex({docnames:["alectryon_examples","definitions","extraction_c","extraction_haskell","extraction_ocaml","formatting","index","ltac","naming_conventions","principles","project_structure","scope_management","types"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":3,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":2,"sphinx.domains.rst":2,"sphinx.domains.std":2,sphinx:56},filenames:["alectryon_examples.rst","definitions.rst","extraction_c.rst","extraction_haskell.rst","extraction_ocaml.rst","formatting.rst","index.rst","ltac.rst","naming_conventions.rst","principles.rst","project_structure.rst","scope_management.rst","types.rst"],objects:{},objnames:{},objtypes:{},terms:{"120":5,"byte":6,"case":[6,10],"class":6,"default":10,"export":6,"float":6,"function":10,"import":[6,10,12],"int":6,"new":[9,10],"switch":10,"true":10,"try":6,For:10,Not:10,The:10,There:10,These:10,Use:[6,10],_coqproject:6,abil:10,about:10,abov:10,absurd:6,academ:9,accur:10,achiev:[],addit:10,admit:6,advis:10,against:6,alectryon:[6,10],all:[0,10],allow:10,also:10,alwai:[],ani:[],announc:6,anoth:10,antisymmetr:12,appli:[0,6,10],appropri:10,architectur:9,archiv:10,argument:6,arrai:6,ascii:6,assert:6,assist:9,assumpt:6,asymmetr:12,attribut:6,auto:6,automat:6,awesom:10,basic:6,becaus:10,been:10,behav:10,being:10,below:10,benefit:[],bike:6,bleed:10,bool:6,both:10,box:6,brace:6,brows:9,browser:9,build:[9,10],bullet:6,bytevector:6,cannot:10,canon:6,cbv:6,certain:10,chang:6,charact:6,chat:[],citat:10,cite:10,clean:10,clear:6,clearli:10,club:10,code:[6,10],coercion:6,cofixpoint:6,coinduct:6,com:[],combin:[],command:10,common:6,commun:10,compat:10,compon:[6,10],concern:10,concis:10,configur:6,congruenc:6,consid:7,consol:10,constructor:6,contain:[6,10],context:6,continu:6,contradict:6,contribut:6,contributor:[9,10],control:6,convent:6,copyright:10,coq:7,coqdoc:10,coqext:10,coqid:10,coqlang:10,coqproject:[],corollari:6,criteria:[],curiou:9,custom:6,date:10,decid:12,decidableclass:6,decidableequival:12,decidablesetoid:12,defin:6,definit:[6,10],dep:6,depend:6,deriv:[],descript:10,desir:6,destruct:6,develop:10,differ:9,directori:10,discours:10,distribut:6,doc:6,docker:10,document:6,doe:10,downstream:[6,10],drive:9,each:10,easi:6,eassumpt:6,eauto:[0,6],ecosystem:10,edg:10,edit:10,eenough:6,eintro:6,either:10,els:6,enabl:7,encourag:[],end:[6,10],enforc:6,engag:[],engin:6,enough:6,ensur:10,enumer:10,epic:6,eqdec:12,equival:12,equivdec:6,erefin:6,etc:10,evar:6,even:10,everi:10,exact:[0,6],exampl:6,exfalso:6,exist:6,expect:[6,10],explor:9,expos:[],express:6,ext:6,extend:10,extlib:6,extract:6,fact:6,featur:9,feedback:6,file:[6,10],fin:6,find:6,fixpoint:6,follow:[9,10],foral:0,format:6,found:10,frequent:9,from:[10,12],gener:[6,10],get:10,git:10,github:[6,10],give:10,give_up:6,global:6,goal:6,guid:9,guidanc:[6,10],guidelin:10,has:10,haskel:[6,10],have:[6,10],header:10,help:6,here:10,hierarchi:10,holder:10,how:10,http:[],identifi:10,ihi:0,imag:10,impact:6,includ:10,inclus:10,indent:6,induct:[0,6],industri:9,infer:6,info:0,info_eauto:0,inform:10,inherit:6,instal:10,instanc:[6,10],instanti:6,instead:10,instruct:10,integr:6,interest:9,intro:6,invers:0,invok:[],irreflex:12,isol:9,issu:[9,10],its:10,javascript:10,kind:10,known:10,languag:[],lastli:10,layout:[],le_:0,le_l:0,le_n:0,lead:[],left:6,lemma:[0,6,10],length:6,let:6,level:[],lia:6,librari:[10,12],licens:6,line:6,linter:6,list:[6,10],local:6,longer:10,ltac:6,mai:10,mail:10,main:10,maintain:[6,10],make:10,makefil:6,manag:[6,10],mangl:7,mani:9,map:10,match:6,metadata:10,method:10,might:10,minim:6,minimum:[],mitig:6,mode:10,modul:6,monad:6,more:10,most:10,mset:6,msetrbt:12,must:10,mydep:10,mydepext:10,myproject:6,name:[6,10],nat:[0,6],nath:0,natihi:0,necessari:10,need:10,nia:6,nix:9,non:[6,10],notat:6,note:12,notifi:10,now:6,numer:6,object:6,ocaml:[6,10],offer:6,one:10,onli:10,opam:6,opaqu:6,oper:10,option:[6,10],orchestr:10,org:10,other:10,outcom:6,own:10,packag:[9,10],page:0,part:12,particularli:10,path:10,pattern:6,peopl:[],per:12,perform:10,person:9,persona:[6,10],place:10,platform:[9,10],polymorph:6,popular:10,pos:6,pose:6,possibl:10,potenti:10,practic:10,predic:6,prefer:10,preorder:12,presenc:10,present:10,primit:6,principl:6,prior:[0,10],procedur:10,process:[],prod:6,product:6,profession:9,program:6,progress:6,project:[6,9],proof:[6,9],properti:6,proposit:6,provid:10,publish:[6,10],pull:[6,10],punish:6,qed:0,rational:10,readm:6,readthedoc:10,reason:10,recent:10,recogn:10,recommend:10,record:6,red:6,reddit:10,refactor:9,refer:10,referenc:10,refin:6,reflex:[6,12],relationclass:6,releas:[0,6],reli:[7,10],remark:6,rememb:6,remov:[0,10],renam:6,replac:6,repo:6,repositori:10,repres:10,represent:6,request:[6,10],requir:[10,12],research:9,resolv:9,respons:10,rest:10,result:10,revert:6,rewrit:6,right:6,robust:6,role:6,samp:[],sampl:10,satisfi:10,schema:10,scope:6,search:10,section:6,see:10,seek:9,select:10,sensibl:10,sentenc:10,separ:10,set:[],setoid:12,setoidclass:6,setoiddec:6,sever:9,shed:6,ship:9,should:[0,10],sigma:6,simpl:[0,6],slate:10,softwar:10,some:10,somewher:10,sourc:6,space:6,special:6,specif:6,specifi:10,sphinx:10,src:6,standard:10,step:[],store:10,strictord:12,string:6,structur:6,student:9,sub:[],subdirectori:10,subject:10,submit:10,submodul:10,subrel:12,subst:[0,6],sum:6,sumbool:6,sumor:6,suppos:10,sure:[],symmetr:12,symmetri:6,system:10,tab:6,tactic:6,tag:10,tech:[],test:[0,10],than:10,thei:10,theorem:6,theori:6,thereof:[],thi:[0,6,9,10,12],those:10,todo:[1,2,3,4,5,7,8,11,12],tool:10,top:[],transit:[6,12],transpar:6,trivial:6,twitter:10,type:6,typeclass:6,ubiquit:10,unbox:6,understand:9,undocu:9,uninstal:10,univers:6,updat:10,upstream:[6,10],url:10,usag:10,use:[5,9,10],used:10,useful:10,user:[6,10],using:10,valid:10,vari:10,variabl:[6,10],variant:[6,10],variou:10,vector:12,vectordef:6,venu:10,verifi:10,version:6,via:12,vscode:[],vscoq:10,want:[],websit:10,welcom:6,well:10,when:10,where:10,which:10,whose:10,wide:10,wise:10,within:10,without:10,work:[6,10],would:10,written:10,yet:10,yh1:0,you:[],your:10,zulip:10},titles:["Alectryon examples","Definitions","Extraction to C","Extraction to Haskell","Extraction to OCaml","Formatting","Style Guide for Coq","Ltac","Naming conventions","Principles","Project structure","Scope management","Types"],titleterms:{"byte":12,"case":9,"class":12,"export":11,"float":12,"import":11,"int":12,"new":[],"try":7,Use:9,_coqproject:10,absurd:7,admit:7,against:9,alectryon:0,announc:10,appli:7,architectur:[],argument:1,arrai:12,ascii:[5,12],assert:7,assist:[],assumpt:7,attribut:1,auto:7,automat:7,basic:0,bike:9,bool:12,box:12,brace:7,brows:[],browser:[],build:[],bullet:7,bytevector:12,canon:12,cbv:7,chang:[7,9],charact:5,clear:7,code:9,coercion:12,cofixpoint:1,coinduct:12,common:12,compon:9,configur:10,congruenc:7,constructor:7,contain:12,content:6,context:7,continu:10,contradict:7,contribut:10,contributor:[],control:10,convent:8,coq:[6,9,10,12],coqdoc:[],corollari:1,curiou:[],custom:7,decidableclass:12,defin:7,definit:1,dep:10,depend:10,desir:9,destruct:7,distribut:10,doc:10,document:10,downstream:9,easi:7,eassumpt:7,eauto:7,eenough:7,eintro:7,els:1,end:1,enforc:9,engin:9,enough:7,epic:7,equivdec:12,erefin:7,evar:7,exact:7,exampl:[0,1,10],exfalso:7,exist:7,expect:9,explor:[],express:1,ext:10,extlib:12,extract:[2,3,4],fact:1,featur:[],file:8,fin:12,find:9,fixpoint:1,format:5,gener:7,give_up:7,global:11,goal:7,guid:6,guidanc:7,haskel:3,have:9,help:9,impact:9,indent:5,induct:12,infer:1,inherit:12,instanc:12,instanti:7,integr:10,intro:7,isol:[],issu:[],layout:[],left:7,lemma:1,length:5,let:1,lia:7,licens:10,line:5,linter:9,list:12,local:11,ltac:7,maintain:9,makefil:10,manag:[7,11],match:1,minim:9,mitig:9,modul:[8,11],monad:12,mset:12,myproject:10,name:[7,8],nat:12,nia:7,non:5,notat:[5,11],now:7,numer:12,object:12,ocaml:4,offer:9,opam:10,opaqu:1,option:12,outcom:9,pattern:7,person:[],persona:9,platform:[],polymorph:12,pos:12,pose:7,predic:8,primit:12,principl:9,prod:12,product:12,program:1,project:[8,10],proof:7,properti:1,proposit:1,punish:9,readm:10,record:12,red:7,refactor:[],refin:7,reflex:7,relationclass:12,releas:10,remark:1,rememb:7,renam:7,replac:9,repo:10,represent:12,research:[],resolv:[],revert:7,rewrit:7,right:7,robust:9,role:9,scope:11,section:11,setoidclass:12,setoiddec:12,shed:9,ship:[],sigma:12,simpl:7,sourc:10,space:5,special:7,specif:7,src:10,string:12,structur:[10,12],style:[6,9],subst:7,sum:12,sumbool:12,sumor:12,symmetri:7,tab:5,tabl:6,tactic:7,theorem:1,theori:10,transit:7,transpar:1,trivial:7,type:[1,8,12],typeclass:12,unbox:12,understand:[],undocu:[],univers:12,upstream:9,use:[],user:9,variabl:7,variant:12,vectordef:12,version:10,work:9}}) \ No newline at end of file diff --git a/docs/source/principles.rst b/docs/source/principles.rst index 1af549d..7c23ee6 100644 --- a/docs/source/principles.rst +++ b/docs/source/principles.rst @@ -2,156 +2,126 @@ Principles ========== -Personas --------- - -Curious person -~~~~~~~~~~~~~~ - -Examples include: - -* Students -* Professionals in industry - - -Researcher -~~~~~~~~~~ - -Examples include: - -* Academic researchers -* Tech leads in industry - - -User -~~~~ - -TODO - - -Contributor -~~~~~~~~~~~ - -TODO - - -Platform maintainer -~~~~~~~~~~~~~~~~~~~ - -Examples include: - -* Coq Platform maintainers -* Nix package maintainers - - -Upstream maintainer -~~~~~~~~~~~~~~~~~~~ - -Examples include: - -* Coq maintainers +Roles & personas +---------------- + +Many different roles & personas have an interest in project style. + +* Curious person + * Student + * Academic researcher + * Professional in industry +* Researcher + * Academic researcher +* User + * Student + * Academic researcher + * Professional in industry +* Contributor + * Student + * Academic researcher + * Professional in industry +* Platform maintainer + * `Coq Platform `_ maintainers + * Nix package maintainers + * Academic researcher +* Upstream maintainer + * Coq maintainers + * Academic researcher + * Professional in industry Use cases --------- -Browsing the code (in a browser) -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -*Curious person, researcher, user, contributor* - -TODO - - - -Browsing the code (in a proof assistant) -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -*Curious person, researcher, user, contributor* - -TODO - - -Isolating & resolving build issues -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -*User, contributor, platform maintainer* - -TODO - - -Exploring undocumented features -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -*Researcher, user* - -TODO - - -Understanding the architecture -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -*Researcher, user, contributor* - -TODO - - -Shipping new features -~~~~~~~~~~~~~~~~~~~~~ - -*Contributor* - -TODO - - -Refactoring -~~~~~~~~~~~ - -*Contributor* - -TODO - +Project style impacts several frequent use cases. + +* Browsing the code (in a browser) + * Curious person + * Researcher + * User + * Contributor + * Platform maintainer + * Upstream maintainer +* Browsing the code (in a proof assistant) + * Curious person + * Researcher + * User + * Contributor + * Platform maintainer + * Upstream maintainer +* Isolating & resolving build issues + * User + * Contributor + * Platform maintainer + * Upstream maintainer +* Exploring undocumented features + * Researcher + * User + * Contributor +* Understanding the architecture + * Researcher + * User + * Contributor +* Shipping new features + * Contributor +* Refactoring + * Contributor + * Platform maintainer + * Upstream maintainer + + +Desired outcome +--------------- + +This style guide seeks to drive the following outcomes: -Objectives ----------- Mitigate bike-shedding ~~~~~~~~~~~~~~~~~~~~~~ -TODO +* Shipping new features +* Refactoring Style is enforcable by a linter ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -TODO +* Shipping new features +* Refactoring Find & replace work as expected ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -TODO +* Browsing the code (in a browser) +* Browsing the code (in a proof assistant) +* Isolating & resolving build issues +* Exploring undocumented features +* Understanding the architecture +* Shipping new features +* Refactoring Code is robust against changes to the Coq engine ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -TODO +* Isolating & resolving build issues Code is minimally impacted by changes in upstream components ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -TODO +* Isolating & resolving build issues Code changes have minimal impact on downstream users ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -TODO +* Isolating & resolving build issues Upstream maintainers are not punished for offering to help ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -TODO +* Isolating & resolving build issues