0.2.5 • Published 7 years ago

ahfc-client v0.2.5

Weekly downloads
3
License
MIT
Repository
github
Last release
7 years ago

Arrowhead Core Client Library for Node.js

Arrowhead core client for node.js. This package contains code for interacting with the Arrowhead Mandatory Core Services, which are the ServiceRegistry, AuthorisationSystem and the OrchestrationSystem. More information about the mentioned services may be read in the Arrowhead Wiki.

This repository contains a Work-In-Progress (WIP) implementation. Everything is subject to change, and no guarantees about what particular features are available are given.

About Arrowhead

Arrowhead is a service-oriented automation framework, envisioned to enable the creation of highly dynamic, scalable and resilient industrial automation systems. It is centered around the idea of so-called Local Automation Clouds, which could be thought of as secured intranets with real-time operation support. For more information, please refer to the Arrowhead Wiki.

Using this Package

This package is available via the Node Package Manager and is published as ahfc-client. Instructions on how to get started with the package may be read here.

Contributing

Contributions are considered from all sources, in all forms, and are required to adhere to the below guidelines to be accepted.

  • All code that can reasonably be written in TypeScript, must be written in TypeScript.
  • New code must adhere to the style of the existing code.
  • No other functionality other than such that contributes to the implementations of the ServiceRegistry, AuthorisationSystem or OrchestrationSystem service interfaces will be accepted.
  • The only dependency of this package is the latest Long Term Support (LTS) release of the node platform itself. No other packages may be used, unless maintained by the same developers as are maintaining this package.
  • Unit tests must be provided along new contributions if the contribution in question is either (1) a non-trivial bugfix, (2) understood to be difficult to get right, or (3) contains security-critical functionality.
  • Integration tests are not to be part of this repository.
  • The package is not to contain any implementations of cryptographic primitives, such as secure hash functions, etc.

Rationale

No Third Party Dependencies

Having dependencies invariably leads to a loss of control, to some extent. Version conflicts, security issues, other bugs, and the disk space required to use this package can end up being out of reach of its developers. Avoiding third party dependencies to the furthest extent possible is therefore a primary objective.

Limited Unit Testing

Apart from ensuring behaviour correctness, unit tests lead to making code changes more difficult, as either new units must be written, or existing units be changed whenever code is added or modified. By focusing on bugfixes, other difficult regions of code, and security-critical functionality, unit tests are employed where needed the most, and the cost of maintaining them is kept at a reasonable low.

No Integration Tests

Integration tests are often not distinguished from regular unit tests. The former kind ensures that an implementation is true to its public interface specification, while the latter verifies that the internals of an implementation behave as expected. Integration tests may with advantage be put into separate projects, each making up a Technology Compatibility Kit (TCK), which may be used to test not just a single project, but any other such that aim to be compatible with it.

No Cryptographic Primitives

Cryptography is hard to get right. The cryptographic primitives provided via node.js through OpenSSL ought to be enough for any secure functionality implemented in this package.