Troubleshooters.Com
Presents
Linux Productivity
Magazine
Volume
2 Issue 6, June 2003
Introduction
to Gnumeric
|
Copyright (C) 2003 by Steve Litt. All rights reserved.
Materials from guest authors copyrighted by them and licensed for perpetual
use to Linux Productivity Magazine. All rights reserved to the copyright holder,
except for items specifically marked otherwise (certain free software source
code, GNU/GPL, etc.). All material herein provided "As-Is". User assumes all
risk and responsibility for any outcome.
[ Troubleshooters.Com
| Back Issues |Troubleshooting Professional Magazine
]
You don't know what you've got; until
you lose it. -- Ral Donner (from a 1961 song)
|
CONTENTS
Editor's Desk
By Steve Litt
Spreadsheets were the "killer app" that brought personal computers to the
forefront. They're handy little devils. I use spreadsheets for tax calculations,
for quick and dirty calculations of all kinds. On a building project, before
the trip to Home Depot or Lowes, I list all the materials, and their quantities,
so that my shopping goes quickly.
Columnar charts are a snap with spreadsheets. Multiplication tables, bicycle
gear ratio charts, and your kids' growth records are just a few examples.
Spreadsheets make the ideal on-the-fly data acquisition app. They're rows
and columns, just like a database table. In the spreadsheet format, it's easy
to add, delete or rearrange columns, sort rows, or search for rows with specific
attributes.
Most spreadsheets have excellent export mechanisms, meaning that at a later
date you can copy your spreadsheet data into a database table with the same
structure. So spreadsheets give you the benefit of just in time data acquisition,
and yet when the time comes you can easily put collected data in a real database.
Spreadsheets are here to stay, so the remaining question is, which spreadsheet?
Certainly Excel is excellent if you're a Windows or Crossover Office user.
I used Excel for a little while, but it was so featureful I never quite trusted
it, preferring DOS Lotus and Quattro Pro instead.
When I got to Linux, Gnumeric was my choice. It just worked, every time. If
you've ordered books from Troubleshooters.Com after 1/2002, your order info
is in a Gnumeric spreadsheet. There's a sheet for each year, and columns for
each field on the bookstore order form, in the same order as they appear on
the order form. I have Vim scripts to produce mailing labels from spreadsheet
rows.
I'm not saying Gnumeric is for everyone. For one thing, Gnumeric has no macros.
Also, it might not be quite as "user friendly" as spreadsheets like Excel.
And it doesn't have every last feature. But I've found Gnumeric to be rock
solid, so that what it does, it does excellently. This Linux Productivity
Magazine introduces this great spreadsheet, and gives a few examples of how
to use it.
So kick back, relax, and have fun reading learning more about Gnumeric. And
remember -- if you enjoy, use, or write Open Source software, this is your
magazine.
Help Publicize
Linux Productivity Magazine
By Steve Litt
Loyal readers, I need your help.
For months I've publicized Linux Productivity Magazine, expanding it from
a new magazine to a mainstay read by thousands. There's a limit to what I
can do alone, but if you take one minute to help, the possibilities are boundless.
If you like this magazine, please report it to one of the Linux magazines.
Tell them the URL, why you like it, and ask them to link to it.
I report it to them, but they don't take it very seriously when an author
blows his own horn. When a hundred readers report the magazine, they'll sit
up and take notice.
Reporting is simple enough. Just click on one of these links, and report the
magazine. It will take less than 5 minutes.
If you really like this magazine, please take 5 minutes to help bring it to
a wider audience. Submit it to one of the preceding sites.
Introduction to Gnumeric
By Steve Litt
This article introduces Gnumeric, showing how to run it, how to create, save
and open spreadsheets, and how to do very basic math functions with it.
Opening Gnumeric
To open Gnumeric, run the following command at the command prompt:
gnumeric
Gnumeric will come up, looking like a typical spreadsheet, as the following
screenshot shows:

If you get a "command not found" message, Gnumeric probably isn't installed.
Most distros come with Gnumeric, so find the package and install it. Or go
to the Gnumeric website (URL in URL's section of this magazine), download
it, and follow the compilation instructions.
User Interface Areas
The standard Gnumeric user interface has seven areas:
- The Menubar
- The Standard toolbar
- The Format toolbar
- The Data entry area
- The Cell grid area
- The Information area
- The Object toolbar
The following annotated screenshot shows those areas in green italics:

Correcting Mistakes
Entering data in Gnumeric is as simple as navigating to the desired cell,
using either the mouse or cursor keys, and then typing in the desired string,
number or formula. You can always overwrite the contents of a cell by navigating
to that cell and typing, in which case the original contents are overwritten.
To correct an entry rather than erasing and overwriting, navigate to the cell,
and then make the correction in the data entry area.
Adding
Adding and multiplying are simple, as long as you remember to preface formulas
with an equal sign. With the mouse or cursor keys, navigate to cell B3 and
place the number 30 there. Similarly, place the number 40 in cell B4. Now
navigate to cell C1, and type the following:
=b3+b4
After entering the information, press the Enter key. You'll notice that the
number 70 appears in cell C1, but if you look at the data entry area, you'll
see the formula =b3+b4. Now change the contents of cell B3 to 1030,
and you'll see C1 change to 1070. The spreadsheet recalculates on any input
to the sheet.
Subtracting, Multiplying and Dividing
Subtracting, multiplying and dividing work the same as adding. So if you change
the + to a - in cell C1, C1 shows the difference between B3 and B4 instead
of the sum. Here are the operator symbols used in Gnumeric:
Sign
|
Function
|
|
+
|
addition
|
|
-
|
subtraction
|
|
*
|
multiplication
|
|
/
|
division
|
|
()
|
grouping (perform operations inside the parens first)
|
|
A division example
You previously input 1030 into B3, and 40 into B4, and =B3+B4 into C1. Into
C2 input the following:
=C1/10
C2 should now read 107.
Inputting Text
It's very simple to input text. Just navigate to the desired cell and start
typing. As long as part of the string is not numeric, the text will be taken
as a string. If you look in the data entry area, you will see that the text
is preceded by a single quote. That signifies the string is text. If you want
to strongarm something to text when it would normally signify a number (let's
say 400), you can simply precede it with a single quote. Oppositely,
if you want to strongarm something to numeric, precede it with an equal sign,
or it it's a signed number, a minus sign.
Summary
This article discussed running Gnumeric, and simple addition, subtraction,
multiplication, and divsion, as well as inputting text. The main thing to
keep in mind is that when you input non-numeric text it is automatically
prepended with a single quote. When you input a number it is left as is,
and is available for numeric calculations. If you want to input a formula,
you must prepend either an equal sign or a minus sign to inform Gnumeric
that it is to be treated as a number, not a string.
There are seven areas of the Gnumeric user interface:
- The Menubar
- The Standard toolbar
- The Format toolbar
- The Data entry area
- The Cell grid area
- The Information area
- The Object toolbar
You normally input data in the cell grid area, but if you want to modify
(not overwrite) an existing cell entry, you do so by navigating to that cell
and then working in the data entry area.
Cell Formatting
By Steve Litt
Wordprocessor formatting is mainly cutesy stuff like font and spacing. Spreadsheet
cell formatting is fundamental to the entire meaning of the spreadsheet. This
article details major cell formatting options. Here is a list of your main
Gnumeric cell formatting options:
Format
Type
|
Explanation
|
Number
|
What kind of number should it be formatted as. Options
include:
General
|
This is the default. It attempts to choose a
format appropriate to the cell's value. It's an excellent choice for a quick
and dirty spreadsheet.
|
Number
|
Right justifies and formats as a decimal number.
You can choose how many places to the right of the decimal, and whether you
want a thousand's separator. You can choose from among 4 formats to represent
a negative number.
|
Currency
|
This is like the Number format, but includes
a configurable currency symbol which defaults to $. Use this for all cells
containing money.
|
Accounting
|
This is like the Currency format, but removes
several of the options. The negative number representation is always parentheses
with no color change, and there's always a thousands separator.
|
Date
|
A huge variety of numeric ways to represent
the date. It accepts 2 digit years and figures out which century you probably
"meant", but be careful -- the actual data is a 2 digit year so someday the
interpretation could change. I suggest using 4 digit years for everything,
which is guaranteed good until Y10K. A couple formats include hours and minutes,
but unfortunately none is adequate for a timestamp.
To a certain extent, you can input one format and have it show as another.
For instance, if you choose yyyy/mm/dd, you can input numbers as mm/dd/yyyy.
However, the data stored is the data input. They seem to sort reasonably.
Be careful when inputting a format different from the displayed format.
|
Time
|
A huge variety of ways to represent time, including
a couple that prepend the date, which unfortunately aren't adequate for timestamp
use.
|
Percentage
|
Formats as a percentage with a trailing percent
sign. You can configure the places to the right of the decimal. You can input
a number, in which case that number will be multiplied by 100. Or you can
input a percentage, with an appended percent sign, in which case that will
be taken as the literal percentage. The actual data stored is what you input,
so be consistent.
|
Fraction
|
This is cool. You input a decimal number, and
it tries its best to find a numerator and denominator to represent the fractional
part of the number you put in. You can choose between limiting numerator
and denominator to 1 digit or 2. Probably they didn't include any more digits
because 3 would bring a Pentium 150 with 64MB to its knees.
|
Scientific
|
Formats as scientific notation.
|
Text
|
Formats as text, even if it's a number. But
BE CAREFUL. Although it formats existing numbers as text, they are still
right justified and their data is still numeric. However, inputting a new
number into a cell formatted as text automatically prepends a single quote,
thus making the actual data text. Be consistent.
|
Special
|
I don't know what this is. Email me if you find
out.
|
Custom
|
This is a sort of "roll your own" number format.
|
|
Alignment
|
Here's where you choose from left or right alignment,
whether you zero fill, whether you expand to fill the space (full justification),
whether you wrap text. You also define the vertical alignment here.
In a typical columnar spreadsheet, you'd let the numeric formatting determine
alignment. But sometimes you need to strongarm. For instance, you'd right
align headers for numeric fields.
|
Font
|
Everything you'd expect from a font dialog box.
|
Border
|
You can choose the type and weight of borders, and
choose which sides of the cell or group of cells should be bordered.
|
Background
|
Choose the background color, and if you'd like, a
nice background pattern.
|
Protection
|
This effects only protected worksheets, and only for
.xls format. There's no such thing as cell protection in Gnumeric, and you
can type into protected cells.
|
Validation
|
This would kewl if it worked right. You can validate
for specific types of data, in specific value ranges, and you can set what
happens if bad data is input:
- None (silently accept bad data)
- Stop (disallow bad data)
- Warning (prompt user asking if he really wants to input this
bad data)
- Information (accept the data, but print
DANGER WILL ROBINSON! On my copy of Gnumeric, setting to date changes
the displayed format, and worse yet, you cannot get go back to no protection
(or at least I haven't found a way).
|
If your work resembles mine, formatting will be on a per-column basis, because
my columns usually represent a type of information, such as quantity, unit
price, tax, total price, description and the like. To format an entire column,
single click the column header button (containing a letter representing the
column, at the top of the cell grid area). The entire column highlights. Then
right click the column header button, select format cells from the
popup menu, and make your format selections. After formatting the column's
cells, if you have column headers that should be formatted differently, left
click the header's cell to remove all highlighting, then right click within
that cell and make your format selections. By formatting an entire column
first, you guarantee that when adding rows, those rows will be bound by the
column's formatting.
Formulas
By Steve Litt
A formula is an equation based on constants and cell values that evaluates
to a number, or occasionally to a string. So that formulas are not assumed
to be strings, they must start with an equal sign or a minus sign. There are
actually other signs that tell Gnumeric it's a formula, but the equal sign
and minus sign are sufficient for any application.
As a simple formula, input the following into C1:
=(a1+a2)*a3
Now put 1 into cell a1, 2 into a2, and 3 into a3. The result is, as expected,
9 (3 x 3). If you change a1 to 11, the result becomes, as expected, 39 (13
x 3). Formulas re-evaluate on the fly as long as all their component information
is contained on the current worksheet. If they depend on information from
other worksheets, recalculate with Edit->Recalculate.
Functions
Gnumeric has a rich collection of built in functions. A function is a named
formula that evaluates to a number. Some of the most used built in functions
are:
There's a volumninous collection of built in functions covering date and time,
interest calculations, trigonometry, statistics, math, geometry, random numbers,
strings, complex numbers, and much more. Functions take arguments in parentheses.
These arguments can be formulas, cell values, or constants.
Place 1 in a1, 2 in a2, 3 in a3, and then in C1 place
=SUM(a1,a2,a3)
C1 evaluates to 6, the sum of the three cells.
Ranges
More handily, make it a range:
=SUM(a1:a3)
C1 once again evaluates to 6. This is a great way for summing entire ranges
of numbers. Better yet, there are a couple shortcuts.
Click C1 and press the Del key to delete its contents (the formula). Now type
the following, without pressing Enter:
=SUM(
Now click cell A1, and shift-click A3, and notice that Gnumeric fills in the
range for you. Press the Enter key, and Gnumeric auto-fills the trailing paren
for you and calculates. This is very handy for running a formula on any type
of range.
Range summing is such a common operation that there's a button to write the
=SUM( for you. It's the sum button, and it looks like this:

Ranges are typically contiguous, but they can also be disjunct. For instance,
you could have the following formula:
=sum(A1:A2,B4:B5)
The preceding represents the sum of range A1 to A2, and range B4 to B5. You
can have Gnumeric fill it in for you by typing =SUM(, selecting the
first range with the mouse, then pressing the comma button to insert a comma
after the range, and use the mouse to select the second range, on and on
until all range components are selected.
Experiment with mouse selection of ranges and cells within formulas. On large
spreadsheets, it makes things much easier. Also experiment with the many functions
available.
Using Gnumeric
for Quick and Dirty Data Entry
By Steve Litt
We all know data should be kept in a database. Databases are optimized for
insertion, retrieval, and relational linkage.
But sometimes you need to capture data quickly. You don't have time to add
a table, and you REALLY don't have time to create a front end for that table,
and you ESPECIALLY don't have time to input data using SQL statements into
the universal front-end packaged with the database (e.g, Postgres' psql).
Sometimes it' not a matter of time, but a matter of expecting the table's
structure to change. How many times do you want to execute an Alter Table
SQL statement.
At such times, consider using Gnumeric to capture the data. Start with an
empty Gnumeric workbook, and make column headers corresponding to database
columns in the order you will be receiving them from a paper form or a questionaire
or whatever. Once the headers are in place, you want to make them visible
even after you've entered so much data that the headers would have normally
scrolled off the page. You accomplish this with the "Freeze Panes" Gnumeric
feature.
Place the cursor immediately below and to the right of that first header.
If your leftmost header is at cell A1, place the cursor in cell B2. Next,
View->Freeze_Panes, and note that a horizontal line appears below your
headers, and a vertical line appears to the right of your first column. You
can now scroll down as far as you want and still see the headers. You can
also scroll as far to the right as you want and see the first column. This
behavior is EXTREMELY handy for data entry. Note that although the freeze-panes
feature is in the View menu, it's persistent within the workbook, and survives
exit from the program and reentry into the program.
You're not done yet. Each column needs to be formatted for the data it will
hold. Left click the column head button to highlight the column, then right
click it, choose Format, and then format as approppriate. Do that for each
column. Save, back up, and you then can begin to add data.
If your columns are in the same order as the information you're receiving,
data entry is lightning quick. Type the data for a column, then then press
the Tab key to go to the next column. When finished with the last column,
press Enter key and the cursor will move to the column below the last one
you punched data into, which is the new row to be filled. Then press the Home
key to move to the start of the new row. This is a faster user interface than
the typical data entry program.
Fringe Benefits
It's quick! It's dirty! But wait, there's more.
Using Gnumeric to punch data means you can total fields on the fly. Use the
techniques described in the Introduction
to Gnumeric article and the Formulas article
to do any necessary calculations, no matter how difficult. Use cells outside
the data columns to hold the formulas.
Gnumeric is a wonderful table prototyping tool. You might not have known the
exact column layout when you started. Using Gnumeric, you can quickly add,
delete, change, and even reorder columns. To add a column, left click the
column header button of the column BEFORE which the new one should be inserted.
Then rightclick, choose Insert Columns, and boom, you have a new column to
headerize and format.
To switch two columns, follow this procedure:
- Left click the header button of the leftmost of the column pair
- Right click the column header button, and choose Insert Column. You
now have a blank column befoire the leftmost column
- Left click the rightmost of the column to select the whole column.
- Right click the column header button, and choose Cut
- Left click the column header of the blank column.
- Right click the column header button of the blank column and choose
Paste from the popup menu
- Repeat the same procedure to place the formerly leftmost column into
the blank column formerly the rightmost column
- Once they've been switched, delete the blank column by leftclicking
its column header button, then right clicking and choosing Delete Columns
Other rearrangements can be done in a similar manner.
Last but not least, when your table structure is stable, and you've had a
chance to build a user interface app for the table in a real database, you
can move your Gnumeric data into a database table. Read on...
Exporting Gnumeric Data
By Steve Litt
First, be aware that Gnumeric native format is XML, which means if nothing
else works, you or a computer programmer of your choosing can always write
a program to parse and reformat its data. Wouldn't you like that privelege
in MS Office apps?
Fortunately there's usually an even simpler choice -- data export. It's trivially
simple. You export to a comma separated file. Unfortunately, you cannot export
a selection -- it needs to be an entire worksheet, or even a workbook. So
if you need to export just a selection, copy and paste that selection into
a new sheet and export that sheet.
To export, perform the following:
- Pick the separator character. It must be a single character. Find a
character that does not exist in the worksheet. The pipe symbol is often
a good choice. Check with Gnumeric's search function (F7 key) to verify that
your chosen character doesn't exist in the worksheet. If it does, either
choose a different character, or within the worksheet change the data so
the character no longer appears.
- File->Save as
- Set File format to Text export(configurable) in the dropdown list box
- Pick a filename, NO EXTENSION
- Click OK
- If prompted whether you want to overwrite an existing file, either
click Yes or click No and try again with a different filename
- You're now on the "Export structured text" dialog box.
- Choose the worksheet you want to export, then click Next
- Choose the appropriate line termination (Unix for Linux users)
- Change the separator character to the one you picked in step 1. If
that is not one of the choices, pick "Custom", and type your chosen character
in the field.
- Choose "None" for quoting. Other forms of quoting in Gnumeric exports
are inconsistent and hard to parse.
- Leave quote character alone -- you're not using quoting
- Click Finish
You now have a file showing all rows and columns. If you had column headers,
they appear also. Edit the file to get rid of any garbage that isn't legitimate
table data. When you have a file consisting of pure data, use a good editor
such as Vim to convert this file to a series of SQL statements capable of
building the new table. Then use your packaged database front end (e.g. psql
for Postgres) to run that file, loading the new table.
That's it. During the period where you're experimenting with the table's
structure, you can use Gnumeric to house its data. Once everything's set,
you can export the data, convert it to a series of SQL statements, and run
the file of SQL statements to build the table.
Gnumeric Gotchas
By Steve Litt
Now I'll show you the landmines so you can stay away from them.
First, WATCH OUT for search and replace (F6). NEVER use search and replace
to perform simple searches. Use simple search (F7) instead. Using search and
replace silently replaces with whatever's in the replace field, and if that
field is blank, it deletes the search term. The way F6 works, you can end
up thinking Gnumeric has garbled your data, when in reality it just did what
you said to do.
Next, beware of cell validation (Format->Cells->Validation_tab). On
my copy of Gnumeric, setting validation to date changes the displayed format,
and worse yet, you cannot get go back to no protection (or at least I haven't
found a way). In general, once you've set validation for a cell or group of
cells, you can't turn it off. If you know of a way to get around this behavior,
please email me.
Steve Litt is the author of the course
on the Universal Troubleshooting Process. He can be reached at Steve Litt's email address.
Gnumeric Quickhacks
By Steve Litt
Here's an exercise that demonstrates the Autofill feature, copy and paste,
relative and absolute cell addresses, and creating/expanding selections with
the mouse and with the keyboard. We'll make a multiplication table in 2 minutes.
- Make the Top Multiplier Row
- Put 1 in B1
- Put 2 in C1
- Click B1
- Shift click M1 (you'll need to use the horizontal scrollbar to get
there)
- You've just selected a region with click and Shift+Click
- Edit->Fill->Autofill
- You've just used the Autofill feature
- Note that B1..M1 is now valued 1..12
- Make the Left Multiplier Row
- Put 1 in A2
- Put 2 in A3
- Click A2
- Shift click A13
- Edit->Fill->Autofill
- Note that A2..A13 is now valued 1..12
- Make the First Row of products
- Put =$a2*b$1 in B2. The first multiplier is relative on column
and absolute on row. The second multiplier is absolute on column and
a relative on row.
- You've just used absolute and relative cell addressing
- Click B2 and press Ctrl+C to copy
- You've just copied B2 to the clipboard
- Click C2
- Shift click M2 (you'll need to use the horizontal scrollbar to get
there)
- Press Ctrl+V to paste
- You've just pasted into an entire region
- Note that you now have the first row of products
- Make the rest of the products
- Click B2
- Press Shift+End to highlight all the data in the row
- You've just selected using the keyboard and End key
- Press Ctrl+C to copy
- Click B3
- Shift Downarrow to B13
- You've just used the keyboard to extend a selection
- Shift Rightarrow to M13
- You've just used the keyboard to extend a selection
- Press Ctrl+V to paste
- Note that you now have a multiplication table
- Press Esc to eliminate the dotted selection lines
- File->Save as, and save it as multtable
Feature
|
Purpose
|
Comments
|
Autofill
|
Create sequences
|
The first 2 define the starting point and increments,
and the rest of the selection is filled with resulting values.
|
Relative cell reference
|
Keeps relative context when copied
|
The default. Lack of dollar sign on a row or column
designation of a cell makes that row or column designation relative. This
only matters when copied.
|
Absolute cell reference
|
Forces absolute context when copied.
|
The dollar sign on a row or column designation of a
cell makes that row or column designation absolute, meaning that when copied,
the new cell's row or column remains the same as the original. This only matters
when copied. |
Selection
|
Creates an area to be copied from or pasted to
|
You can use the mouse's shift+click to define a selection,
or you can use the keyboard's shift+End or shift+arrow to grow a selection.
You can use the keyboard to create a selection, grow it from a single cell.
|
Use autofill to automatically create sequences. Choose from relative and
absolute cell references, on either/both column and/or row, in order to set
copied cell references as either relative to the original's references, or
identical to the original's references. Use selections to copy, paste, and
autofill.
Creating A Fibonacci Sequence
The Fibonacci series is a numeric series in which each member of the sequence
is the sum of the previous 2:
- 1, 1, 2, 3, 5, 8, 13, 21, ...
Creating this series is a 20 second endeavor:
- Put 1 in A1
- Put 1 in A2
- Put =a2+a1 in A3
- Click and Ctrl+C A3 to copy the formula to the clipboard
- Click A4
- Shift+DownArrow from A4 down to A24
- Ctrl+V to paste
- Your series is now in place.
This is an example how quickly you can work with Gnumeric.
Learning More About Gnumeric
By Steve Litt
The info in this Linux Productivity Magazine issue is enough to get you started,
but it's just the tip of the iceberg. Your next stop is the outstanding Gnumeric
help system. Clicking on the Gnumeric menu's Help choice brings up Gnumeric
manual, Gnumeric function reference, and About. The function reference
lists every built in function, its arguments, and what it does. You'll learn
whether the function is Excel compatible (many are).
The manual tells you almost everything you'd want to know about Gnumeric.
Its organization is such that you might have to do a little looking, but
it's all there. It makes a good read for a rainy Saturday afternoon.
Armed with the info in the manual, you can now proceed to the net. Insert
the word Gnumeric plus the subject you want to find. For instance, to learn
details about graphing in Gnumeric, insert Gnumeric graphs into Google.
DO NOT use doublequotes, as you're looking for two keywords, not one phrase.
Life After Windows: SCO and Microsoft:
More Questions than Answers
Life After Windows is a regular Linux Productivity Magazine column,
by Steve Litt, bringing you observations and tips subsequent to Troubleshooters.Com's
Windows to Linux conversion.
By Steve Litt
Some consider me an alarmist. So don't take my word for it. Look at SCO's
own website:
- http://ir.sco.com/ReleaseDetail.cfm?ReleaseID=109149
- "LINDON, Utah, May 14, 2003 -- The SCO®
Group (SCO)(Nasdaq: SCOX), the owner of the UNIX operating system, today
warned that Linux is an unauthorized derivative of UNIX and that legal liability
for the use of Linux may extend to commercial users."
- http://ir.sco.com/ReleaseDetail.cfm?ReleaseID=109147
- "SCO updated its guidance on expected results for its second fiscal
quarter ended April 30, 2003. The Company expects to report net income of
approximately $4.0 million, or $0.29 per diluted share, on estimated revenue
of $21.0 million.
Of the $21.0 million in anticipated second-quarter revenue, approximately
$12.8 million is expected to come from the sale of its operating system platform
products, and $8.2 million is expected to come from its SCOsource licensing
initiative. The Company's current fiscal year ends October 31, 2003."
The first quote threatens END USERS of Linux. The fact that
they limit this threat to "commercial" users isn't reassuring. After all,
why use Linux if not to make money. Also interesting is their characterization
of Linux as an "unauthorized derivative of UNIX", especially in light of the
GNU project's cleanroom construction of GNU, including its name, which stands
for "GNU's Not Unix". Are they saying that Linus constructed the kernel while
simultaneously viewing UNIX source code?
The financials in the second quote are also interesting. With "SCOsource licensing",
they expect to be $4M in the black per quarter. According to their quoted
figures, without it, they would be $4.2M in the red. There's the motive,
folks.
If their motive were merely protecting their "intellectual property", SCO
would simply say "packages x, y and z are ours". The Linux community would
then clean-room rewrite those packages, and all would be well. But according
to Computerworld, SCO was unwilling to state which Linux code was pilferred:
- http://www.computerworld.com/softwaretopics/os/linux/story/0,10801,81403,00.html
- " The SCO Group Inc. has resigned its membership
in a German Linux association after the group asked the company to provide
more information about its recent claims that some of its Unix code has illegally
made its way into Linux."
So perhaps the motive is more than mere intellectual
property protection. Is it spiteful revenge against the OS that ruined SCO's
marketplace? Is it a parasitic attempt to leach onto Linux' success? Or is
it something darker?
Recent headlines announce that Microsoft licensed SCO's code. Here's the press
release from SCO's own website:
- http://ir.sco.com/ReleaseDetail.cfm?ReleaseID=109360
- "LINDON, Utah, May 19, 2003 -- The SCO®
Group (SCO) (Nasdaq: SCOX), the owner of the UNIX®
operating system, today announced it has licensed its UNIX technology including
a patent and source code licenses to Microsoft®
Corporation. The licensing deal ensures Microsoft's intellectual property
compliance across all Microsoft solutions and will better enable Microsoft
to ensure compatibility with UNIX and UNIX services."
Does this sound like the Microsoft that you know?
The Microsoft that outlasted the Clinton era justice department, and sweethearted
the Bush era justice department? Is big, bad Microsoft scared of little old
SCO? Or is Microsoft just being ethical?
Or is it something darker?
Let's look at the proabable results of Microsoft's licensing SCO's code and
patents:
- Microsoft money keeps SCO's doors open, so SCO can continue to intimidate
would-be Linux users
- Microsoft's acquiescense discourages others from defying SCO's threats
For pocket change, Microsoft can introduce a brand new type of fear, uncertainty,
and doubt into the Linux world, thereby hurting their only major operating
system competitor. Could this be Microsoft's motive for "giving in" to dinky
SCO?
Maybe. But in that case, why wouldn't Microsoft simply buy every share of
SCO stock, so that they own the intellectual property, after which Microsoft's
lawyers could start suing Linux end users. That might quickly put Linux out
of business.
Perhaps Judge Colleen Kollar-Kotelly isn't as pro-Microsoft as we all thought.
After all, she ruled that she be left in the loop. If Microsoft acquired
ownership of the intellectual property purporting to prevent its only competition
from functioning, perhaps that might raise a red flag.
Or perhaps Microsoft is worried about the future. But for 500 votes in the
2000 election, Microsoft might have had severe behavoral, or possibly even
structural penalties. With the economy failing, the current monopoly tolerant
administration might fall, replaced by trust-busters. The government brought
2 antitrust actions against Microsoft in 5 years. Perhaps, with a new administration,
a new antitrust action might be brought in 2005. If so, directly threatening
users of the one remaining competitor might not look too good. So perhaps
it's best to let another company do the threatening. After all, who could
fault Microsoft for licensing technology? You have to admit, it's pretty
slick.
Can it get any darker than this? Perhaps...
It was recently reported that SCO, formerly Caldera, is busy shredding the
paperwork from their DR-DOS lawsuit against Microsoft. Follow the steps here.
Microsoft, who beat the United States Justice Department, merrily hands over
cash to puny SCO for some "intellectual property" that questionably applies
to Linux. And SCO shreds what could be the most damning antitrust evidence
ever gathered on Microsoft. Hmmm...
How will the Open Source community respond to this new challenge? Will we
ignore it, hoping that somehow the problem will go away? Will we refuse to
get involved out of a belief that government should not interfere with the
software marketplace, while SCO uses government laws, government courts and
government guns to intimidate Linux users?
Will we band together to create a legal fund, so that the first end-user victim
of an SCO lawsuit will be suitably fortified, making SCO sorry they'd ever
gone to court? Will we each obtain a single share of SCO, and then create
dozens of stockholder resolutions banning Linux suits, creating poison pills
that turn its intellectual property to GPL upon sale, and the like? Will we
organize a boycott of SCO?
Will SCO's actions be the catalyst that finally forces us to take our heads
out of the sand, understand that the world isn't a meritocracy, and admit
we need publicity and legal strategy. Will RedHat, SuSe, FSF, EFF, IBM, and
Linux International lead the way to provide legal strategy and lobbying? Will
the nation's and world's LUGs provide manpower and contributory financial
help for this endeavor?
This article asks many questions and gives no answers. I have no crystal ball,
nor do I have electronic bugs planted in the meeting rooms at SCO and Microsoft.
It would be nice to end this article with a statement, but there's no certain
statement to be made. So this article ends with yet another question:
Will we band together to help Linux survive this crisis? Or will we impotently
mutter after it's gone?
Steve Litt is the author of the course
on the Universal Troubleshooting Process. He can be reached at Steve Litt's email address.
Letters to the Editor
All letters become the property of the publisher (Steve Litt), and may
be edited for clarity or brevity. We especially welcome additions, clarifications,
corrections or flames from vendors whose products have been reviewed in this
magazine. We reserve the right to not publish letters we deem in bad taste
(bad language, obscenity, hate, lewd, violence, etc.).
Submit letters to the editor to Steve Litt's email address, and be sure
the subject reads "Letter to the Editor". We regret that we cannot return
your letter, so please make a copy of it for future reference.
How to Submit an Article
We anticipate two to five articles per issue, with issues coming out monthly.
We look for articles that pertain to the Linux or Open Source. This can be
done as an essay, with humor, with a case study, or some other literary device.
A Troubleshooting poem would be nice. Submissions may mention a specific product,
but must be useful without the purchase of that product. Content must greatly
overpower advertising. Submissions should be between 250 and 2000 words long.
Any article submitted to Linux Productivity Magazine must be licensed with
the Open Publication License, which you can view at http://opencontent.org/openpub/.
At your option you may elect the option to prohibit substantive modifications.
However, in order to publish your article in Linux Productivity Magazine,
you must decline the option to prohibit commercial use, because Linux Productivity
Magazine is a commercial publication.
Obviously, you must be the copyright holder and must be legally able to
so license the article. We do not currently pay for articles.
Troubleshooters.Com reserves the right to edit any submission for clarity
or brevity, within the scope of the Open Publication License. If you elect
to prohibit substantive modifications, we may elect to place editors notes
outside of your material, or reject the submission, or send it back for modification.
Any published article will include a two sentence description of the author,
a hypertext link to his or her email, and a phone number if desired. Upon
request, we will include a hypertext link, at the end of the magazine issue,
to the author's website, providing that website meets the Troubleshooters.Com
criteria for links and that the author's
website first links to Troubleshooters.Com. Authors: please understand we
can't place hyperlinks inside articles. If we did, only the first article
would be read, and we can't place every article first.
Submissions should be emailed to Steve Litt's email address, with subject
line Article Submission. The first paragraph of your message should read as
follows (unless other arrangements are previously made in writing):
Copyright (c) 2003 by <your name>. This material
may be distributed only subject to the terms and conditions set forth in the
Open Publication License, version Draft v1.0, 8 June 1999 (Available
at http://www.troubleshooters.com/openpub04.txt/ (wordwrapped for readability
at http://www.troubleshooters.com/openpub04_wrapped.txt). The latest version
is presently available at http://www.opencontent.org/openpub/).
Open Publication License Option A [ is | is not] elected,
so this document [may | may not] be modified. Option B is not elected, so
this material may be published for commercial purposes.
After that paragraph, write the title, text of the article, and a two sentence
description of the author.
Why not Draft v1.0, 8 June 1999 OR LATER
The Open Publication License recommends using the word "or later" to describe
the version of the license. That is unacceptable for Troubleshooting Professional
Magazine because we do not know the provisions of that newer version, so it
makes no sense to commit to it. We all hope later versions will be better,
but there's always a chance that leadership will change. We cannot take the
chance that the disclaimer of warranty will be dropped in a later version.
Trademarks
All trademarks are the property of their respective owners. Troubleshooters.Com(R)
is a registered trademark of Steve Litt.
URLs Mentioned in this Issue
- MISC URLs
- Gnumeric URLs
- SCO/Microsoft URLs
- http://www.sco.com: Website of the
folks saying they might sue you for using Linux in a business context.
- http://ir.sco.com/ReleaseDetail.cfm?ReleaseID=109149:
Here's where SCO threatens to (maybe) sue you if you use Linux in a business
context.
- http://ir.sco.com/ReleaseDetail.cfm?ReleaseID=109147:
SCO's financials, showing their motive, and perhaps an explanation for the
going's on between SCO and Microsoft.
- http://www.computerworld.com/softwaretopics/os/linux/story/0,10801,81403,00.html:
Computerworld reports that SCO quits a German
Linux association after the association asked for clarification on claims
that Linux code was pilfered from UNIX.
- http://ir.sco.com/ReleaseDetail.cfm?ReleaseID=109360:
SCO's announcement that Microsoft has licensed its UNIX technology.
- http://www.caldera.com: URL
of this former Linux distributor now redirects to the SCO website.
- http://www.computerworld.com/softwaretopics/os/linux/story/0,10801,81488,00.html?nas=AM-81488:
Article: SCO's licensing deal with Microsoft raises user doubts.
- http://www.computerworld.com/governmenttopics/government/legalissues/story/0,10801,81448,00.html?nas=PM-81448:
Computerworld reports that approximately 3 million pages of Microsoft documents
that were part of Caldera's DR-DOS suit are being shredded at the request
of SCO (formerly Caldera).
- http://www.techlawjournal.com/courts/caldera/Default.htm:
Get it while you still can -- Caldera's DR-DOS complaint against Microsoft.
With DR DOS case materials being shredded, one can only wonder how long this
URL will stay valid. Download it and store it in a safe place, so it's not
lost forever.
- http://www.maxframe.com/DR/Info/fullstory/amendment.html:
One more place you can still find Caldera's DR-DOS complaint against Microsoft.