---
layout: default
---
<!--
# Licensed to the Apache Software Foundation (ASF) under one or more contributor
# license agreements; and to You under the Apache License, Version 2.0.
-->

<div id="whiskIndexedLayout">
  <!-- Documentation Index -->
  <div id="whiskIndex">
    <ul>
      <li><a href="#documentation">Documentation</a></li>

      <!-- Programming Model -->
      <li class="index-menu-toggle"><a href="#programming-model">Programming Model</a></li>
      <ul class="index-menuitems">
        <li><a href="#programming-model-actions">Actions</a></li>
        <li><a href="#programming-model-triggers">Triggers & Rules</a></li>
      </ul>
      <!-- Developers -->
      <li class="index-menu-toggle"><a href="#developers">Developers</a></li>
      <ul class="index-menuitems index-menu-start-open">
        <li><a href="#pre-requisites">Pre-requisites</a></li>
        <li><a href="#using-openwhisk">Using OpenWhisk</a></li>
        <li class="index-menu-toggle"><a href="#getting-started">Getting Started</a></li>
        <ul class="index-menuitems">
          <li><a href="#wsk-cli">Whisk CLI (wsk)</a></li>
          <li><a href="#wskdeploy">Whisk Deploy (wskdeploy)</a></li>
          <li><a href="#rest-api">OpenWhisk REST API</a></li>
          <li><a href="#openwhisk-clients">OpenWhisk Clients</a></li>
        </ul>

        <!-- WARNING: Index anchors have style="white-space: pre-wrap;"
        DO NOT CHANGE THE SPACING OF THE ANCHOR TEXT -->
        <li class="index-menu-toggle"><a href="#actions-creating-and-invoking">Creating and
    Invoking Actions</a></li>
        <ul class="index-menuitems">
          <li id="index-nodejs" class="index-menu-toggle"><a href="#nodejs">using NodeJS</a></li>
          <ul class="index-menuitems">
            <li><a href="#actions-nodejs">Creating and Invoking Sample Action</a></li>
            <li><a href="#nodejs-runtime">NodeJS Runtime</a></li>
            <li><a href="#nodejs-additional-resources">Additional Resources</a></li>
          </ul>
          <li id="index-go" class="index-menu-toggle"><a href="#go">using Go</a></li>
          <ul class="index-menuitems">
            <li><a href="#actions-go">Creating and Invoking Action</a></li>
            <li><a href="#go-runtime">Go Runtime</a></li>
            <li><a href="#go-additional-resources">Additional Resources</a></li>
          </ul>
          <li id="index-java" class="index-menu-toggle"><a href="#java">using Java</a></li>
          <ul class="index-menuitems">
            <li><a href="#actions-java">Creating and Invoking Action</a></li>
            <li><a href="#java-runtime">Java Runtime</a></li>
            <li><a href="#java-additional-resources">Additional Resources</a></li>
          </ul>
          <li id="index-php" class="index-menu-toggle"><a href="#php">using PHP</a></li>
          <ul class="index-menuitems">
            <li><a href="#actions-php">Creating and Invoking Action</a></li>
            <li><a href="#php-runtime">PHP Runtime</a></li>
            <li><a href="#php-additional-resources">Additional Resources</a></li>
          </ul>
          <li id="index-python" class="index-menu-toggle"><a href="#python">using Python</a></li>
          <ul class="index-menuitems">
            <li><a href="#actions-python">Creating and Invoking Sample Action</a></li>
            <li><a href="#python-runtime">Python Runtime</a></li>
            <li><a href="#python-additional-resources">Additional Resources</a></li>
          </ul>
          <li id="index-ruby" class="index-menu-toggle"><a href="#ruby">using Ruby</a></li>
          <ul class="index-menuitems">
            <li><a href="#actions-ruby">Creating and Invoking Action</a></li>
            <li><a href="#ruby-runtime">Ruby Runtime</a></li>
            <li><a href="#ruby-additional-resources">Additional Resources</a></li>
          </ul>
          <li id="index-swift" class="index-menu-toggle"><a href="#swift">using Swift</a></li>
          <ul class="index-menuitems">
            <li><a href="#actions-swift">Creating and Invoking Action</a></li>
            <li><a href="#swift-runtime">Swift Runtime</a></li>
            <li><a href="#swift-additional-resources">Additional Resources</a></li>
          </ul>
          <li id="index-dotnet" class="index-menu-toggle"><a href="#dotnet">using .NET Core</a></li>
          <ul class="index-menuitems">
            <li><a href="#actions-dotnet">Creating and Invoking Action</a></li>
            <li><a href="#dotnet-runtime">.NET Core Runtime</a></li>
            <li><a href="#dotnet-additional-resources">Additional Resources</a></li>
          </ul>
          <!--li id="index-docker" ><a href="#docker">Docker</a></li>
          <ul>
              <li>Zip Action</li>
              <li>SDK (Writing Your Own Runtime)</li>
              <li>Other Resources</li>
          </ul-->
        </ul>
        <li><a href="#managing_actions_with_openwhisk_packages">Managing Actions with OpenWhisk Packages</a></li>
        <li><a href="#automating_actions_from_event_sources">Automating Actions from Event Sources</a></li>
        <li><a href="#using_openwhisk_enabled_services">Using OpenWhisk Enabled Services</a></li>
        <!--li><a href="#exposing_apis_from_actions">Exposing APIs from Actions</a></li-->
        <li><a href="#sample_openwhisk_applications">Sample OpenWhisk Applications</a></li>
        <li><a href="#tutorial_and_workshop">Tutorial And Workshop</a></li>
        <li><a href="#development_tools">Development Tools</a></li>
      </ul>

      <!-- Operators -->
      <li class="index-menu-toggle"><a href="#operators">Operators</a></li>
      <ul class="index-menuitems">
        <li><a href="#openwhisk_architecture">OpenWhisk Architecture</a></li>
        <li class="index-menu-toggle"><a href="#openwhisk_deployment">Deployment Options</a></li>
        <ul class="index-menuitems">
          <li><a href="#deploy_kubernetes">Kubernetes</a></li>
          <li><a href="#deploy_docker_compose">Docker Compose</a></li>
          <li><a href="#deploy_ansible">Ansible</a></li>
          <li><a href="#deploy_vagrant">Vagrant</a></li>
        </ul>
        <li><a href="#deployment_admin">Administrative Operations</a></li>
        <li><a href="#operators_resources">Operators Resources</a></li>
      </ul>

      <!-- Contributors -->
      <li class="index-menu-toggle"><a href="#contributors">Contributors</a></li>
      <ul class="index-menuitems">
        <li><a href="#project-structure">Project Structure</a></li>
        <li><a href="#contributor-resources">Contributor Resources</a></li>
        <li><a href="#contributing-what-to-contribute">What Can I Contribute?</a></li>
        <li><a href="#contributing-runtimes">Contributing Language Runtimes</a></li>
      </ul>

      <!-- Other Resources -->
      <li><a href="#other-resources">Other Resources</a></li>

      <!-- FAQ -->
      <li><a href="#faq">FAQ</a></li>
    </ul>
  </div>

  <section id="whiskNodes">
    <main class="doc">
      <div class="content">
        <a class="indexable" id="documentation"></a>
        <h2>Documentation</h2>
        <p>There are many resources for learning about OpenWhisk;
          this page attempts to organize, describe, index and link
          to the essential information, wherever it resides, to help
          users in getting started.  In general, much of the best
          information is in the actual project repositories and we
          encourage you to seek detailed and in-depth information
          there.
        </p>
        <h5>OpenWhisk documentation is organized by the following
          roles:</h5>
        <ul>
          <li><a href="#developers">Developers</a>: users
            developing functions/actions, creating packages, feeds,
            and feed provider services using project APIs, clients
            and tooling.
          </li>
          <li><a href="#contributors">Contributors</a>: developers
            designing and coding backend architectural components
            and tooling that comprise the OpenWhisk platform and its
            project ecosystem.
          </li>
          <li><a href="#operators">Operators</a>: users who deploy,
            configure, and host the Apache OpenWhisk
            Function-as-a-Service platform for development, testing
            and/or production.
          </li>
        </ul>
      </div>
    </main>

    <!-- *************************************************************** -->
    <!-- Programming Model                                               -->
    <!-- *************************************************************** -->
    <main class="doc">
      <div class="content">
        <a class="indexable" id="programming-model"></a>
        <h3>OpenWhisk Programming Model</h3>
        <p>
          <img style="display:block; width:80%; margin: auto"
            src="{{ site.github.url }}/images/illustrations/OW-Programming-Model-Horz.png"
            alt="OpenWhisk Programming Model">
        </p>
        <p>The OpenWhisk programming model...</p>
        <h5>Is Event-driven</h5>
        <p>In the OpenWhisk programming model, Events drive the
          Serverless execution of functional code called Actions.
          Events can come from any Event Source or Feed service
          including:
        </p>
        <!-- TODO: Add links here -->
        <ul>
          <li>Datastores, Message Queues, Mobile and Web
        Applications, Sensors, Chatbots, Scheduled tasks (via Alarms),
        etc.
          </li>
        </ul>
        <h5>Supports any functional programming language</h5>
        <p>The OpenWhisk platform supports Action code written for any
          of its ever-growing, built-in <a href="https://github.com/apache/openwhisk/blob/master/docs/actions.md#languages-and-runtimes">language runtimes</a>.
        </p>
        <p>The following is a list of runtimes the Apache OpenWhisk project
          has officially released and made available on
          our <a href="downloads.html#component-releases">Downloads</a> page.
        </p>
        <ul>
          <!-- TODO Fix Go Runtime README so title matches other runtimes; bury "other exec. -->
          <li><a href="https://github.com/apache/openwhisk-runtime-dotnet#readme">.Net</a> - OpenWhisk runtime for .Net Core 2.2</li>
          <li><a href="https://github.com/apache/openwhisk-runtime-go#readme">Go</a> - OpenWhisk runtime for Go</li>
          <li><a href="https://github.com/apache/openwhisk-runtime-java#readme">Java</a> - OpenWhisk runtime for Java 8 <i>(OpenJDK 8, JVM OpenJ9)</i></li>
          <li><a href="https://github.com/apache/openwhisk-runtime-nodejs#readme">JavaScript</a> - OpenWhisk runtime for Node.js v10, v12 and v14</li>
          <li><a href="https://github.com/apache/openwhisk-runtime-php#readme">PHP</a> - OpenWhisk runtime for PHP 8.0, 7.4 and 7.3</li>
          <li><a href="https://github.com/apache/openwhisk-runtime-python#readme">Python</a> - OpenWhisk runtime for Python 2.7, 3 and a 3 runtime variant for AI/ML <i>(including packages for Tensorflow and PyTorch)</i></li>
          <li><a href="https://github.com/apache/openwhisk-runtime-ruby#readme">Ruby</a> - OpenWhisk runtime for Ruby 2.5</li>
          <li><a href="https://github.com/apache/openwhisk-runtime-swift#readme">Swift</a> - OpenWhisk runtime for Swift 3.1.1, 4.1 and 4.2</li>
        </ul>

        <p>The following is a list of experimental runtimes the Apache OpenWhisk community is developing. The Apache OpenWhisk community would welcome any help bringing these runtimes to a state where they can be released.
        </p>
        <ul>
          <li><a href="https://github.com/apache/openwhisk-runtime-ballerina#readme">Ballerina</a> - OpenWhisk runtime for Ballerina 0.990.2</li>
          <li><a href="https://github.com/apache/openwhisk-runtime-rust#readme">Rust</a> - OpenWhisk runtime for Rust 1.34</li>
        </ul>

        <!-- TODO: fix the Docker SDK header/title to say "Docker SDK" NOT "Blackbox Actions"-->
        <p>If you need languages or libraries the current
          "out-of-the-box" runtimes do not support, you can create
          and customize your own executable that run "black box"
          <a href="https://github.com/apache/openwhisk-runtime-docker/blob/master/sdk/docker/README.md">Docker Actions</a>
          using the Docker SDK which are run on the
          <a href="https://github.com/apache/openwhisk-runtime-docker#readme">Docker Runtime</a>.
          <!-- TODO: cover later and link -->
        </p>

        <a class="indexable" id="programming-model-actions"></a>
        <h4>Actions</h4>
        <p>This section will answer some of the essential questions about
          OpenWhisk Actions relative to the programming model.
          If you want more detailed information,
          please read the project documentation on
        <a href="https://github.com/apache/openwhisk/blob/master/docs/actions.md#openwhisk-actions">
          OpenWhisk Actions</a>.
        </p>
        <img width="90%"
        src="{{ site.github.url }}/images/illustrations/OW-Programming-Model-Horz-Action.png"
        alt="OpenWhisk Programming Model: Actions">
        <p>
          <question>What is an Action?</question>
          Actions are stateless functions (code snippets) that run on
          the OpenWhisk platform. Actions encapsulate application logic
          to be executed in response to events. Actions can be invoked
          manually by the OpenWhisk REST API, OpenWhisk CLI,
          simple and user-created APIs or automated via Triggers
          which we will discuss later.
        </p>
        <p>
          <question>Does the function's language matter?</question>
          No, OpenWhisk is agnostic to a function's implementation language.
          This means that OpenWhisk operations used to create, invoke and
          manage Actions are the same regardless of implementation choice.
          You decide what languages are best for you!
        </p>
        <p>
          <question>What if your preferred language/runtime is not supported
          by OpenWhisk?</question>
          If your favorite language is not listed above, you may find the
          Docker action or native binary path more suitable.
          The OpenWhisk platform is extensible and you can add new languages
          or runtimes (with custom packages and third-party dependencies)
          following the guide described
          <a href="https://github.com/apache/openwhisk/blob/master/docs/actions-new.md">here</a>.
          Please reach out to other whiskers on dev mailing list at
          <a href="mailto:dev@openwhisk.apache.org">dev@openwhisk.apache.org</a>.
          once you have followed the guide on creating a new language/runtimes.
          Here are some examples of runtimes added by community:
        </p>

        <ul>
          <li><a href="https://github.com/rainbyte/openwhisk-wrapper">Haskell based OpenWhisk Services</a></li>
          <li><a href="http://jamesthom.as/blog/2017/01/18/openwhisk-and-rust/">OpenWhisk and Rust</a></li>
          <li><a href="https://github.com/gekola/openwhisk_docker_samples">Run Clojure, Erlang, Ruby, and Rust Actions on OpenWhisk using Docker</a></li>
          <li><a href="https://github.com/imesh/openwhisk-runtime-ballerina#apache-openwhisk-runtime-for-ballerina">Ballerina</a></li>
        </ul>

        <h5>Composing Sequences of Actions</h5>
        <p>
          Multiple actions, even implemented in different languages, may be
          composed together to create a longer processing pipeline called a
          <a href="https://github.com/apache/openwhisk/blob/master/docs/actions.md#creating-action-sequences">sequence</a>.
          A sequence can be treated as a single action in terms of it's creation
          and invocation.
        </p>

        <h5>Learn more</h5>
        <p>Listed below are some additional topics related to
          developing OpenWhisk Actions:</p>
        <ul>
          <li><a href="https://github.com/apache/openwhisk/blob/master/docs/reference.md#openwhisk-entities">Namespacing</a>
            - the same Namespace and Naming rules as any
            <a href="https://github.com/apache/openwhisk/blob/master/docs/reference.md#openwhisk-entities">OpenWhisk Entity</a> that are part of the
            OpenWhisk programming model.
          </li>
          <li><a href="https://github.com/apache/openwhisk/blob/master/docs/reference.md#system-limits">System Limits</a>
            - Learn about some of the
            (operator configurable) System Limits that are imposed on
            OpenWhisk Actions.
          </li>
          <li><a href="https://github.com/apache/openwhisk/blob/master/docs/webactions.md#web-actions">Web Actions</a>
            - Find out how to annotate OpenWhisk Actions to quickly enable
            you to build web based applications.
          </li>
          <li><a href="https://github.com/apache/openwhisk/blob/master/docs/about.md#the-internal-flow-of-processing">Action Processing</a>
            - Find out what happens "behind the scenes" when you invoke an
            Action in Apache OpenWhisk.
          </li>
        </ul>

        <a class="indexable" id="programming-model-triggers"></a>
        <h4>Triggers and Rules</h4>
        <p>This section will describe how to automate OpenWhisk Actions
          in response to events using OpenWhisk Triggers.
          If you want to more detailed information,
          please read the project documentation on
        <a href="https://github.com/apache/openwhisk/blob/master/docs/triggers_rules.md#creating-triggers-and-rules">
          OpenWhisk Triggers and Rules</a>.
        </p>
        <img width="90%"
        src="{{ site.github.url }}/images/illustrations/OW-Programming-Model-Horz-Trigger-Rule.png"
        alt="OpenWhisk Programming Model: Actions">

        <p>
          <question>What is a trigger?</question>
          Triggers are named channels for classes or kinds of events
          sent from Event Sources.
        </p>
        <p>
          <question>What is a Rule?</question>
          Rules are used to associate one trigger with one action.
          After this kind of association is created, each time
          a trigger event is fired, the action is invoked.
        </p>
        <p>
          <question>What are Event Sources?</question>
          These are services that generate events that often indicate
          changes in data or carry data themselves. Some examples of
          common Event Sources include:
        </p>
        <ul>
          <li>Messages arriving on Message Queues</li>
          <li>Changes in Databases</li>
          <li>Changes in Document Stores</li>
          <li>Website or Web Application interactions</li>
          <li>Service APIs being invoked</li>
          <li>IoT Frameworks forwarding device sensor data</li>
          <li>etc.</li>
        </ul>
        <p>
          <question>Why do I need to connect actions to event
            sources?</question>
          OpenWhisk is based on an event-driven architecture where most
          Actions are executed as events happen.
          The Trigger itself is "fired" with a dictionary of
          key-value pairs (i.e., the parameters) coming from the
          Event Source and allows the configuration of optional default
          values thus helping assure the data is compatible with any
          associated Actions.
          Rules allow for the same Trigger to be associated with multiple
          Actions, as well as allow for specific automation to be enabled
          or disabled dynamically without destroying the
          Trigger definition.
        </p>
      </div>
    </main>

    <!-- *************************************************************** -->
    <!-- Developers                                                      -->
    <!-- *************************************************************** -->
    <main class="doc">
      <div class="content">
        <a class="indexable" id="developers"></a>
        <h2>Developers</h2>
        <p>
          The OpenWhisk project and programming model supports
          different kinds of developers that may wish to
          use different runtimes and tooling.
          This section contains the information and resources
          you need to become a Serverless application
          developer using the Apache OpenWhisk platform.
        </p>

        <!-- *********************************************************** -->
        <!-- Developers - Pre-requisites                                 -->
        <!-- *********************************************************** -->
        <a class="indexable" id="pre-requisites"></a>
        <h3>Pre-requisites</h3>
        <p>You will need to have access to a running instance of the
          OpenWhisk platform to develop against.
        </p>
        <h5>Running OpenWhisk locally</h5>
        <p>Developers can select to install and configure their own
          instance from among any of the options listed here:
        <a href="#openwhisk_deployment">OpenWhisk Deployment Options</a>.
        </p>
        <p>For local, "light weight" development, we recommend using
          <a href="https://github.com/apache/openwhisk-deploy-kube/blob/master/README.md#kubernetes">Kubernetes</a>
          enabled within Docker (i.e., Docker for Mac or Windows,
          Minikube for Linux).
        <ul>
          <li>
            For setup instructions, see: <a href="https://github.com/apache/openwhisk-deploy-kube/blob/master/README.md#prerequisites-kubernetes-and-helm">Simple Docker-based options</a>.
          </li>
        </ul>
        <h5>Using OpenWhisk on a Cloud Provider</h5>
        <p>Again, we encourage developers to leverage Cloud-based Kubernetes
          services to deploy OpenWhisk.
        </p>
        <p>Another option would be to use Serverless provider that
          already hosts Apache OpenWhisk and supports its Command
          Line Interface (CLI) such as
          <a href="https://console.bluemix.net/openwhisk/">IBM Cloud Functions.</a>
        </p>

        <!-- *********************************************************** -->
        <!-- Developers - Using OpenWhisk                                -->
        <!-- *********************************************************** -->
        <a class="indexable" id="using-openwhisk"></a>
        <h3>Using OpenWhisk</h3>
        <p>By default, local deployments of Apache Openwhisk create
          a guest account and endpoint for developers to use. However,
          if you are running on an instance of OpenWhisk administered
          by a Cloud provider, you will need to obtain an account and
          endpoint information from them.
        </p>
        <h5>Default Guest Account</h5>
        <p>
          <a href="#openwhisk_deployment">OpenWhisk
            Deployments</a> create a guest account configured with
            the authentication key available at:
        </p>
        <ul>
          <li>
            Guest certificate: <a href="https://github.com/apache/openwhisk/blob/master/ansible/files/auth.guest">https://github.com/apache/openwhisk/blob/master/ansible/files/auth.guest</a>
          </li>
        </ul>

        <h5>Default API Host</h5>
        <p>Deployments of Apache Openwhisk set the default API
          host endpoint, used with the Command Line Interface (CLI)
          and the Whisk Deploy utility, to:
        </p>
        <ul><li><strong>192.168.33.13</strong>.</li></ul>
        <p>However, when running under a Kubernetes deployment installed
          using Helm, the endpoint's address and port are set in your
          "mycluster.yaml" deployment file.
          See the <a href="https://github.com/apache/openwhisk-deploy-kube/blob/master/README.md#deploy-with-helm">Deploy With Helm</a>
          instructions for details.
        </p>

      </div>
    </main>

    <!-- *************************************************************** -->
    <!-- Getting Started                                                 -->
    <!-- *************************************************************** -->
    <main class="doc">
      <div class="content">
        <a class="indexable" id="getting-started"></a>
        <h3>Getting Started</h3>
        <p>As a developer, you need the right tools for the job.
          This section describes the various tools that you can use
          to work with OpenWhisk which include:
        </p>
        <ul>
          <li>
            <a href="#wsk-cli">OpenWhisk Command Line Interface (CLI) (wsk)</a>
          </li>
          <li>
            <a href="#wskdeploy">OpenWhisk Deployment Utility (wskdeploy)</a>
          </li>
          <li>
            <a href="#rest-api">OpenWhisk REST API</a>
          </li>
          <li>
            <a href="#openwhisk-clients">OpenWhisk Clients</a>
            for JavaScript, Go, Swift and Python.
          </li>
        </ul>

        <!-- ********************************************************** -->
        <!-- OpenWhisk CLI                                              -->
        <!-- ********************************************************** -->
        <a class="indexable" id="wsk-cli"></a>
        <h4>OpenWhisk CLI <em>(wsk)</em></h4>
        <p>OpenWhisk offers the <code>wsk</code> Command Line Interface
          (CLI) to easily create, run, and manage OpenWhisk entities.
        </p>
        <p>For detailed information on setting up and configuring the
          OpenWhisk CLI, go to the
          <a href="https://github.com/apache/openwhisk/blob/master/docs/cli.md#openwhisk-cli">OpenWhisk CLI</a>
          documentation page in GitHub.
        </p>

        <!-- Install: download & installing -->
        <a class="indexable" id="wsk-cli-install"></a>
        <h5>Installing</h5>
        <p>You have a couple of choices on how to install the Whisk CLI
          depending on your target Operating System:
        </p>

        <h6>Using Homebrew (Linux or Mac)</h6>
        <div class="indented">
          <p>To easily install the OpenWhisk CLI (wsk) you can
            use <a href="https://brew.sh">Homebrew for Mac</a>
            or <a href="http://linuxbrew.sh">Homebrew for Linux</a>.
          </p>
          <div class="terminal">
{% highlight bash %}
$ brew update
$ brew install wsk
{% endhighlight %}
          </div>
          <p>Then you can invoke the OpenWhisk CLI by just
            typing <code>wsk</code> from the command line.
          </p>
        </div>

        <h6>Download and install the wsk CLI from (Linux, Mac or Windows):</h6>
        <ul>
          <li>
            <p>Download the OpenWhisk CLI for your Operating System as
              a standalone compressed TAR Archive file (<code>.tgz</code>)
              or ZIP file (<code>.zip</code>) from the project
              <a href="https://github.com/apache/openwhisk-cli/releases">Releases</a> page
              in GitHub:
            </p>
            <ul>
              <li>
                <a href="https://github.com/apache/openwhisk-cli/releases">https://github.com/apache/openwhisk-cli/releases</a>
              </li>
            </ul>
            <p>where you may select to download the CLI from one of the versioned releases.
            </p>
          </li>
          <li><p>Uncompress the <code>wsk</code> executable from
            the <code>tar.gz</code> file.</p></li>
          <li>
            <div id="copy_to_path_instructions">
              <p>Simplify access to the <code>wsk</code> executable by
                moving or copying the binary file to a path listed
                in your <code>PATH</code> environment variable.
                This will enable you to invoke the OpenWhisk CLI by
                just typing '<code>wsk</code>' on the command line
                from anywhere.
              </p>
              <p>For example:</p>
              <ul>
                <li><p><b>Linux</b>: Move the <code>wsk</code> executable
                  to your local <code>bin</code> directory:</p>
                    <div class="terminal">
{% highlight bash %}$ sudo mv [full path to downloaded wsk executable] /usr/local/bin/wsk{% endhighlight %}
                    </div>
                </li>
                <li>
                  <p>
                    <b>Windows</b>: Follow instructions as linked here:
                  </p>
                  <ul>
                    <li>
                      <a href="https://www.computerhope.com/issues/ch000549.htm">How to set the path and environment variables in Windows</a>.
                    </li>
                  </ul>
                </li>
              </ul>
            </div>
          </li>
        </ul>

        <!-- Install: Verify -->
        <a class="indexable" id="wsk-cli-verify"></a>
        <h5>Verify Installation</h5>
        <p>You can verify your installation by invoking the Whisk
          CLI's help command:
        </p>
        <div class="indented">
          <div class="terminal">
{% highlight bash %}$ wsk --help{% endhighlight %}
          </div>
        </div>

        <!-- Install: Configuring -->
        <a class="indexable" id="wsk-cli-configure"></a>
        <h5>Configuring</h5>
        <p>Before using the OpenWhisk CLI, you must first configure it
          to point to the OpenWhisk platform you want the utility
          to use (i.e., its API endpoint) and also provide it with your
          associated authentication credentials.</p>
        <h6 id="api_authentication">Setting the API Host and
          Authentication Key</h6>
        <div class="indented">
          <p>You can configure wsk CLI to use your OpenWhisk
            credentials in few different ways.  See the
          <a href="https://github.com/apache/openwhisk/blob/master/docs/cli.md#openwhisk-cli">Setting up the OpenWhisk CLI</a>
          page for a full set of configuration options.
          The instructions below walk you through the simplest
          possible configuration using only an
          <code>API_HOST</code> and <code>AUTH_KEY</code> CLI
          properties using a default <code>guest</code>
          namespace.</p>

          <h6>wsk property setup</h6>
          <p>Run the following command to set whisk API HOST and
            authorization key to create the configuration file:</p>
          <div class="terminal">
{% highlight bash %}
$ wsk property set --apihost API_HOST --auth AUTH_KEY --namespace guest
{% endhighlight %}
          </div>
          <p>The OpenWhisk CLI stores the properties set
            in <code>~/.wskprops</code> by default.
            The location of this file can be altered by setting the
            <code>WSK_CONFIG_FILE</code> environment variable.
            For example:
          </p>
          <div class="terminal">
{% highlight bash %}
$ export WSK_CONFIG_FILE=your-config-file
{% endhighlight %}
          </div>

          <h6>Verify properties</h6>
          <p>Verify your properties were properly set by
            using the <code>wsk property get</code> command:</p>
            <div class="terminal">
{% highlight bash %}
$ wsk property get
{% endhighlight %}
            </div>
        </div>

        <!-- Install: Test Configuration -->
        <h5>Test configuration</h5>
        <div class="indented">
          <p>A simple "read" command will cause the CLI to authenticate
            to the OpenWhisk your configured API host endpoint and
            credentials.
          is incorrect.</p>
          <h6>Verify host connection</h6>
          <p>Verify your host connection and credentials using
            the <code>wsk list</code> command with the
            <code>-v</code> (verbose) flag enabled.</p>
          <div class="terminal">
{% highlight bash %}
$ wsk list -v
{% endhighlight %}
          </div>
          <p>You should see the full HTTP request and response headers
            the CLI sends/receives to/from the host along with the
            response codes.</p>
        </div>

        <!-- ********************************************************** -->
        <!-- Whisk Deploy                                               -->
        <!-- ********************************************************** -->
        <a class="indexable" id="wskdeploy"></a>
        <h4>Whisk Deploy <em>(wskdeploy)</em></h4>
        <p>
          <a href="https://github.com/apache/openwhisk-wskdeploy/blob/master/README.md">Whisk Deploy</a>
          is a utility, named <em>wskdeploy</em>, to help deploy and
          manage all your OpenWhisk Packages, Actions, Triggers, Rules
          and APIs from a single command using an application manifest.
        </p>

        <h5>Whisk deploy in the <em>wsk</em> CLI</h5>

        <p>
          The functionality of <em>wskdeploy</em> is also embedded as the <code>deploy</code> subcommand within the <em>wsk</em> CLI. The functionality is identical and supports all the same parameters and flags. This means that you can use the <code>wsk deploy</code> subcommand if you already have the CLI installed or follow the instructions below on installing the wskdeploy utility for standalone use.
        </p>

        <h5>Installing</h5>
        <p>Download and Install the <code>wskdeploy</code> utility
          for Linux, Mac or Windows.</p>
        <div class="indented">
          <h6>Download the Whisk Deploy utility</h6>
          <ul>
            <li>
            <p> Download the Whisk Deploy utility for your Operating
              System as a standalone compressed TAR Archive
              file (<code>.tgz</code>) or ZIP file (<code>.zip</code>)
              from the project
              <a href="https://github.com/apache/openwhisk-wskdeploy/releases">Releases</a> page
              in GitHub:
              <ul>
                <li>
                  <a href="https://github.com/apache/openwhisk-wskdeploy/releases">https://github.com/apache/openwhisk-wskdeploy/releases</a>
                </li>
              </ul>
              <p>where you may select to download the utility from one of the versioned releases.</p>
            </li>
            <li>
              <p>Uncompress the <code>wskdeploy</code> executable from
                the <code>tar.gz</code> file.</p></li>
            <li>
              <p>Simplify access to the <code>wsk</code> executable by
                moving or copying the binary file to a path listed
                in your <code>PATH</code> environment variable.
                This will enable you to invoke Whisk Deploy utility by
                just typing '<code>wskdeploy</code>' on the command line
                from anywhere.</p>
              <p>Follow the
                <a href="#copy_to_path_instructions">instructions</a>
                as shown for the Whisk CLI to learn how to do this for
                your development platform.
              </p>
            </li>
          </ul>
        </div>

        <h5>Verify Installation</h5>
        <div class="indented">
          <p>Start by verifying the utility can display the command
            line help:
          </p>
          <div class="terminal">
{% highlight bash %}$ wskdeploy --help{% endhighlight %}
          </div>
        </div>

        <h5>Configure</h5>
        <div class="indented">
          <p>Before you proceed with the deployment, please make sure you have
            setup the <code>API_HOST</code> and <code>AUTH_KEY</code> CLI
            properties with a default namespace as described in the
            <a href="#api_authentication">Whisk CLI configuration
              section</a> above.
          </p>
        </div>

        <h5>Test configuration</h5>
        <ul>
          <li>
            <h6>Create and Deploy a simple OpenWhisk Manifest File</h6>
            <p>Please refer to the
            <a href="https://github.com/apache/openwhisk-wskdeploy/blob/master/docs/programming_guide.md#wskdeploy-utility-by-example">Whisk Deploy Programming Guide</a>
            for all manifest file grammar and syntax. This programming
            guide has step-by-step instructions for deploying OpenWhisk
            applications using wskdeploy.
            </p>
            <p>Here is a simple YAML manifest example that has an in-line
              function written in JavaScript that outputs "Hello World":
            </p>
            <div class="terminal">
{% highlight yaml %}
{% include code/manifest-for-helloJS-2.yaml %}
{% endhighlight %}
            </div>
          </li>
          <li>Save the YAML scripts as an OpenWhisk Manifest file
            called <code>manifest.yaml</code>
          </li>
          <li>
            <p>Deploy the OpenWhisk Manifest file:</p>

            <div class="terminal">
{% highlight bash %}$ wskdeploy -m manifest.yaml{% endhighlight %}
            </div>
          </li>
        </ul>
        <a class="indexable" id="additional-resources-wskdeploy"></a>
        <h5>Additional Resources</h5>
        <ul>
          <li><a href="https://github.com/apache/openwhisk-wskdeploy/tree/master/specification#openwhisk-packaging-specification">OpenWhisk Packaging Specification</a></li>
          <li><a href="https://github.com/apache/openwhisk-wskdeploy/blob/master/docs/programming_guide.md#wskdeploy-utility-by-example">Programming Guide - "<code>wskdeploy</code> utility by example"</a></li>
        </ul>
        <h6>Medium Blogs <span style="font-weight:normal;">(tagged <a href="https://medium.com/openwhisk/tagged/wskdeploy">wskdeploy</a>)</span></h6>
        <ul>
          <li><a href="https://medium.com/openwhisk/whisk-deploy-slack-package-f6690a1387e4">Whisk Deploy - Slack Package</a></li>
          <li><a href="https://medium.com/openwhisk/whisk-deploy-github-dependency-b31799394e79">Whisk Deploy - GitHub Dependency</a></li>
          <li><a href="https://medium.com/openwhisk/whisk-deploy-zip-actions-abcc8c01ac4">Whisk Deploy - Zip Actions</a></li>
          <li><a href="https://medium.com/openwhisk/whisk-deploy-zip-actions-with-include-exclude-30ba6d96ad8b">Whisk Deploy - Zip Actions with file Include & Exclude</a></li>
          <li><a href="https://medium.com/openwhisk/whisk-deploy-api-gateway-action-to-rest-api-cc52002c9d2c">Whisk Deploy - API Gateway (Action to REST API)</a></li>
          <li><a href="https://medium.com/openwhisk/whisk-deploy-how-to-sync-openwhisk-projects-between-client-and-server-c7939f0642a1">Whisk Deploy - How to Sync OpenWhisk Projects between Client and Server?</a></li>
        </ul>

        <!-- ********************************************************** -->
        <!-- OpenWhisk REST API                                         -->
        <!-- ********************************************************** -->
        <a class="indexable" id="rest-api"></a>
        <h4>OpenWhisk REST API</h4>
        <p>
            After your OpenWhisk environment is enabled, you can use
            OpenWhisk with your web apps or mobile apps with REST API
            calls.
            For more details about the APIs for actions, activations,
            packages, rules, and triggers, see the
            <a href="https://github.com/apache/openwhisk/blob/master/docs/rest_api.md#using-rest-apis-with-openwhisk">OpenWhisk API</a>
            documentation.
        </p>

        <!-- ********************************************************** -->
        <!-- OpenWhisk Clients                                          -->
        <!-- ********************************************************** -->
        <a class="indexable" id="openwhisk-clients"></a>
        <h4>OpenWhisk Clients</h4>
        <p>OpenWhisk provides a wrapper around the OpenWhisk APIs in
          multiple different languages.  These can be imported and used
          directly in your favorite Integrated Development
          Environment (IDE):</p>
        <ul>
            <li id="javascript-client"><a href="https://github.com/apache/openwhisk-client-js/blob/master/README.md#openwhisk-client-for-javascript">JavaScript</a></li>
            <li id="go-client"><a href="https://github.com/apache/openwhisk-client-go/blob/master/README.md">Go</a></li>
        </ul>
      </div>
    </main>

    <!-- *************************************************************** -->
    <!-- Creating and Invoking Actions                                   -->
    <!-- *************************************************************** -->

    <main class="doc">
      <div class="content">
        <a class="indexable" id="actions-creating-and-invoking"></a>
        <h3>Creating and Invoking Actions</h3>
        <p>In this section, we will show you how to create and invoke your
          first "Hello World" Action using both the OpenWhisk CLI and the
          Whisk Deploy utility.
        </p>
        <p>All the canonical examples will be provided using JavaScript
          using the NodeJS runtime; however, we also provide the same
          examples for all other supported runtime languages
          (e.g., Java, Python, Swift, etc.) where possible.
        </p>
        <h5>Select a language</h5>
        <p>Select from the language example you would like to follow from the
          list below.
        </p>

        <!-- ************************************** -->
        <!-- Actions - JavaScript (NodeJS)          -->
        <!-- ************************************** -->
        <a class="indexable" id="nodejs"></a>
        <h6 id="section-nodejs" class="section-toggle">using NodeJS (JavaScript)</h6>
        <div class="section-toggleable section-toggle-start-closed">
          <p></p>
          <a class="indexable" id="actions-nodejs"></a>
          <h5>Creating and Invoking NodeJS actions</h5>
          <p>
            Let's look at how to write a sample hello world action in NodeJS. You can visit
            <a href="https://github.com/apache/openwhisk/blob/master/docs/actions-nodejs.md#creating-and-invoking-javascript-actions">Creating and Invoking NodeJS actions</a>
            page for further details.
          </p>
          <p>
            <strong>Note:</strong> We will be using <i>wsk</i> CLI in this
            section. If you don't have it installed and configured,
            please refer to the section
            <a href="#wsk-cli">OpenWhisk CLI (wsk)</a>.
          </p>
          <ol>
            <li style="list-style-type: decimal">
              Create a file named <i>hello.js</i>:
              <div class="terminal">
{% highlight javascript linenos %}
{% include code/hello.js %}
{% endhighlight %}
              </div>
            </li>
            <li style="list-style-type: decimal">
              Create an action called <i>helloJS</i> using <i>hello.js</i>:
              <div class="terminal">
{% highlight bash %}$ wsk action create helloJS hello.js{% endhighlight %}
              </div>
              <div class="terminal">
                  <pre>ok: created action helloJS</pre>
              </div>
            </li>
            <li style="list-style-type: decimal">
              Invoke an action <i>helloJS</i>:
              <div class="terminal">
{% highlight bash %}$ wsk action invoke helloJS --result --param name World{% endhighlight %}
              </div>
              <div class="terminal">
{% highlight yaml %}
{
  "greeting": "Hello World!"
}{% endhighlight %}
              </div>
            </li>
            <li style="list-style-type: decimal">
              Deploy using <i>wskdeploy</i>:
              <p>
                <strong>Note:</strong> We will be using <i>wskdeploy</i>
                in this section. If you don't have the binary,
                please refer to the section on
                <a href="#wskdeploy">Whisk Deploy</a> to download it.
              </p>
              <ol>
                <li>
                  Create <i>manifest.yaml</i> with the following YAML content:
                  <div class="terminal">
{% highlight yaml linenos %}
{% include code/manifest-for-helloJS-1.yaml %}
{% endhighlight %}
                  </div>
                  Or
                  <p></p>
                  <div class="terminal">
{% highlight yaml linenos %}
{% include code/manifest-for-helloJS-2.yaml %}
{% endhighlight %}
                  </div>
                </li>
                <li>
                  Run deployment with <i>wskdeploy</i>:
                  <div class="terminal">
{% highlight bash %}$ wskdeploy -m manifest.yaml{% endhighlight %}
                  </div>
                </li>
              </ol>
            </li>
          </ol>

          <a class="indexable" id="nodejs-runtime"></a>
          <h5>OpenWhisk Runtime for NodeJS</h5>
          <p>
              OpenWhisk supports <strong>Node.js 14</strong>, <strong>Node.js 12</strong>, <strong>Node.js 10</strong> runtimes where Node.js 10 being the default picked by wsk CLI and Whisk Deploy.
              If you wish to learn more about NodeJS runtime along with
              the libraries that are supported or "built-in" by default, please visit
              <a href="https://github.com/apache/openwhisk-runtime-nodejs/blob/master/README.md">NodeJS Runtime GitHub Repository</a>.
          </p>
          <a class="indexable" id="nodejs-additional-resources"></a>
          <h5>Additional Resources</h5>
          <ul>
            <li><a href="https://medium.com/openwhisk/integrating-openwhisk-with-your-node-application-d489b8a20102">Integrating OpenWhisk with Your Node Applications</a></li>
            <li><a href="https://medium.com/openwhisk/migrating-from-a-node-app-to-serverless-d76f744b22c9">Migrating from a Node App to Serverless</a></li>
            <li><a href="https://medium.com/openwhisk/debugging-node-js-openwhisk-actions-3da3303e6741">Debugging Node.js OpenWhisk Actions</a></li>
          </ul>
          <h6>Medium Blogs <span style="font-weight:normal;">(tagged <a href="https://medium.com/openwhisk/tagged/nodejs">nodejs</a>)</span></h6>
          <ul>
            <li><a href="https://medium.com/openwhisk/creating-zipped-actions-in-openwhisk-ccfcda553a30">Creating Zipped Actions in OpenWhisk</a></li>
            <li><a href="https://medium.com/openwhisk/an-example-of-an-openwhisk-sequence-417d653c5952">An Example of an OpenWhisk Sequence</a></li>
            <li><a href="https://medium.com/openwhisk/working-with-openwhisk-triggers-734fa9624ae5">Working with OpenWhisk Triggers</a></li>
            <li><a href="https://medium.com/openwhisk/another-openwhisk-cron-example-the-blog-nag-dd0074821d2d">Another OpenWhisk Cron Example</a></li>
            <li><a href="https://medium.com/openwhisk/building-a-serverless-api-proxy-with-openwhisk-16e5fd16f44f">Building a Serverless API Proxy with OpenWhisk</a></li>
            <li><a href="https://medium.com/openwhisk/building-a-form-handler-service-in-openwhisk-55f15fb133a3">Building a Form Handler Service in OpenWhisk</a></li>
            <li><a href="https://medium.com/openwhisk/deploying-express-js-apps-to-openwhisk-part-1-9133ba5f262c">Deploying Express.js apps to OpenWhisk (Part 1)</a></li>
            <li><a href="https://medium.com/openwhisk/designing-an-openwhisk-action-for-web-action-support-4f0299481e74">Designing an OpenWhisk Action for Web Action Support</a></li>
          </ul>
        </div>

        <!-- ************************************** -->
        <!-- Actions - GoLang                       -->
        <!-- ************************************** -->
        <a class="indexable" id="go"></a>
        <h6 id="section-go" class="section-toggle">using Go</h6>
        <div class="section-toggleable section-toggle-start-closed">
          <p></p>
          <a class="indexable" id="actions-go"></a>
          <h5>Creating And Invoking Go actions</h5>
          <p>
            Let's look at how to write a sample hello world action in Go. You can visit
            <a href="https://github.com/apache/openwhisk/blob/master/docs/actions-go.md#creating-and-invoking-go-actions">Creating and Invoking Go actions</a>
            page for further details.
          </p>
          <p>
            <strong>Note:</strong> We will be using <i>wsk</i> CLI in this
            section. If you don't have it installed and configured,
            please refer to the section
            <a href="#wsk-cli">OpenWhisk CLI (wsk)</a>.
          </p>
          <ol>
            <li style="list-style-type: decimal">
              <a class="indexable" id="hello-go"></a>
              Create a file named <i>hello.go</i>:
              <div class="terminal">
{% highlight go linenos %}
{% include code/hello.go %}
{% endhighlight %}
              </div>
            </li>
            <li style="list-style-type: decimal">
              Create an action <i>helloGo</i>:
              <div class="terminal">
{% highlight bash %}$ wsk action create helloGo hello.go{% endhighlight %}
              </div>
            </li>
            <li style="list-style-type: decimal">
                Invoke an action <i>helloGo</i>:
              <div class="terminal">
{% highlight bash %}$ wsk action invoke helloGo --result --param name gopher{% endhighlight %}
              </div>
              <div class="terminal">
{% highlight yaml %}
{
"msg": "Hello, gopher!"
}
{% endhighlight %}
              </div>
            </li>
            <li style="list-style-type: decimal">
              Deploy using <i>wskdeploy</i>:
              <p>
                <strong>Note:</strong> We will be using <i>wskdeploy</i> in
                this section. If you don't have the binary,
                please refer to the section
                on <a href="#wskdeploy">Whisk Deploy</a> to download it.
              </p>
              <ol>
                <li>Create a directory called <i>actions</i> with
                  <i>hello.go</i> from step 1 <a href="#hello-go">above</a>.
                </li>
                <li>
                  Create <i>manifest.yaml</i> with the following YAML content:
                  <div class="terminal">
{% highlight yaml linenos %}
{% include code/manifest-for-helloGo.yaml %}
{% endhighlight %}
                  </div>
                </li>
                <li>
                  Run deployment with <i>wskdeploy</i>:
                  <div class="terminal">
{% highlight bash %}$ wskdeploy -m manifest.yaml{% endhighlight %}
                  </div>
                </li>
              </ol>
            </li>
          </ol>
          <a class="indexable" id="go-runtime"></a>
          <h5>OpenWhisk Runtime for Go</h5>
          <p>
            If you wish to learn more about Go runtime along with
            the libraries that are supported or "built-in" by
            default, please visit
            <a href="https://github.com/apache/openwhisk-runtime-go/blob/master/README.md">Go Runtime GitHub Repository</a>.
          </p>
          <a class="indexable" id="go-additional-resources"></a>
          <h5>Additional Resources</h5>
          <ul>
            <li><a href="https://www.slideshare.net/MicheleSciabarr/openwhisk-go-runtime">OpenWhisk Go Runtime</a></li>
            <li><a href="https://www.slideshare.net/MicheleSciabarr/openwhisk-goswiftbinaries-runtime">ActionLoop, Go and Swift</a></li>
          </ul>
          <!-- <h6>Medium Blogs <span style="font-weight:normal;">(tagged <a href="https://medium.com/openwhisk/tagged/golang">golang</a>)</span></h6>
          <ul>
            <li><a href=""></a></li>
            <li><a href=""></a></li>
            <li><a href=""></a></li>
          </ul> -->
        </div>

        <!-- ************************************** -->
        <!-- Actions - Python                       -->
        <!-- ************************************** -->
        <a class="indexable" id="python"></a>
        <h6 id="section-python" class="section-toggle">using Python</h6>
        <div class="section-toggleable section-toggle-start-closed">
          <p></p>
          <a class="indexable" id="actions-python"></a>
          <h5>Creating And Invoking Python actions</h5>
          <p>
            Let's look at how to write a sample hello world action in Python. You can visit
            <a href="https://github.com/apache/openwhisk/blob/master/docs/actions-python.md#creating-and-invoking-python-actions">Creating and Invoking Python actions</a>
            page for further details.
          </p>
          <p>
            <strong>Note:</strong> We will be using <i>wsk</i> CLI in this
            section. If you don't have it installed and configured,
            please refer to the section
            <a href="#wsk-cli">OpenWhisk CLI (wsk)</a>.
          </p>
          <ol>
            <li style="list-style-type: decimal">Create a file named <i>hello.py</i>:
              <div class="terminal">
{% highlight python linenos %}
{% include code/hello.py %}
{% endhighlight %}
              </div>
            </li>
            <li style="list-style-type: decimal">Create an action called <i>helloPy</i> using <i>hello.py</i>:
                <div class="terminal">
{% highlight bash %}$ wsk action create helloPy hello.py{% endhighlight %}
                </div>
                <div class="terminal">
<pre>ok: created action helloPy</pre>
                </div>
            </li>
            <li style="list-style-type: decimal">Invoke the <i>helloPy</i> action using command-line parameters:
              <div class="terminal">
{% highlight bash %}$ wsk action invoke helloPy --result --param name World{% endhighlight %}
              </div>
              <div class="terminal">
{% highlight yaml %}
{
"greeting": "Hello World!"
}
{% endhighlight %}
              </div>
            </li>
            <li style="list-style-type: decimal">Deploy using <i>wskdeploy</i>:
              <p>
                <strong>Note:</strong> We will be using <i>wskdeploy</i> in this section. If you don't have the binary,
                please refer to the section on <a href="#wskdeploy">Whisk Deploy</a> to download it.
              </p>
              <ol>
                <li>Create <i>manifest.yaml</i> with the following YAML content:
                  <div class="terminal">
{% highlight yaml linenos %}
{% include code/manifest-for-helloPy-1.yaml %}
{% endhighlight %}
                  </div>
                  Or
                  <p></p>
                  <div class="terminal">
{% highlight yaml linenos %}
{% include code/manifest-for-helloPy-2.yaml %}
{% endhighlight %}
                  </div>
                </li>
                <li>
                  Run deployment with <i>wskdeploy</i>:
                  <div class="terminal">
{% highlight bash %}$ wskdeploy -m manifest.yaml{% endhighlight %}
                  </div>
                </li>
              </ol>
            </li>
          </ol>

          <a class="indexable" id="python-runtime"></a>
          <h5>OpenWhisk Runtime for Python</h5>
          <p>
            OpenWhisk supports <strong>Python 2</strong> and <strong>Python 3</strong> runtimes where Python 2 being default pick by wsk CLI and Whisk Deploy.
            If you wish to learn more about Python runtime along with
            the libraries that are supported or "built-in" by default, please visit
            <a href="https://github.com/apache/openwhisk-runtime-python/blob/master/README.md">Python Runtime GitHub Repository</a>.
          </p>
          <a class="indexable" id="python-additional-resources"></a>
          <h5>Additional Resources</h5>
          <ul>
            <li><a href="http://jamesthom.as/blog/2017/04/27/python-packages-in-openwhisk/">Using External Python Libraries in OpenWhisk</a></li>
            <li><a href="https://www.slideshare.net/CodeOps/openwhisk-by-example-auto-retweeting-example-in-python">Auto Retweeting Example in Python</a></li>
          </ul>
          <h6>Medium Blogs <span style="font-weight:normal;">(tagged <a href="https://medium.com/openwhisk/tagged/python">python</a>)</span></h6>
          <!-- <ul>
            <li><a href="https://medium.com/openwhisk/python-packages-in-openwhisk-8d10dcd91257">Python Packages in OpenWhisk</a></li>
            <li><a href="https://medium.com/openwhisk/large-applications-on-openwhisk-bcf15bff94ec">Large Applications on OpenWhisk</a></li>
          </ul> -->
        </div>

        <!-- ************************************** -->
        <!-- Actions - Java                         -->
        <!-- ************************************** -->
        <a class="indexable" id="java"></a>
        <h6 id="section-java" class="section-toggle">using Java</h6>
        <div class="section-toggleable section-toggle-start-closed">
          <p></p>
          <a class="indexable" id="actions-java"></a>
          <h5>Creating and Invoking Java actions</h5>
          <p>
            Let's look at how to write a sample hello world action in
            Java. You can visit
            <a href="https://github.com/apache/openwhisk/blob/master/docs/actions-java.md#creating-and-invoking-java-actions">Creating and Invoking Java actions</a>
            page for further details.
          </p>
          <p>
            <strong>Note:</strong> We will be using <i>wsk</i> CLI in this
            section. If you don't have it installed and configured,
            please refer to the section
            <a href="#wsk-cli">OpenWhisk CLI (wsk)</a>.
          </p>
          <ol>
            <li style="list-style-type: decimal">
              Create a file named <i>Hello.java</i>:
              <div class="terminal">
{% highlight java linenos %}
{% include code/Hello.java %}
{% endhighlight %}
              </div>
            </li>
            <li style="list-style-type: decimal">
              <p>
              Assure that you have downloaded the JAR file for the imported `com.google.gson.JsonObject` library (i.e., <a  target="_blank" href="https://mvnrepository.com/artifact/com.google.code.gson/gson/2.8.5">google-gson-2.8.5.jar</a> from Maven) to your Java `CLASSPATH`.
              </p>
            </li>
            <li style="list-style-type: decimal">
              Compile <i>Hello.Java</i> into a JAR file
              <i>hello.jar</i> as follows
              <div class="terminal">
{% highlight bash %}
$ javac Hello.java
$ jar cvf hello.jar Hello.class
{% endhighlight %}
              </div>
              <div>Please note that the current default JVM for OpenWhisk is Java 8. If you are using a newer version, you must specify that release version when you compile:
              </div>
              <div class="terminal">
{% highlight bash %}
$ javac --release 8 Hello.java
{% endhighlight %}
              </div>
            </li>
            <li style="list-style-type: decimal">
              Create an action called <i>helloJava</i> using <i>hello.jar</i> specifying the Java class where the `main` entry point you wish to invoke:
              <div class="terminal">
{% highlight bash %}$ wsk action create helloJava hello.jar --main Hello{% endhighlight %}
              </div>
              <div class="terminal">
{% highlight yaml %}ok: created action helloJava{% endhighlight %}
              </div>
            </li>
            <li style="list-style-type: decimal">
              Invoke an action <i>helloJava</i>:
              <div class="terminal">
{% highlight bash %}$ wsk action invoke helloJava --result{% endhighlight %}
              </div>
              <div class="terminal">
{% highlight yaml %}
{
"greeting": "Hello stranger!"
}
{% endhighlight %}
              </div>
            </li>
          </ol>
          <a class="indexable" id="java-runtime"></a>
          <h5>OpenWhisk Runtime for Java</h5>
          <p>
            OpenWhisk supports <strong>Java 8</strong> runtime.
            If you wish to learn more about NodeJS runtime along with
            the libraries that are supported or "built-in" by default,
            please visit
            <a href="https://github.com/apache/openwhisk-runtime-java/blob/master/README.md">Java Runtime GitHub Repository</a>.
          </p>
          <a class="indexable" id="java-additional-resources"></a>
          <h5>Additional Resources</h5>
          <ul>
            <li>
              <a href="https://www.ibm.com/blogs/bluemix/2017/02/building-openwhisk-actions-java-gradle/">Building OpenWhisk actions with Java and Gradle</a>
            </li>
          </ul>
          <!-- TODO: Java blogs are outdated / need update -->
          <!-- <h6>Medium Blogs <span style="font-weight:normal;">(tagged <a href="https://medium.com/openwhisk/tagged/java">java</a>)</span></h6>
          <ul>
            <li><a href="https://www.ibm.com/blogs/bluemix/2017/02/building-openwhisk-actions-java-gradle/">OpenWhisk actions with Java and Gradle</a></li>
            <li><a href=""></a></li>
            <li><a href=""></a></li>
          </ul> -->
        </div>

        <!-- ************************************** -->
        <!-- Actions - PHP                          -->
        <!-- ************************************** -->
        <a class="indexable" id="php"></a>
        <h6 id="section-php" class="section-toggle">using PHP</h6>
        <div class="section-toggleable section-toggle-start-closed">
          <p></p>
          <a class="indexable" id="actions-php"></a>
          <h5>Creating and Invoking PHP actions</h5>
          <p>
            Let's look at how to write a sample hello world action in PHP.
            You can visit
            <a href="https://github.com/apache/openwhisk/blob/master/docs/actions-php.md#creating-and-invoking-php-actions">Creating and Invoking PHP actions</a>
            page for further details.
          </p>
          <p>
            <strong>Note:</strong> We will be using <i>wsk</i> CLI in this
            section. If you don't have it installed and configured,
            please refer to the section
            <a href="#wsk-cli">OpenWhisk CLI (wsk)</a>.
          </p>
          <ol>
            <li style="list-style-type: decimal">
              Create a file named <i>hello.php</i>:
              <div class="terminal">
{% highlight php linenos %}
{% include code/hello.php %}
{% endhighlight %}
              </div>
            </li>
            <li style="list-style-type: decimal">
              Create an action called <i>helloPHP</i> using <i>hello.php</i>:
              <div class="terminal">
{% highlight bash %}$ wsk action create helloPHP hello.php{% endhighlight %}
              </div>
              <div class="terminal">
{% highlight bash %}ok: created action helloPHP{% endhighlight %}
              </div>
            </li>
            <li style="list-style-type: decimal">
              Invoke an action <i>helloPHP</i>:
              <div class="terminal">
{% highlight bash %}$ wsk action invoke helloPHP --result --param name World{% endhighlight %}
              </div>
              <div class="terminal">
{% highlight yaml %}
{
"greeting": "Hello World!"
}
{% endhighlight %}
              </div>
            </li>
            <li style="list-style-type: decimal">
              Deploy using <i>wskdeploy</i>:
              <p>
                <strong>Note:</strong> We will be using <i>wskdeploy</i>
                in this section. If you don't have the binary,
                please refer to the section
                on <a href="#wskdeploy">Whisk Deploy</a> to download it.
              </p>
              <ol>
                <li>
                  Create <i>manifest.yaml</i> with the following
                  YAML content:
                  <div class="terminal">
{% highlight yaml linenos %}
{% include code/manifest-for-helloPhp-1.yaml %}
{% endhighlight %}
                  </div>
                  Or
                  <p></p>
                  <div class="terminal">
{% highlight yaml linenos %}
{% include code/manifest-for-helloPhp-2.yaml %}
{% endhighlight %}
                  </div>
                </li>
                <li>
                  Run deployment with <i>wskdeploy</i>:
                  <div class="terminal">
{% highlight bash %}$ wskdeploy -m manifest.yaml{% endhighlight %}
                  </div>
                </li>
              </ol>
            </li>
          </ol>
          <a class="indexable" id="php-runtime"></a>
          <h5>OpenWhisk Runtime for PHP</h5>
          <p>
            OpenWhisk supports <strong>PHP 8.0</strong>, <strong>PHP 7.4</strong> and <strong>PHP 7.3</strong> runtimes where PHP 7.4 is the default pick by wsk CLI and Whisk Deploy.
            If you wish to learn more about PHP runtime, please visit
            <a href="https://github.com/apache/openwhisk-runtime-php/blob/master/README.md">PHP Runtime GitHub Repository</a>.
          </p>
          <a class="indexable" id="php-additional-resources"></a>
          <h5>Additional Resources</h5>
          <ul>
            <li><a href="https://akrabat.com/getting-started-with-serverless-php/">Getting Started with Serverless PHP</a></li>
            <li><a href="https://lornajane.net/posts/2018/handle-webhooks-with-serverless-php">Handle Webhooks with Serverless PHP on OpenWhisk</a></li>
          </ul>
          <h6>Medium Blogs <span style="font-weight:normal;">(tagged <a href="https://medium.com/openwhisk/tagged/php">php</a>)</span></h6>
          <ul>
            <li><a href="https://medium.com/openwhisk/using-serverless-framework-with-apache-openwhisk-and-php-76472727e9d8">Using Serverless Framework with OpenWhisk PHP</a></li>
            <li><a href="https://medium.com/openwhisk/serverless-php-how-to-implement-serverless-functions-in-php-using-openwhisk-9943dc06f544">Serverless PHP: How to implement serverless functions in PHP using OpenWhisk</a></li>
          </ul>
        </div>

        <!-- ************************************** -->
        <!-- Actions - Ruby                         -->
        <!-- ************************************** -->
        <a class="indexable" id="ruby"></a>
        <h6 id="section-ruby" class="section-toggle">using Ruby</h6>
        <div class="section-toggleable section-toggle-start-closed">
          <p></p>
          <a class="indexable" id="actions-ruby"></a>
          <h5>Creating and Invoking Ruby actions</h5>
          <p>
            Let's look at how to write a sample hello world action in Ruby.
            You can visit
            <a href="https://github.com/apache/openwhisk/blob/master/docs/actions-ruby.md#creating-and-invoking-ruby-actions">Creating and Invoking Ruby actions</a>
            page for further details.
          </p>
          <p>
            <strong>Note:</strong> We will be using <i>wsk</i> CLI in this
            section. If you don't have it installed and configured,
            please refer to the section
            <a href="#wsk-cli">OpenWhisk CLI (wsk)</a>.
          </p>
          <ol>
            <li style="list-style-type: decimal">
              Create a file named <i>hello.rb</i>:
              <div class="terminal">
{% highlight ruby linenos %}
{% include code/hello.rb %}
{% endhighlight %}
              </div>
            </li>
            <li style="list-style-type: decimal">
              Create an action called <i>hello_ruby</i> using <i>hello.rb</i>:
              <div class="terminal">
{% highlight bash %}$ wsk action create hello_ruby hello.rb{% endhighlight %}
              </div>
              <div class="terminal">
{% highlight bash %}ok: created action hello_ruby{% endhighlight %}
              </div>
            </li>
            <li style="list-style-type: decimal">
              Invoke an action <i>hello_ruby</i>:
              <div class="terminal">
{% highlight bash %}$ wsk action invoke hello_ruby --result --param name World{% endhighlight %}
              </div>
              <div class="terminal">
{% highlight yaml %}
{
"greeting": "Hello World!"
}
{% endhighlight %}
              </div>
            </li>
            <li style="list-style-type: decimal">
              Deploy using <i>wskdeploy</i>:
              <p>
                <strong>Note:</strong> We will be using <i>wskdeploy</i> in this section. If you don't have the binary,
                please refer to the section on <a href="#wskdeploy">Whisk Deploy</a> to download it.
              </p>
              <ol>
                <li>
                  Create <i>manifest.yaml</i> with the following YAML content:
                  <div class="terminal">
{% highlight yaml linenos %}
{% include code/manifest-for-helloRuby-1.yaml %}
{% endhighlight %}
                  </div>
                  Or
                  <p></p>
                  <div class="terminal">
{% highlight yaml linenos %}
{% include code/manifest-for-helloRuby-2.yaml %}
{% endhighlight %}
                  </div>
                </li>
                <li>
                  Run deployment with <i>wskdeploy</i>:
                  <div class="terminal">
{% highlight bash %}$ wskdeploy -m manifest.yaml{% endhighlight %}
                  </div>
                </li>
              </ol>
            </li>
          </ol>
          <a class="indexable" id="ruby-runtime"></a>
          <h5>OpenWhisk Runtime for Ruby</h5>
          <p>
            OpenWhisk supports <strong>Ruby 2.5</strong> runtime.
            If you wish to learn more about Ruby runtime, please visit
            <a href="https://github.com/apache/openwhisk-runtime-ruby/blob/master/README.md">Ruby Runtime GitHub Repository</a>.
          </p>
          <a class="indexable" id="ruby-additional-resources"></a>
          <h5>Additional Resources</h5>
          <p></p>
          <h6>Medium Blogs <span style="font-weight:normal;">(tagged <a href="https://medium.com/openwhisk/tagged/ruby">ruby</a>)</span></h6>
          <ul>
            <li><a href="https://medium.com/openwhisk/ruby-goes-serverless-apache-openwhisk-adds-native-support-for-ruby-7134faee14e">Ruby goes Serverless! - Apache OpenWhisk adds native support for Ruby</a></li>
          </ul>
        </div>

        <!-- ************************************** -->
        <!-- Actions - Swift                        -->
        <!-- ************************************** -->
        <a class="indexable" id="swift"></a>
        <h6 id="section-swift" class="section-toggle">using Swift</h6>
        <div class="section-toggleable section-toggle-start-closed">
          <p></p>
          <a class="indexable" id="actions-swift"></a>
          <h5>Creating And Invoking Swift Actions</h5>
          <p>
            Let's look at how to write a sample hello world action in Swift.
            You can visit
            <a href="https://github.com/apache/openwhisk-runtime-swift#quick-swift-action">Quick Swift Action</a>
            page for further details.
          </p>
          <p>
            <strong>Note:</strong> We will be using <i>wsk</i> CLI in this
            section. If you don't have it installed and configured,
            please refer to the section
            <a href="#wsk-cli">OpenWhisk CLI (wsk)</a>.
          </p>
          <ol>
            <li style="list-style-type: decimal">
              <a class="indexable" id="hello-swift"></a>
              Create a file named <i>hello.swift</i>:
              <div class="terminal">
{% highlight java linenos %}
{% include code/hello.swift %}
{% endhighlight %}
              </div>
            </li>
            <li style="list-style-type: decimal">
              Create an action <i>helloSwift</i>:
              <div class="terminal">
{% highlight bash %}$ wsk action create helloSwift hello.swift{% endhighlight %}
              </div>
            </li>
            <li style="list-style-type: decimal">
                Invoke an action <i>helloSwift</i>:
              <div class="terminal">
{% highlight bash %}$ wsk action invoke helloSwift --result --param name Carlos{% endhighlight %}
              </div>
              <div class="terminal">
{% highlight yaml %}
{
"msg": "Hello Carlos!"
}
{% endhighlight %}
              </div>
            </li>
            <li style="list-style-type: decimal">
              Deploy using <i>wskdeploy</i>:
              <p>
                <strong>Note:</strong> We will be using <i>wskdeploy</i> in
                this section. If you don't have the binary,
                please refer to the section
                on <a href="#wskdeploy">Whisk Deploy</a> to download it.
              </p>
              <ol>
                <li>Create a directory called <i>actions</i> with
                  <i>hello.swift</i> from step 1 <a href="#hello-swift">above</a>.
                </li>
                <li>
                  Create <i>manifest.yaml</i> with the following YAML content:
                  <div class="terminal">
{% highlight yaml linenos %}
{% include code/manifest-for-helloSwift.yaml %}
{% endhighlight %}
                  </div>
                </li>
                <li>
                  Run deployment with <i>wskdeploy</i>:
                  <div class="terminal">
{% highlight bash %}$ wskdeploy -m manifest.yaml{% endhighlight %}
                  </div>
                </li>
              </ol>
            </li>
          </ol>
          <a class="indexable" id="swift-runtime"></a>
          <h5>OpenWhisk Runtime for Swift</h5>
          <p>
            If you wish to learn more about Swift runtime along with
            the libraries that are supported or "built-in" by
            default, please visit the project README
            <a href="https://github.com/apache/openwhisk-runtime-swift#apache-openwhisk-runtimes-for-swift">Apache OpenWhisk runtimes for Swift</a>.
          </p>
          <a class="indexable" id="swift-additional-resources"></a>
          <h5>Additional Resources</h5>
          <ul>
            <li><a href="https://github.com/apache/openwhisk-runtime-swift#swift-4x-support">Swift 4.x Codeable style example</a></li>
            <li><a href="https://github.com/apache/openwhisk-runtime-swift#packaging-an-action-as-a-swift-executable-using-swift-4">Packaging an action as a Swift executable using Swift 4</a></li>
          </ul>
          <h6>Medium Blogs <span style="font-weight:normal;">(tagged <a href="https://medium.com/openwhisk/tagged/swift">swift</a>)</span></h6>
          <ul>
            <li><a href="https://medium.com/openwhisk/serverless-swift-with-openwhisk-4f84129e6839">Serverless Swift With OpenWhisk</a></li>
            <li><a href="https://medium.com/openwhisk/creating-swift-binaries-for-openwhisk-487526d0d576">Creating Swift Binaries for OpenWhisk</a></li>
            <li><a href="https://medium.com/openwhisk/creating-an-openwhisk-alexa-skill-583824bf58cb">Creating an OpenWhisk Alexa skill</a> using Swift</li>
          </ul>
        </div>

        <!-- ************************************** -->
        <!-- Actions - .NET Core                    -->
        <!-- ************************************** -->
        <a class="indexable" id="dotnet"></a>
        <h6 id="section-dotnet" class="section-toggle">using .NET Core</h6>
        <div class="section-toggleable section-toggle-start-closed">
          <p></p>
          <a class="indexable" id="actions-dotnet"></a>
          <h5>Creating And Invoking .NET Core Actions</h5>
          <p>
            Let's look at how to write a sample hello world action in .NET Core.
            You can visit
            <a href="https://github.com/apache/openwhisk-runtime-dotnet#quick-net-core-action">Quick .NET Core Action</a>
            page for further details.
          </p>
          <p>
            <strong>Note:</strong> We will be using <i>wsk</i> CLI in this
            section. If you don't have it installed and configured,
            please refer to the section
            <a href="#wsk-cli">OpenWhisk CLI (wsk)</a>.
          </p>
          <ol>
            <li style="list-style-type: decimal">
              <a class="indexable" id="hello-dotnet"></a>
              Create a C# project called <i>Apache.OpenWhisk.Example.Dotnet</i>:
              <div class="terminal">
{% highlight bash %}
$ dotnet new classlib -n Apache.OpenWhisk.Example.Dotnet -lang C#
{% endhighlight %}
              </div>
            </li>
            <li style="list-style-type: decimal">
              Navigate to the <i>Apache.OpenWhisk.Example.Dotnet</i> directory:
              <div class="terminal">
{% highlight bash %}
$ cd Apache.OpenWhisk.Example.Dotnet
{% endhighlight %}
              </div>
            </li>
            <li style="list-style-type: decimal">
              Install the <i>Newtonsoft.Json</i> NuGet package as follows:
              <div class="terminal">
{% highlight bash %}
$ dotnet add package Newtonsoft.Json -v 12.0.1
{% endhighlight %}
              </div>
            </li>
            <li style="list-style-type: decimal">
              Create a file called <i>Hello.cs</i> with the following content:
              <div class="terminal">
{% highlight java linenos %}
{% include code/Hello.cs %}
{% endhighlight %}
              </div>
            </li>
            <li style="list-style-type: decimal">
              Publish the project as follows:
              <div class="terminal">
{% highlight bash %}
$ dotnet publish -c Release -o out
{% endhighlight %}
              </div>
            </li>
            <li style="list-style-type: decimal">
              Publish the project as follows:
              <div class="terminal">
{% highlight bash %}
$ cd out
$ zip -r -0 helloDotNet.zip *
{% endhighlight %}
              </div>
            </li>
            <li style="list-style-type: decimal">
              Create an action <i>helloDotNet</i>:
              <div class="terminal">
{% highlight bash %}
$ wsk action create helloDotNet helloDotNet.zip --main Apache.OpenWhisk.Example.Dotnet::Apache.OpenWhisk.Example.Dotnet.Hello::Main --kind dotnet:2.2
{% endhighlight %}
              </div>
            </li>
            <li style="list-style-type: decimal">
                Invoke an action <i>helloDotNet</i>:
              <div class="terminal">
{% highlight bash %}
$ wsk action invoke helloDotNet --result --param name Shawn
{% endhighlight %}
              </div>
              <div class="terminal">
{% highlight yaml %}
{
"msg": "Hello Shawn!"
}
{% endhighlight %}
              </div>
            </li>
          </ol>
          <a class="indexable" id="dotnet-runtime"></a>
          <h5>OpenWhisk Runtime for .NET Core</h5>
          <p>
            If you wish to learn more about .NET Core runtime along with
            the libraries that are supported or "built-in" by
            default, please visit the project README
            <a href="https://github.com/apache/openwhisk-runtime-dotnet#apache-openwhisk-runtimes-for-net-core">Apache OpenWhisk runtimes for .NET Core</a>.
          </p>
          <a class="indexable" id="dotnet-additional-resources"></a>
          <h5>Additional Resources</h5>
          <a href="https://github.com/apache/openwhisk/blob/master/docs/actions-dotnet.md">Creating and invoking .NET Core actions</a>
        </div>

        <!-- ************************************** -->
        <!-- TODO: Actions - Docker                 -->
        <!-- ************************************** -->
        <!-- <h4 id="section-docker">using Docker</h4>
        <p></p>
        <h5 id="docker_actions">Creating and Invoking Docker actions</h5>
        <p>
            OpenWhisk provides a base image for Docker actions called openwhisk/dockerskeleton. This image is based on Alpine Linux 3.4 and includes Python v2.7.12 but not much else. (For reference, the image is based on python:2.7.12-alpine).
            From this base image, you can create and run an OpenWhisk action:
            Let's look at how to write a sample hello world action in Docker. You can visit
            <a href="https://github.com/apache/openwhisk/blob/master/docs/actions-docker.md#creating-and-invoking-docker-actions">Creating and Invoking Docker actions</a>
            page for further details.
        </p>
        <h5 id="docker-runtime">OpenWhisk Runtime for Docker</h5>
        <p>

        </p>
        <h5 id="docker-other-resources">Other Resources</h5>
        <p>
            <ul>
                <li><a href="http://jamesthom.as/blog/2017/01/16/openwhisk-docker-actions/">OpenWhisk Docker Actions</a></li>
                <li><a href="https://www.ibm.com/blogs/bluemix/2017/01/docker-bluemix-openwhisk/">Understanding and using Docker actions in IBM Bluemix OpenWhisk</a></li>
            </ul>
        </p> -->

      </div>
    </main> <!-- creating and invoking actions -->

    <!-- *************************************************************** -->
    <!-- Packages Managing Actions                                       -->
    <!-- *************************************************************** -->
    <main class="doc">
      <div class="content">
        <a class="indexable" id="managing_actions_with_openwhisk_packages"></a>
        <h3>Managing Actions with OpenWhisk Packages</h3>
        <p>
          <question>What is a package?</question> In OpenWhisk, you can use packages to bundle together a set of related actions, and share them with others.
          OpenWhisk comes with a list of packages
          You can get more details on OpenWhisk packages
          <a href="https://github.com/apache/openwhisk/blob/master/docs/packages.md#using-and-creating-openwhisk-packages">here</a>.
        </p>
        <p>
          <question>Does OpenWhisk comes with any pre-installed packages?</question>
          OpenWhisk comes with a list of pre-installed public packages which can be used by anyone.
          OpenWhisk has created a dedicated shared namespace <strong>/whisk.system</strong> for all the public packages.
        </p>
        <p>
          <question>Which all packages are available under /whisk.system?</question>
          You can get a list of packages available in shared namespace by using wsk CLI:
        </p>
        <ul>
          <li>
            Get a list of packages:
            <div class="terminal">
{% highlight bash %}$ wsk package list /whisk.system{% endhighlight %}
            </div>
          </li>
          <li>
            Get a list of entities in a package:
            <div class="terminal">
{% highlight bash %}$ wsk package get --summary /whisk.system/<package-name>{% endhighlight %}
            </div>
          </li>
        </ul>
        <p>
          <question>How do I invoke an action from a public package?</question>
          There are two way to invoke an action from a package,
          (1) Invoking an action directly from a package
          (2) Creating a package binding and then invoking an action in the binding.
        </p>
        <ul>
          <li>
            Invoking an action from a public package:
            <ul>
              <li style="list-style: circle">
                Get a description of the /whisk.system/samples/greeting action:
                <div class="terminal">
{% highlight bash %}$ wsk action get --summary /whisk.system/samples/greeting{% endhighlight %}
                </div>
                <div class="terminal">
                  <pre>action /whisk.system/samples/greeting:
                    Returns a friendly greeting
                    (parameters: name, place)</pre>
                </div>
              </li>
              <li style="list-style: circle">
                Invoking action in a package:
                <div class="terminal">
{% highlight bash %}$ wsk action invoke --result /whisk.system/samples/greeting{% endhighlight %}
                </div>
                <div class="terminal">
{% highlight yaml %}
{
"payload": "Hello, stranger from somewhere!"
}
{% endhighlight %}
                </div>
              </li>
              <li style="list-style: circle">
                Invoke the action with parameters:
                <div class="terminal">
{% highlight bash %}$ wsk action invoke --result /whisk.system/samples/greeting --param name Bernie --param place Vermont{% endhighlight %}
                </div>
                <div class="terminal">
{% highlight yaml %}
{
"payload": "Hello, Bernie from Vermont!"
}
{% endhighlight %}
                </div>
              </li>
            </ul>
          </li>
          <li>Creating package binding and invoking action from the binding:
            <ul>
              <li style="list-style: circle">
                Creating and using package bindings:
                <div class="terminal">
{% highlight bash %}$ wsk package bind /whisk.system/samples valhallaSamples --param place Valhalla{% endhighlight %}
                </div>
                <div class="terminal">
{% highlight bash %}ok: created binding valhallaSamples{% endhighlight %}
                </div>
              </li>
              <li style="list-style: circle">
                Invoke an action in the package binding:
                <div class="terminal">
{% highlight bash %}$ wsk action invoke --result valhallaSamples/greeting --param name Odin{% endhighlight %}
                </div>
                <div class="terminal">
{% highlight yaml %}
{
"payload": "Hello, Odin from Valhalla!"
}
{% endhighlight %}
                </div>
              </li>
            </ul>
          </li>
        </ul>
        <p>
          <question>Where do I get more information on packages?</question>
          Please read
          <a href="https://github.com/apache/openwhisk/blob/master/docs/packages.md#using-and-creating-openwhisk-packages">OpenWhisk Packages</a>
          for further details.
        </p>
      </div>
    </main>

    <main class="doc">
      <div class="content">
        <a class="indexable" id="automating_actions_from_event_sources"></a>
        <h3>Automating Actions from Event Sources</h3>
        <p>In this section, we will show how to automate Actions in response
          to events coming from Event Sources.
          Specifically, we will show how to create, fire
          and associate a basic Trigger with input parameters to an Action
          using a Rule.
        </p>
        <h5>Create and fire Trigger</h5>
        <ul>
          <li>
              Create a trigger to send user location updates:
              <div class="terminal">
{% highlight bash %}$ wsk trigger create locationUpdate{% endhighlight %}
              </div>
          </li>
          <li>
              Check you have created the trigger by listing the set
              of triggers:
              <div class="terminal">
{% highlight bash %}$ wsk trigger list{% endhighlight %}
              </div>
              <div class="terminal">
<pre>triggers
/someNamespace/locationUpdate                            private</pre>
              </div>
          </li>
          <li>
              Fire the trigger by specifying its name and parameters:
              <div class="terminal">
{% highlight bash %}$ wsk trigger fire locationUpdate --param name Bob --param place NYC{% endhighlight %}
              </div>
              <div class="terminal">
<pre>ok: triggered locationUpdate</pre>
              </div>
              <p>
                  Firing a trigger like this currently does not do
                  anything. We need to associate this trigger with
                  an action. This kind of association is called a rule.
              </p>
          </li>
        </ul>
        <h5>Verify you have an Action created</h5>
        <ul>
          <li>
            Please make sure you have the <i>hello</i> action created.
            If not, you can follow instruction in the section
            <a href="#actions-nodejs">above</a> with the
            following <i>hello.js</i>.
            <div class="terminal">
{% highlight javascript linenos %}
{% include code/hello-with-params.js %}
{% endhighlight %}
            </div>
            <div class="terminal">
{% highlight bash %}$ wsk action create hello hello.js{% endhighlight %}
            </div>
            <div class="terminal">
{% highlight bash %}$ wsk action invoke --result hello --param name Bernie --param place Vermont{% endhighlight %}
            </div>
            <div class="terminal">
{% highlight yaml %}
{
"payload": "Hello, Bernie from Vermont"
}
{% endhighlight %}
            </div>
          </li>
        </ul>
        <h5>Associate the Trigger and Action using a Rule</h5>
        <ul>
          <li>
            Create the rule (i.e., an association):
            <div class="terminal">
{% highlight bash %}$ wsk rule create myRule locationUpdate hello{% endhighlight %}
            </div>
            <div class="terminal">
<pre>ok: created rule myRule</pre>
            </div>
          </li>
        </ul>
        <h5>Invoke the Action by Firing the Trigger</h5>
        <ul>
          <li>
            Fire the <i>locationUpdate</i> trigger:
            <div class="terminal">
{% highlight bash %}$ wsk trigger fire locationUpdate --param name Bob --param place NYC{% endhighlight %}
            </div>
            <div class="terminal">
<pre>ok: triggered /_/locationUpdate with id abcd...</pre>
            </div>
          </li>
          <li>
            Verify that the action was invoked by checking the activations list:
            <div class="terminal">
{% highlight bash %}$ wsk activation list --limit 2{% endhighlight %}
            </div>
            <div class="terminal">
<pre>activations
1234.... hello
abcd.... locationUpdate
</pre>
            </div>
          </li>
          <li>
            Retrieving the trigger activation record:
            <div class="terminal">
{% highlight bash %}$ wsk activation result 1234....{% endhighlight %}
            </div>
            <div class="terminal">
{% highlight yaml %}{
"payload": "Hello, Bob from NYC"
}
{% endhighlight %}
            </div>
            You can see that the hello action received the event payload and returned the expected string.
          </li>
        </ul>
      </div>
    </main>

    <main class="doc">
      <div class="content">
          <a class="indexable" id="using_openwhisk_enabled_services"></a>
          <h3>Using OpenWhisk Enabled Services</h3>
          <p></p>
          <p>
            OpenWhisk offers a catalog of packages which gives you can easy
            way to enhance your application with useful capabilities, and
            to access external services in the ecosystem.
            Examples of external services which are OpenWhisk-enabled
            include Slack, GitHub, Alarms, etc.
          </p>
          <p>
            The catalog is available as packages under <i>/whisk.system</i>
            namespace. Using the following command, you can get a list of
            packages under <i>/whisk.system:</i>
          </p>
          <div class="terminal">
{% highlight bash %}$ wsk package list /whisk.system{% endhighlight %}
          </div>
          <div class="terminal">
<pre>packages
/whisk.system/alarms                                shared
/whisk.system/system                                shared
/whisk.system/utils                                 shared
/whisk.system/samples                               shared
/whisk.system/slack                                 shared
/whisk.system/github                                shared
...
</pre>
          </div>
          <p>
            Each of the packages under
            <a href="https://github.com/apache/openwhisk-catalog#openwhisk-catalog">OpenWhisk Catalog</a>
            is hosted in a GitHub repo.
            Please refer to these package repositories for further details:
          </p>
          <ul>
            <li>
              <a href="https://github.com/apache/openwhisk-package-alarms/blob/master/README.md">openwhisk-package-alarm</a>
              is an Apache OpenWhisk alarm package that can be
              used to create periodic, time-based alarms.
            </li>
            <li>
              <a href="https://github.com/apache/openwhisk-package-cloudant/blob/master/README.md">openwhisk-package-cloudant</a>
              enables you to work with a Cloudant database.
            </li>
            <li>
                <a href="https://github.com/apache/openwhisk-package-kafka/blob/master/README.md">openwhisk-package-kafka</a>
              allows you to communicate with Kafka or Message Hub instances
              for publishing and consuming messages using native high
              performance Kafka API.
            </li>
            <li>
              <a href="https://github.com/apache/openwhisk-package-rss/blob/master/README.md">openwhisk-package-rss</a>
              allows users to subscribe to RSS/ATOM feeds and
              receive events when a new feed item is available.
            </li>
            <li>
              <a href="https://github.com/apache/openwhisk-package-deploy/blob/master/README.md">openwhisk-package-deploy</a>
              offers a convenient way for you to describe and deploy
              any part of the OpenWhisk programming model using a
              Manifest file written in YAML.
            </li>
            <li>
              <a href="https://github.com/apache/openwhisk-package-jira/blob/master/README.md">openwhisk-package-jira</a>
              includes actions that interact with JIRA software
              software development tool used for issue tracking,
              and project management functions.
            </li>
            <li>
              <a href="https://github.com/apache/openwhisk-package-template/blob/master/README.md">openwhisk-package-template</a>
              is a template for Openwhisk Packages, it can be used
              to build, test and integrate new packages.
            </li>
          </ul>
      </div>
    </main>

    <main class="doc">
      <div class="content">
        <a class="indexable" id="sample_openwhisk_applications"></a>
        <h3>Sample OpenWhisk Applications</h3>
        <p></p>
        <h5>GitHub Slack Bot</h5>
        <p style="padding-left: 2em;">
            <a href="https://github.com/apache/openwhisk-GitHubSlackBot/blob/master/README.md">openwhisk-GitHubSlackBot</a>
            demonstrates integration of GitHub Pull Request management
            with Slack and using Alarms.
        </p>

        <h5>Serverless Message Archiver To Object Storage (MATOS)
          Sample Application</h5>
        <p style="padding-left: 2em;">
            <a href="https://github.com/apache/openwhisk-sample-matos/blob/master/README.md">openwhisk-sample-matos</a>
            demonstrates an implementation of a simple pipeline that
            reads messages from a Message Hub topic and archives them
            in batches into an Object Storage folder.
        </p>

        <h5>Slackbot for OpenWhisk:</h5>
        <p style="padding-left: 2em;">
            <a href="https://github.com/apache/openwhisk-sample-slackbot/blob/master/README.md">openwhisk-sample-slackbot</a>
            a proof-of-concept Slackbot to invoke OpenWhisk actions.
        </p>

        <h5>openwhisk-slackinvite:</h5>
        <p style="padding-left: 2em;">
            <a href="https://github.com/apache/openwhisk-slackinvite/blob/master/README.md">openwhisk-slackinvite</a>
            implements invitations for Apache OpenWhisk Slack Community.
        </p>
      </div>
    </main>

    <main class="doc">
      <div class="content">
          <a class="indexable" id="tutorial_and_workshop"></a>
          <h3>Tutorial and Workshop</h3>
          <p></p>
          <h5>OpenWhisk Tutorial</h5>
          <p style="padding-left: 2em;">
              <a href="https://github.com/apache/openwhisk-tutorial/blob/master/README.md">openwhisk-tutorial</a>
              contains an interactive tutorials for the OpenWhisk CLI.
          </p>

          <h5>OpenWhisk Workshop</h5>
          <p style="padding-left: 2em;">
              <a href="https://github.com/apache/openwhisk-workshop/blob/master/README.md">openwhisk-workshop</a>
              provides a series of exercises to help you understand how to
              use OpenWhisk to build serverless applications.
          </p>
      </div>
    </main>

    <main class="doc">
      <div class="content">
        <a class="indexable" id="development_tools"></a>
        <h3>Development Tools</h3>
        <p></p>
        <h5>The OpenWhisk Debugger</h5>
        <p class="indented">
          <a href="https://github.com/apache/openwhisk-debugger/blob/master/client/README.md">openwhisk-debugger</a>
          supports debugging OpenWhisk actions. The debugger will arrange
          things so that the actions you wish to debug will be offloaded
          from the main OpenWhisk servers
          and instead run locally on your laptop. You can then, from within
          the debugger, inspect and modify values.
        </p>
      </div>
    </main>

    <!-- *************************************************************** -->
    <!-- Contributors                                                    -->
    <!-- *************************************************************** -->
    <main class="doc">
      <div class="content">
        <a class="indexable" id="contributors"></a>
        <h2>Contributors</h2>

        <p>The Apache OpenWhisk project welcomes any and all developers to
        become a Contributor to any part of our project.  Contributions can
        range from fixing documentation and adding testcases, to fixing
        bugs, proposing and implementing new features and reviewing
        others' Pull Requests (PRs).
        </p>
        <p>
        The following Wiki pages describe the "How Tos" of becoming an
        official Contributor:
        </p>
        <ul>
          <li><a href="https://cwiki.apache.org/confluence/display/OPENWHISK/Apache+OpenWhisk+Project+Wiki">How to Contribute?</a></li>
          <li><a href="https://cwiki.apache.org/confluence/display/OPENWHISK/Apache+OpenWhisk+Project+Wiki">How do I become a Contributor or Committer?</a></li>
        </ul>

        <!-- ******************************************************* -->
        <!-- Contributors - project Structure                        -->
        <!-- ******************************************************* -->
        <a class="indexable" id="project-structure"></a>
        <h3>Project Structure</h3>
        <p>OpenWhisk is comprised of multiple repositories that can be
          found in Apache GitHub (using a name query by repository):</p>
        <ul>
          <li><a href="https://github.com/apache?q=openwhisk">https://github.com/apache?q=openwhisk</a></li>
        </ul>
        <p>For convenience, here is a listing of current Apache OpenWhisk
          project repositories (by category).</p>
        <div class="flow-columns">
          <div class="project-structure-repo theme-deeper-sea-green">
            <h5>Platform</h5>
            <p>Primary source code repositories including platform code,
              run books, tests and more.</p>
            <p class="repo-title border-deeper-sea-green">
              <a href="https://github.com/apache/openwhisk"
                title="Core OpenWhisk repository including controller,
                invoker, run books, and more.">
                    openwhisk</a>
            </p>
            <p class="repo-title border-deeper-sea-green">
              <a href="https://github.com/apache/openwhisk-cli"
                title="Pluggable Command Line Interface (CLI) for wsk
                command using the Cobra framework.">
                    openwhisk-cli</a>
            </p>
            <p class="repo-title border-deeper-sea-green">
              <a href="https://github.com/apache/openwhisk-apigateway"
                title="A performant API Gateway based on Openresty
                and NGINX.">
                    openwhisk-apigateway</a>
            </p>
            <p class="repo-title border-deeper-sea-green">
              <a href="https://github.com/apache/openwhisk-catalog"
                title="Catalog of built-in system, utility, test and sample
                Actions, Feeds and provider integration services and catalog
                packaging tooling.">
                    openwhisk-catalog</a>
            </p>
          </div>
          <div class="project-structure-repo theme-deeper-sky-blue">
            <h5>Runtimes</h5>
            <p>OpenWhisk supports several languages via Docker runtime
              containers.</p>
            <p class="repo-title border-deeper-sky-blue">
              <a href="https://github.com/apache/openwhisk-runtime-nodejs"
                title="Apache openwhisk nodejs runtime">
                    openwhisk-runtime-nodejs</a>
            </p>
            <p class="repo-title border-deeper-sky-blue">
              <a href="https://github.com/apache/openwhisk-runtime-docker"
                title="Apache openwhisk docker runtime.">
                    openwhisk-runtime-docker</a>
            </p>
            <p class="repo-title border-deeper-sky-blue">
              <a href="https://github.com/apache/openwhisk-runtime-python"
                title="Apache openwhisk python runtime.">
                    openwhisk-runtime-python</a>
            </p>
            <p class="repo-title border-deeper-sky-blue">
              <a href="https://github.com/apache/openwhisk-runtime-go"
                title="Apache openwhisk go runtime.">
                    openwhisk-runtime-go</a>
            </p>
            <p class="repo-title border-deeper-sky-blue">
              <a href="https://github.com/apache/openwhisk-runtime-swift"
                title="Apache openwhisk swift runtime.">
                    openwhisk-runtime-swift</a>
            </p>
            <p class="repo-title border-deeper-sky-blue">
              <a href="https://github.com/apache/openwhisk-runtime-php"
                title="Apache openwhisk php runtime.">
                    openwhisk-runtime-php</a>
            </p>
            <p class="repo-title border-deeper-sky-blue">
              <a href="https://github.com/apache/openwhisk-runtime-java"
                title="Apache openwhisk java runtime.">
                    openwhisk-runtime-java</a>
            </p>
            <p class="repo-title border-deeper-sky-blue">
              <a href="https://github.com/apache/openwhisk-runtime-ruby"
                title="Apache openwhisk ruby runtime.">
                    openwhisk-runtime-ruby</a>
            </p>
          </div>
          <div class="project-structure-repo theme-darkgoldenrod">
            <h5>Deployments</h5>
            <p>OpenWhisk can be deployed and configured on variety of platforms.</p>
            <p class="repo-title border-darkgoldenrod">
              <a href="https://github.com/apache/openwhisk-deploy-kube"
                title="This project can be used to deploy Apache OpenWhisk
                to a Kubernetes cluster.">
                    openwhisk-deploy-kube
              </a>
            </p>
            <p class="repo-title border-darkgoldenrod">
              <a href="https://github.com/apache/openwhisk-devtools/blob/master/docker-compose/README.md"
                title="An easy way to try OpenWhisk locally is to use
                Docker Compose.">
                    openwhisk-devtools/docker-compose
              </a>
            </p>
            <p class="repo-title border-darkgoldenrod">
              <a href="https://github.com/apache/openwhisk/blob/master/ansible/README.md#deploying-openwhisk-using-ansible"
                title="Deploy OpenWhisk locally using Ansible.">
                    openwhisk/ansible
              </a>
            </p>
            <p class="repo-title border-darkgoldenrod">
              <a href="https://github.com/apache/openwhisk#vagrant-setup"
              title="Deploy OpenWhisk locally using Vagrant.">
                  openwhisk/vagrant-setup
              </a>
            </p>
          </div>
          <div class="project-structure-repo theme-deeper-aquamarine">
            <h5>Tooling</h5>
            <p>OpenWhisk provides variety of tools around deployment and development.</p>
            <p class="repo-title border-deeper-aquamarine">
              <a href="https://github.com/apache/openwhisk-wskdeploy"
                title="Utility to deploy all your OpenWhisk Packages,
                Actions, Triggers, Rules and more using a single command!">
                    openwhisk-wskdeploy
              </a>
            </p>
            <p class="repo-title border-deeper-aquamarine">
              <a href="https://github.com/apache/openwhisk-devtools"
                title="This repository provides developer tools that
                help with local development, testing and operation
                of OpenWhisk.">
                    openwhisk-devtools
              </a>
            </p>
            <p class="repo-title border-deeper-aquamarine">
              <a href="https://github.com/apache/openwhisk-debugger"
                title="This repository provides wskdb, the OpenWhisk
                debugger.">
                    openwhisk-debugger
              </a>
            </p>
            <p class="repo-title border-deeper-aquamarine">
              <a href="https://github.com/apache/openwhisk-playground"
                title="This library provides functionality of executing
                a snippet of source code as OpenWhisk action for
                OpenWhisk Xcode Source Editor Extension in order to
                test Swift OpenWhisk functions quickly.">
                    openwhisk-playground
              </a>
            </p>
            <p class="repo-title border-deeper-aquamarine">
              <a href="https://github.com/apache/openwhisk-vscode"
                title="This is a prototype extension for Visual Studio
                Code that enables complete round trip cycles for
                authoring OpenWhisk actions inside the editor. ">
                    openwhisk-vscode
              </a>
            </p>
            <p class="repo-title border-deeper-aquamarine">
              <a
                href="https://github.com/apache/openwhisk-xcode"
                title="This repository has three projects, OpenWhisk
                Xcode Extension, WhiskBot - OpenWhisk Watson
                Conversation Chatbot, and wskTools.">
                    openwhisk-xcode
              </a>
            </p>
          </div>
          <div class="project-structure-repo theme-darksalmon">
            <h5>Packages</h5>
            <p>Several common service integrations are made available as
              packages. By default they are registered in the OpenWhisk
              catalog, under the <em>/whisk.system/</em> namespace,
              and include:</p>
            <p class="repo-title border-darksalmon">
              <a href="https://github.com/apache/openwhisk-package-alarms"
                title="Apache OpenWhisk package that can be used to
                create periodic, time-based alarms.">
                    openwhisk-package-alarms
            </a>
            </p>
            <p class="repo-title border-darksalmon">
              <a href="https://github.com/apache/openwhisk-package-cloudant"
                title="The /whisk.system/cloudant package enables you
                to work with a Cloudant database.">
                    openwhisk-package-cloudant
              </a>
            </p>
            <p class="repo-title border-darksalmon">
              <a href="https://github.com/apache/openwhisk-package-kafka"
                title="Apache OpenWhisk package for communicating with
                Kafka or Message Hub">
                    openwhisk-package-kafka
              </a>
            </p>
            <p class="repo-title border-darksalmon">
              <a href="https://github.com/apache/openwhisk-package-deploy"
                title="The /whisk.system/deploy package offers a
                convenient way for you to describe and deploy any p
                art of the OpenWhisk programming model using a Manifest
                file written in YAML.">
                    openwhisk-package-deploy
              </a>
            </p>
            <p class="repo-title border-darksalmon">
              <a href="https://github.com/apache/openwhisk-package-pushnotifications"
                title="The /whisk.system/pushnotifications package
                enables you to work with a push service.">
                    openwhisk-package-pushnotifications
              </a>
            </p>
            <p class="repo-title border-darksalmon">
              <a href="https://github.com/apache/openwhisk-package-rss"
                title="This package allows users to subscribe to
                RSS/ATOM feeds and receive events when a new feed
                item is available.">
                    openwhisk-package-rss
              </a>
            </p>
            <p class="repo-title border-darksalmon">
              <a href="https://github.com/apache/openwhisk-package-jira"
                title="This package includes actions that interact
                with JIRA software software development tool used
                for issue tracking, and project management functions.">
                    openwhisk-package-jira
              </a>
            </p>
            <p class="repo-title border-darksalmon">
              <a href="https://github.com/apache/openwhisk-package-template"
                title="This package is a template for Openwhisk Packages,
                it can be used to build, test and integrate new packages.">
                    openwhisk-package-template
              </a>
            </p>
          </div>
          <div class="project-structure-repo theme-deeper-aquamarine">
            <h5>Clients and SDK</h5>
            <p>Here are the clients to access to OpenWhisk API:</p>
            <p class="repo-title  border-deeper-aquamarine">
              <a href="https://github.com/apache/openwhisk-client-go"
                title="This project openwhisk-client-go is a Go client
                library to access Openwhisk API.">
                    openwhisk-client-go</a>
            </p>
            <p class="repo-title  border-deeper-aquamarine">
              <a href="https://github.com/apache/openwhisk-client-js"
                title="JavaScript client library for the OpenWhisk
                platform.">
                    openwhisk-client-js</a>
            </p>
          </div>
          <div class="project-structure-repo theme-darkorange">
            <h5>Samples</h5>
            <p>Few example applications to demonstrate OpenWhisk features and functionalities:</p>
            <p class="repo-title border-darkorange">
              <a href="https://github.com/apache/openwhisk-sample-slackbot"
                title="This repository contains proof-of-concept-quality
                code to deploy a Slackbot with the capability to run
                OpenWhisk actions.">
                    openwhisk-sample-slackbot</a>
            </p>
            <p class="repo-title border-darkorange">
              <a href="https://github.com/apache/openwhisk-slackinvite"
                title="Invite for Apache OpenWhisk Team on Slack.">
                    openwhisk-slackinvite</a>
            </p>
            <p class="repo-title border-darkorange">
              <a href="https://github.com/apache/openwhisk-GitHubSlackBot"
                title="This bot is designed to post updates to Slack when
                a GitHub pull request is ready to merge or a list of pull
                requests are under review for certain days and haven't
                merged.">
                    openwhisk-GitHubSlackBot</a>
            </p>
            <p class="repo-title border-darkorange">
              <a href="https://github.com/apache/openwhisk-sample-matos"
                  title="Sample application with Message Hub and Object Store.">
                      openwhisk-sample-matos</a>
            </p>
            <p class="repo-title border-darkorange">
              <a href="https://github.com/apache/openwhisk-tutorial"
                  title="An interactive learning environment for the
                  Apache OpenWhisk command line.">
                      openwhisk-tutorial</a>
            </p>
            <p class="repo-title border-darkorange">
              <a href="https://github.com/apache/openwhisk-workshop"
                title="OpenWhisk workshop to help developers learn how
                to build serverless applications using the platform.">
                      openwhisk-workshop</a>
            </p>
          </div>
          <div class="project-structure-repo theme-darkred">
            <h5>Others</h5>
            <p>Few other misc. but crucial repositories.</p>
            <p class="repo-title border-darkred">
              <a href="https://github.com/apache/openwhisk-release"
                title="This repository provides Release Management of all
                designated Apache OpenWhisk project repositories.">
                      openwhisk-release</a>
            </p>
            <p class="repo-title border-darkred">
              <a href="https://github.com/apache/openwhisk-website"
                title="This repository contains source of this website
                (openwhisk.apache.org) which is built using Jekyll.">
                      openwhisk-website</a>
            </p>
            <p class="repo-title border-darkred">
              <a href="https://github.com/apache/openwhisk-external-resources"
                title="Curated list of awesome OpenWhisk things.">
                      openwhisk-external-resources</a>
            </p>
          </div>
        </div>

        <!-- ******************************************************* -->
        <!-- Contributors - Resources                                -->
        <!-- ******************************************************* -->
        <spacer></spacer>
        <a class="indexable" id="contributor-resources"></a>
        <h3>Contributor Resources</h3>
        <p>This section lists a number of resources for OpenWhisk Contributors:</p>
        <ul>
          <li><a href="https://cwiki.apache.org/confluence/display/OPENWHISK/Proposals">Proposals (Designs)</a></li>
          <li><a href="https://cwiki.apache.org/confluence/display/OPENWHISK/Presentations%2C+Meeting+Notes+and+Transcripts">Meeting Notes and Transcripts</a></li>
          <li><a href="https://cwiki.apache.org/confluence/display/OPENWHISK/Processes">Processes</a></li>
          <li><a href="https://cwiki.apache.org/confluence/display/OPENWHISK/Project+Status">Project Status</a></li>
          <li><a href="https://github.com/apache/openwhisk/issues">Report Bugs or Request Features</a></li>
          <li><a href="https://github.com/apache/openwhisk-release#apache-openwhisk-project-release-management">Project Release Management</a></li>
        </ul>

        <!-- ******************************************************* -->
        <!-- Contributors - What to Contribute?                      -->
        <!-- ******************************************************* -->
        <a class="indexable" id="contributing-what-to-contribute"></a>
        <h3>What Can I Contribute?</h3>
        <p>Usually, contributors come because they want to fix or improve some part of the project. This can include the code itself in any of the project repositories under our project, project documentation, test cases, literally anything!</p>
        <p>Here are some specific ideas to get you thinking ...</p>
        <ul>
          <li><b>Fix open issues</b>: both bugs and feature issues in GitHub.</li>
          <li><b>Improve Documentation</b>: READMEs, Website Developer or Operator docs (Examples, How Tos), Medium blog articles, etc.</li>
          <li><b>Testcases</b> (any repo.):  e.g., functional code coverage, performance, config. variants, parallelize test buckets, etc.</li>
          <li><b>Add Operational Plug-ins</b>: e.g., metrics, logging, artifact storage impls., etc.)</li>
          <li><b>Add/Improve Language Runtimes</b>: See <b><em>Contributing new Action Language Runtimes</em></b> below. e.g., new languages, additional framework variants), etc.</li>
          <li><b>Improve tooling</b>: Enhance CLI features, extend APIs for new use cases, etc.</li>
          <li><b>Feature ideas, Use cases, Design proposals</b>: Support new scenarios, deployments (platforms), schedulers, etc. Submit ideas via our developer email list and use our Confluence Wiki to develop your ideas.</li>
        </ul>


        <!-- ******************************************************* -->
        <!-- Contributors - Language Runtimes                        -->
        <!-- ******************************************************* -->
        <a class="indexable" id="contributing-runtimes"></a>
        <h3>Contributing Language Runtimes</h3>
        <p>OpenWhisk supports several languages via its Action Runtimes,
          but there may be other languages you would like supported or even language variants with different frameworks for languages we support today. OpenWhisk is all about making it easy for ANY developer, using any functional language they are comfortable with, to develop Actions for our platform!</p>
        <p>You can create a new runtime in two ways:</p>
        <ul>
          <li>Implementing the <a href="https://github.com/apache/openwhisk/blob/master/docs/actions-new.md#Adding-Action-Language-Runtimes">Runtime specification</a> yourself, <i>or by</i></li>
          <li>Using the <a href="https://github.com/apache/openwhisk/blob/master/docs/actions-actionloop.md#Developing-a-new-Runtime-with-the-ActionLoop-proxy">ActionLoop engine</a> that provides a simplified path for building a new runtime.</li>
        </ul>
      </div>
    </main>

    <!-- *************************************************************** -->
    <!-- Operators                                                       -->
    <!-- *************************************************************** -->
    <main class="doc">
      <div class="content">
        <a class="indexable" id="operators"></a>
        <h2>Operators</h2>
        <p>This section has information that is primarily focused
          on deploying, configuring and administrating an Apache
          OpenWhisk Serverless platform.
        </p>

        <!-- ***************************************************** -->
        <!-- Operators - OpenWhisk Architecture                    -->
        <!-- ***************************************************** -->

        <a class="indexable" id="openwhisk_architecture"></a>
        <h3>OpenWhisk Architecture</h3>
        <p>
          The diagram below depicts the high-level architecture of
          OpenWhisk. From Nginx to Kafka to Docker, multiple
          technologies are powering Apache OpenWhisk which
          shows its committment to be a true Open Source Serverless
          Cloud Platform.
        </p>
        <img style="padding-top:20px; width: 400px;" src="https://raw.githubusercontent.com/apache/openwhisk/master/docs/images/OpenWhisk_flow_of_processing.png"
        alt="OpenWhisk Architecture"/>
        <p>
          You can read more about the OpenWhisk platform
          components along with its internal flow of processing here:
        </p>
        <ul>
          <li>
            <a href="https://github.com/apache/openwhisk/blob/master/docs/about.md#how-openWhisk-works">How OpenWhisk works</a>.
          </li>
        </ul>

        <!-- ***************************************************** -->
        <!-- Operators - Deployment Options                        -->
        <!-- ***************************************************** -->
        <a class="indexable" id="openwhisk_deployment"></a>
        <h3>Deployment Options</h3>
        <p>
          OpenWhisk offers different deployment options
          for installing and configuring the OpenWhisk platform components.
          However, Kubernetes is the recommended option as it is supported
          on most major platforms and includes great options for local
          developers to get running quickly, as well as supports
          operators needing to manage large scale production deployments.
        </p>
        <a class="indexable" id="deploy_kubernetes"></a>
        <h5>Kubernetes</h5>
        <p>
          OpenWhisk can be deployed using <a href="https://helm.sh/">Helm</a>
          charts on any Kubernetes provisioned locally or from a
          public cloud provider.
        </p>
          <p>Please refer to:
          <a href="https://github.com/apache/openwhisk-deploy-kube/blob/master/README.md#kubernetes">Deploy OpenWhisk to a Kubernetes Cluster</a>
          for detailed deployment instructions which includes specific
          <a href="https://github.com/apache/openwhisk-deploy-kube/blob/master/README.md#customize-the-deployment">customizations</a>
          including Docker Desktop (Mac, Windows), Minikube,
          Google, IBM Cloud, IBM Cloud Private, etc.).
        </p>

        <h3>Alternative options</h3>
        <p>Here are some alternate choices for deploying the OpenWhisk
          platform:
        </p>
        <!-- TODO: add left margin for all these alt. options. -->
        <div>
          <!-- ******************************** -->
          <!-- Quick Start                   -->
          <!-- ******************************** -->
          <a class="indexable" id="quick_start"></a>
          <h5>Quick Start</h5>
          <p>
            The easiest way to start using OpenWhisk is to install the "Standalone"
            OpenWhisk stack. This is a full-featured OpenWhisk stack running as a Java process
            for convenience. Serverless functions run within Docker containers.
            You will need <a href="https://docs.docker.com/get-docker/">Docker</a>,
            <a href="https://java.com/en/download/help/download_options.xml">Java</a> and
            <a href="https://nodejs.org/en/download/">Node.js</a> available on your machine.
          </p>
          <p>
          To get started:
          </p>
          <div class="terminal">
{% highlight bash %}
$ git clone https://github.com/apache/openwhisk.git
$ cd openwhisk
$ ./gradlew core:standalone:bootRun
{% endhighlight %}
          </div>
          <p>
            <ul>
              <li>When the OpenWhisk stack is up, it will open your browser to a functions Playground,
                  typically served from <strong>http://localhost:3232</strong>.
                  The Playground allows you create and run functions directly from your browser.
              </li>
              <li>To make use of all OpenWhisk features, you will need the OpenWhisk command line tool
                  called wsk which you can download from <a href="https://s.apache.org/openwhisk-cli-download">https://s.apache.org/openwhisk-cli-download</a>.
                  Please refer to the <a href="https://github.com/apache/openwhisk/blob/master/docs/cli.md">CLI configuration</a> for additional details. Typically you configure the CLI for
                  Standalone OpenWhisk as follows:
              </li>
            </ul>
          </p>
            <div class="terminal">
{% highlight bash %}
wsk property set \
  --apihost 'http://localhost:3233' \
  --auth '23bc46b1-71f6-4ed5-8c54-816aa4f8c502:123zO3xZCLrMN6v2BKK1dXYFpXlPkccOFqm12CdAsMgRU4VrNZ9lyGVCGuMDGIwP'
{% endhighlight %}
            </div>
            <p>
              <ul>
              <li> Standalone OpenWhisk can be configured to deploy additional capabilities when
                that is desirable. Additional resources are available <a href="https://github.com/apache/openwhisk/blob/master/core/standalone/README.md">here</a>.
              </li>
              </ul>
            </p>
        </div>
        <!-- TODO: add left margin for all these alt. options. -->
        <div>
          <!-- ******************************** -->
          <!-- Docker Compose                   -->
          <!-- ******************************** -->
          <a class="indexable" id="deploy_docker_compose"></a>
          <h5>Docker Compose</h5>
          <p>
            If you like using Docker directly, another easy local alternative
            is to get Docker installed on Mac, Windows or Linux and use
            Docker Compose.   Please note that this option does not give you
            a production deployment but gives you enough of the pieces to
            start writing functions and seeing them executing.
          </p>
          <div class="terminal">
{% highlight bash %}
$ git clone https://github.com/apache/openwhisk-devtools.git
$ cd openwhisk-devtools/docker-compose
$ make quick-start
{% endhighlight %}
          </div>
          <p>
            For more detailed instructions, see the
            <a href="https://github.com/apache/openwhisk-devtools/blob/master/docker-compose/README.md">OpenWhisk with Docker Compose project</a>.
          </p>

          <!-- ******************************** -->
          <!-- Ansible                          -->
          <!-- ******************************** -->
          <a class="indexable" id="deploy_ansible"></a>
          <h5>Ansible</h5>
          <p>
            <a href="https://github.com/apache/openwhisk/blob/master/ansible/README.md">Deploying OpenWhisk using Ansible</a>
            is a more imperative, script-based deployment
            option such as in a CI/CD (Travis) pipeline.
            The OpenWhisk playbooks are structured such that it
            allows cleaning, deploying, or re-deploying a single
            component as well as the entire OpenWhisk stack.
          </p>

          <!-- ******************************** -->
          <!-- Vagrant                          -->
          <!-- ******************************** -->
          <a class="indexable" id="deploy_vagrant"></a>
          <h5>Vagrant</h5>
          <p>
            A Vagrant machine is also available to run OpenWhisk on
            Mac, Windows PC or GNU/Linux.
            Downloading and install VirtualBox and Vagrant for your
            operating system and architecture.
            You can follow the steps under
            <a href="https://github.com/apache/openwhisk#vagrant-setup">Vagrant Setup</a>
            to run your first OpenWhisk action using Vagrant.
          </p>

        </div>

        <!-- ******************************************************* -->
        <!-- Operators  - Admin                                      -->
        <!-- ******************************************************* -->
        <a class="indexable" id="deployment_admin"></a>
        <h3>Administrative Operations</h3>
        <p>
          This section contains a list of resources which can be utilized
          to administer the running OpenWhisk instance.
        </p>
        <ul>
          <li><a href="https://github.com/apache/openwhisk/tree/master/tools/admin">wskadmin</a></li>
        </ul>

        <!-- ******************************************************* -->
        <!-- Operators  - Resources                                  -->
        <!-- ******************************************************* -->
        <a class="indexable" id="operators_resources"></a>
        <h3>Operator Resources</h3>
        <ul>
          <li><a href="https://medium.com/openwhisk/five-minute-intro-to-open-source-serverless-development-with-openwhisk-328b0ebfa160">Five minute intro to open source serverless development with OpenWhisk</a></li>
          <li><a href="https://thenewstack.io/behind-scenes-apache-openwhisk-serverless-platform/">An Architectural View of Apache OpenWhisk</a></li>
          <li><a href="https://medium.com/@rabbah/the-state-of-openwhisk-ae8c129e8a48">The State of OpenWhisk</a></li>
          <li><a href="https://medium.com/openwhisk/starting-openwhisk-in-sixty-seconds-9288bfb4863d">Starting OpenWhisk in Sixty Seconds</a></li>
          <li><a href="https://medium.com/openwhisk/deploying-openwhisk-on-kubernetes-3f55f781fbab">Deploying OpenWhisk on Kubernetes</a></li>
          <li><a href="https://medium.com/openwhisk/uncovering-the-magic-how-serverless-platforms-really-work-3cb127b05f71">Uncovering the magic: How serverless platforms really work!</a></li>
        </ul>
      </div>
    </main>

    <!-- Other Resources Section -->
    <main class="doc">
      <div class="content">
        <a class="indexable" id="other-resources"></a>
        <h3>Other Resources</h3>
        <ul>
          <li><a href="events.html">Events</a> - list of past OpenWhisk
            events</li>
          <li><a href="https://github.com/apache/openwhisk-external-resources#awesome-openwhisk--">Awesome OpenWhisk</a>
              - list of OpenWhisk resources and tips including articles,
              books, videos, presentations, podcasts, etc.</li>
        </ul>
      </div>
    </main>

    <!-- Frequently Asked Questions -->
    <main class="doc">
      <div class="content">
        <a class="indexable" id="faq"></a>
        <h3>Frequently Asked Questions</h3>
        {% include partial/faq.html %}
      </div>
    </main>

  </section>
</div>
