From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.ciao.gmane.io!not-for-mail From: Yuan Fu Newsgroups: gmane.emacs.devel Subject: Review a blog post about emacs-devel Date: Mon, 27 Apr 2020 16:58:03 -0400 Message-ID: <2D56B465-C028-41AE-8D07-38C1C49FF5F7@gmail.com> Mime-Version: 1.0 (Mac OS X Mail 13.4 \(3608.80.23.2.2\)) Content-Type: multipart/mixed; boundary="Apple-Mail=_E039DE74-C2F8-4CFC-A533-588EC9EC9A2C" Injection-Info: ciao.gmane.io; posting-host="ciao.gmane.io:159.69.161.202"; logging-data="43858"; mail-complaints-to="usenet@ciao.gmane.io" To: Emacs developers Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Mon Apr 27 22:59:10 2020 Return-path: Envelope-to: ged-emacs-devel@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1jTAqL-000BIK-N7 for ged-emacs-devel@m.gmane-mx.org; Mon, 27 Apr 2020 22:59:09 +0200 Original-Received: from localhost ([::1]:33376 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jTAqK-0002AY-O4 for ged-emacs-devel@m.gmane-mx.org; Mon, 27 Apr 2020 16:59:08 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:55160) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jTApP-00014J-7A for emacs-devel@gnu.org; Mon, 27 Apr 2020 16:58:11 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.90_1) (envelope-from ) id 1jTApM-00066a-KA for emacs-devel@gnu.org; Mon, 27 Apr 2020 16:58:08 -0400 Original-Received: from mail-qk1-x729.google.com ([2607:f8b0:4864:20::729]:37693) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1jTApM-00066T-3p for emacs-devel@gnu.org; Mon, 27 Apr 2020 16:58:08 -0400 Original-Received: by mail-qk1-x729.google.com with SMTP id s63so19615830qke.4 for ; Mon, 27 Apr 2020 13:58:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:mime-version:subject:message-id:date:to; bh=VA7zupB08e8zkbH/6ihUmDsl0MZ08sHpbePFsCQqC2M=; b=rxVRmEXZ7H0e7sCxxqSu6b6M+KDWxdlqhaJwwegSj6nUQYlxxGTb20+CjtrrP7v+WP XjYyhgHVWjskplwCUYgXYJFSqvPFxbZoYk9wmT7GXDtx8HTPHH839drEQ5PEEYOnCcBa uqf2BcLTJ+kGaavG0opE/XZC7bPoB8OdPNgPLDutdxKLq1T70qHILsydmya9JL8qyAwK bWyWBRswwvKbuADUNLL5FlhHNW2WgGXfgMIWBf5uJsPgdBzQAbUiR9vwEprZYAPTpDmG RopRV33Mi7Ku6y0vVg1tI+0qd/CFCmyXgXrAMMtJYvTAyCINeeVegQJARFZD84FcpZUF 7qzw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:mime-version:subject:message-id:date:to; bh=VA7zupB08e8zkbH/6ihUmDsl0MZ08sHpbePFsCQqC2M=; b=Cf2JayoE9yuYfCEC2abas/i+nbeK0xRmdzOFHx9yEoAqaSUmVT2pKech/bOw/v1WEV b3IsSYu7Dkw3P5Lg7oC7buORChG7AWbd970Z3EhZY5kpVoP7/LclLCKfH5Pee4nrNlSa FJFSVoF/Jr8qGQTpeHZlrqMZft7y+rnlCyBBiaalzQPtBxETp29XFDy4+kT1oe5qZM/M qMgAHiQI3Xw2tRCiGXSg9H4J9DVJcyF9/z50kRYFM6Fscmr09oJbJZVyJp9xmW7hgRoB 6IxcGNZZx5Ay15U/wo+t4jfa/FGPCMLz7X2hcdbuvLulX4Mhi1V2Sky3LgtbnG0Sgvwj YifQ== X-Gm-Message-State: AGi0PuaDv/MsIXJxoecyvEb2otqQOXDl/bu7/0fhUTFQfI3D2kDa9j0c c1bTNrwNQdKb5uRxcXQSG8p98AKA42jjmw== X-Google-Smtp-Source: APiQypJx71o/KFWj8C80Fi9OF1XiJXMzV4VLuqOvMZ1Pqb9jajR8kpQcBn9l97/vw8qNz2B5whLzTQ== X-Received: by 2002:a05:620a:138e:: with SMTP id k14mr24278155qki.452.1588021085369; Mon, 27 Apr 2020 13:58:05 -0700 (PDT) Original-Received: from [192.168.1.5] (c-174-60-229-153.hsd1.pa.comcast.net. [174.60.229.153]) by smtp.gmail.com with ESMTPSA id 67sm8654133qkm.68.2020.04.27.13.58.04 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 27 Apr 2020 13:58:04 -0700 (PDT) X-Mailer: Apple Mail (2.3608.80.23.2.2) Received-SPF: pass client-ip=2607:f8b0:4864:20::729; envelope-from=casouri@gmail.com; helo=mail-qk1-x729.google.com X-detected-operating-system: by eggs.gnu.org: Error: [-] PROGRAM ABORT : Malformed IPv6 address (bad octet value). Location : parse_addr6(), p0f-client.c:67 X-Received-From: 2607:f8b0:4864:20::729 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Original-Sender: "Emacs-devel" Xref: news.gmane.io gmane.emacs.devel:247966 Archived-At: --Apple-Mail=_E039DE74-C2F8-4CFC-A533-588EC9EC9A2C Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=us-ascii I wrote a blog post about how to participate in emacs-devel in the hope = that this will help with people who wants to contribute. Before I = publish it, could some one have a look at it to see if there is = misinformation? Any advice/concern is welcome. Thanks. Yuan --Apple-Mail=_E039DE74-C2F8-4CFC-A533-588EC9EC9A2C Content-Disposition: attachment; filename=index.org Content-Type: application/octet-stream; x-unix-mode=0644; name="index.org" Content-Transfer-Encoding: quoted-printable #+SETUPFILE:=20../../setup.org=0A#+TITLE:=20Contributing=20to=20Emacs=0A= #+DATE:=20<2020-04-25=20Sat=2016:59>=0A#+TAGS:=20Emacs=20Hacker=0A= #+OPTIONS:=20toc:1=0A=0AEmacs,=20/the/=20editor=20we=20all=20use=20and=20= love,=20has=20been=20running=20for=20decades,=20receiving=20contribution=20= from=20hundreds=20of=20hackers=20along=20the=20way.=20But=20because=20it=20= predates=20=E2=80=9Cmodern=E2=80=9D=20open=20source=20workflows=20(a.k.a=20= GitHub=20and=20friends)=20by=20many=20years,=20you=20can=E2=80=99t=20do=20= the=20usual=20thing=E2=80=94open=20issues,=20fork=20and=20make=20PR=E2=80=99= s,=20etc.=20However,=20while=20admittedly=20not=20as=20convenient=20as=20= GitHub,=20Emacs=E2=80=99s=20development=20workflow=20isn=E2=80=99t=20as=20= tedious=20and=20difficult=20as=20many=20people=20imagines=20(in=20= particular,=20you=20don=E2=80=99t=20need=20Gnus=20or=20deal=20with=20= email=20in=20Emacs,=20or=20setup=20anything=20fancy).=20In=20this=20post=20= I=20show=20what=20I=E2=80=99ve=20learned=20as=20a=20Emacs=20new=20comer=20= about=20participating=20the=20development=20of=20Emacs.=20I=20hope=20= that=20by=20sharing=20people=20what=20does=20contributing=20to=20Emacs=20= look=20like,=20more=20people=20knows=20what=20to=20expect=20and=20feels=20= comfortable=20to=20join=20the=20development=20of=20Emacs.=0A=0A*=20= Report=20Emacs=20bug=0A=0AI=20won=E2=80=99t=20go=20into=20details=20= here,=20because=20I=20think=20most=20people=20nowadays=20are=20well=20= educated=20by=20numerous=20open=20source=20projects=20on=20how=20to=20= properly=20report=20a=20bug.=20In=20the=20case=20of=20Emacs,=20in=20= addition,=20you=20want=20to=20reproduce=20the=20bug=20with=20vanilla=20= Emacs,=20i.e.,=20without=20your=20configurations.=20You=20can=20start=20= one=20with=20=3Demacs=20-Q=3D.=20And=20in=20Emacs=20type=20=3DM-x=20= report-emacs-bug=20RET=3D,=20then=20=3DC-x=20M-i=3D=20to=20use=20your=20= mail=20application=20to=20send=20the=20bug=20report=20through=20email=20= (Emacs=20instructs=20you=20of=20all=20this).=20Then=20just=20wait=20for=20= a=20developer=20to=20reply=20your=20email=20(see?=20No=20setup=20= needed).=20The=20only=20thing=20to=20remember=20is=20to=20make=20sure=20= you=20use=20=E2=80=9Creply=20all=E2=80=9D=20when=20replying=20emails=20= (more=20on=20that=20in=20[[The=20mailing=20list]].)=0A=0A*=20The=20= mailing=20list=0A=0AGitHub=20has=20issues,=20we=20have=20the=20mailing=20= list.=20A=20mailing=20list=20has=20subscribers.=20When=20some=20one=20= sends=20a=20mail=20to=20(or=20cc)=20the=20mailing=20list=20address,=20= the=20mailing=20list=20server=20forwards=20that=20message=20to=20every=20= subscribers,=20so=20every=20body=20sees=20your=20mail.=20To=20start=20a=20= new=20thread,=20send=20a=20mail=20to=20the=20mailing=20list=20server;=20= to=20reply=20to=20someone=E2=80=99s=20message,=20simply=20=E2=80=9Creply=20= all=E2=80=9D.=20*Make=20sure=20you=20use=20=E2=80=9Creply=20all=E2=80=9D=20= when=20replying=20to=20messages.*=20If=20the=20message=20isn=E2=80=99t=20= CC=E2=80=99ed=20to=20the=20mailing=20list=20server=20= (emacs-devel@gnu.org),=20other=20people=20on=20the=20list=20can=E2=80=99t=20= see=20it.=0A=0A**=20Subscribe=20to=20Emacs-devel=20mailing=20list=0A=0A= Go=20to=20= [[https://lists.gnu.org/mailman/listinfo/emacs-devel][Emacs-devel=20Info=20= Page]],=20and=20fill=20in=20the=20form=20to=20subscribe.=20Make=20sure=20= you=20select=20=E2=80=9CNo=E2=80=9D=20for=20=E2=80=9CWould=20you=20like=20= to=20receive=20list=20mail=20batched=20in=20a=20daily=20digest?=E2=80=9D.=20= If=20you=20select=20=E2=80=9CYes=E2=80=9D,=20instead=20of=20receiving=20= messages,=20you=20receive=20a=20=E2=80=9Cdaily=20digest=E2=80=9D=20= everyday,=20which=20is=20more=20or=20less=20useless=20becase=201)=20you=20= don=E2=80=99t=20see=20the=20full=20conversation,=202)=20you=20can=E2=80=99= t=20participate=20the=20discussion.=0A=0A**=20Tips=0A=0AEmacs-devel=20is=20= busy,=20there=20are=20a=20couple=20dozen=20messages=20everyday,=20if=20= you=20don=E2=80=99t=20want=20your=20inbox=20flooded,=20you=20better=20= setup=20a=20separate=20mail=20folder=20for=20them.=20As=20an=20example,=20= this=20is=20what=20I=20do=20on=20Gmail:=20I=20go=20to=20=E2=80=9CSettings=E2= =80=9D,=20=E2=80=9CFilters=20and=20Blocked=20Addresses=E2=80=9D,=20= =E2=80=9CCreate=20a=20new=20filter=E2=80=9D,=20filter=20any=20mail=20= that=20has=20the=20words=20=E2=80=9Cemacs-devel@gnu.org=E2=80=9D,=20and=20= asks=20Gmail=20to=20skip=20the=20inbox=20and=20apply=20=E2=80=9Cemacs-deve= l=E2=80=9D=20label.=20The=20effect=20is=20that=20all=20emacs-devel=20= messages=20don=E2=80=99t=20appear=20in=20your=20inbox=20and=20instead=20= show=20up=20in=20emacs-devel=20folder.=0A=0A**=20No=20one=20replies?=0A=0A= In=20general,=20give=20it=20a=20week=20or=20so=20before=20pinging=20your=20= message.=20Normally=20when=20no=20one=20reply=20to=20a=20new=20message,=20= it=20is=20because=20people=20have=20seen=20it=20don=E2=80=99t=20know=20= enough=20to=20say=20anything=20intelligent=20about=20the=20topic.=20On=20= the=20other=20hand,=20don=E2=80=99t=20send=20a=20bug=20report=20without=20= a=20patch=20to=20emacs-devel,=20report=20it=20as=20a=20bug=20(even=20if=20= you=20are=20not=20sure=20if=20it=20should=20be=20classified=20as=20a=20= bug,=20report=20it=20as=20a=20bug).=0A=0A*=20Get=20Emacs=E2=80=99=20= source=0A=0A-=20This=20is=20Emacs=E2=80=99=20savannah=20homepage:=20= [[https://savannah.gnu.org/projects/emacs/]]=0A-=20This=20is=20Emacs=E2=80= =99=20git=20source=20page:=20http://git.savannah.gnu.org/cgit/emacs.git=0A= =0AThe=20home=20page=20tells=20you=20how=20to=20clone=20Emacs=E2=80=99=20= source:=0A#+begin_src=20shell=0Agit=20clone=20-b=20master=20= git://git.sv.gnu.org/emacs.git=0A#+end_src=0A=0AOnce=20you=20have=20the=20= source,=20you=20can=20find=20most=20of=20the=20information=20mentioned=20= in=20this=20post=20in=20=3D/CONTRIBUTE=3D.=20For=20example,=20the=20= first=20section=20clearly=20demonstrates=20how=20to=20compile=20Emacs:=0A= #+begin_src=20shell=0A#=20More=20info=20is=20in=20INSTALL.=0A= ./autogen.sh=0A#=20You=20can=20use=20./configure.sh=20--help=20to=20see=20= the=20avaliable=20options.=0A#=20This=20is=20the=20step=20where=20you=20= enable/disable=20optional=20functionalities=0A#=20like=20dynamic=20= module,=20portable=20dumper,=20svg,=20etc.=0A./configure.sh=0Amake=0A= #+end_src=0A=0AAnd=20the=20executable=20is=20=3D/src/emacs=3D,=20welcome=20= to=20the=20future=20(release)!=20=0A#=20--enable-checking=3Dyes=20= --enable-check-lisp-object-type=3Dyes=0A=0A*=20I=20have=20some=20code,=20= what=20now?=0A**=20The=20copyright=20assignment=0A=0AEvery=20non-trivial=20= contribution=20to=20GNU=20Emacs=20needs=20to=20have=20a=20copyright=20= assignment=20signed.=20Basically=20by=20signing=20the=20assignment,=20= you=20give=20the=20copyright=20of=20your=20code=20to=20FSF.=20See=20more=20= at=20[[https://www.gnu.org/licenses/why-assign.en.html][Why=20Copyright=20= Assignment]].=20You=20need=20to=20first=20check=20with=20your=20employer=20= before=20signing=20it.=20Most=20of=20the=20time=20it=E2=80=99s=20no=20= problem.=20To=20sign=20the=20assignment,=20ask=20for=20a=20form=20on=20= the=20mailing=20list,=20and=20someone=20will=20send=20you=20the=20form.=20= You=20fill=20it=20in=20and=20send=20to=20the=20instructed=20=E2=80=9CFSF=20= clerk=E2=80=9D,=20then=20he=20sends=20you=20the=20document=20to=20sign,=20= either=20by=20email=20or=20by=20mail.=20You=20sign=20it=20and=20send=20= it=20back,=20and=20he=20sends=20you=20the=20final=20document=20with=20= FSF=20signature.=20=0A=0A**=20Conventions=20in=20code=0A=0A-=20Write=20= regular=20sentences=20in=20comment,=20i.e.,=20with=20capitalization=20= and=20period.=20Format=20comments=20with=20=3DM-q=3D=20= (~fill-paragraph~).=0A-=20Comments=20should=20be=20in=20American=20= English=20and=20with=20two=20spaces=20after=20every=20sentence.=0A-=20= Don=E2=80=99t=20write=20over=2080=E2=80=9390=20columns=20(I=20don=E2=80=99= t=20really=20know=20if=20there=20is=20a=20hard=20limit,=20but=20in=20= general=20try=20to=20keep=20in=20with=20the=20rest=20of=20the=20code).=0A= =0A**=20Conventions=20in=20commit=20messages=0A=0AThe=20general=20= format:=0A#=20I=20added=20zero=20width=20space=20before=20each=20star=20= to=20prevent=20Org=20from=20considering=20them=20as=20headings=0A= #+begin_example=0ASummary=20line=20(no=20ending=20period)=0A=0ASome=20= more=20info=20(optional).=0A=0A=E2=80=8B*=20file:=20Change.=0A=E2=80=8B*=20= file=20(variable1):=20Change.=0A=E2=80=8B*=20file=20(function1,=20= function2,=20variable3):=20Same=20change.=0A=E2=80=8B*=20file=20= (variable1):=20Change=201.=0A(function2):=20Change=202.=0A(function1,=20= macro2):=20Same=20change.=0A#+end_example=0A=0A-=20The=20file=20path=20= is=20relative=20to=20the=20source=20root,=20e.g.,=20= =3D/lisp/progmodes/gdb-mi.el=3D.=0A-=20In=20=3DChange=3D,=20document=20= /what/=20changed,=20not=20/why/=20the=20change=20is=20made.=20= /=E2=80=9CWhy=E2=80=9D/=20is=20better=20put=20in=20the=20comments.=0A-=20= For=20new=20function=E2=80=8B/=E2=80=8Bvariable=E2=80=8B/=E2=80=8Bmacro,=20= It=20suffice=20to=20say=20=E2=80=9CNew=20= function=E2=80=8B/=E2=80=8Bvariable=E2=80=8B/=E2=80=8Bmacro=E2=80=9D.=0A= -=20Don=E2=80=99t=20exceed=2078=20characters=20each=20line.=0A-=20Try=20= to=20use=20only=20ASCII=20characters=20(so=20people=20on=20limited=20= terminals=20can=20view=20these=20messages).=20For=20example,=20prefer=20= straight=20quotes=20over=20curly=20quotes.=0A-=20Sames=20as=20= comments=E2=80=94American=20English=20and=20two=20spaces=20after=20every=20= sentence.=0A=0A**=20Create=20patch=20and=20send=20it=0A=0ACreate=20a=20= single=20patch=20for=20each=20individual=20changes.=20Don=E2=80=99t=20= send=20a=20patch=20with=20three=20new=20features=20combined,=20that=20is=20= harder=20to=20review;=20on=20the=20other=20hand,=20don=E2=80=99t=20send=20= a=20series=20of=20patches=20for=20a=20single=20feature,=20squash[fn:1]=20= them=20into=20one=20patch.=20Also,=20send=20your=20patch=20early=20and=20= small=20and=20update=20along=20the=20way,=20that=20also=20helps=20other=20= people=20to=20review=20it.=20To=20save=20you=20from=20googling,=20= here=E2=80=99s=20some=20ways=20to=20create=20a=20patch:=0A=0A1.=20Use=20= magit.=20To=20generate=20a=20quick=20diff=20patch,=20open=20a=20diff=20= buffer=20by=20either=20=3Dd=20d=3D=20on=20a=20change=20or=20commit;=20in=20= the=20diff=20buffer,=20hit=20=3DW=20s=3D.=20To=20generate=20a=20patch=20= from=20a=20commit=20or=20a=20range=20of=20commits,=20go=20on=20to=20a=20= commit=20and=20do=20=3DW=20c=20c=3D.=20This=20puts=20the=20patch=20= file(s)=20under=20the=20project=20root=20and=20isn=E2=80=99t=20very=20= convenient,=20I=20usually=20just=20do=20=3D!=20!=20git=20format-patch=20= -<#=20of=20commits>=20--stdout=20>=20.=3D=0A2.=20=46rom=20command=20= line,=20=3Dgit=20format-patch=20-<#=20of=20commits,=20e.g.,=201>=20= --stdout=20>=20=3D=0A=0ATo=20send=20your=20patch,=20write=20an=20= email=20to=20the=20mailing=20list:=20= [[mailto:emacs-devel@gnu.org][emacs-devel]].=20Drag=20your=20patch=20to=20= the=20very=20end=20of=20the=20message,=20after=20signatures.=20Normally=20= this=20is=20all=20it=20needs.=20Sometimes=20the=20message=20could=20be=20= garbled;=20in=20that=20case,=20changing=20the=20message=20to=20plain=20= text=20usually=20helps.=20You=20can=20also=20send=20a=20patch=20to=20= debbugs,=20the=20bug=20tracker,=20if=20the=20patch=20is=20a=20bug=20fix.=20= (See=20[[Debbugs]].)=0A=0A*=20NEWS=20and=20manual=0A=0AIf=20you=20made=20= a=20user-visible=20change,=20you=20should=20document=20this=20change=20= in=20the=20NEWS=20file,=20possibly=20also=20update=20the=20manual.=20= *You=20don=E2=80=99t=20need=20to=20worry=20about=20these=20until=20your=20= patch=20is=20finalized,=20though.=20So=20maybe=20skip=20this=20section=20= for=20now.*=20And=20Emacs=20maintainers=20will=20let=20you=20know=20what=20= to=20do.=20Below=20is=20the=20relevant=20section=20in=20=3D/CONTRIBUTE=3D:= =0A=0A#+begin_quote=0AAny=20change=20that=20matters=20to=20end-users=20= should=20have=20an=20entry=20in=20etc/NEWS.=0ATry=20to=20start=20each=20= NEWS=20entry=20with=20a=20sentence=20that=20summarizes=20the=20entry=0A= and=20takes=20just=20one=20line=20--=20this=20will=20allow=20to=20read=20= NEWS=20in=20Outline=0Amode=20after=20hiding=20the=20body=20of=20each=20= entry.=0A=0ADoc-strings=20should=20be=20updated=20together=20with=20the=20= code.=0A=0ANew=20defcustom's=20should=20always=20have=20a=20':version'=20= tag=20stating=20the=20first=0AEmacs=20version=20in=20which=20they=20will=20= appear.=20=20Likewise=20with=20defcustom's=0Awhose=20value=20is=20= changed=20--=20update=20their=20':version'=20tag.=0A=0AThink=20about=20= whether=20your=20change=20requires=20updating=20the=20manuals.=20=20If=20= you=0Aknow=20it=20does=20not,=20mark=20the=20NEWS=20entry=20with=20= "---".=20=20If=20you=20know=0Athat=20*all*=20the=20necessary=20= documentation=20updates=20have=20been=20made=20as=20part=0Aof=20your=20= changes=20or=20those=20by=20others,=20mark=20the=20entry=20with=20"+++".=0A= Otherwise=20do=20not=20mark=20it.=0A=0AIf=20your=20change=20requires=20= updating=20the=20manuals=20to=20document=20new=0A= functions/commands/variables/faces,=20then=20use=20the=20proper=20= Texinfo=0Acommand=20to=20index=20them;=20for=20instance,=20use=20@vindex=20= for=20variables=20and=0A@findex=20for=20functions/commands.=20=20For=20= the=20full=20list=20of=20predefined=20indices,=20see=0A= https://www.gnu.org/software/texinfo/manual/texinfo/html_node/Predefined-I= ndices.html=0Aor=20run=20the=20shell=20command=20'info=20= "(texinfo)Predefined=20Indices"'.=0A#+end_quote=0A=0A*=20Debbugs=0A=0A= [[https://debbugs.gnu.org][Debbugs]]=20is=20the=20bug=20tracker=20for=20= GNU=20operating=20system.=20Here=20is=20= [[https://debbugs.gnu.org/Emacs.html][Emacs=E2=80=99=20debbugs=20home=20= page]].=20I=E2=80=99ve=20covered=20how=20to=20report=20a=20bug.=20After=20= you=20sent=20the=20email=20reporting=20the=20bug,=20debbugs=20will=20= reply=20to=20you=20a=20confirmation=20email=20with=20a=20bug=20number.=20= Instead=20of=20replying=20to=20messages=20in=20the=20bug=20report,=20you=20= can=20also=20comment=20by=20sending=20a=20message=20to=20= =3Dbug-number@gnu.debbugs.org=3D.=20When=20the=20bug=20is=20fixed,=20you=20= can=20send=20a=20message=20to=20=3D-done@debbugs.gnu.org=3D,=20= e.g.,=20=3D40000-done@debbugs.gnu.org=3D.=20That=20closes=20the=20bug.=0A= =0AIf=20you=20want=20to=20view=20currently=20open=20bugs,=20you=20can=20= either=20= [[https://debbugs.gnu.org/cgi/pkgreport.cgi?package=3Demacs;max-bugs=3D100= ;base-order=3D1;bug-rev=3D1][browse=20online]],=20or=20view=20them=20in=20= Emacs:=20install=20the=20package=20=3Ddebbugs=3D=20and=20=3DM-x=20= debbugs-gnu=3D.=20You=20can=20click=20on=20bugs=20to=20view=20them,=20= and=20view=20the=20conversation.=20You=20can=20even=20reply=20by=20=3DS=20= w=3D=20on=20a=20message,=20and=20write=20your=20message=20in=20Emacs,=20= and=20hit=20=3DC-c=20C-c=3D=20to=20send.=20Chose=20=E2=80=9Cmail=20= client=E2=80=9D=20and=20Emacs=20invokes=20your=20default=20mail=20= application=20to=20send=20this=20mail.=20Hit=20=3DC-c=20C-k=3D=20to=20= cancel=20the=20message.=0A=0A*=20GNU=20ELPA=0A=0AHave=20a=20good=20= package?=20Add=20it=20to=20GNU=20ELPA!=20Pros:=0A-=20Get=20reviews=20= from=20people=20that=20knows=20Emacs=20and=20Emacs=20Lisp=20best.=20=0A-=20= Instantly=20avaliable=20from=20vanilla=20Emacs.=20=0A-=20You=20/can/=20= host=20your=20package=20on=20other=20places,=20such=20as=20GitHub.=0A-=20= You=20/can/=20push=20to=20your=20package=20without=20review,=20and=20= don=E2=80=99t=20need=20to=20follow=20Emacs=20conventions=20for=20commit=20= messages.=0ACons:=0A-=20You=20need=20to=20sign=20the=20copyright=20= assignment.=20And=20make=20sure=20all=20the=20contributors=20of=20your=20= package=20(with=20significant=20contribution,=20i.e.,=20~15=20lines)=20= signs=20it.=0A=0AView=20= [[http://git.savannah.gnu.org/cgit/emacs/elpa.git/plain/README][README]]=20= for=20more=20detailed=20info.=0A=0A[fn:1]=20Squash=20means=20combining=20= several=20commits=20into=20one.=20It=20is=20easy=20to=20do=20with=20= Magit:=20=3Dl=20l=3D=20go=20to=20the=20log=20buffer;=20then=20go=20to=20= the=20earliest=20commit=20you=20want=20to=20change,=20hit=20=3Dr=20i=3D;=20= hit=20=3Ds=3D=20on=20the=20commits=20you=20wan=20to=20squash,=20commits=20= marked=20with=20=E2=80=9Cs=E2=80=9D=20will=20squash=20up.=20You=20can=20= also=20use=20=3DM-n/p=3D=20to=20move=20the=20order=20of=20commits;=20= then=20hit=20=3DC-c=20C-c=3D=20to=20edit=20the=20new=20commit=20message,=20= and=20=3DC-c=20C-c=3D=20again=20to=20confirm.=0A= --Apple-Mail=_E039DE74-C2F8-4CFC-A533-588EC9EC9A2C--