Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Define properties hasSourceCode/isSourceCodeOf to link SoftwareApplication and SourceCode #300

Merged
merged 13 commits into from
Jul 10, 2023

Conversation

progval
Copy link
Member

@progval progval commented May 25, 2023

This is #229 by @dgarijo plus the following changes:

  1. Merge conflicts fixed
  2. Updated the example to be compacted with the Codemeta context
  3. normalized the formatting in the example (indents, newlines)
  4. Removed mention of being the reverse of targetProduct

Addresses #198 and #246

@progval progval added this to the v3.0 milestone May 25, 2023
'targetProduct' is, according to both schema.org and Codemeta:

> Target Operating System / Product to which the code applies. If applies to several versions, just the product name can be used.

This means for example that `"targetProduct": "http://example.org/Windows`
is for source code which expect to interact with Windows, not for the source code
of Windows itself.
@progval progval changed the title Definine property "hasSourceCode" to link SoftwareApplication and SourceCode #229 Define property "hasSourceCode" to link SoftwareApplication and SourceCode #229 May 25, 2023
@progval progval changed the title Define property "hasSourceCode" to link SoftwareApplication and SourceCode #229 Define property "hasSourceCode" to link SoftwareApplication and SourceCode May 25, 2023
@dgarijo
Copy link
Contributor

dgarijo commented May 25, 2023

@progval thanks a lot. I dropped the ball on the conflict resolving. You are a star!

The name follows the schema.org conventions for reverse properties
(eg. hasPart/isPartOf, hasVariant/isVariantOf)
@progval
Copy link
Member Author

progval commented Jul 3, 2023

I just added the reverse property isSourceCodeOf.

The name follows the schema.org conventions for reverse properties (eg. hasPart/isPartOf, hasVariant/isVariantOf)

@progval progval changed the title Define property "hasSourceCode" to link SoftwareApplication and SourceCode Define properties hasSourceCode/isSourceCodeOf to link SoftwareApplication and SourceCode Jul 3, 2023
@dgarijo
Copy link
Contributor

dgarijo commented Jul 4, 2023

We may be asked about the difference between isSourceCodeOf and targetProduct. Both link a ScoftwareSourceCode with the Software it aims to represent no? I support hasSourceCode (hence this issue). But I can't think of a great difference between isSourceCodeOf and targetProduct.

The current definition is Link that states where software application is built from a given source code. Note that not all software is built from code, as interpreted code like Python does not need to be built.

targetProduct is defined as Target Operating System / Product to which the code applies. If applies to several versions, just the product name can be used. The definitions are quite similar, no?

Should targetProduct be the inverse of hasSourceCode instead?

@progval
Copy link
Member Author

progval commented Jul 4, 2023

I feel targetProduct is closer to runtimePlatform. In software engineering, one would say their app targets Windows, Flash, or the Web, to mean what product they aim to support, in the same way one targets an audience or democraphic. The schema.org definition implies it by giving Operating System as an example.

I've never seen someone says their source code targets the very app produced from their code. Though I admit it's common for binaries to be referred to as targets of the code in the context of a build system.

Either way, if we do come to the conclusion that targetProduct is the reverse of hasSourceCode, then hasSourceCode should be renamed targetProductOf for consistency.

@dgarijo
Copy link
Contributor

dgarijo commented Jul 4, 2023

Hmmm, I saw targetProduct as the compiled binaries created by the source code (e.g., the JAR in Java), which would then be considered SoftwareApplications. Otherwise I am not sure what the difference with runningPlatform is.

I would keep hasSourceCode as it feels more natural than targetProductOf, to be honest (targetProduct is already a little bit confusing and per the documentation it may also be interpreted as the OS supporting the release).

If we want to keep isSourceCodeOf, then I feel like we need to justify why is it different to targetProductOf. Any takers to introduce a difference? Something like "this is not just for the binary, but to the abstract concept of software"?

@moranegg
Copy link
Contributor

moranegg commented Jul 7, 2023

A very interesting discussion.

targetProduct = Target Operating System / Product to which the code applies. If applies to several versions, just the product name can be used.
runtimePlatforme = Runtime platform or script interpreter dependencies (Example - Java v1, Python2.3, .Net Framework 3.0). Supersedes runtime.

If we take a simple example of the CodeMeta generator, you have the hosted instance: https://codemeta.github.io/codemeta-generator/

What would that be a targetProduct or isSourceCodeOf?
Another possibility is to use targetProduct= Python's HTTP server
And the runtimePatforme= Python3 (or be more specific)

If this example doesn't work, we can try finding other examples were this can apply.
The idea here is to provide expressiveness following the issue #198

At this stage we really want to release a V3.0 (after three years of intention).
Let's add both properties as suggested here and start a discussion for better examples in the discussion tab.
This might yield a larger discussion on relationships between objects, which is not clear how to express in CodeMeta.

@progval
Copy link
Member Author

progval commented Jul 10, 2023

Sounds fair. targetProduct is very unclear (as evidence by all the discussions around it), so if nothing else, isSourceCodeOf fixes the ambiguity.

@progval progval merged commit dbfce98 into codemeta:develop Jul 10, 2023
2 checks passed
@progval progval deleted the hasSourceCode branch July 10, 2023 08:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants