unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
* tags for functions
@ 2009-01-20 20:36 Ted Zlatanov
  2009-01-20 20:44 ` Lennart Borgman
  0 siblings, 1 reply; 36+ messages in thread
From: Ted Zlatanov @ 2009-01-20 20:36 UTC (permalink / raw)
  To: emacs-devel

Ted Z wrote in comp.emacs and gnu.emacs.help:

> On Sat, 17 Jan 2009 10:29:45 -0800 (PST) Xah Lee <xah...@gmail.com> wrote:
>
> XL> Note that listing related functions in a function's doc is in many
> XL> programing manuals. e.g Mathematica, MS's JScript, PHP ... they are
> XL> quite useful. Because for those not expert yet of a lang (which is
> XL> majority), often they do not know similar functions or do not know if
> XL> there's manual section that list such, and often are confused about
> XL> the differences of many functions that seems the same ....
>
> I agree this would be useful. It's best done with tags IMO, rather
> than explicitly listing the related functions. For example, motion
> commands should be tagged "motion" and then every command with that
> tag can automatically list every motion command. The key is that the
> extra work is in classification, not in tediously listing every
> command's peers.
>
> Tags I could use: motion, file, coding-system, menu, buffer, process
>
> Each package should probably tag its commands with the package name.
>
> Short tags are not always descriptive enough, but long tags get
> unpleasantly verbose so the real art is in balancing between the two.
>
> Anything more hierarchical than tags is painful to manage in the long run.

A tangential discussion about the inconsistent naming of motion commands
led me to the proposal above.

I think it would be a nice addition to Emacs.  I did a search and didn't
find prior relevant discussions.

Every package with a comment stating Keywords: at the beginning could
automatically give those keywords as tags to its functions.  That would
probably be 50% or less of the total needed tags, but it's an easy
start.

Ted





^ permalink raw reply	[flat|nested] 36+ messages in thread
* Re: tags for functions
@ 2009-01-22  8:07 MON KEY
  2009-01-22 14:47 ` Ted Zlatanov
  0 siblings, 1 reply; 36+ messages in thread
From: MON KEY @ 2009-01-22  8:07 UTC (permalink / raw)
  To: tzz; +Cc: emacs-devel

>2) refine the keywords into a simple taxonomy that is not too big nor too small.
> The first question I have is, how to associate keywords with a function?

Keep in mind that a taxonomic description of code's content/concepts
is entirely different from a coded object class hierarchy - the
distinction is subtle and all to often overlooked... esp. by
programmers who *are* in fact quite adept at creating taxonomy in
code.

Please consider examining the following standard for a comprehensive
approach to accomplishing this task with optimal consideration of TRT.

ANSI/NISO Z39.19-2005
Guidelines for the Construction, Format, and Management of Monolingual
Controlled Vocabularies
ISBN: 1-880124-65-3

Available here: http://www.niso.org/standards/resources/Z39-19-2005.pdf




^ permalink raw reply	[flat|nested] 36+ messages in thread
* Re: tags for functions
@ 2009-01-22 18:15 S+*n_Pe*rm*n
  2009-01-22 18:49 ` MON KEY
  2009-01-22 20:38 ` Ted Zlatanov
  0 siblings, 2 replies; 36+ messages in thread
From: S+*n_Pe*rm*n @ 2009-01-22 18:15 UTC (permalink / raw)
  To: tzz; +Cc: emacs-devel

Ted, I offer up the following with the caveat that I wouldn't be
taking the time to expound on this matter without the recognition your
ability to best implement the system. I apologize if my tone comes
across as overly pedantic - it is certainly not my intention.

>Well, at 180 pages of dense information this is a serious standard.

Its a serious subject matter.

>it defines "taxonomy" as a structural hierarchical classification,

I disagree - the standard doesn't make such an overt distinction -
this is your characterization/reduction.

>whereas I've used it loosely to mean a tag space.

'Tag Space/cloud' is a catch phrase for lazy cataloging - when
implemented on the scale you are proposing my intuition is that it
will fall over - do you know of such an implementation that doesn't?.

Tagging in the sense that you seem to be using the term is best left
to domains which lack a characteristic structure and/or which can't be
pre-limited/defined.

You have the opportunity *now* to reduce the number of potential core
`tags'. You appear to be suggesting that this is your intention. Such
an effort is best characterized as the production of a controlled
vocabulary.  Apropos of this, I am proposing you formalize the
production according to the best practices outlined by the standard.
Doing so will afford you the

>Since we're not classifying general knowledge but a very specific domain
>(Emacs Lisp functions).

This was my earlier point about programmers missing a very subtle distinction.
The domain of Emacs Elisp functions has specificity - to the extent
that there is a syntax and grammar for invoking those functions.

*What* the Emacs lisp code *does*, and *how* it is/may be *applied*,
and under what circumstances it may be best applied `generally' is an
entirely different matter. This is precisely why Elisp functions have
doc strings, why Emacs is self describing, and why promotes writing
code in a literate style.

>It makes some good points, but things like a full hierarchy are
>overkill

I suggest that a closer examination will reveal just the opposite.

> and others like proper name conventions just don't apply.
What about Internationalization?

>I'll try to be consistent with its naming recommendations, at least.

Good. This gist of the entire standard is relatively straightforward
and could can be reasonably reduced to a system of Suffix keywords
(terms) attached to the following `typed' Headwords:

- BT Broader Term
  BTG Broader Term (generic)  **
  BTI Broader Term (instance) **
  BTP Broader Term (partitive) **
- NT Narrower Term
  NTI Narrower Term (instance) **
  NTG Narrower Term (generic) **
  NTP Narrower Term (partitive) **
- RT Related Term
- TT Top Term
- U USE
- UF USED FOR
- HN History Note
- SN Scope Note

**These can be omitted and the system will retain its core functionality.

> It brings up "synonym rings" which may be necessary:

It brings up 4 possible domains of description - these aren't mutually
exclusive:

-Lists of controlled terms;
-Synonym rings;
-Taxonomies;
-Thesauri

>I propose 50% of the effort is to come from each package's predeclared >Keywords header.

I am suggesting that ceding this amount of effort to the author poses
an otherwise avoidable burden and is not DTRT esp. as Emacs Elisp
should provide this facility directly.

While the author of is the entity most aware of how his/her
functions/package inter-operate and she should be able to freely
assign keywords which she deems most appropriate as descriptors of
their potential domain of operation. However, what the author may not
be aware of is how his/her functions/packages inter-operate with a)
Emacs List and b) Other Packages/functions.

Placing the burden of awareness on the author is not an acceptable
solution. Emacs/Elisp should provide a controlled (extensible)
thesauri from which an package author can choose without concern for
how the entire system (extended or otherwise) operates.

> With synonym rings, we can associate synonymous keywords together.

Exaclty! This is in fact what the standard attempts to achieve and why
it was suggested as a guideline to best practices :)

So the issue then becomes how best to provide a thesauri which can
reasonably accommodate a diverse user base with diverse needs and
perspectives.

This is the domain of cataloging, *not* coding.

Your proposed implementation should also take into consideration that
the keyword structure need be robust enough to accommodate
internationalization. Again the standard addresses this in a coherent
fashion - `Tag Space' cannot accommodate internationalization issues.

Finally, I believe that in lieu of an increasing focus on FDL (Free
Documentation License) - Creative Commons - it is very important to
consider that much of what you are proposing is concerned with the
documentation side of Elisp code.  Future generations may well elect
to catalog and access this `content' as "prose" rather than as "code".

By accommodating a robust standard of thesauri construction such as
Z39.19 future GPL/FDL'd Elisp code would present an immediate
standardized mechanism by which code-librarians/catalogers might
readily access the information utilizing other standardized systems
such as Z39.50/ISO 23950 (Information Retrieval (Z39.50): Application
Service Definition and Protocol Specification).   In essence, not only
would such packages be 'self-describing/self-documenting' they would
also become 'self-cataloging' and potentially accessible via CQL
(Common Query Language) or whatever else comes along.

Stan




^ permalink raw reply	[flat|nested] 36+ messages in thread
* Re: tags for functions
@ 2009-01-23  1:46 S+*n_Pe*rm*n
  2009-01-27 18:53 ` MON KEY
  0 siblings, 1 reply; 36+ messages in thread
From: S+*n_Pe*rm*n @ 2009-01-23  1:46 UTC (permalink / raw)
  To: tzz; +Cc: emacs-devel

>Perhaps you should start a
>separate thread and make a specific proposal.  The standards you have
>listed, while very thorough, are not as helpful in such a proposal as a
>clear classification proposal that can be seen and touched.

I'll bite :)

I've created a Mercurial repo with the a proposal as I understand it.

You can hg pull and/or download it from:
http://sp_dbc@bitbucket.org/sp_dbc/emacs-thesauri-permuted/

Example of Emacs/Elisp thesauri - permuted by hand from .info/.texi
files for Emacs and Elisp manuals

the `.el' file includes:
Top Terms
Broader Term ==> Narrower Term relationships

This should provide a good pool of keywords even if you only approach
the problem from a `tag cloud' perspective.

s_P




^ permalink raw reply	[flat|nested] 36+ messages in thread

end of thread, other threads:[~2009-01-31 17:52 UTC | newest]

Thread overview: 36+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-01-20 20:36 tags for functions Ted Zlatanov
2009-01-20 20:44 ` Lennart Borgman
2009-01-21 22:11   ` Ted Zlatanov
2009-01-21 22:13     ` Lennart Borgman
2009-01-22 14:20       ` Ted Zlatanov
2009-01-22 19:39         ` Stefan Monnier
2009-01-22 20:09           ` Ted Zlatanov
2009-01-21 22:22     ` Glenn Morris
2009-01-22 14:54       ` Ted Zlatanov
2009-01-25  0:32         ` Juri Linkov
2009-01-26 19:50           ` Ted Zlatanov
2009-01-26 23:55             ` Juri Linkov
2009-01-27 14:31               ` Ted Zlatanov
2009-01-28  0:02                 ` Juri Linkov
2009-01-28  0:36                   ` Lennart Borgman
2009-01-28 17:41                   ` Ted Zlatanov
2009-01-28 18:40                     ` Stefan Monnier
2009-01-28 20:38                       ` Ted Zlatanov
2009-01-29  1:43                         ` Stefan Monnier
2009-01-29 20:03                           ` Ted Zlatanov
2009-01-29 21:52                             ` Stefan Monnier
2009-01-30 15:34                               ` Ted Zlatanov
2009-01-30 16:06                                 ` Drew Adams
2009-01-30 16:52                                   ` Ted Zlatanov
2009-01-31 17:52                                     ` Juri Linkov
2009-01-31  1:55                                   ` Stefan Monnier
2009-01-31  2:02                                     ` Drew Adams
2009-01-29 20:32                           ` Lennart Borgman
2009-01-30 15:29                             ` Ted Zlatanov
  -- strict thread matches above, loose matches on Subject: below --
2009-01-22  8:07 MON KEY
2009-01-22 14:47 ` Ted Zlatanov
2009-01-22 18:15 S+*n_Pe*rm*n
2009-01-22 18:49 ` MON KEY
2009-01-22 20:38 ` Ted Zlatanov
2009-01-23  1:46 S+*n_Pe*rm*n
2009-01-27 18:53 ` MON KEY

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).