Skip to content

Compliance with xSDK v0.3 policies #172

Open
@aprokop

Description

@aprokop

The xSDK draft community policies are available here.

As of draft version 0.3 (as of December 2016), these policies are:

  • M1. Each xSDK-compatible package must support either the standard GNU Autoconf or CMake
    options
  • M2. Each xSDK-compatible package must provide a comprehensive test suite that can be run by
    users and does not require the purchase of commercial software.
  • M3. Each xSDK-compatible package that utilizes MPI must restrict its MPI operations to MPI
    communicators that are provided to it and not use directly MPI_COMM_WORLD.
  • M4. Each package team must do a “best effort” at portability to key architectures , including
    standard Linux distributions, GNU, Clang, vendor compilers, and target machines 4 at ALCF, NERSC, OLCF.
  • M5. Each package team must provide a documented, reliable way to contact the development
    team; mode of contact may be by email or a website.
  • M6. Each package should respect the decisions made by other previously called packages
    regarding system resources and settings.
  • M7. The package source code must come with an open source license , for example, one of the OSI listed licenses.
  • M8. Each package must provide a runtime API , for example a function call, to return the current
    version number of the software.
  • M9. Each package should use a limited and well-defined symbol, macro, library, and include file
    name space.
  • M10. It is mandatory that each package have an IDEAS accessible repository (not necessarily
    publicly available), where the development version of the package is available.
  • M11. No package should have hardwired print or I/O statements that cannot be turned off through a programmatic interface; output should never be hard-wired to stdout or stderr.
  • M12. If a package imports software that is externally developed and maintained, then it must allow
    installing, building, and linking against an outside copy of that software.
  • M13 : When configured with a prefix a package must install its headers and libraries under
    /include/ and /lib/, respectively.
  • M14: All xSDK-compatible packages must be buildable using 64 bit pointers (this is commonly the
    default).
  • R1. It is recommended that each package have a public repository , for example at GitHub or
    Bitbucket, where the development version of the package is available.
  • R2. It is recommend that all packages make it possible to run their test suite under valgrind in order to test for memory corruption issues.
  • R3. It is recommended that each package adopt and document a consistent system for
    propagating/returning error conditions/exceptions and provide an API for changing the behavior.
  • R4. It is recommended that each package free all system resources it has acquired as soon as
    they are no longer needed.
  • R5. It is recommended that each package provide a mechanism to export its ordered list of library
    dependencies so that any other package or executable linking to the package knows to include these dependencies when linking.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions