question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. It collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

Formalize representation of software dependencies

See original GitHub issue

Here is a proposal for describing software dependencies. Feedback is welcome.

The CodeMeta context file currently defines the single JSON property ‘dependency’ to express software dependencies for a package. This should be expanded so that dependencies can be expressed in a more standard way. One possibility is to use “packageId”, “packageVersion”, “packageSystem”, “operatingSystem” where

  • packageId: the unique identifier for the package
  • version: a character string indicating the build / state of the software
  • packageSystem: the software or system used for packaging
  • operatingSystem: the platforms the package has been build and bundled for (optional)

for example:

   "dependency":[
         "packageId":"npplus",
         "version": "0.9.4",
         "packageSystem":"https://pypi.python.org",
      },
      {
         "packageId":"statistics",
         "version":"1.4.3",
         "packageSystem":"https://pypi.python.org",
      }
   ],

Another example:

   "dependency":[
      {
         "packageId":"abd",
         "version":"0.2-8",
         "packageSystem":"http://cran.r-project.org",
         "operatingSystem":"Windows, Mac OS X"
      }
      {
         "packageId":"popbio",
         "version":"2.4.3",
         "packageSystem":"http://cran.r-project.org",
         "operatingSystem":"Windows, Mac OS X"
      }
   ],

A value for operatingSystem is specified when required, for example, the operating system isn’t relevant for software distributed as Python packages or Matlab Central contributed files, as those software packages are dependant on their execution environment (python, matlab) and not the OS directly.

The packageSystem would serve as a namespace of sorts, as the values for packageId and operatingSystem are specified as required by the packageSystem.

‘version’ would be optional and if omitted, the most currently available version would be assumed.

Issue Analytics

  • State:closed
  • Created 7 years ago
  • Comments:13 (10 by maintainers)

github_iconTop GitHub Comments

1reaction
cboettigcommented, Oct 16, 2019

@alee Yes, the term softwareRequirements is part of codemeta and schema.org; codemeta also provides the additional term softwareSuggestions to distinguish between hard dependencies and other things (build dependencies , optional extensions etc). The list of terms can be found in https://codemeta.github.io/terms/.

side note: The developer guide is mostly focused on introducing the JSON-LD concepts, and doesn’t describe all the terms themselves. “developer guide” and “user guide” should perhaps be renamed to “consume” and “create”, since the dev guide is really aimed at developers who are writing tools that parse lots of codemeta files, not developers wishing to generate a codemeta file for their own software (which is what the user guide is supposed to cover). Of course, feedback/edits/PRs on all of this more than welcome – this is very much a community-driven project

0reactions
aleecommented, Oct 15, 2019

Hi there, I looked at the developer guide at https://codemeta.github.io/developer-guide/ but there is no mention of dependencies there - is that still part of codemeta or did those docs move somewhere?

Read more comments on GitHub >

github_iconTop Results From Across the Web

Dependency. - by Riccardo Cardin - Medium
In software engineering we have a mantra, that was taught us from the very beginning: Dependency between components must be minimized, making ...
Read more >
Formalization and Efficient Algorithms for Dependency Analysis
In the Software Product Line approach, product configuration is a key activity in which stakeholders choose features for a product.
Read more >
Software dependencies: How to manage dependencies at scale
A software dependency is a code library or package that is reused in a new piece of software. For example, a machine learning...
Read more >
Understanding Dependencies: A Study of the Coordination ...
systems have dependencies because software modules interact with each other, with ... necessary by formalizing the process of software development and ...
Read more >
Formalizing software architectures
A software architecture identifies collections of functional modules shared by a fandy ... The rationale is to combine a graphical representation, ...
Read more >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found