POV-Ray : Newsgroups : povray.object-collection : Object Collection rules review : Object Collection rules review Server Time
20 Apr 2024 02:04:07 EDT (-0400)
  Object Collection rules review  
From: Cousin Ricky
Date: 2 Mar 2023 20:37:25
Message: <64014f55@news.povray.org>
I see that there is interest in the Object Collection among new users
and old timers who have returned.  You may or may not know that the
Object Collection is a formal repository that was hosted on an entire
subdomain of povray.org, namely lib.povray.org.  Early in 2021 there was
a site-wide server crash, and while most of the site was quickly
restored (mostly), lib.povray.org remains offline.

Most of the user contributions have been mirrored at
  https://github.com/LeForgeron/PovContributions
but the infrastructure of lib.povray.org, which included user
registration, upload, search, and general instructions, is not
duplicated there.

As a formal repository, the Object Collection has certain rules.  If you
wish to submit your objects to lib.povray.org when it comes back online,
you'll need to be familiar with these rules to make whatever edits are
necessary to prepare your files for submission.  I will summarize them here.

The main considerations are the license, namespace compliance, and what
files should be bundled.

TL;DR
-----
- All modules must be licensed under the LGPL.
- All modules have a unique name and an optional unique prefix.
- All filenames and most identifiers must be prefixed with the module
  name or prefix to avoid namespace collisions with other Object
  Collection modules.
- Scene files and include files may contain ASCII only.
- Your submission should include a sample image and a 160x120 thumbnail.

LICENSE
-------
All contributions must be licensed under the GNU Lesser General Public
License (LGPL).  To that effect, every .inc and .pov file must contain a
comment with this text:

  This file is licensed under the terms of the CC-LGPL

This exact wording is required by the upload software; you will not be
allowed to upload your module without it.  The "CC" is due to Creative
Commons having once provided an online deed for the GNU licenses.

If you borrow someone else's work, you will need to certify that you
have the legal right to republish it under the LGPL.

You will note that the above required text does not specify a license
version.  However, the link in the Object Collection documentation
(currently offline) does point specifically to version 2.1 of the LGPL.
No formal decision has been made about upgrading to version 3.0.

MODULE NAMES
------------
Every module has a unique name and, optionally, an additional unique
prefix, which are registered with the upload software.  The names and
prefixes must begin with a Latin letter and comprise only letters and
digits--the same rules as for POV-Ray identifiers, except underscores
are not allowed.  The name and prefix are not case sensitive; for
example, if there is a module called "NetBall," it is not allowed to
create a new module called "NETball."

NAMESPACE COMPLIANCE
--------------------
One of the goals of the Object Collection is interoperability.  The
Collection has naming standards to avoid namespace conflicts between
modules.  Modules are rated for compliance on a scale of 0 (not at all
compliant) to 3 (fully compliant).  By default, only level 3 modules
appeared in search results.

For compliance level 3:

 1. All filenames must begin with the module name or prefix, followed
    by either a dot or an underscore.  This allows all level 3 modules
    to share the same directory, so your Library_Path list doesn't grow
    out of hand.  Filenames should be all lowercase for operating
    system portability.

    For example, if the name and prefix are NetBall and NB,
    respectively, then netball.inc and nb_example.pov are acceptable
    filenames.  netball1.pov and nb-example would not be accepted, as
    the name or prefix is followed by a character other than a dot or
    an underscore.

 2. All identifiers introduced in the main library files must be the
    module name or prefix, or must be prefixed with the module name or
    prefix followed by an underscore.  Due to namespace scope leakage
    within POV-Ray, this rule must also apply to #local identifiers and
    any function formal parameters other than u, v, x, y, and z.  Macro
    formal parameter names are exempt from this rule, as are any demo
    scene description files you may bundle to demonstrate how to use
    your module.

    Using the above example, Netball and NB_BallRadius are acceptable
    identifier names, but NBRadius is not.

 3. A third rule that has been proposed, but not formally adopted, is
    to require all identifiers to have at least one uppercase letter.

The modules are currently self-rated by the author.  If the author rates
their module at compliance level 3, the upload software will reject
filenames that are out of compliance.  Identifiers are not scanned for
compliance at this time.

No detailed guidance has been provided for self-rating your module at
compliance level 1 or 2.

FILES TO BUNDLE WITH YOUR SUBMISSION
------------------------------------
These are not hard and fast rules, but are typical of Object Collection
contributions.

- A .inc file containing the necessary macros and other features.

- An example .pov scene description file demonstrating how to use your
  module.

- A 160 by 120 pixel thumbnail image to be displayed on the Object
  Collection search page and index page.  The name of this file must be
  the module name or prefix, followed immediately by _thumbnail, dot,
  and the image type extension; for example, netball_thumbnail.jpg or
  nb_thumbnail.png.

- A main image file to be linked to the thumbnail.  The name of this
  file must be the module name or prefix, followed immediately by dot
  and the image type extension; for example, netball.jpg or nb.png.

- HTML documentation.  In order to be automatically linked to the Object
  Collection search page and index page, the name of the file must be
  the module name or prefix, followed immediately by .html; for example,
  netball.html or nb.html.

  HTML documentation is optional; many existing contributions just have
  the documentation as a block comment within the main include file.

Files are limited to the following types: .bmp, .css, .csv, .gif, .htm,
.html, .inc, .ini, .jpeg, .jpg, .js, .mac, .mcr, .mdl, .pgm, .png, .pov,
.ppm, .tga, .tif, .tiff, .txt

CONTENTS OF SDL FILES
---------------------
As of the time of the crash, the upload software allowed only 7-bit
ASCII characters in .inc and .pov files.  Greek, Cyrillic, special
characters, etc. could only be used via the "\u" notation.  For an
example of this, see:
  https://github.com/CousinRicky/POV-BrightStar5/blob/main/brightstar5.inc
and find bsc5__s_Gr_chars.

OTHER CONSIDERATIONS
--------------------
There are other considerations, such as keyword list and topic
categories, but these will not be important to detail until the Object
Collection site comes back online.  If you are interested, the upload
instruction page is archived at:

https://web.archive.org/web/20150923194204/http://lib.povray.org/usersguide/04contributing.html

Note that these instructions have an incorrect name for the license.
The name has been corrected since that page was last archived.

ADMINISTRATION
--------------
The initial administrator of the Object Collection has not been heard
from since 2009, and there has been no successor.  So far as I can see,
there is no formal process in place for overseeing the collection.  See
the thread "License reassessment and other matters" for my thoughts on
this situation.


Post a reply to this message

Copyright 2003-2023 Persistence of Vision Raytracer Pty. Ltd.