$VER: Product-Info_Specification 8.0 (23.3.96) --------------------------------------------------------------------------- Product-Info Specification Version 8 March 23, 1996 --------------------------------------------------------------------------- PURPOSE A 'Product-Info' should accompany every released product: software, images, animation, sound, etc. The purpose of a 'Product-Info' is to describe a product in a way that is reasonably complete so that a customer can perform searches on a collection of 'Product-Info' files (records) with a reasonable expectation of locating desired products or excluding undesired ones. The structure of the data is designed so that a search can be defined with some certainty of its "correctness." By providing a well-written 'Product-Info' with your product, you assure yourself of maximum potential exposure to customers who are looking to fill a need that your product might fill. AUDIENCE This document is aimed both at the developer of a product who needs to write an effective and complete Product-Info, as well as at the customer who stands a better chance of locating satisfactory products without having to wade through an inordinate amount of irrelevant products, if she understands what a Product-Info offers. If you are not a developer, you may want to skip down to the EXPORTING AND IMPORTING DATA and the STANDARD FIELDS sections. COPYRIGHT The 'Product-Info' specification is free of copyrights and is freely distributable and available for use by any individual or organization that honors the basic ideas of this document: to provide a fairly concise and relatively burden-free description for a product. AUTHORSHIP The 'Product-Info' specification was designed by Udo Schuermann <walrus@RingLord.com> with initial design criteria and much feedback offered by Fred Fish <firstname.lastname@example.org> and Richard Fish <email@example.com> Support for 'Product-Info' files was first offered in the form of my product "KingFisher Release 2", which is available on Aminet, nearly all of the Fish CD-ROMs for the Amiga, and from the KingFisher home page on the World Wide Web: KingFisher 2 STORAGE A 'Product-Info' is a set of information stored in a file with your project. There are three standard filenames which you can use (the quotes are not part of the name): 1. "Product-Info" 2. ".Product-Info" (note the leading period) 3. "project.pi" ("project" would be replaced by your project's name; example: "KingFisher.pi" or "DiskSalv.pi" or "VT.pi" The file must conform to the following rules: 1. The file may begin with comment line, but is not required to do so. A comment is either a blank line (one that has no text, no blank spaces, no tabs) or a line beginning with a `'#' (hash) symbol. Any combination of these will be ignored at the BEGINNING of the file. 2. The first field (following the optional comments) in the 'Product-Info' must be "name"; Fields are identified by a Field Identifier and followed by their contents. Field contents are ended when another field is encountered or by the end of file. 3. A Field Identifier begins with a "." (dot, period) as the first character on a line, immediately followed by the name of the field. The "name" field is identified by ".name"; The name of the field is separated from the field contents by a white space. White space is a blank, a tab, or a new- line. It is recommended to use a newline, rather than space or tab. A field name cannot contain white space, obviously. 4. The contents of the field may span one or more physical lines in the file. Some fields ignore anything past the first newline; others will ignore newlines and treat them as if they were a normal blank space; other fields require newlines to separate sub-components from each other. It is the purpose of the file you are currently reading to tell you the meaning of each of the defined fields. 5. A collection of fields (beginning with the "name" field) represents a Product-Info record. A record is terminated by the end of file, by the presence of a blank line containing a ^N (control-N) symbol, or by the presence of another "name" field. Thus, a 'Product-Info' may store information for more than a single project, although this practice is in general not encouraged. This feature is used, however, for the construction of variant-record-size databases such as used by KingFisher, but these are not a distribution format that go along with a project. That's the difference. 6. Field names and field contents should use the ISO Latin 1 character set which is the default of the World Wide Web and also the standard of the Amiga computer. The character ^N (ctrl-n) is reserved as a separator between disks in a database of collected records, should this be a desirable feature. 7. If, in the contents of a field, a physical line of text begins with a period (such as ".guide files are provided...") then the period should have a "\" symbol added before the period, as in "\.guide files are provided..." to prevent the line to be interpreted as a new field ("GUIDE") with the contents starting as "files are provided..." In general, it is permitted to "escape" a period in this manner anywhere in a field's contents. 8. A backslash ("\") is represented by placing \\ in the contents of a field. This permits special layout control sequences to be introduced through the \ key, much like the "\." suppresses the interpretation of a line-leading period as the introducer for a field name. 9. Field name identifiers are not case sensitive. FUTURE EXTENSIONS The 'Product-Info' format was designed with future extensibility in mind. Being a text-only format, it lends itself to alteration with any editor of your preference. Its method of defining fields permits it to be adjusted and expanded to meet future requirements, and it is not tied to any particular implementation to facilitate searching. RECENT ADDITIONS The following fields have been added since the widely spread v6 of the 'Product-Info' specification: "aminet-dir", "aminet-file", "url", "keywords", and "execute"; some other fields have suffered some slight modifications: "author", "reference", and "installsize" with the aim to bring the fields in line with original intent. Also added or changed: \> \< \N \# sequences in field contents. KINGFISHER'S IMPLEMENTATION I believe it useful to provide the following information specific to KingFisher's implementation of 'Product-Info' support, as the databases and software are widely available on CD-ROM: 1. A KingFisher database is described by a .kfdb file, whose (textual) contents describes the filenames containing the actual database records, the files used for indexing these database files, as well as some other, less vital information. 2. A database consists of zero or more records spread over one or more files and is indexed by a single (primary) index file. Although KingFisher supports the format of (and is shipped with) the original KingFisher 1 database, it does not support adding such records to an existing database: The new format has a header to identify and distinguish the new format. The header is 8 characters (KF20DATA) plus a newline character. Index files are similarly identified by a KF20INDX header plus other information. 3. Records collected from 'Product-Info' files and stored into a database are stripped of their comments to preserve space. 4. As index files may become corrupted or lost, a special marker symbol is inserted on a line by itself between disks. This permits KingFisher to keep track of the disk on which a given item is stored and recover this information effortlessly if the index needs to be rebuilt. KingFisher 1 used a blank line between 2-line records; KingFisher 2 uses a line with a single ^N (ctrl-n) symbol on it. 5. A record begins with a "name" field and continues until another "name" field is encountered. 6. The efficient storage of variable-size records brings with it the problem of very costly insert and removal algorithms. KingFisher offers only truncation and append methods for this reason. 7. If a text file being imported (appended) to a database does not begin with a "name" field (nor comments) but the first line is less than 30 characters long, KingFisher will try to parse the file looking for a "name" field anyway, even though DATA TRANSPORT MARKERS (see next section, "Exporting and Importing Data") should have been used. This is a non- standard extension on this specification to facilitate support for the old KingFisher 1 database format. This ends the section on KingFisher's implementation of the 'Product-Info' standard. EXPORTING AND IMPORTING DATA To enable effortless and error-free methods for export and import of 'Product-Info' records, it is required to enclose records with DATA TRANSPORT MARKERS. These markers are NOT REQUIRED INSIDE OF 'PRODUCT-INFO' FILES; they are used only when unrelated text (and comments) surrounds a 'Product-Info' file! Multiple DATA TRANSPORT MARKERS may be used in a single text, so that each 'Product-Info' record is enclosed; or one pair of these markers may enclose multiple, consecutive 'Product-Info' records: EXAMPLE: The following examples are to be read as complete files between the lines that look like this: --------------- Example 1: A file containing text in addition to the database record. ---------------------------------------- Hello, Joe. Here is the description of that weird game I was telling you about. See if you can figure out how to win this. Good luck! .BEGIN-FISH-DESCRIPTION .name MonkeyCommand .author KingKong Industries .description Lure the love struck monster ape back to his island. Tools include Fay Wray's torn nightgown, a Fokker airplane (you get to pilot it), a compass and a map. \.png image support lets you paint your own airplane decals. .END-FISH-DESCRIPTION ---------------------------------------- Example 2: A file containing nothing but two database records. Notice that the DATA TRANSPORT MARKERS are omitted in this case, as they are unnecessary. It would not hurt to place them there, however! ---------------------------------------- .name MonkeyCommand .author KingKong Industries .description Lure the love struck monster ape back to his island. Tools include Fay Wray's torn nightgown, a Fokker airplane (you get to pilot it), a compass and a map. \.png image support lets you paint your own airplane decals. .name MonkeyCommand II .author KingKong Industries .description Keep the captured ape from assaulting the defenses of the prison that was erected at the conclusion of MonkeyCommand I. The game consists of coordinating the actions of four native tribal leaders and their vassals in repairing the damage done by the enraged monster ape as it tries to escape and revenge itself on whoever won the original MonkeyCommand. ---------------------------------------- Example 3: A file containing two database records interspersed with extraneous text. The records are protected by DATA TRANSPORT MARKERS ---------------------------------------- Hi Tom, Remember that monkey game you told my about? .BEGIN-FISH-DESCRIPTION .name MonkeyCommand .author KingKong Industries .description Lure the love struck monster ape back to his island. Tools include Fay Wray's torn nightgown, a Fokker airplane (you get to pilot it), a compass and a map. \.png image support lets you paint your own airplane decals. .END-FISH-DESCRIPTION Well, seems that one wasn't enough and they released another one. We'll have to figure out how to finally beat the first one, it seems, before they let us play the next. Maybe we can look through the binary to find that code phrase. Here's the text: .BEGIN-FISH-DESCRIPTION .name MonkeyCommand II .author KingKong Industries .description Keep the captured ape from assaulting the defenses of the prison that was erected at the conclusion of MonkeyCommand I. The game consists of coordinating the actions of four native tribal leaders and their vassals in repairing the damage done by the enraged monster ape as it tries to escape and revenge itself on whoever won the original MonkeyCommand. .restriction You need the secret code from the first MonkeyCommand which you can only get if you won that game. .END-FISH-DESCRIPTION (=:Joe:=) ---------------------------------------- STANDARD FIELDS The following are standard fields. Their meaning is fixed, although sometimes open to interpretation. Nothing forces you to obey these rules, but the closer you adhere to them, the more successful a search will be that relies on these rules. 1. If a field does not apply, or you have no data to supply, leave it out. You may provide a blank field, but this will have the same effect. 2. Pay attention to the FORMAT, which describes if a field is a single line field (ignores 2nd and further lines) or if it will flow its contents (ignoring YOUR newlines) or if it has any other constraints. 3. The only absolutely required field must also be the first field in any 'Product-Info': "name" =========================================================================== .name (absolutely required; must also be the first field) Purpose: The program's popular name. This is sometimes an abbreviated version of the "fullname" Format: 1 line only Example: KingFisher Example: HomeBase VI Example: BLAZEMONGER Example: AIBB Example: gcc .fullname (optional) Purpose: The full (or complete) name of the program if it differs from the "name"; omit this field if you would merely duplicate "name" Format: 1 line only Example: Amiga Intuition Based Benchmarks Example: GNU C Compiler .short (optional, but recommended) Purpose: A one-line description, preferably not exceeding 40 characters in length, à la Aminet. A single- glance to the program's purpose. Format: 1 line, best not to exceed 40 characters Example: Software catalog/search/maintenance tool Example: Full featured C/C++ package; CLI only Example: 230db sound, mind-reading, killer game .type Purpose: Categorize the package; multiple keywords permitted, but adhere as closely as possible to the list given at the end of this document. Wild variations will reduce the value of this field. Format: One or more lines, but best not to exceed a single word or two. Example: database Example: animation player Example: animation tool Example: spreadsheet Example: communications Example: display commodity Example: mouse commodity .description Purpose: A full-text description of your package, containing anything that is NOT ALREADY available through the other fields (above and below.) The reader should gain a good understanding what your program can and cannot do. If you mention other (similar) software, please add these also to the "reference" field. Please note that this field FLOWS text and is not designed for fixed-pitch ASCII graphics or other flash. If you need to insert a newline, do so with the "\n" sequence (backslash followed by a lowercase "n"); newline characters are treated as blanks. See the section on FORMATTING below! Format: Free form: Any number of lines, treated as a single stream of text and formatted according to embedded formatting symbols (see FORMATTING below.) Notes: The text should be readable regardless of the font that is used in its display, and regardless of the line width available (resizable window vs. printer) .version Purpose: The program's version number; please note that this should follow the standard guidelines for versions, as obeyed by most (but sadly not all, not even all system software): 37.1 < 37.17 < 37.39 < 37.100 < 37.170 The following are all vastly different versions: 37.1 37.10 37.100 37.1000 Format: One line only: MAJOR.MINOR Example: 37.100 Notes: Nothing requires you to maintain your versions this way, but you should be aware that some software may make use of this field by searching for a release that has reached, for example, at least version 2 (perhaps as a requirement that said software has been maintained by its author beyond some initial release 1); if your program's version is "v940205" then this would simply count as version 0 and could be missed. .date Purpose: The program's official release date. NOT the date when it made it into the database. Format: year.month.day Example: 1993.09.27 Example: 1996.01.01 Notes: The format was chosen to make it easily sortable. Note the use of leading zeros in month and day, and the complete year (with century.) .author Purpose: Any and all authors who have a part in the program. Format: Any number of lines, each name should be placed on its own line. Example: Joe R. User Tea Rexx Example: J. Jones Random Hacker Bone Head Notes: Addresses matching these authors should be placed into the .address field, one after the other, and in the correct order to produce a 1-to-1 relation. .address (optional) Purpose: Describe a full postal address of the author(s), to be used when it becomes necessary or desirable to contact the author by snailmail. Do not specify the author's name, as this already appears in the "author" field. Format: Multiple lines. Formatting symbols are not used, as physical newlines are respected. Example: 7022 Hanover Parkway, Apt. C2 Greenbelt, MD 20770-2049 USA .email (optional) Purpose: Full electronic mail address Format: Multiple lines, each having a 1-to-1 relation with the "author" field; more than one email address may appear on a line, separated by blank space (the preferred way) or by commas. Example: firstname.lastname@example.org Example: email@example.com firstname.lastname@example.org .url (optional) Purpose: Universal Resource Locator, usually for ftp sites or World Wide Web support/home pages. Format: One or more lines, each on a 1-to-1 relation with the "author" field. More than one URL (Universal Resource Locator) may appear on a single line. Example: http://www.wam.umd.edu/~walrus/KingFisher.html Example: ftp://nowhere.com/Bogus.png .keywords (optional) Purpose: List as few or as many keywords as necessary to sum up the major features of this package. It is recommended to keep this entry to 10 keywords or less, but no definitive limit will be enforced. The idea with this field is to help construct a memory- resident quick index for systems that can afford to maintain a large amount of data in RAM. Format: One or more lines; keywords or keyphrases separated by white space (space, tab, or newline.) Example: fish disks library maintenance search expressions product-info .restrictions (optional) Purpose: If your software has any restrictions placed upon it, list them here, in detail. You should indicate if your package has been made dysfunctional (such as would be the case with a demo package.) If the program will not run on anything less than a 68020 CPU, you should list this here, to. Format: Free form (see "description") Example: Demo version has SAVE and PRINT disabled. Example: Documentation available only in German. Example: Disables video DMA while playing samples. Notes: List actual restrictions here, not minimum system requirements. .requirements (optional) Purpose: List minimum requirements for your program. These should give the reader enough information to determine if the software is likely to run on his/ her system. Be sure to specify operating system, (hard)disk requirements, non-standard libraries (such as MUI) and whether or not some or all of these required libraries are included in the distribution. Format: Free form (see "description") Example: 68020, 68030, or 68040 CPU; 3M free RAM; 18M disk space; at least 640�480 display capabilities and 16 colors or better. Example: Requires WB2.1 (V38) Example: Requires 1024�768 (or larger) displays. Example: Works only with 4096-channel, 230db BLAZETHUNDER audio board. Example: Requires MUI (Magic User Interface) version 10. .reference (optional) Purpose: List the full path to software in some way related to this package. This may include previous versions of your package or similar packages. The path is a volume:path/ or volume:path/archive Format: 2 lines per reference: the first is the path with trailing slash (if you do not give the slash then the name of an archive is assumed); the second line is the version number. Example: FishROM-0002:Productivity/Databases/HomeBase VI/ 417.0 FishROM-0001:Productivity/Databases/HomeBase VI/ 415.12 .distribution (optional) Purpose: Describe the distribution and ownership status of this software. Please see below for a list of the most common (and recommended) terms. Format: 1 line Example: shareware Example: commercial demo .price (optional) Purpose: If your package is available for a fee, describe this price here. it is strongly recommended that the first currency is expressed in US dollars to provide a common base unit for prices. If your package is freely available and has no price attached, then omit this field. Format: Free form but best adhere to examples. Example: $50(US), DM75 .installsize (optional) Purpose: The minimum and maximum sizes of the package as it is installed. The minimum size should give an indication of how much disk space is required for an absolute minimal installation. If the reader has less diskspace than that, the program is likely not to be able to function at all. The maximum is the absolute highest amount of diskspace that the package is likely to consume when all portions are installed (including optional tutorials, demo files, etc.) Format: One or more lines; only the first line has a fixed format, the rest are free-form. Example: 220K - 2400K Most of the database files can be kept on floppy disks, so valuable hard disk space is not wasted. Example: 18K Example: 38K - 500K Lots of documentation and example scripts make up the bulk of this installation. Notes: It is recommended that sizes are scaled to kilo- bytes to maintain a uniform scale, rather than expressing them in bytes or megabytes. Always add a size quantifier (K=kilobyte=1024bytes, M=megabyte, T=terabyte, etc.) .exectype (optional) Purpose: Describe the type of executable(s) that make up your program. Most packages are probably compiled C, but some may be shell or ARexx scripts, BASIC, AMOS, or otherwise interpreted. The reason for this is that some packages are known to cause problems on some systems, or the customer is looking for something "better" than interpreted BASIC and would like to know this before "wasting" time locating, downloading, and installing the package. Format: Free form (see "description") Example: Compiled C Example: AmigaBASIC .source (optional) Purpose: Describe what source code is available as part of your package. If source is not available, then omit this field. How large is the source? What compiler, translator, or interpreter is required? It might be good to give an idea of the version of the compiler that is required. Format: Free form (see "description") Example: SAS/C 6.56, Manx, DICE source (750K) available for $15(US); some old SAS/C 5.10b sources (30K) included free. Example: Limited C source examples (15K) included Example: All source plus custom libraries: 12M .construction Purpose: Describe the types of languages used to create this program and the methods used to build the final executable. If possible, include the compiler versions and possibly important options, such as optimization for various CPUs (it is possible to optimize somewhat for a 68040 without sacrificing 68000 compatibility.) Format: Free form (see "description") Example: SAS/C++ 6.56 with speed optimizations weighed for the 68040 CPU (68040 not required, however.) Example: AdaEd Example: Handcrafted assembly Example: Fortran with self-made compiler. Example: AMOS .tested (optional) Purpose: Give an indication of which configurations have served as test environments. If the software operates without problems with non-standard system enhancements, this would be a good place to mention them. Format: Free form (see "description") Example: A500(512K Chip, 0K Fast, 1 Floppy), A2000(1M Chip, 2M Fast, 40M HD, 1 Floppy); not tested on 68020+ CPUs. Example: A1000, A500, A600, A2000, A2000/30, A3000, A1200, A4000/30, A4000/40 with various amounts of Chip and Fast RAM, with and without MMU or FPU. Found to be free of Enforcer hits and able to work with virtual memory products; compatible with Retina, EGS/Spectrum, and Picasso software. Also tested under V33 through V40 system software. Example: CPU: 68000, 68020, 68030, 68040 (68060 unknown); Kickstart V37, V38, V39, V40; Video/Graphics: PAL, NTSC, Picasso II (Village Tronic and CyberGraphX), GVP EGS Spectrum (others unknown); Tested with system enhancements such as GigaMem 3.12, VMM 3.2, Enforcer 37.62, Executive 1.30, IPrefs2Fast 0.9b, OpaqueMove 1.0, KingCON 1.3. .run (optional) Purpose: Specifies how to start the program. Format: visible=type,command where 'visible' would be what the user would see and select; 'type' is either 'CLI' or 'WB' (the system interface) and 'command' is the program to execute. The 'CLI' version may include parameters, including I/O redirection, as this string is passed directly to the System() call. Example: HomeBase VI=WB,HomeBase VI HomeBase VI=CLI,ExecuteMe.HB6 HomeBase VI Fixer=CLI,ExecuteMe.HB6Fixer KingFisher=CLI,KingFisher Example: FishTub=WB,ExecuteMe Notes: As this item may be dangerous to the unsuspecting user, it has not been implemented by KingFisher and is not likely to be implemented. .execute (optional) Purpose: An 'execute' script. This entry has been added by Fred Fish; the script views the documentation, installs the software, or merely runs the program. Format: A shell script, line by line. Notes: It is not recommended that this entry be supplied by you, as Fred Fish may simply replace it with a version of his own. .docs (optional) Purpose: List all documentation files associated with your package. Do not specify the files if they are not available as-is; if they are only located within an archive, omit them. Format: 1 line per file, do not include the path as this is provided by the "stored-in" field. Example: HomeBase.guide HomeBase.dvi HomeBase.doc .described-by (optional) Purpose: Who created the description ('Product-Info' file) for this project. Format: Free form (should include an electronic mail address too, if available.) Example: Fred Fish <email@example.com> Example: Udo Schuermann <firstname.lastname@example.org> .submittal (optional) Purpose: Who submitted to package to Fred (or else how the package came to be on the reference disk.) Format: Free form (usually one line) Example: Submitted on disk directly by the author. Example: Downloaded from wuarchive.wustl.edu in pub/aminet/util/misc .stored-in Purpose: Specifies where and especially HOW the package is stored. This field should specify EITHER the name of a directory (ending with a ':' or a '/') OR the name of a file. In the case of an archive, the name should reflect that with the appropriate extension (.lha .zip .gz .Z etc.) Format: One or more lines Example: FF1000:d501-1000/Disk950/Enforcer/ FF1000:d501-1000/Disk950/Enforcer/Enforcer FF1000:BBS/d501-1000/Disk950/Enforcer/Enforcer.lha Notes: This field is usually generated by the disk creator software, not by the submitter of the package, as the final location on the disk may not be controlled by the submitter of the Product-Info. .path (obsolete) .aminet-dir (optional) Purpose: The path (WITHOUT trailing '/') where this package is available on the global Aminet. Format: One line; must NOT end with a '/' Example: biz/dbase Example: gfx/edit Notes: Together with aminet-file, this entry can be used to construct the complete path to this package on Aminet or Aminet CD-ROMs. .aminet-file (optional) Purpose: The name of the package (archive) as stored on Aminet. Example: KingFisher220.lha Example: VanGogh.lha Notes: Together with aminet-dir, this entry can be used to construct the complete path to this package on Aminet. =========================================================================== FORMATTING SYMBOLS Fields denoted as "free form" disregard the physical line breaks, performing word-wrapping of the text within the current margins of the display window or the printer's paper. To affect the layout to some degree, the following symbols may be inserted at strategic places in the text: \\ A single \ (backslash) symbol. \. A single . (dot) especially useful if/when such a dot is found (against normal practice) at the very beginning of a line of text and would then be misunderstood to represent a field-name-specifier. \n End of paragraph. Text following this symbol is forced to the beginning of the next visible line. Fixes all \= tab definitions into place. The next \= will cause all tabs to be cleared and a new one to be set. Some fields, notably the "description" field, may insert an extra blank line between paragraphs. If this is not desired, \N may be used instead. \N End of paragraph. Acts much like \n but will have no effect if two newlines (\n or \N) preceed it. Will also override the paragraph spacing of some fields (see \n above.) \N is useful in controlling excessive inter-field spacing. \> Indent (move left margin one tab stop to the right) until the next newline ("\n"). \< Un-indent (move an indented margin leftward again after the use of a \> indent symbol and before a \n is encountered.) \t Tabs to the next tab. Do not use tabs for paragraph indentation after a "\n". The implementation of tabs should, ideally, move the cursor to the next tab stop (to the right OR the left) so that the 3rd tab on a line actually moves to the 3rd defined tab stop. If this is not possible, it is recommended to suppress tab motion (or limit it to a single space) if leftward motion of the cursor is not possible. \= Sets a tab at the current horizontal position. The next \n will fix these tabs into place and prevent further additions until the tabs are cleared by the next "\=" (not yet implemented in KingFisher.) \# Toggle between verbatim and flow mode. Most fields are flow fields, meaning that newlines and multiple spaces are treated as a single space, and the end of paragraphs must be specified by an explicit \n sequence. The effect of \# is, therefore, dependent on the type of field in which it is used: in a flow field, the first \# toggles into verbatim mode where multiple blanks and newlines are passed on to the display. The creation of tabular displays is made easier in verbatim mode. EXAMPLES OF "TYPE" WORDS Action Game Animation Animation Player Animation Tool Archiver CLI Tool Communications Compiler Compression Database Disk Tool Display Commodity Drawing Image Conversion Image Processing Library Mouse Commodity Music Composition OS Utility Painting Picture Printing Sound Analysis Sound Editing Sound Playing Spreadsheet Strategy Game Text Text Editing Text Viewer Thinking Game Word Processing Workbench Tool LIST OF SOFTWARE STATUS KEYWORDS Commercial Commercial software is owned and distributed through licenses. It costs money to individual end-users and is not freely distributable. SUCH PIECES SHOULD NOT APPEAR ON DISKS THAT ARE MEANT FOR FREELY DISTRIBUTABLE SOFTWARE! Commercial Demo Represents a demonstration of a commercial package. As such, commercial demos are freely distributable and may have limitations as described in the .restrictions field. Giftware Like shareware, usually. Shareware Such software is owned and copyrights are held by the author(s). The software may be distributed freely, but not sold for profit, of course. Shareware often specifies a limit of some time after which you are requested or required to register the software (i.e. pay for it.) This provides you with the means to evaluate the software thoroughly before paying for it. Freeware Such software is owned and copyrights are held by the author(s). The software may be distributed freely, but not sold for profit, which would mean the software is no longer FREEware. No payments are required for such software. Public Domain Software labeled PD (Public Domain) belongs to the public, i.e. ANYONE. Some people release their software into the public domain with the mistaken idea that they can continue to own and control the program. Not so. Software that is labeled Public Domain (or said by the author to be released into the public domain) truly belongs to anyone and everyone. It is quite legal for someone to take such a program and sell it for profit as is. Likewise, it perfectly acceptable to modify public domain software to build a better product (or whatever) out of it and then sell it for profit. GNU Public License The terms and conditions of this license are long and not easily reproduced here. Suffice to say that software released under the GNU Public License must be distributed with source code. They are not public domain, however. GNU Library Public License The terms and conditions of this license are long and not easily reproduced here. Suffice to say that software released under the GNU Library Public License must be distributed with source code. They are not public domain, however. Copyright but Freely Redistributable The author holds all copyrights but allows the material to be freely distributed under specified conditions. #EOT
All content is copyright © Ringlord Technologies unless otherwise stated. We do encourage deep linking to our site's pages but forbid direct reference to images, software or other non-page resources stored here; likewise, do not embed our content in frames or other constructs that may mislead the reader about the content ownership. Play nice, yes?