TIP: | 16 |
Title: | Tcl Functional Areas for Maintainer Assignments |
Version: | $Revision: 1.48 $ |
Authors: |
Don Porter <dgp at users dot sourceforge dot net> Daniel Steffen <das at users dot sourceforge dot net> |
State: | Accepted |
Type: | Process |
Vote: | Done |
Created: | Tuesday, 21 November 2000 |
This document proposes a division of Tcl's source code into functional areas so that each area may be assigned to one or more maintainers.
TCT procedures (see TIP #0) call for each maintainer to be responsible for a portion of Tcl's source code. Certain portions of Tcl's source code are naturally associated with certain other portions. (For example, the implementation of a command is intimately related to the documentation for that command.) Establishing a natural division of Tcl's source code into units needing maintainers is a useful preliminary effort toward a public call for volunteer maintainers.
See TIP #24 for the mapping of these functional areas to maintainers.
When someone reports a bug, or offers a patch, he will want to be able to determine what maintainers have oversight over his report. This implies that we seek a simple mapping from something he knows about his bug or patch to the set of maintainers.
For a patch, the submitter certainly knows what file(s) she is patching. For a bug report, the reporter is likely to know what command or C function he believes to be buggy. Fortunately, every C function or Tcl command (combined with the platform) can be associated with exactly one source code file, the file providing the definition of the C function, or the command procedure of the Tcl command. Thus, a mapping from source code file to maintainer is sufficient to complete the determination.
The source code file should not be the largest unit, however. Certain sets of files should each be gathered into a larger unit, all files in that unit with the same maintainer(s). Tcl's man pages already gather related routines and commands into one page of documentation. Using the modules implied by the man pages, and by the location of routines in particular source code files, a natural division of Tcl into minimal maintainer units follows in the Proposal section below.
It may be that some of these minimal units can be joined together into still larger related units. That is not necessary, though. We can just have the same maintainer(s) assigned to all the related minimal units.
Tcl shall be divided into the following functional units, each to be assigned one or more maintainers:
Notifier - doc/CrtFileHdlr.3, doc/DoOneEvent.3, doc/Notifier.3, doc/Sleep.3, generic/tclNotify.c, macosx/tclMacOSXNotify.c, tests/notify.test, tests/unixNotfy.test, tests/winNotify.test, unix/tclUnixNotfy.c, unix/tclUnixEvent.c, win/tclWinNotify.c
Event Loops - doc/bgerror.n, doc/update.n, doc/vwait.n, doc/BackgdErr.3, doc/Exit.3, generic/tclEvent.c, tests/event.test
Timer Events - doc/after.n, doc/CrtTimerHdlr.3, doc/DoWhenIdle.3, generic/tclTimer.c, tests/timer.test
Asynchronous Events - doc/Async.3, generic/tclAsync.c, tests/async.test
Xt Based Notifier - unix/tclXtNotify.c, unix/tclXtTest.c
Time Measurement - compat/gettod.c, compat/strftime.c, doc/clock.n, generic/tclClock.c, generic/tclGetDate.y, library/tzdata/*, tests/clock.test, tests/winTime.test, tools/loadICU.tcl, tools/makeTestCases.tcl, tools/tclZIC.tcl, unix/tclUnixTime.c, win/tclWinTime.c
Variable Commands and Interfaces - doc/append.n, doc/array.n, doc/global.n, doc/lappend.n, doc/lset.n, doc/set.n, doc/unset.n, doc/upvar.n, doc/variable.n, doc/SetVar.3, doc/UpVar.3, generic/tclVar.c, tests/append.test, tests/lset.test, tests/set.test, tests/set-old.test, tests/upvar.test, tests/var.test
Environment Variables - doc/Environment.3, generic/tclEnv.c, tests/env.test
Linked C Variables - doc/LinkVar.3, generic/tclLink.c, tests/link.test
Object System and Fundamental Object Types - doc/Backslash.3, doc/BoolObj.3, doc/Concat.3, doc/DoubleObj.3, doc/DString.3, doc/Encoding.3, doc/FindExec.3, doc/Hash.3, doc/IntObj.3, doc/Object.3, doc/ObjectType.3, doc/PrintDbl.3, doc/SplitList.3, doc/StringObj.3, doc/StrMatch.3, generic/tclEncoding.c, generic/tclHash.c, generic/tclObj.c, generic/tclStringObj.c, generic/tclUtil.c, library/encoding/*.enc, tools/encoding/*, tests/dstring.test, tests/encoding.test, tests/stringObj.test, tests/obj.test, tests/util.test
Conversions From String - doc/GetInt.3, generic/tclGet.c, tests/get.test
bytearray Object Type - doc/binary.n, doc/ByteArrObj.3, generic/tclBinary.c, tests/binary.test
index Object Type - doc/GetIndex.3, doc/WrongNumArgs.3, generic/tclIndexObj.c, tests/indexObj.test
list Object Type - doc/ListObj.3, generic/tclListObj.c, tests/listObj.test
dict Object Type - doc/DictObj.3, doc/dict.n, generic/tclDictObj.c, tests/dict.test
A - H - doc/break.n, doc/case.n, doc/catch.n, doc/cd.n, doc/concat.n, doc/continue.n, doc/encoding.n, doc/error.n, doc/eval.n, doc/exit.n, doc/expr.n, doc/file.n, doc/for.n, doc/foreach.n, doc/format.n, generic/tclCmdAH.c, tests/cmdAH.test tests/case.test, tests/concat.test, tests/error.test, tests/eval.test, tests/foreach.test, tests/format.test, tests/for-old.test
I - L - doc/if.n, doc/incr.n, doc/info.n, doc/join.n, doc/lindex.n, doc/linsert.n, doc/list.n, doc/llength.n, doc/lrange.n, doc/lreplace.n, doc/lsearch.n, doc/lsort.n, generic/tclCmdIL.c, tests/cmdIL.test, tests/if-old.test, tests/incr-old.test, tests/info.test, tests/join.test, tests/lindex.test, tests/linsert.test, tests/list.test, tests/llength.test, tests/lrange.test, tests/lreplace.test, tests/lsearch.test
M - Z - doc/pwd.n, doc/regexp.n, doc/regsub.n, doc/rename.n, doc/return.n, doc/split.n, doc/string.n, doc/subst.n, doc/switch.n, doc/throw.n, doc/time.n, doc/try.n, doc/while.n, generic/tclCmdMZ.c, tests/cmdMZ.test tests/pwd.test, tests/rename.test, tests/split.test, tests/string.test, tests/subst.test, tests/switch.test, tests/while-old.test
[history] - doc/history.n, doc/RecEvalObj.3, doc/RecordEval.3, generic/tclHistory.c, library/history.tcl, tests/history.test
[interp] - doc/interp.n, doc/CrtSlave.3, doc/Limit.3, generic/tclInterp.c, tests/interp.test
[namespace] - doc/Namespace.3, doc/namespace.n, generic/tclEnsemble.c, generic/tclNamesp.c, generic/tclResolve.c, tests/namespace.test, tests/namespace-old.test
[proc] - doc/proc.n, doc/uplevel.n, generic/tclProc.c, generic/tclTestProcBodyObj.c, tests/proc.test, tests/proc-old.test, tests/uplevel.test
[scan] - doc/scan.n, generic/tclScan.c, tests/scan.test
Channel Commands - doc/close.n, doc/eof.n, doc/exec.n, doc/fblocked.n, doc/fconfigure.n, doc/fcopy.n, doc/flush.n, doc/gets.n, doc/open.n, doc/puts.n, doc/read.n, doc/seek.n, doc/socket.n, doc/tell.n, generic/tclIOCmd.c, tests/exec.test, tests/ioCmd.test, tests/remote.tcl, tests/socket.test
Channel System - doc/chan.n, doc/fileevent.n, doc/ChnlStack.3, doc/CrtChnlHdlr.3, doc/CrtCloseHdlr.3, doc/CrtChannel.3, doc/DetachPids.3, doc/GetStdChan.3, doc/OpenFileChnl.3, doc/StdChannels.3 generic/tclIO.c, generic/tclIO.h, generic/tclPipe.c, tests/chan.test, tests/chanio.test, tests/io.test
Channel Transformations - generic/tclIOGT.c, generic/tclIORTrans.c, tests/iogt.test, tests/ioTrans.test
Built-in Channel Types - compat/waitpid.c, doc/GetHostName.3, doc/GetOpnFl.3, doc/OpenTcp.3, doc/pid.n, generic/tclIOSock.c, generic/tclIORChan.c, tests/pid.test, tests/winConsole.test, tests/winPipe.test, unix/tclUnixChan.c, unix/tclUnixPipe.c, unix/tclUnixSock.c, win/cat.c, win/stub16.c, win/tclWinChan.c, win/tclWinConsole.c, win/tclWinPipe.c, win/tclWinSerial.c, win/tclWinSock.c
dde Package - doc/dde.n, library/dde/pkgIndex.tcl, tests/winDde.test win/tclWinDde.c
http Package - doc/http.n, library/http1.0/http.tcl, library/http1.0/pkgIndex.tcl, library/http/http.tcl, library/http/pkgIndex.tcl, tests/http.test, tests/httpd, tests/httpold.test
msgcat Package - doc/msgcat.n, library/msgcat/msgcat.tcl, library/msgcat/pkgIndex.tcl, tests/msgcat.test
opt Package - library/opt/optparse.tcl, library/opt/pkgIndex.tcl, tests/opt.test
registry Package - doc/registry.n, library/reg/pkgIndex.tcl, win/tclWinReg.c, tests/registry.test
Safe Base - doc/safe.n, library/safe.tcl, tests/safe.test
tcltest Package - doc/tcltest.tcl, library/tcltest/tcltest.tcl, library/tcltest/pkgIndex.tcl, tests/tcltest.test
TclOO Package (see TIP #257) - doc/Class.3, doc/Method.3, doc/class.n, doc/copy.n, doc/define.n, doc/my.n, doc/next.n, doc/object.n, doc/self.n, generic/tclOO.c, generic/tclOO.decls, generic/tclOO.h, generic/tclOOBasic.c, generic/tclOOCall.c, generic/tclOODefineCmds.c, generic/tclOOInfo.c, generic/tclOOInt.h, generic/tclOOMethod.c, tests/oo.test
Pathname Management - doc/filename.n, doc/glob.n, doc/FileSystem.3, doc/SplitPath.3, doc/Translate.3, generic/tclFileName.c, tests/fileName.test, tests/unixFile.test, tests/winFile.test, unix/tclUnixFile.c, win/tclWinFile.c
File System Access - doc/Access.3, doc/GetCwd.3, doc/SetErrno.3, doc/Signal.3, generic/tclFCmd.c, generic/tclIOUtil.c, generic/tclPathObj.c, generic/tclPosixStr.c, macosx/tclMacOSXFCmd.c, tests/fCmd.test, tests/ioUtil.test, tests/unixFCmd.test, tests/winFCmd.test, unix/tclUnixFCmd.c, win/tclWinError.c, win/tclWinFCmd.c
doc/library.n, doc/tclvars.n, doc/unknown.n, doc/Init.3, doc/SourceRCFile.3, generic/tclInitScript.h, library/auto.tcl, library/init.tcl, library/parray.tcl, library/word.tcl, macosx/tclMacOSXBundle.c, tests/autoMkindex.tcl, tests/autoMkindex.test, tests/init.test, tests/platform.test, tests/security.test, tests/unixInit.test, tests/unknown.test, unix/tclUnixInit.c, win/tclWinInit.c
Package Management - doc/InitStubs.3, doc/package.n, doc/packagens.n, doc/pkgMkIndex.n, doc/PkgRequire.3, doc/tm.n, generic/tclPkg.c, generic/tclStubLib.c, library/package.tcl, library/tm.tcl, tests/package.test, tests/pkg.test, tests/pkgMkIndex.test, tests/pkg/*.tcl, tests/tm.test
Dynamic Loading - compat/dlfcn.h, doc/load.n, doc/StaticPkg.3, generic/tclLoad.c, generic/tclLoadNone.c, library/ldAout.tcl, tests/load.test, unix/dltest/*, unix/tclLoad*.c, win/tclWinLoad.c
Allocation - doc/memory.n, doc/Alloc.3, doc/TCL_MEM_DEBUG.3, doc/DumpActiveMemory.3, generic/tclAlloc.c, generic/tclCkalloc.c, generic/tclThreadAlloc.c
Preservation - doc/Preserve.3, generic/tclPreserve.c
doc/re_syntax.n, doc/RegExp.3, generic/regc_color.c, generic/regc_cvec.c, generic/regc_lex.c, generic/regc_locale.c, generic/regc_nfa.c, generic/regcomp.c, generic/regcustom.h, generic/rege_dfa.c, generic/regerror.c, generic/regerrs.h, generic/regex.h, generic/regexec.c, generic/regfree.c, generic/regfronts.c, generic/regguts.h, generic/tclRegexp.c, generic/tclRegexp.h, tests/reg.test, tests/regexp.test, tools/uniClass.tcl
doc/ToUpper.3, doc/UniCharIsAlpha.3, doc/Utf.3, generic/tclUtf.c, tools/uniParse.tcl, tests/utf.test, win/tclWin32Dll.c
Parsing and Evaluation - doc/AddErrInfo.3, doc/AllowExc.3, doc/AssocData.3, doc/CallDel.3, doc/CmdCmplt.3, doc/CrtCommand.3, doc/CrtObjCmd.3, doc/CrtInterp.3, doc/CrtMathFnc.3, doc/Eval.3, doc/ExprLong.3, doc/ExprLongObj.3, doc/GetVersion.3, doc/Interp.3, doc/NRE.3, doc/ParseCmd.3, doc/SaveResult.3, doc/SetRecLimit.3, doc/SetResult.3, doc/Tcl.n, generic/tclBasic.c, generic/tclParse.c, generic/tclParseExpr.c, generic/tclResult.c, tests/assocd.test, tests/basic.test, tests/cmdInfo.test, tests/dcall.test, tests/expr-old.test, tests/parse.test, tests/parseExpr.test, tests/parseOld.test, tests/result.test, tests/stack.test
Traces - doc/TraceVar.3, doc/TraceCmd.3, doc/trace.n, doc/CrtTrace.3, generic/tclTrace.c, tests/trace.test
Bytecode Compiler - compat/float.h, generic/tclAssembly.c, generic/tclCompCmds.c, generic/tclCompCmdsSZ.c, generic/tclCompExpr.c, generic/tclCompile.c, generic/tclCompile.h, generic/tclExecute.c, generic/tclLiteral.c, generic/tclMathOp.c, generic/tclOptimize.c, tests/appendComp.test, tests/compExpr-old.test, tests/compExpr.test, tests/compile.test, tests/execute.test, tests/expr.test, tests/for.test, tests/if.test, tests/incr.test, tests/lsetComp.test, tests/regexpComp.test, tests/stringComp.test, tests/while.test
Number Handling (see TIP #237) - generic/tclStrToD.c, generic/tclTomMath.h, generic/tclTomMathInterface.c, generic/tommath.h, libtommath/*
doc/Thread.3, generic/tclThread.c, generic/tclThreadJoin.c, generic/tclThreadStorage.c, generic/tclThreadTest.c, tests/thread.test, unix/tclUnixThrd.c, unix/tclUnixThrd.h, win/tclWinThrd.c, win/tclWinThrd.h
doc/AppInit.3, doc/Tcl_Main.3, doc/Panic.3, doc/tclsh.1, generic/tclMain.c, generic/tclPanic.c, tests/main.test, unix/tclAppInit.c, win/tclAppInit.c
Release Notes - README, changes, license.terms, */license.terms, compat/README, generic/README, macosx/README, tests/README, tests/pkg/license.terms, tools/README, unix/README, win/README
Portability Support - compat/dirent.h, compat/dirent2.h, compat/limits.h, compat/fixstrtod.c, compat/memcmp.c, compat/opendir.c, compat/stdlib.h, compat/string.h, compat/strncasecmp.c, compat/strstr.c, compat/strtod.c, compat/strtol.c, compat/strtoul.c, compat/tclErrno.h, compat/tmpnam.c, compat/unistd.h, generic/tclMath.h, generic/tclPort.h, unix/tclMtherr.c, unix/tclUnixPort.h, unix/tclUnixCompat.c, win/tclWinMtherr.c, win/tclWinPort.h
Configuration and Build Tools - djgpp/Makefile, macosx/Makefile, macosx/Tcl.pbproj/project.pbxproj, tests/all.tcl, tools/configure.in, tools/eolFix.tcl, tools/genStubs.tcl, tools/index.tcl, tools/Makefile.in, tools/man2help.tcl, tools/man2help2.tcl, tools/man2tcl.c, tools/mkdepend.tcl, tools/tcl.hpj.in, tools/tcl.wse.in, tools/tclSplash.bmp, tools/tcltk-man2html.tcl, tools/white.bmp, unix/Makefile.in, unix/aclocal.m4, unix/configure.in, unix/install-sh, unix/ldAix, unix/mkLinks, unix/mkLinks.tcl, unix/tcl.m4, unix/tcl.spec, unix/tclConfig.sh.in, win/Makefile.in, win/aclocal.m4, win/buildall.vc.bat, win/coffbase.txt, win/configure.in, win/makefile.vc, win/makefile.bc, win/mkd.bat, win/rmd.bat, win/rules.vc, win/tcl.dsp, win/tcl.dsw, win/tcl.hpj.in, win/tcl.m4, win/tcl.rc, win/tclConfig.sh.in, win/tclsh.ico, win/tclsh.rc
Configuration Reporting (see TIP #59) - doc/RegConfig.3, generic/tclConfig.c, generic/tclPkgConfig.c, tests/config.test, win/tclWinPkgConfig.c
Other Tools - tools/checkLibraryDoc.tcl, tools/findBadExternals.tcl, tools/genWinImage.tcl, tools/man2html.tcl, tools/man2html1.tcl, tools/man2html2.tcl, tools/regexpTestLib.tcl
LibTomMath - libtommath/*
zlib (see TIP #234) - doc/zlib.n, doc/TclZlib.3, generic/tclZlib.c, tests/zlib.c
The following files are shared by all of Tcl. Any maintainer may modify them as necessary to complete changes they are making to their portion of Tcl. Some of the following files define Tcl's API and should be changed only in accordance with TCT approval.
ChangeLog, ChangeLog.*, doc/man.macros, generic/tcl.decls, generic/tcl.h, generic/tclInt.decls, generic/tclInt.h, generic/tclTest.c, generic/tclTestObj.c, tests/misc.test, unix/tclUnixTest.c, win/tclWinInt.h, win/tclWinTest.c
The following files are generated, so they don't need maintainers.
generic/tclDate.c, generic/tclUniData.c, generic/tclDecls.h, generic/tclIntDecls.h, generic/tclIntPlatDecls.h, generic/tclOODecls.h, generic/tclOOIntDecls.h, generic/tclOOStubInit.c, generic/tclOOStubLib.c, generic/tclPlatDecls.h, generic/tclStubInit.c, generic/tommath.h, library/tclIndex, unix/configure, win/configure
This document has been placed in the public domain.
[Index] [History] [HTML Format] [Source Format] [LaTeX Format] [Text Format] [XML Format] [*roff Format (experimental)] [RTF Format (experimental)]
TIP AutoGenerator - written by Donal K. Fellows