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: Re: Review a blog post about emacs-devel Date: Sat, 2 May 2020 14:58:02 -0400 Message-ID: <1AACFB17-AA77-4F74-A0D6-8CB50902A278@gmail.com> References: <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=_54FECFA1-F6BE-494B-B257-D6E9FF24C39F" Injection-Info: ciao.gmane.io; posting-host="ciao.gmane.io:159.69.161.202"; logging-data="119330"; mail-complaints-to="usenet@ciao.gmane.io" Cc: Richard Stallman , =?utf-8?B?7KGw7ISx67mI?= , Emacs developers To: Stefan Kangas Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Sat May 02 20:59:07 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 1jUxLt-000Ur9-60 for ged-emacs-devel@m.gmane-mx.org; Sat, 02 May 2020 20:59:05 +0200 Original-Received: from localhost ([::1]:41620 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jUxLs-0005rP-8i for ged-emacs-devel@m.gmane-mx.org; Sat, 02 May 2020 14:59:04 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:35964) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jUxL3-000592-H1 for emacs-devel@gnu.org; Sat, 02 May 2020 14:58:13 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.90_1) (envelope-from ) id 1jUxL3-0001J5-5M for emacs-devel@gnu.org; Sat, 02 May 2020 14:58:13 -0400 Original-Received: from mail-qk1-x730.google.com ([2607:f8b0:4864:20::730]:45591) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1jUxKx-0001Be-LD; Sat, 02 May 2020 14:58:07 -0400 Original-Received: by mail-qk1-x730.google.com with SMTP id i7so4181121qkl.12; Sat, 02 May 2020 11:58:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:message-id:mime-version:subject:date:in-reply-to:cc:to :references; bh=g4ASmEjBsOy6FFSSzdTO1TewF79RNoYVBkOOckqQKw4=; b=Ls1KbxEnlOnjZacBNlp+kOyzbe5n/ctOG6TAykRl2fzZh3CLNX55Bg/x84iMg5UENC SrLGUZFGQHmTVZl1gMj8unu+emk8ArUDrLhq90lyWkgnwBU0y2dueqFhXa7qpQN/aMnq IO5liIejYPvlGKeUUasEBg0qLZE5cmditkwy5FkfCcQJzFGHFMRWth9k50yqbrWZ1ZbT qZWC5bpVabDlSOqRvBuPoTKVjzAeEJKu6vq9sZAfYCUiRPWEijbJegJEZu6MA9PPKEfo NthoVJVNABngBbfhS5ZUIHJNKbuZj+sZJBsfEtTYsmO2CEwtZZu30XKfyVpyfGC72170 XVVQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:message-id:mime-version:subject:date :in-reply-to:cc:to:references; bh=g4ASmEjBsOy6FFSSzdTO1TewF79RNoYVBkOOckqQKw4=; b=bX3vthxjrsIAi1bShejrXfdTUYTAGPqPhXAyf4FUTrp6Tl3g1wQg9h0lwP+99RKmdZ kEHccOYAuJUap1gDwHnNZKxc7z9NhlAPcHP6cSyiPSmFmnC6JdvcUov1SKTOFylVA4bM NZ4si1KK4RZOvz7McvmFPn9xWWcIL/m4rImFuc3ACyKFP7G7dPMitY+2gRuu3qhYT29j TjYp/a0aqG0GfTutMbJ5KTAiJtq0UDk54wuvHdW0WKGBenPGtIYwpTfeos+3yYWDRAjr xdlArqb4OzpK4+Xk3MzIOgBwlzVENwGkbgnhtkiNLFsdBSoItbiijheoLDAh9wjO8DOx 8lkQ== X-Gm-Message-State: AGi0Puas69vq1qsMgDwzdIKxsqdP/He8hVQnk9LZzQlu6sL0lZdgs+55 urxeA480QCK8FnnWB6mFlm0= X-Google-Smtp-Source: APiQypLclFwzpYXSbsaCVnagNHrFtdpKrmOu0yT7GAsjAQs+CQnPiwLnI2uQ0H3GN4FCpCU+FjKIzg== X-Received: by 2002:a05:620a:12ca:: with SMTP id e10mr8962349qkl.72.1588445884250; Sat, 02 May 2020 11:58:04 -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 y4sm1661296qti.33.2020.05.02.11.58.03 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Sat, 02 May 2020 11:58:03 -0700 (PDT) In-Reply-To: X-Mailer: Apple Mail (2.3608.80.23.2.2) Received-SPF: pass client-ip=2607:f8b0:4864:20::730; envelope-from=casouri@gmail.com; helo=mail-qk1-x730.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::730 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:248544 Archived-At: --Apple-Mail=_54FECFA1-F6BE-494B-B257-D6E9FF24C39F Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=us-ascii I will post my post. If anyone finds problems, I can always change it. Here is the last draft. Yuan --Apple-Mail=_54FECFA1-F6BE-494B-B257-D6E9FF24C39F 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-05-02=20Sat=2014:44>=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.=20Because=20it=20= predates=20recent=20popular=20workflows=20(a.k.a=20GitHub=20and=20= friends)=20by=20many=20years,=20you=20can=E2=80=99t=20do=20the=20usual=20= thing=E2=80=94open=20issues,=20fork=20and=20make=20PR=E2=80=99s,=20etc.=20= However,=20Emacs=E2=80=99s=20development=20workflow=20isn=E2=80=99t=20as=20= tedious=20and=20difficult=20as=20many=20people=20imagine=20(in=20= particular,=20you=20don=E2=80=99t=20need=20Gnus=20or=20deal=20with=20= email=20in=20Emacs,=20or=20set=20up=20anything=20fancy).=0A=0AIn=20this=20= post,=20I=20show=20what=20I=E2=80=99ve=20learned=20as=20an=20Emacs=20= newcomer=20about=20participating=20in=20the=20development=20of=20Emacs.=20= I=20hope=20that=20by=20sharing=20people=20what=20does=20contributing=20= to=20Emacs=20look=20like,=20more=20people=20know=20what=20to=20expect=20= and=20feel=20comfortable=20to=20join=20the=20development=20of=20Emacs.=0A= =0A*=20Report=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=20communities=20on=20how=20to=20report=20a=20= bug=20properly.=20In=20the=20case=20of=20Emacs,=20in=20addition,=20you=20= want=20to=20reproduce=20the=20bug=20with=20vanilla=20Emacs,=20i.e.,=20= without=20your=20configurations.=20You=20can=20start=20one=20with=20= =3Demacs=20-Q=3D.=20And=20in=20Emacs=20type=20=3DM-x=20report-emacs-bug=20= RET=3D,=20then=20=3DC-x=20M-i=3D=20to=20use=20your=20mail=20application=20= to=20send=20the=20bug=20report=20through=20email=20(Emacs=20instructs=20= you=20of=20all=20this).=20Then=20just=20wait=20for=20a=20developer=20to=20= reply=20to=20your=20email=20(see?=20No=20setup=20needed).=20The=20only=20= thing=20to=20remember=20is=20to=20make=20sure=20you=20use=20=E2=80=9Creply= =20all=E2=80=9D=20when=20replying=20to=20emails=20(more=20on=20that=20in=20= [[The=20mailing=20list]].)=0A=0A**=20Report=20bugs=20with=20patch=0A=0A= If=20you=20found=20a=20bug=20and=20fixed=20it,=20you=20should=20send=20= your=20patch=20as=20a=20bug=20report.=20Same=20as=20reporting=20a=20bug,=20= use=20=3DM-x=20report-emacs-bug=3D,=20and=20append=20=3D[PATCH]=3D=20in=20= front=20of=20the=20title,=20e.g.,=20=3D[PATCH]=20Something=20doesn=E2=80=99= t=20work=3D.=20And=20add=20your=20patch=20to=20your=20email.=20(See=20= [[Create=20a=20patch=20and=20send=20it]].)=0A=0A*=20The=20mailing=20list=0A= =0AThe=20mailing=20list=20is=20the=20main=20channel=20for=20general=20= discussion=20on=20Emacs=20development.=20A=20mailing=20list=20has=20= subscribers.=20When=20someone=20sends=20a=20mail=20to=20(or=20cc)=20the=20= mailing=20list=20address,=20the=20mailing=20list=20server=20forwards=20= that=20message=20to=20every=20subscriber,=20so=20everybody=20sees=20your=20= mail.=20To=20start=20a=20new=20thread,=20send=20a=20mail=20to=20the=20= mailing=20list=20server;=20to=20reply=20to=20someone=E2=80=99s=20= message,=20simply=20=E2=80=9Creply=20all=E2=80=9D.=20*Make=20sure=20you=20= use=20=E2=80=9Creply=20all=E2=80=9D=20when=20replying=20to=20messages.*=20= If=20the=20message=20isn=E2=80=99t=20CC=E2=80=99ed=20to=20the=20mailing=20= list=20server=20(emacs-devel@gnu.org),=20other=20people=20on=20the=20= list=20can=E2=80=99t=20see=20it.=0A=0A**=20Subscribe=20to=20Emacs-devel=20= mailing=20list=0A=0AGo=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=20every=20= day,=20which=20is=20less=20useful=20because=201)=20you=20don=E2=80=99t=20= see=20the=20full=20conversation,=202)=20you=20can=E2=80=99t=20= participate=20in=20the=20discussion.=0A=0A**=20Tips=0A=0AEmacs-devel=20= is=20busy,=20there=20are=20a=20few=20dozen=20messages=20every=20day.=20= if=20you=20don=E2=80=99t=20want=20your=20inbox=20flooded,=20you=20better=20= set=20up=20a=20separate=20mail=20folder=20for=20them.=20As=20an=20= example,=20this=20is=20what=20I=20do=20on=20Gmail:=20I=20go=20to=20= =E2=80=9CSettings=E2=80=9D,=20=E2=80=9CFilters=20and=20Blocked=20= Addresses=E2=80=9D,=20=E2=80=9CCreate=20a=20new=20filter=E2=80=9D,=20= filter=20any=20mail=20that=20has=20the=20words=20= =E2=80=9Cemacs-devel@gnu.org=E2=80=9D,=20and=20asks=20Gmail=20to=20skip=20= the=20inbox=20and=20apply=20=E2=80=9Cemacs-devel=E2=80=9D=20label.=20The=20= effect=20is=20that=20all=20emacs-devel=20messages=20don=E2=80=99t=20= appear=20in=20your=20inbox=20and=20instead=20show=20up=20in=20the=20= emacs-devel=20folder.=0A=0A**=20No=20one=20replies?=0A=0AIn=20general,=20= give=20it=20a=20week=20or=20so=20before=20pinging=20your=20message.=20= Normally=20when=20no=20one=20replies=20to=20a=20new=20message,=20it=20is=20= because=20people=20who=20have=20seen=20it=20don=E2=80=99t=20know=20= enough=20to=20say=20anything=20intelligent=20about=20the=20topic.=20=0A=0A= **=20Don=E2=80=99t=20send=20bugs=20to=20emacs-devel=0A=0AEven=20with=20a=20= patch,=20or=20you=20are=20not=20sure=20if=20it=20should=20be=20= considered=20a=20bug=20(given=20you=20can=20reproduce=20it=20with=20= vanilla=20Emacs),=20report=20it=20as=20a=20bug.=20See=20[[Report=20bugs=20= with=20patch]]=20for=20detail.=0A=0A*=20Get=20Emacs=E2=80=99=20source=0A=0A= -=20This=20is=20Emacs=E2=80=99=20savannah=20homepage:=20= [[https://savannah.gnu.org/projects/emacs/][emacs=20-=20Summary]]=0A-=20= This=20is=20Emacs=E2=80=99=20git=20source=20page:=20= [[http://git.savannah.gnu.org/cgit/emacs.git][emacs.git]]=0A=0AThe=20= home=20page=20tells=20you=20how=20to=20clone=20Emacs=E2=80=99=20source:=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=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=20available=20options.=0A#=20This=20is=20the=20step=20where=20you=20= enable/disable=20optional=20functionalities=0A#=20like=20dynamic=20= modules,=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=0AYou=20don=E2=80=99t=20= need=20a=20copyright=20assignment=20to=20send=20patches=20for=20review.=20= But=20for=20the=20patch=20to=20merge=20into=20Emacs,=20it=20needs=20to=20= have=20a=20copyright=20assignment=20signed=20if=20it=20is=20non-trivial=20= (=E2=89=A5=2015=20lines=20of=20code,=20as=20a=20rule=20of=20thumb).=20By=20= signing=20the=20assignment,=20you=20give=20the=20copyright=20of=20your=20= code=20to=20FSF.=20(See=20more=20at=20= [[https://www.gnu.org/licenses/why-assign.en.html][Why=20Copyright=20= Assignment]].)=20You=20need=20to=20first=20check=20with=20your=20= employer=20before=20signing=20it.=20Most=20of=20the=20time=20it=E2=80=99s=20= no=20problem.=20To=20sign=20the=20assignment,=20ask=20for=20a=20form=20= on=20the=20mailing=20list,=20and=20someone=20will=20send=20it=20to=20= you.=20You=20fill=20it=20in=20and=20send=20it=20to=20an=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=20an=20= FSF=20signature=20on=20it.=20=0A=0A**=20Conventions=20in=20code=0A=0A-=20= Write=20regular=20sentences=20in=20comments,=20i.e.,=20with=20= capitalization=20and=20period.=20Fill=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=20know=20if=20there=20is=20a=20hard=20limit,=20but=20in=20general=20= try=20to=20keep=20in=20with=20the=20rest=20of=20the=20code).=0A=0A**=20= Conventions=20in=20commit=20messages=0A=0AThe=20general=20format:=0A#=20= I=20added=20zero=20width=20space=20before=20each=20star=20to=20prevent=20= Org=20from=20considering=20them=20as=20headings=0A#+begin_example=0A= Summary=20line=20(no=20ending=20period)=0A=0ASome=20more=20info=20= (optional).=0A=0A=E2=80=8B*=20file1:=20Change.=0A=E2=80=8B*=20file2=20= (variable1):=20Change.=0A=E2=80=8B*=20file3=20(function1,=20function2,=20= variable3):=20Same=20change.=0A=E2=80=8B*=20file4=20(variable4):=20= Change=201.=0A(function5):=20Change=202.=0A(function6,=20macro7):=20Same=20= change.=0A#+end_example=0A=0A-=20The=20file=20path=20is=20relative=20to=20= the=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=20= change=20is=20made.=20/=E2=80=9CWhy=E2=80=9D/=20is=20better=20put=20in=20= the=20comments.=0A-=20For=20new=20function=E2=80=8B/=E2=80=8Bvariable=E2=80= =8B/=E2=80=8Bmacro,=20It=20suffices=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-=20Quote=20= function=E2=80=8B/=E2=80=8Bvariable=E2=80=8B/=E2=80=8Bmacro=20like=20= =3D'this'=3D=E2=80=8B,=20not=20like=20=3D`this'=3D.=0A-=20Sames=20as=20= comments=E2=80=94American=20English=20and=20two=20spaces=20after=20every=20= sentence.=0A-=20Use=20the=20present=20tense.=0A-=20(tip)=20=3DM-x=20= fill-paragraph=3D=20is=20your=20friend.=0A=0A**=20Create=20a=20patch=20= and=20send=20it=0A=0ACreate=20a=20single=20patch=20for=20each=20change.=20= Don=E2=80=99t=20send=20a=20patch=20with=20three=20new=20features=20= combined,=20that=20is=20harder=20to=20review;=20on=20the=20other=20hand,=20= don=E2=80=99t=20send=20a=20series=20of=20patches=20for=20a=20single=20= feature,=20squash[fn:1]=20them=20into=20one=20patch.=20Also,=20send=20= your=20patch=20early=20and=20small=20and=20update=20along=20the=20way,=20= that=20also=20helps=20other=20people=20to=20review=20it.=20To=20save=20= you=20from=20googling,=20here=20are=20some=20ways=20to=20create=20a=20= patch:=0A=0A1.=20Use=20Magit.=20To=20generate=20a=20quick=20diff=20= patch,=20open=20a=20diff=20buffer=20by=20either=20=3Dd=20d=3D=20on=20a=20= change=20or=20commit;=20in=20the=20diff=20buffer,=20hit=20=3DW=20s=3D.=20= To=20generate=20a=20patch=20from=20a=20commit=20or=20a=20range=20of=20= commits,=20go=20on=20to=20a=20commit=20and=20do=20=3DW=20c=20c=3D.=20= This=20puts=20the=20patch=20file(s)=20under=20the=20project=20root=20and=20= isn=E2=80=99t=20very=20convenient,=20I=20usually=20just=20do=20=3D!=20!=20= git=20format-patch=20-<#=20of=20commits>=20--stdout=20>=20.=3D=0A= 2.=20=46rom=20command=20line,=20=3Dgit=20format-patch=20-<#=20of=20= commits,=20e.g.,=201>=20--stdout=20>=20=3D=0A=0ATo=20send=20your=20= patch,=20write=20an=20email=20to=20the=20mailing=20list:=20= [[mailto:emacs-devel@gnu.org][emacs-devel]].=20Drag=20your=20patch=20to=20= the=20end=20of=20the=20message=20after=20the=20signature.=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=E2=80=94the=20bug=20tracker=E2=80=94if=20the=20patch=20is=20a=20= bug=20fix.=20(See=20[[Debbugs]].)=0A=0A*=20NEWS=20and=20manual=0A=0AIf=20= you=20made=20a=20user-visible=20change,=20you=20should=20document=20this=20= change=20in=20the=20NEWS=20file,=20possibly=20also=20update=20the=20= manual.=20*You=20don=E2=80=99t=20need=20to=20worry=20about=20these=20= until=20your=20patch=20is=20finalized,=20though.=20So=20maybe=20skip=20= this=20section=20for=20now.*=20And=20Emacs=20maintainers=20will=20let=20= you=20know=20what=20to=20do.=20Below=20is=20the=20relevant=20section=20= in=20=3D/CONTRIBUTE=3D:=0A=0A#+begin_quote=0AAny=20change=20that=20= matters=20to=20end-users=20should=20have=20an=20entry=20in=20etc/NEWS.=0A= Try=20to=20start=20each=20NEWS=20entry=20with=20a=20sentence=20that=20= summarizes=20the=20entry=0Aand=20takes=20just=20one=20line=20--=20this=20= will=20allow=20to=20read=20NEWS=20in=20Outline=0Amode=20after=20hiding=20= the=20body=20of=20each=20entry.=0A=0ADoc-strings=20should=20be=20updated=20= together=20with=20the=20code.=0A=0ANew=20defcustom's=20should=20always=20= have=20a=20':version'=20tag=20stating=20the=20first=0AEmacs=20version=20= in=20which=20they=20will=20appear.=20=20Likewise=20with=20defcustom's=0A= whose=20value=20is=20changed=20--=20update=20their=20':version'=20tag.=0A= =0AThink=20about=20whether=20your=20change=20requires=20updating=20the=20= manuals.=20=20If=20you=0Aknow=20it=20does=20not,=20mark=20the=20NEWS=20= entry=20with=20"=3D---=3D".=20=20If=20you=20know=0Athat=20*all*=20the=20= necessary=20documentation=20updates=20have=20been=20made=20as=20part=0A= of=20your=20changes=20or=20those=20by=20others,=20mark=20the=20entry=20= with=20"=3D+++=3D".=0AOtherwise=20do=20not=20mark=20it.=0A=0AIf=20your=20= change=20requires=20updating=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= -Indices.html][Predefined=20Indices]]=20[fn:2]=0Aor=20run=20the=20shell=20= command=20'info=20"(texinfo)Predefined=20Indices"'.=0A#+end_quote=0A=0A*=20= Debbugs=0A=0A[[https://debbugs.gnu.org][Debbugs]]=20is=20the=20bug=20= tracker=20for=20the=20GNU=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= send=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=20the=20= conversation.=20You=20can=20even=20reply=20by=20=3DS=20w=3D=20on=20a=20= message,=20and=20write=20your=20message=20in=20Emacs,=20and=20hit=20=3DC-c= =20C-c=3D=20to=20send.=20Chose=20=E2=80=9Cmail=20client=E2=80=9D=20and=20= Emacs=20invokes=20your=20default=20mail=20application=20to=20send=20this=20= mail.=20Hit=20=3DC-c=20C-k=3D=20to=20cancel=20the=20message.=0A=0A*=20= GNU=20ELPA=0A=0AHave=20a=20good=20package?=20Add=20it=20to=20GNU=20ELPA!=20= =0A=0APros:=0A-=20Get=20reviews=20from=20people=20that=20know=20Emacs=20= and=20Emacs=20Lisp=20best.=20=0A-=20Instantly=20available=20from=20= vanilla=20Emacs.=20=0A-=20You=20/can/=20host=20your=20package=20on=20= other=20places,=20such=20as=20GitHub.=0A-=20You=20/can/=20push=20to=20= your=20package=20without=20review,=20and=20don=E2=80=99t=20need=20to=20= follow=20Emacs=20conventions=20for=20commit=20messages.=0ACons:=0A-=20= You=20need=20to=20sign=20the=20copyright=20assignment.=20And=20make=20= sure=20all=20the=20contributors=20of=20your=20package=20(with=20a=20= significant=20contribution,=20i.e.,=20=E2=89=A5=20~15=20lines)=20signs=20= it.=0A=0AView=20= [[http://git.savannah.gnu.org/cgit/emacs/elpa.git/plain/README][README]]=20= for=20more=20detailed=20info.=0A=0A*=20Footnotes=0A=0A[fn:1]=20Squash=20= means=20combining=20several=20commits=20into=20one.=20It=20is=20easy=20= to=20do=20with=20Magit:=20=3Dl=20l=3D=20go=20to=20the=20log=20buffer;=20= then=20go=20to=20the=20earliest=20commit=20you=20want=20to=20change,=20= hit=20=3Dr=20i=3D;=20hit=20=3Ds=3D=20on=20the=20commits=20you=20want=20= to=20squash,=20commits=20marked=20with=20=E2=80=9Cs=E2=80=9D=20will=20= squash=20up.=20You=20can=20also=20use=20=3DM-n/p=3D=20to=20move=20the=20= order=20of=20commits;=20then=20hit=20=3DC-c=20C-c=3D=20to=20edit=20the=20= new=20commit=20message,=20and=20=3DC-c=20C-c=3D=20again=20to=20confirm.=0A= =0A[fn:2]=20It=20was=20= =3Dhttps://www.gnu.org/software/texinfo/manual/texinfo/html_node/Predefine= d-Indices.html=3D,=20I=20shortened=20it=20for=20the=20layout.=0A= --Apple-Mail=_54FECFA1-F6BE-494B-B257-D6E9FF24C39F--