Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 15 Dec 1998 00:05:28 +0000
From:      Nik Clayton <nik@nothing-going-on.demon.co.uk>
To:        doc@FreeBSD.ORG
Subject:   New page for mailing lists / projects / resources
Message-ID:  <19981215000528.38029@nothing-going-on.org>

next in thread | raw e-mail | index | archive | help
What is this?

  This is a new structure for presenting some information on the FreeBSD
  web site.

  Specifically, it's for mailing lists, projects, and resources.

  I've often thought that the structure of information on the site could use a 
  little work. In particular, a lot of the development effort for FreeBSD
  centres around the mailing lists. Yet there's no one place subscribers to
  each list can go to find useful information.

  Similarly, the list of FreeBSD projects is organised along similar lines to
  the mailing lists, but they're not cross-referenced.

  Finally, there's information that's not directly tied to active projects --
  for example, resources concerned with advocating FreeBSD.

  What I really wanted was, for each list, a single page that contained
  everything I needed -- all the resources of use to members of the list, a
  list of projects currently involving list members, recommendations for
  other lists that subscribers might be interested in, a way to search the
  list, a way to subscribe, and so on.

  All on one page.

  Of course, there are times this isn't appropriate. Sometimes you just want a 
  big list of all the projects, or all the resources. It can be very tedious
  to have to follow umpteen different links, printing each page. So it was
  important that (at least some of) the information about each mailing list
  could be collated together on to one page.

  This is a snap if your site is coming out of a database. But the FreeBSD
  site isn't. So I've done this using Perl.

What do you do?

  Go and take a look at

      <URL:http://www.freebsd.org/~nik/lists/lists.html>;

  and play around. From that page you can choose to view the information
  in one of three ways;

   1. Mailing-list-centric

      See information about each list. Follow the links to go to a page for
      each list, where you can search the list, subscribe to the list (not yet
      functional), and view projects and resource appropriate to members of
      that list. You also get a list of other lists you might want to
      subscribe to.

   2. Project-centric.

      See a list of the current known projects, organised by mailing list.

   3. Resource-centric

      See a list of the current known resources, organised by mailing list.

  Note that a list may not necessarily have any projects or resources
  associated with it, or it might have one, or both.

What now?

  Is this useful? If so, it'll get committed. If not, it won't.

  I realise it duplicates some information in the Handbook. In this instance,
  I'd be fairly happy to have the mailing list information eventually
  disappear from the Handbook (beyond a note explaining where to look on the
  website for more information).

  I've also only done a few lists, and they're incomplete. This is just so
  that people can play around with the idea, and give me feedback.

  Most of the links to projects and resources that are on the FreeBSD site
  won't work, because these files are built with paths assuming they're part
  of the FreeBSD site, as opposed to being part of my home page.


N

   ------------------------------------------------------------------------
   
Implementation details

  lists.tar.gz contains the SGML used to create this, as well as the other
  scripts. You can download it (from the lists/ directory), and unpack it in a 
  checked out copy of the web site source. You'll need to make a lists/
  directory for it though.

  You can rebuild the HTML by typing "make". You might need to apply
  execute permissions to build_lpr.pl first.

  Ignore the top level directory for a moment, and look at the hackers/
  directory.

  Makefile is a fairly standard Makefile. If you've got more than an index
  file in this directory (see advocacy/ for an example) then the "DOCS=" line
  will need to be expanded. Otherwise, this is all it needs to do.

  about.sgml must exist for each list. It's a paragraph or two of description
  about the list. This will appear on the main list page, as well as the list
  of all mailing lists.

  otherlists.sgml is a simple list of other mailing lists the user might be
  interested in.

  projects.sgml and resources.sgml are HTML fragments that list the projects
  and resources appropriate for this list. Note that this HTML will be
  included in files that appear at two different positions in the tree, so any 
  URLs must be absolute at least as far as the root document.

  By that I mean you can't put in

    <li><a href="../foo.html">Random resource</a></li>

  You *must* put in code like

    <li><a href="/lists/foo.html">Random resource</a></li>

  otherwise links will break. This shouldn't be a problem, even for mirrors.

  list.ent defines three entities, list-title, list-name, and
  list-desc. list-name is the lower case list name (as it would appear in an
  e-mail address), list-title is mixed case. There's no real reason these are
  separate. They could also be derived from the directory name. list-desc is a 
  longer description, as appropriate. For example, list-desc for "freebsd-fs"
  is "Filesystems", which makes more sense when viewed standalone.

  That's all the files you need to define a mailing list.

  Notice that there's no index.sgml file in here. This is where things get a
  little more complicated.

  index.sgml is generated by the Makefile in this directory (by code in
  ../list.mk). It just symlinks ../list-index-template.sgml to
  index.sgml. I'll talk about list-index-template.sgml in a bit.
  
  How go back up to the lists/ directory.

  4 HTML files are built.

  index.html is from index.sgml, and is produced in the standard way.

  lists.sgml, projects.sgml, and resources.sgml are used to produce their
  respective .html files.

  These three files are generated by build_lpr.pl, a small Perl script.

  This script checks that the bare minimum files for list exist. Then it
  produces the three .sgml files.

  For lists.sgml, the contents of each lists' about.sgml file are pulled
  into the lists.sgml file. The same thing happens for projects.sgml and
  resources.sgml (but using each lists' projects.sgml and resources.sgml
  file as appropriate). However, these two need to check that the file
  exists before doing the inclusion, since a list might not have one or
  both of these files.

  list-index-template.sgml is the master file for the index.sgml files for
  each list.

  The top of this file defines 4 special general entities, and 5 parameter
  entity.

  The general entities are 'about', 'projects', 'resources', and
  'otherlists'. Each one of these has an associated parameter entity with a
  "do-" prefix. These are all originally set to "IGNORE". These are then used
  further down in the <body> of the HTML to determine whether or not the
  *.sgml files are included or not.

  These parameter entities may be overridden on the sgmlnorm(1) command
  line. Code in lists.mk checks to see whether each one of those files
  exists. If it does, the "-i" option is used to change the "IGNORE" directive 
  to "INCLUDE". In this way, the .sgml files are only included in the lists'
  index.html file if they already exist.
  
  The fifth parameter entity is list.ent, which is pulls in the list.ent file.

  That's it. It's pretty simple really.  
-- 
	    C.R.F. Consulting -- we're run to make me richer. . .

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-doc" in the body of the message



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?19981215000528.38029>