Commercialization of Camunda projects


#1

Dear Camunda community,

In the projects I work we use the community edition of Camunda.
I use a full distribution (shared Process Engine) and I built the process applications through an IDE.
Our system is part of a bigger system and there are discussions on commercializing our entire solution.
Since I am not very familiar with these issues, what would you suggest me as an approach to commercialize (if possible) the part of the entire solution I work on (application projects running on a shared Camunda edition)?
The commercialization will also include the knowledge transfer but I mainly ask about the software itself.

Thanks,
Kostas


#2

Hi Kostas,

Do you have a specific question, e.g. regarding licenses of Camunda community artifacts? I’m afraid we can’t help you with the general process of commercialising software.

Cheers,
Thorben


#3

If you are asking about the enterprise version of Camunda itself, best visit https://camunda.com/enterprise/ and contact our sales team there.


#4

Hi @BerndRuecker,

No I’m not asking about the enterprise version. I’m trying to investigate how can I commercialize the applications projects I build on the community edition.

@thorben, not really a specific question. As I said, I would like to know what is the approach if someone is interested in paying for the applications projects I build. I’ve read about licensing on https://docs.camunda.org/manual/7.8/introduction/licenses/ but I’m not a business guy to know how to make money out of projects (well, my goal is not to make money through the community edition. I use the community edition but I would like to know what can I do in case someone is interested in paying for what I build).

Thanks


#5

Hi Kostas,

I believe aside from the pointers to the licenses and confirming that Apache 2.0 license is very liberal, this is all we can provide here. I recommend consulting an expert (and/or lawyer) on open sources licenses and their usage to help you with the details. We cannot give any legally binding advice on this forum.

Cheers,
Thorben


#6

Hi,

Is there a license book for version 7.7? Like this one for 7.8 https://app.camunda.com/nexus/content/repositories/camunda-bpm/org/camunda/bpm/license-book/7.8.0/license-book-7.8.0.txt

Also, my pom file is the following:

<?xml version="1.0" encoding="UTF-8"?>
  <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>myGroupId</groupId>
  <artifactId>myArtifact</artifactId>
  <version>1.0-SNAPSHOT</version>

  <packaging>war</packaging>

  <name>Camunda BPM Process Application</name>
  <description>A Process Application for [Camunda BPM](http://docs.camunda.org). [The project has been generated by the Maven archetype 'camunda-archetype-ejb-war-7.6.1']</description>

  <properties>
    <camunda.version>7.7.0</camunda.version>
    <arquillian.version>1.1.2.Final</arquillian.version>
    <jboss.version>7.2.1.Final</jboss.version>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <failOnMissingWebXml>false</failOnMissingWebXml>
  </properties>

  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>org.camunda.bpm</groupId>
        <artifactId>camunda-bom</artifactId>
        <version>${camunda.version}</version>
        <scope>import</scope>
        <type>pom</type>
      </dependency>
      <dependency>
        <groupId>org.camunda.bpm.dmn</groupId>
        <artifactId>camunda-engine-dmn-bom</artifactId>
        <version>${camunda.version}</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
      <dependency>
        <!-- Needed for ArquillianTest -->
        <groupId>org.jboss.arquillian</groupId>
        <artifactId>arquillian-bom</artifactId>
        <version>${arquillian.version}</version>
        <scope>import</scope>
        <type>pom</type>
      </dependency>
    </dependencies>
  </dependencyManagement>

  <dependencies>
    <dependency>
      <!-- process engine, needs to be provided -->
      <groupId>org.camunda.bpm</groupId>
      <artifactId>camunda-engine</artifactId>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <!-- decision engine -->
      <groupId>org.camunda.bpm.dmn</groupId>
      <artifactId>camunda-engine-dmn</artifactId>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <!-- client for Java EE application server integration, included in WAR as an alternative to write your own ProcessApplication class -->
      <groupId>org.camunda.bpm.javaee</groupId>
      <artifactId>camunda-ejb-client</artifactId>
    </dependency>
    <dependency>
      <!-- CDI integration, needs to be included in WAR, otherwise CDI can not work correctly -->
      <groupId>org.camunda.bpm</groupId>
      <artifactId>camunda-engine-cdi</artifactId>
    </dependency>

    <dependency>
      <!-- AssertJ Testing Library -->
      <groupId>org.camunda.bpm.extension</groupId>
      <artifactId>camunda-bpm-assert</artifactId>
      <version>1.2</version>
      <scope>test</scope>
    </dependency>

    <!-- Required to use Spin dataformat support in unit tests -->
    <dependency>
      <groupId>org.camunda.spin</groupId>
      <artifactId>camunda-spin-dataformat-all</artifactId>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.camunda.bpm</groupId>
      <artifactId>camunda-engine-plugin-spin</artifactId>
      <scope>provided</scope>
    </dependency>

    <!-- Required to use Connectors in unit tests -->
    <dependency>
      <groupId>org.camunda.connect</groupId>
      <artifactId>camunda-connect-connectors-all</artifactId>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.camunda.bpm</groupId>
      <artifactId>camunda-engine-plugin-connect</artifactId>
      <scope>provided</scope>
    </dependency>

    <!-- Required to use Templates in unit tests -->
    <dependency>
      <groupId>org.camunda.template-engines</groupId>
      <artifactId>camunda-template-engines-freemarker</artifactId>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.camunda.template-engines</groupId>
      <artifactId>camunda-template-engines-velocity</artifactId>
      <scope>provided</scope>
    </dependency>

    <dependency>
      <!-- Bootstrap for styling via Webjars project -->
      <groupId>org.webjars</groupId>
      <artifactId>bootstrap</artifactId>
      <version>2.3.2</version>
    </dependency>

    <!-- Java EE 6 APIs
    <dependency>
      <groupId>javax</groupId>
      <artifactId>javaee-api</artifactId>
      <version>6.0</version>
      <scope>provided</scope>
    </dependency>
    Note that we cannot use the javax.javaee-api if running Arquillian, see
    https://developer.jboss.org/wiki/WhatsTheCauseOfThisExceptionJavalangClassFormatErrorAbsentCode
    for the reasons why.
    -->
    <dependency>
       <groupId>org.jboss.spec</groupId>
       <artifactId>jboss-javaee-6.0</artifactId>
       <version>1.0.0.Final</version>
       <type>pom</type>
       <scope>provided</scope>
    </dependency>

    <dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-email</artifactId>
      <version>1.2</version>
    </dependency>

    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.12</version>
      <scope>test</scope>
    </dependency>

    <dependency>
      <!-- Needed for ArquillianTest -->
      <groupId>org.jboss.arquillian.junit</groupId>
      <artifactId>arquillian-junit-container</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <!-- Needed for ArquillianTest -->
      <groupId>org.jboss.arquillian.protocol</groupId>
      <artifactId>arquillian-protocol-servlet</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <!-- Needed for ArquillianTest -->
      <groupId>org.jboss.shrinkwrap.resolver</groupId>
      <artifactId>shrinkwrap-resolver-impl-maven</artifactId>
      <scope>test</scope>
    </dependency>

    <dependency>
      <!-- Needed for InMemoryH2Test -->
      <groupId>com.h2database</groupId>
      <artifactId>h2</artifactId>
      <version>1.3.168</version>
      <scope>test</scope>
    </dependency>
    
		<dependency>
		  <!-- Used to generate test coverage reports, see https://github.com/camunda/camunda-consulting/tree/master/snippets/camunda-bpm-process-test-coverage -->
			<groupId>org.camunda.bpm.extension</groupId>
			<artifactId>camunda-bpm-process-test-coverage</artifactId>
			<version>0.2.8</version>
			<scope>test</scope>
		</dependency>    

    <dependency>
      <!-- use logback as logger -->
      <groupId>ch.qos.logback</groupId>
      <artifactId>logback-classic</artifactId>
      <version>1.1.2</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.slf4j</groupId>
      <!-- apache commons logging => slf4j -->
      <artifactId>jcl-over-slf4j</artifactId>
      <version>1.7.7</version>
      <scope>test</scope>
    </dependency>

    <dependency>
      <!--  java util logging => slf4j -->
      <groupId>org.slf4j</groupId>
      <artifactId>jul-to-slf4j</artifactId>
      <version>1.7.7</version>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>org.camunda.bpm.extension.mockito</groupId>
      <artifactId>camunda-bpm-mockito</artifactId>
      <scope>test</scope>
      <version>3.0.0</version>
    </dependency>

    <dependency>
      <!-- java ee -->
      <groupId>javax</groupId>
      <artifactId>javaee-api</artifactId>
      <version>7.0</version>
      <scope>provided</scope>
    </dependency>

    <dependency>
      <groupId>org.codehaus.groovy</groupId>
      <artifactId>groovy-all</artifactId>
      <version>2.4.8</version>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-databind</artifactId>
      <version>2.8.6</version>
    </dependency>

    <!-- Add your own dependencies here, if in compile scope, they are added to the war -->

  </dependencies>

  <repositories>
    <repository>
      <id>camunda-bpm-nexus</id>
      <name>Camunda BPM Maven Repository</name>
      <url>https://app.camunda.com/nexus/content/groups/public</url>
    </repository>
    <repository>
      <id>jboss-public-repository</id>
      <name>JBoss Repository</name>
      <url>http://repository.jboss.org/nexus/content/groups/public</url>
    </repository>
  </repositories>

  <build>
    <finalName>${project.artifactId}</finalName>
    <plugins>
      <plugin>
        <!-- Usage: mvn jboss-as:deploy See also: https://docs.jboss.org/jbossas/7/plugins/maven/latest/examples/deployment-example.html -->
        <groupId>org.jboss.as.plugins</groupId>
        <artifactId>jboss-as-maven-plugin</artifactId>
        <version>7.6.Final</version>
      </plugin>
      <plugin>
        <!-- Usage: mvn wildfly:deploy See also: https://docs.jboss.org/wildfly/plugins/maven/latest/examples/deployment-example.html -->
        <groupId>org.wildfly.plugins</groupId>
        <artifactId>wildfly-maven-plugin</artifactId>
        <version>1.0.2.Final</version>
      </plugin>
      <plugin>
        <!-- Plugin to generate sql scripts from jpa -->
        <groupId>de.juplo</groupId>
        <artifactId>hibernate-maven-plugin</artifactId>
        <version>2.0.0</version>
        <executions>
          <execution>
            <goals>
              <goal>drop</goal>
              <goal>create</goal>
            </goals>
            <configuration>
              <dialect>org.hibernate.dialect.H2Dialect</dialect>
            </configuration>
          </execution>
        </executions>
        <configuration>
          <export>false</export>
        </configuration>
      </plugin>
    </plugins>
  </build>

  <profiles>
    <profile>
      <id>default</id>
      <activation>
        <activeByDefault>true</activeByDefault>
      </activation>
      <dependencies>
        <dependency>
          <!-- Needed for ArquillianTest -->
          <!-- Requires a running WildFly with Camunda BPM
               change to other artifact for embedded start or different server -->
          <!-- Included here for convenience when running the test in Eclipse -->
          <groupId>org.wildfly.arquillian</groupId>
          <artifactId>wildfly-arquillian-container-remote</artifactId>
          <version>1.0.1.Final</version>
          <scope>test</scope>
        </dependency>
      </dependencies>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.17</version>
            <configuration>
              <excludes>
                <!-- Exclusion for Arquillian test cases to avoid dependency on infrastructure
                     for Maven build. Feel free to adjust to your testing requirements. -->
                <exclude>**/Arquillian*.java</exclude>
              </excludes>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>

    <profile>
      <id>webservice-generation</id>
      <activation>
        <activeByDefault>true</activeByDefault>
      </activation>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-codegen-plugin</artifactId>
            <version>2.1.2</version>
            <executions>
              <execution>
                <id>generate-sources</id>
                <phase>generate-sources</phase>
                <configuration>
                  <sourceRoot>${basedir}/target/generated/cxf</sourceRoot>
                  <wsdlOptions>
                    <wsdlOption>
                      <wsdl>${basedir}/src/main/resources/wsdl/globalweather.wsdl</wsdl>
                      <extraargs>
                        <extraarg>-client</extraarg>
                      </extraargs>
                    </wsdlOption>
                  </wsdlOptions>
                </configuration>
                <goals>
                  <goal>wsdl2java</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
          <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>build-helper-maven-plugin</artifactId>
            <version>1.8</version>
            <executions>
              <execution>
                <id>add-source</id>
                <phase>generate-sources</phase>
                <goals>
                  <goal>add-source</goal>
                </goals>
                <configuration>
                  <sources>
                    <source>${basedir}/target/generated/cxf</source>
                  </sources>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>

    <!--<profile>-->
      <!--<id>arq-jbossas-remote</id>-->
      <!--<dependencies>-->
        <!--<dependency>-->
          <!--&lt;!&ndash; Needed for ArquillianTest &ndash;&gt;-->
          <!--&lt;!&ndash; Requires a running JBoss AS7 with Camunda BPM-->
               <!--change to other artifact for embedded start or different server &ndash;&gt;-->
          <!--<groupId>org.jboss.as</groupId>-->
          <!--<artifactId>jboss-as-arquillian-container-remote</artifactId>-->
          <!--<version>${jboss.version}</version>-->
          <!--<scope>test</scope>-->
        <!--</dependency>-->
      <!--</dependencies>-->
    <!--</profile>-->

    <profile>
      <id>arq-wildfly-remote</id>
      <dependencies>
        <dependency>
          <!-- Needed for ArquillianTest -->
          <!-- Requires a running Wildfly with Camunda BPM -->
          <groupId>org.wildfly.arquillian</groupId>
          <artifactId>wildfly-arquillian-container-remote</artifactId>
          <version>1.0.1.Final</version>
          <scope>test</scope>
          <exclusions>
            <exclusion>
              <groupId>sun.jdk</groupId>
              <artifactId>jconsole</artifactId>
            </exclusion>
          </exclusions>
        </dependency>
      </dependencies>
    </profile>
  </profiles>
</project>    

Do you think I will need any extra licenses?
(I also use a postgres jdbc driver in my applications)

Thanks


#7

Hi Kostas,

We don’t have license book for 7.7.
There are not so many differences between the two versions.
Maybe this page could help you - https://docs.camunda.org/manual/7.7/introduction/third-party-libraries/

Best regards,
Yana