-
Notifications
You must be signed in to change notification settings - Fork 81
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
Entry points (or API endpoints) extension for codemeta? #183
Comments
Thanks for raising the issue. can you outline a bit of the use case behind documenting generic entrypoints in the codemeta metadata? I see your point about an EntryPoint taking an object of type independent of that, it is still a good question whether schema.org's EntryPoint should remain a specifically web-centric concept or be expanded with a type; might be worth raising that directly with Schema.org. (at the moment, even the web-sense of EntryPoint isn't part of the codemeta context). |
Thanks for your input!
It's quite common for a software project, a single code base i.e. a single My practical use case is that I developed a webportal (source: https://github.com/proycon/labirinto, production installation: https://webservices-lst.science.ru.nl) that lists software purely on the basis of codemeta (and my proposed entrypoint extensions to it), the software can be filtered on the basis of the types of interfaces they provide (my proposed
I agree it adds complexity, but I guess it is optional complexity that shouldn't get in the way much as not everybody needs this level of expressiveness. I hope my example shows that there is actionability, though limited. The actionability is mostly in question where RESTful (or other) webservices are concerned, as the API are things we of course don't want to cover, but still it can communicate at least where the webservice can be found. If you're proposing encoding every single entrypoint as a
There is a big semantic difference I think, so I don't think that would work; dependencies are things that are required by software, prerequisites that must be satisfied, entrypoints are provided by the software. I hope the idea is a bit clearer now :) |
ah right, I think I see now, not enough coffee before. I think I have a clear picture of what is meant by EntryPoint in a context like a REST API or other web URL, but honestly not quite grokking what this means in the the python of context, let alone more generally. Sounds like you are describing the software API, or really any interface to the program? Would you call the headers of a C library the "EntryPoint"? The space of I could certainly see a web application listing entryPoints in a codemeta description (though I'm wary of trying to re-invent WADL or SOAP via software metadata). I agree that But I have a hard time seeing the semantic meaning in merely listing something like https://github.com/proycon/folia/blob/master/setup.py#L35-L59 as being the 'entrypoints'. To me, this looks relatively unintelligible as metadata. (e.g. are meaningful only in that specific context -- for that to make any sense semantically we'd need to know what kind of object a |
My 2 cents: documenting the APIs endpoints for REST or other types of applications is best handled by the specs that are designed to do that, specifically OpenAPI v3 (https://swagger.io/docs/specification/about/). In CodeMeta, I could see us having a metadata field pointing to an OpenAPI spec for a piece of software, but it seems to me that we shouldn't try to head down that path ourselves. Also, knowing the API for a piece of software is different from knowing the specific deployment details (such as http URIs) for specific deployed instances of that software. We should be sure to make those distinctions clear. |
Very good point indeed. I agree that is insufficiently clear in what I suggested thus-far.
I see entrypoints like executable/callable interfaces in general yes, so C headers or Python modules or whatever could indeed be classified under that (with a particular type) if we really want to be generic (without going into any further specifics of how to call the API, other than linking to documentation/specifications), but that's already going a deeper than I was focussing on and we don't need to go there yet perhaps. One of the more practical examples I attempted to describe was a software package offering multiple executables (like the VLC example I gave with
Let me try to clarify: I want to list only the first part here, i.e. the executables provided by the software (e.g. what will be installed somewhere in the user's If it is too much of a stretch to use schema's
Yes, such a link to a specification, API or even more generic documentation in general is exactly what I'd envision to be associated with EntryPoints, and not just relevant for web-endpoints. Sorry for the long posts, hopefully this clears up some confusion and doesn't add too much new confusion ;) |
Schema.org defines EntryPoint as an entrypoint (a URL in some web-based protocol) to software described by the (
EntryPoint.actionApplication
) property.Python Packages also define entrypoints in their metadata (see https://github.com/proycon/codemetapy/blob/master/setup.py#L35 for example), referring to the command line scripts that will be installed and bound to execute a particular function in a python module. I would like to represent this in codemeta but come across a few issues:
file:///
scheme in the URL to reference an executable script, but that is probably not the most elegant solution. Is more needed? Ideally, I'd be in favour of some kind ofinterfaceType
property on EntryPoint (with values like command line interface, graphical user interface, text user interface, web-user interface, webservice interface).EntryPoint.actionApplication
property, I am missing a reverse property onSoftwareApplication
orSoftwareSourceCode
to link to entrypoints, I'd propose something simple likecodemeta:entryPoints
.I have implemented 1) and 2) as an optional extension in the brand new Python Codemeta tool (#182).
The text was updated successfully, but these errors were encountered: