Tcl Improvement Proposal

Difference between version 40 and 41 - Previous - Next
A '''[https://core.tcl-lang.org/tips/%|%TIP]''', or '''T'''cl
'''I'''mprovement '''P'''roposal, is the mechanism by which changes to [Tcl] and
[Tk] are introduced, accepted, and documented.


** See Also **

   [Documentation]:   The top page for Tcl documentation 

   [List of TIPs]:   a list of TIPs with a presence on this wiki



** Documentation **

   TIP [https://core.tcl-lang.org/tips/doc/trunk/tip/2.md%|%2, TIP Guidelines]:   describes and defines the editorial process a TCT document (TIP) has to go through before accepted as official.  Also provides a skeleton TIP.

   TIP [https://core.tcl-lang.org/tips/doc/trunk/tip/3.md%|%3, TIP Format]:   describes the structure and formatting to use when writing a TIP

See [https://core.tcl-lang.org/tips/] for the complete list of TIPs with category and status.

** Description  **

The [TIP] process was established by the [Tcl Core Team] for proposing,
discussing, and implementing changes to the core Tcl and Tk source distribution
that would result in [C] [API] or [script] level API interfaces.

TIP [https://core.tcl-lang.org/tips/doc/trunk/tip/7.md%|%7] is a good example of a TIP
that is following the format, procedure, etc. ''except'' that implementations
should be submitted as patches to the appropriate project and a link to the
patch item made in the TIP itself.  (This policy exists because TIPs are
published on news:comp.lang.tcl.announce.)

Votes require (an) implementation (plan).

A "Feature Request" is a lighter-weight entry point for people with clearer
ideas about needs than implementation.



** Q&A **

'''Q.''' ''Why write a TIP instead of some other ad-hoc format?''

'''A.''' Because it makes life much easier for virtually everyone if there is a
document, conforming to some standard format, that details the design decisions
involved.  It is also archived properly, and published in a standard fashion in
places which assure reasonably good amounts of eyeball-time from those with an
interest.  These are ''big'' advantages.  Think of this as being a process
similar to the IETF Request for Comment (RFC) or the Python PEP process.

'''Q.''' ''Will you accept my TIP?''

'''A.''' Yes, provided it fits the formatting standard (I might help out if I'm
not snowed under with work,) has reasonable spelling/grammar (it doesn't have
to be perfect, but have a care for your readers,) and is not either a duplicate
of an existing TIP (duh!) or not related to Tcl/Tk (I've not had to invoke this
last clause yet.)  I want to get as many TIPs published as possible, and you
should remember that the publishing of a draft TIP is just the start of a
process; you will still be able to make changes and it is quite possible that
further discussion will ensue.

'''Q.''' ''How do I submit?''

'''A.''' Follow these [https://core.tcl-lang.org/tips/doc/trunk/doc/help.md%|%instructions]

'''Q.''' ''It is a lot of work; why?''

'''A.''' Getting your thoughts together into an organized-enough state for
other people to comprehend them always is.  It is worth the effort though,
especially since if you wanted anyone to really get interested in the idea,
you'd probably have had to put the effort in anyway.

'''Q.''' ''Why the arcane format?''

'''A.''' It gives us a chance at doing all sorts of sophisticated processing,
whereas doing so with random pieces of HTML is... hard... and if you allow
several formats (Word, WordPerfect, HTML, XML, nroff, FrameMaker, LaTeX, plain
text, etc.) it really doesn't give anyone a fair chance!  The format is fairly
close to the Wiki format used here.  See TIP#3 for details...


'''Q.''' ''I've a great idea for Tcl - where do I start?  At what point does
someone submit the TIP?''

'''A.''' [Donal Fellows] writes on comp.lang.tcl: "... TIPs are really intended
for submissions with coding effort already arranged to back them up, and
patches should be submitted to the SourceForge patch manager (for technical
reasons; your TIP can always refer to them by URL.)

If there's no TIP to back up a patch, you can just submit the patch itself to
SF (and contact me at [email protected] if you think a TIP might be
needed; I might co-author/ghost-write one. :^)  OTOH, if you have a suggestion
but currently no opportunity to back it up with code, use the Feature Request
tracker on SF instead (not that this guarantees that the feature will get
implemented, as the core maintainers have quite big workloads already, alas.)

'''Q.''' ''But wait!  I'm not a C programmer.  I just have a great idea that I
want you guys to put into Tcl!''

'''A.''' [DKF]: Well, at least submit a Feature Request to SourceForge. Then
the idea won't get lost. But since there's always more to do than people to do
it, the things that get done will be the things that have someone really trying
to get them done.

Note that the Tcl C code is much easier to read than most projects.

'''Q.''' ''I see some TIPs listed on the above web site that were submitted
months ago.  Do all TIPs take a year or more to be approved?''

'''A.''' Some TIPs are more intended to point the way towards how things are
done, and so are being left open.  Most of the TIPs intended for actual changes
in Tcl or Tk, etc. are dealt with in a timely fashion.  Some TIPs are either
vague in their implementation detail or were mistakenly submitted without
having code support and so are waiting further discussion.  And some just slip
for no good reason; prod a [TCT] member by email or on the chat if you feel
that insufficient action is being taken!

'''Q.''' ''Does submission of a TIP mean that the idea will go into Tcl's
core?''

'''A.''' Not at all.  In fact, a recent [TCT] posting by [John Ousterhout]
mentions that there is, in general, 2 reasons for putting something in the
core:

   1. The existing Tcl C APIs don't permit the feature to be implemented as an extension (if this is the case, we should first consider adding the bare minimum API support to permit external implementation, as opposed to putting the entire feature into the core).

   2. The feature is needed by a substantial fraction of the entire Tcl community.



** Misc **

One possible ideal:  [TCT] does as little as possible with TIPs.  That is, TCT
supervises/manages/oversees the process.  Engineering work shouldn't be a TCT
responsibility (in general?  sometimes?  ...).

Note that a number of TCT members are also active TIP authors, but this does
not let anyone off the hook.  The TCT makes sure the engineering quality of
suggestions is good enough and provides technical reviews of them.
''Implementations have to be supplied by the proposer'' though if (s)he can get
someone to help, that's all to the good of course...

----

[Category TIP] is given to wiki pages relating to [TIP]'s. However, it
'''might''' be better for the conclusions or major points of discussions to be
added to the tips. 

----

Suggestion: When a TIP is approved and implemented, add the feature, and
TIP#[[appropriate number] to the appropriate [Changes in Tcl/Tk] page.  This
effort has begun, but help filling in the older TIP info would be greatly
appreciated.

[DKF]: The info goes in the `ChangeLog` (the definitive detailed history) then
the `changes` file, and only then to the wiki page (i.e. it's a part of the
release activity). Unless someone puts it in first of course.

----

Taking a look at https://core.tcl-lang.org/tips/ reveals that

   * 1 non-technical TIP is in "Active" state
   * 21 non-technical (process or informative) TIPs and 87 project TIPs are in "Draft" state
   * 4 non-technical and 1 project TIP are in "Accepted" state
   * 6 project TIPs are in "Deferred" state
   * 4 non-technical and 206 project TIPs are in "Final" state
   * 23 project TIPs are in "Rejected" state
   * 1 non-technical and 36 project TIPs are in "Withdrawn" state

I think this ends up being about 53% of the submitted improvements have been
implemented and another 22% await an advocate to see the process through the
vote. 

[DKF]: Right now on https://core.tcl-lang.org/tips/, there are **2** Accepted, **4** Deferred, **24** Obsoleted, **25** Rejected, **29** Withdrawn, **318** Final and **114** Draft _Project_ TIPs. (Non-project TIPs aren't as closely monitored.) Note that the numbers don't quite align with above due to the presence of Obsoleted TIPs. That's approximately a 73% acceptance rate (it's a little higher because some TIPs are Obsoleted/Final and others are Obsoleted/Withdrawn) and a bit under a 5% reject rate.

Remember, there is one main thing needed to move a TIP forward: an implementation! Once it has one of those, we can sort out whether it fits with Tcl and Tk (most suggestions do). Sometimes when we reject things, it's because we have worked out a better idea. (Note that rejections and withdrawals tend to peak shortly before we lock down the feature list of a version.)

----

[DKF]: I use https://docs.google.com/spreadsheets/d/1DrAM1sOL6BQgUycQCqzO0gFey6c375b39KaFnFlOYpc/edit?usp=sharing to track what TIPs I'm working on and (considering) sponsoring. Others may have different priorities.

----
'''[NR] - 2024-03-14 16:03:34'''

Can an ordinary person write a TIP? Or submit a proposal for improvement that can then be transformed into a TIP.

----
'''[stevel] - 2024-03-15 01:28:51'''

Anyone can write a TIP but you will need a sponsor on the TCT to bring the TIP forward for a vote.  Typically people float their ideas on the Tclers Chat or on the TCLCORE list (the first is more interactive) then ask for feedback and discussion. Once you've refined your ideas ask for a sponsor on TCLCORE (someone may have already volunteered by then).

----
'''[NR] - 2024-03-27 09:01:20'''

Thanks Steve, I've tried the TkChat solution without success, I've written a ticket to explain my problem and asked for a bit of help but it's off-topic. For the second solution, you have mentioned the TCLCORE list, how can I access it ?

----
'''[stevel] - 2024-03-28 02:38:42'''

https://sourceforge.net/projects/tcl/lists/tcl-core
----
'''[NR] - 2024-03-29 07:43:12'''

Ok, well TkChat was the best solution, I don't want to pollute with questions that may have already been asked. Maybe I'll just wait for my ticket to be answered. Thanks anyway.

<<categories>> Community | TIP