With KNIME it is possible to write extensions using Java or Python. To know more about how to build your nodes and put them into extensions you can check the following guides:
Once you have created an extension, you can publish it for free, open source, and without additional licenses. Publishing means that you contribute the extension and make it available via KNIME Community Hub to the community.
This guide will explain you how to publish your extension in two steps on KNIME Community Hub and how make it a trusted extension.
Publish your extension
This section explains the procedure to take your extension code, build the extension, put it on our update sites and publish it on KNIME Community Hub.
The first step is to send us an email to community-contributions@knime.com with the following information:
-
Name of the corresponding forum account (the extension will be linked with this account on Hub and also this account will have access to the build jobs in Jenkins)
-
Name of the extension
-
Short description of the extension (1-2 sentences)
-
Vendor or contributing entity (academic insitute, developing group, private person, company)
-
Name of maintaining contact person
-
Email of maintaining contact person
-
Link to the code base of your contribution (your GitHub repository or alike)
Additionally, log in once to hub.knime.com with the forum account so we can grant it access to our Jenkins infrastructure.
After you sent the email and logged in to hub.knime.com, we will:
-
Add you to our developer mailing list
-
Set up the build jobs in Jenkins (one nightly build job and one for the current release)
-
Give your forum account access to the build jobs
-
Send you links to these build jobs
-
Inform you if there are any issues
-
Put the extension on KNIME Community Hub
-
Inform you that you have a new experimental Open Source extension
Make your extension trusted
Making your extension trusted shows others that your extension complies with node-specific standards, is well-tested, without critical security concerns, and that during installation no signing of unstrusted content needs to be done. This will be shown via the trusted logo on KNIME Community Hub.
This section explains the two steps to make your extension a trusted extension and to make sure it stays trusted in the future. Of course, you can take care of one or all of these steps already during development. The requirements for these two procedures are also outlined.
Make your extension trusted the first time
How to become trusted
-
Have a look at the requirements to become trusted
-
Adjust your extension to comply with them
-
Inform us
Then, together with you, we will:
-
Review if your extension meets the requirements
-
If yes, make your extension trusted
Requirements to become trusted
-
Each node of the extension is covered in a test workflow
-
Compliance with noding guidelines
-
No known security issues (the build job runs automatically a CVE check)
-
Release notes or changelog in the public repository
-
Responsive contact to react to users (we need a current email address and forum user name from you)
Keep your extension trusted
How to stay trusted
As the KNIME Analytics Platform, security issues and third-party libraries evolve, extensions need to be reevaluated from time to time (usually before every feature release (every six months)).
-
Have a look at the requirements to stay trusted
-
If necessary: adjust your extension to comply with them
-
Inform us
Requirements to stay trusted
-
Updates comply to the above points (nodes are covered in test workflows, compliance to noding guidelines, no security issues, release notes present)
-
Valid contact and active support in the forum
-
Backwards compatibility: the test workflows and also the nodes in existing workflows behave and produce exactly the same results in newer versions just as they did in older versions; see noding guidelines
-
Maintenance: make sure that your extension is working with the latest two AP versions
-
This evaluation will happen before every feature release (5.3 → 5.4 and so on)
-
If the requirements cannot be met anymore, the extension will be an experimental extension again - of course: as soon as you have time, we can make the extension trusted again
Frequently Asked Questions
What is a build job and what is Jenkins?
A build job is a program which takes code and transforms it into a functional application or part of an application. In your case, a build job takes your code and transforms it into an extension, which can be installed in the application KNIME Analytics Platform and is then a part of it.
Jenkins is a tool which allows us (KNIME) to automate the process defined by a build job.
When will the extensions be updated? Every night?
The extension will only be updated if the maintainer or we trigger a new build job.
For the build jobs of a release, this will (and should) only be done if changes to the content have been made.
Extensions will be updated on demand, e.g. when you hit the "Run" button to build your extension in Jenkins. For a job of a certain release you usually want to do this before a release or if you explicitly want a new version to be built.
What is an update site?
An update site is a place (e.g. a repository on our servers or a location on your machine) which contains extensions installable by the KNIME Analytics Platform. A prominent example is our KNIME Analytics Platform Update Site or its zipped form which can be downloaded and used locally on your machine.
-
On which update sites is my extension?
There are different update sites containing different types of community extensions: extensions with a commercial interest are on the Partner update site, whereas free open source extensions are on the experimental or trusted Open Source update sites, respectively. Check out the differences between experimental and trusted extensions. The update site for nightly extensions is meant for testing your extension or providing quick updates to your peer group. Make use of it!
Your extension appears - depending on your extension type - on the update site for
-
experimental Open Source extensions:
https://update.knime.com/community-contributions/<current-version>
-
trusted Open Source extensions:
https://update.knime.com/community-contributions/trusted/<current-version>
-
Partner extensions:
https://update.knime.com/partner/<current-version>
-
nightly extensions:
https://update.knime.com/community-contributions/trunk
What are the advantages of making my extension trusted?
Making your extension trusted shows others that your extension complies with node-specific standards, is well-tested, without critical security concerns, and that during installation no signing of unstrusted content needs to be done. This will be shown via the trusted logo on KNIME Community Hub.
Can I publish now and make the extension trusted later?
Yes. The two processes of publishing and making trusted can be done together, but are also completely independent from each other.
What are the differences between a trusted and an experimental Open Source extension?
The differences are the characteristics of a trusted extension:
-
Each node of the extension is covered in a test workflow
-
Compliance with noding guidelines
-
No known security issues
-
Release notes or changelog in the public repository
-
Valid contact and active support in the forum
-
Backwards compatibility: the test workflows and also the nodes in existing workflows behave in newer versions just as they did in older versions
-
Maintenance for the last two feature release versions of the KNIME Analytics Platform
What happens if a trusted extension does not meet the requirements to stay trusted anymore?
If a trusted extension does not meet the requirements to stay trusted anymore, we will reach out to the maintaining persons. We will assess together whether there is a possibility to make the extension meet the criteria again. If we cannot work out a solution together, we might have to temporarily remove the trusted status for the current and future KNIME Analytics Platform versions (until, of course, the maintaining person makes the extension trusted again). This could lead to a change of update site, the trusted logo not being displayed on KNIME Community Hub and that an additional step during installation of the extension is required where the installing person is asked to trust unsigned content. We appreciate your understanding and collaboration in maintaining the quality and trustworthiness of KNIME extensions!
How do I provide integration tests?
To ensure that the nodes of your extension behave as expected you can verify their behaviour via integration tests. Such tests in the KNIME Analytics Platform are often done via test workflows.
Ensure that your workflow works as expected and will continue to do so:
-
Create test workflows covering all of your nodes. You can read this article to help you test your nodes.
-
Upload the test workflows
-
Create in your KNIME Analytics Platform a new mount point for the Community Server
-
Click the Mount Point icon.
-
Click 'New'.
-
Double-click 'KNIME-Community Server'.
-
Apply and Close
-
-
Open the Server; login with your forum credentials; you can insert your test workflows in Testflows —> Trunk —> <your project name>; create it if it does not exist already.
-
Upload your test workflows to the folder of your project
-
What does it mean to maintain my extension?
Maintenance has two major aspects:
-
If you are notified about new security issues, address them within four weeks
-
When we release a new version of KNIME, we inform you beforehand via the mailing list and the forum about changes and updates of the underlaying infrastructure; please address them (preferably in new branches for the corresponding KNIME version in your repository)
Besides that, we will create new build jobs for new releases and help you if you have any questions.
How can I add Python nodes to my Java extension?
Requirements:
-
An existing Java extension
-
A Python extension
-
A Python environment with https://anaconda.org/knime/knime-extension-bundling installed
Procedure:
-
Execute the script
build_python_extension.py
in the required Python extension -
Further instructions are given by
build_python_extension.py --help
and will be outlined upon execution of the script for how to test the extension and how to make the Python nodes available with a Jenkins job
How can I change the description of my extension on KNIME Community Hub?
If it is a Java extension, the description is set via the description
tag in the feature.xml
in the feature plugin. See here for an example.
If it is a Python extension, the description is set via the long_description
parameter in the knime.yml
.
The Community Hub is regularly updated only during feature releases; please email us if you wish to have an update of your description in between. |