LINUX GAZETTE ARTICLES

~ means /home/lg.  All programs are in ~/bin unless noted.
~/data/articles is a symlink to ~/data/issues; use whichever you prefer.

===== Preparing the issue =====
1) Run:

    newissue.sh ##

    (## is the issue number.)  This creates ~/issue##/.  The program is
    non-destructive; you can run it even if you've already created the issue
    directory and put some files in it.

2) Edit ~/data/ISSUES to add a line for the next issue.
3) copy previous ~/data/issues/PREVIOUS.yml ###.yml
4) copy previous ~/data/issues/PREVIOUS.yml ###.yml
5) In ###.yml (use leading zero if necessary) delete all entries 
   execept the ones you're sure will be in the next issue.  Remember 
   that you will have to change the titles as you receive the new articles.


===== Adding an author =====
1) Determine the author key (AUTHOR).  It's usually the last name (no spaces or
   special characters).  If that's not unique, use "lastname.firstname" or
   something else.  Sometimes I use the first name or nickname, especially for
   authors from India who do not normally advertise their last name.  If you
   use an unusual key, tell the author to remind you of it when they submit
   future aricles.

2) See if ~/data/authors/AUTHOR exists and is the right person.  Update the
   info if necessary.  
   
3) (In the rare case that it's the wrong person, change it
   to "lastname.firstname" and change all author: references in 
   ~/data/articles/*.yml .)

4) If the key doesn't exist, look in ~/data/legacyAuthors/ .  If found, 
   move it into place, update it, and make sure it's in the correct format.
   In particular, copy the HTML around the bio from ~/data/authors/TEMPLATE.

5) If still not found, copy ~/data/authors/TEMPLATE and modify.
   The file is in rfc822 (email message) format, not YAML.
   name:  as it should be published
   email: as it should be published.  Some authors provide a spam-obscured
      format.
   privateEmail: not published.  Some authors provide a contact address for
      you to use.
   tag:  'y' if the person is a member of The Answer Gang.
   updated:  date updated in YYYY-MM-DD format.

   Body is an HTML snippet that is the author's bio.  Put it between
   <em> and </em>.  If the author doesn't provide a bio, put HTML comment
   markers around it (inside the BEGN/END comments).
   

===== Adding an article =====
1) Determine the author key and add the author as described above.
2) Determine the article key (ARTICLE).  This is normally the same as the
   author key.  If multiple articles by the same author, number them
   (ARTICLE, ARTICLE2, ARTICLE3).  Other article keys I use:
       lg_mail : The Mailbag
       lg_tips : 2-Cent Tips
       lg_answer: The Answer Gang
       lg_bytes: News Bytes
       collinge: HelpDex cartoon strip (author collinge)
       ecol: Ecol cartoon strip (author malonda)
       qubism: Qubism cartoon strip (author harsem)
       foolish: The Foolish Things We Do With Our Computers (author you)
       lg_backpage: The Back Page (author orr)

3) Add or modify a stanza in ~/data/articles/###.yml in YAML format:
       ---
       key:     okopnik
       author:  okopnik
       title:   Perl One-Liner of the Month
   key: is the article key.  author: is the author key.  The order of
   entries determines the TOC.  I order articles by the article key,
   but leave lg_* in their fixed positions.  (lg_backpage goes last if
   present.)

4) Put the HTML file in ~/I/ARTICLE.html (using the article key).

5) Run "refresh".  This rebuilds the article database (~/data/cache.pickle)
   from the config files.  *** ALWAYS RUN "refresh" AFTER MODIFYING ANYTHING
   IN ~/data/, BEFORE RUNNING ANOTHER BUILD COMMAND, or you'll get an error
   or the wrong result. ***

6) Run "article ARTICLE.html" (using the article key).   This (re)generates
   the LG header/footer for the article.  It can be run again later to update
   the header/footer if desired.

7) Clean up the article HTML, delete any style crap or fancy fonts, proofread
   spelling/grammar, etc.  How closely you do this depends on how much time you
   have.  You can send it to a volunteer proofreader if it has a lot of grammar
   mistakes.  Since many LG readers speak English non-natively, we aim to be
   as simple as possible.  Since many readers have text browsers, old browsers,
   Palm pilots, etc, we keep the HTML as simple as possible.  Keep the number
   of images reasonable, since some readers pay lots of $$ for bandwidth.  
   Look for any literal < > & which should be displayed verbatim; you'll have
   to change them to &lt; &gt; &amp; respectively; vim highlights these in an
   red background so they're easy to spot.  We allow authors to send text if
   they don't know HTML; in that case, you'll have to add the HTML tags
   yourself.  You may want to ask some of the proofreaders to be assistant
   editors to lessen the load on yourself.

8) Put supplemental files in ~/I/misc/ARTICLE (using the article key) and
   make sure the links from the article work.  Text files should usually 
   end in .txt; e.g., program.c.txt, program2.py.txt so they show up
   correctly in the browser.  If the article contains a long program listing
   the user might want to run without typing in, copy it to a text file, change
   &lt; &gt; &amp; to < > & respectively.

9) ** ALWAYS USE RELATIVE LINKS FROM ONE PORTION OF LG TO ANOTHER. **
   E.g., "misc/okopnik/flowchart.png", "../issue89/lg_bytes.html".
   Otherwise the links won't work when read on a mirror or off-line.

   Exceptions are CGI scripts, the search page, and some links to the
   home page; always mention that the link is to the main site.

10) When finished, save the original e-mail message in "d".


===== What we publish =====
http://www.linuxgazette.com/faq/author.html explains the guidelines for
articles we publish, both re content and HTML format.  


===== The Mailbag, 2-Cent Tips, The Answer Gang =====
Send the "ljwnn" mailbox to Heather Stern a week before publication.

She will send you a tarball ready to publish, just untar it in ~/I.

The tarball contains a file TWDT.lg_answer##.html .  Move it to
~/twdt/ .  It is needed for the "twdt" command below.

Heather's script often puts an extra "/" in the IMG tag for the LG
logo in lg_*.html.  If the image is broken, check for this.  Also check
for any other obvious errors in the columns and let her know.


===== News Bytes =====
In the second half of the month, send Mick Conry the accumulated "bytes"
mailbox.  Make sure he has a weekend to work on it before the publishing date.
He will send a finished column.  I don't think you need to run "article" on it,
but check.

Copy the current LJ cover image (200x268, png) to ~I/misc/bytes/lj-cover.png
and make sure it shows up all right.

Copy the events from http://www.linuxjournal.com/events.php to the appropriate
section in News Bytes.  (Mick usually does this.)  There are comment markers
in the file showing where to cut.  Delete any references to banner images,
and any entries which will be finished by the publishing date.

Guido Socher will send HTML links to Linux Focus articles (linuxfocus.org).
Put these in the top of the Linux Links section or have Mick do it.  Usually
these come after Mick has finished News Bytes.  LF is published bi-monthly.
(Eventually I'd like to see the LF links on the issue TOC since it's a sister
publication.)

===== Cartoons (HelpDex, Qubism, Ecol) ====
I've been assembling the cartoon articles, and I'll probably continue to do so
when I'm available.  Otherwise you can have the authors assemble the articles,
or you can select the panels from their website or a tarball and assemble the
articles yourself.  To assemble the articles yourself:

1) Place the images in misc/ARTICLE/
2) Run "cartoon ARTICLE".  This creates ARTICLE.html with IMG links.
   The template (~/lib/python/T_Cartoon.tmpl) adds extra text for 
   collinge (HelpDex), ecol and qubism, but you can use the command for any new
   cartoon series.
3) Run "article ARTICLE.html" and edit the article as usual.

===== The Foolish Things We Do With Our Computers ===
When you get enough messages in "foolish", assemble them into an article
similar to the previous ones.
