---
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 name="Community">

  <div id="whiskSupporter">
    <div class="doc">
      <div class="content">
          <a class="indexable" id="supporters"></a>
          <h3>Supporters</h3>
          <p>The following companies and organizations have acknowledged support of the Apache OpenWhisk project as contributors or users of the technology.</p>
          <div class="flow-columns">
              <div class="flow-item-container">
                  <a href="https://www.adobe.io/" target="_blank">
                  <img class="flow-item-image"
                    src="{{ site.github.url }}/images/supporter/adobe.png"
                    alt="Adobe supports Apache OpenWhisk">
                  </a>
              </div>
              <div class="flow-item-container">
                  <a href="https://www.abilisense.com/" target="_blank">
                  <img class="flow-item-image"
                src="{{ site.github.url }}/images/supporter/abilisense.png"
                alt="Abilisense supports Apache Openwhisk">
                  </a>
              </div>
              <div class="flow-item-container">
                  <a href="http://advisorconnect.co/" target="_blank">
                  <img class="flow-item-image"
                src="{{ site.github.url }}/images/supporter/advisorconnect.png"
                alt="Advisor Connect supports Apache OpenWhisk">
                  </a>
              </div>
              <div class="flow-item-container">
                  <a href="https://www.altoros.com/" target="_blank">
                      <img class="flow-item-image"
                    src="{{ site.github.url }}/images/supporter/altoros.png"
                    alt="Altoros supports Apache OpenWhisk">
                  </a>
              </div>
              <div class="flow-item-container">
                  <a href="http://articoolo.com/" target="_blank">
                      <img class="flow-item-image"
                    src="{{ site.github.url }}/images/supporter/articoolo.png"
                    alt="Articoolo supports Apache OpenWhisk">
                  </a>
              </div>
              <div class="flow-item-container">
                  <a href="http://bigvu.tv/" target="_blank">
                      <img class="flow-item-image"
                    src="{{ site.github.url }}/images/supporter/bigvu.png"
                    alt="BigVU supports Apache OpenWhisk">
                  </a>
              </div>
              <div class="flow-item-container">
                <a href="https://www.cloudstation.com/" target="_blank">
                  <img class="flow-item-image"
                      src="{{ site.github.url }}/images/supporter/cloudstation.png"
                      alt="CloudStation supports Apache OpenWhisk">
                </a>
              </div>
              <div class="flow-item-container">
                  <a href="https://greenq.gq/" target="_blank">
                      <img class="flow-item-image"
                    src="{{ site.github.url }}/images/supporter/greenq.png"
                    alt="GreenQ supports Apache OpenWhisk">
                  </a>
              </div>
              <div class="flow-item-container">
                  <a href="https://www.ibm.com/cloud/functions" target="_blank">
                  <img class="flow-item-image"
                    src="{{ site.github.url }}/images/supporter/ibm-solid.png"
                    alt="IBM supports Apache OpenWhisk">
                  </a>
              </div>
              <div class="flow-item-container">
                  <a href="https://jpl.nasa.gov" target="_blank">
                  <img class="flow-item-image"
                    src="{{ site.github.url }}/images/supporter/nasajpl.png"
                    alt="NASA JPL supports Apache OpenWhisk">
                  </a>
              </div>
              <div class="flow-item-container">
                  <a href="https://konghq.com" target="_blank">
                  <img class="flow-item-image"
                    src="{{ site.github.url }}/images/supporter/kong.png"
                    alt="Kong supports Apache OpenWhisk">
                  </a>
              </div>
              <div class="flow-item-container">
                  <a href="https://www.magentiq.com/" target="_blank">
                  <img class="flow-item-image"
                    src="{{ site.github.url }}/images/supporter/magentiq.png"
                    alt="Magentiq Eye supports Apache OpenWhisk">
                  </a>
              </div>
              <div class="flow-item-container">
                  <a href="https://www.naver.com/" target="_blank">
                  <img class="flow-item-image"
                    src="{{ site.github.url }}/images/supporter/naver.png"
                    alt="Naver supports Apache OpenWhisk">
                  </a>
              </div>
              <!-- REMOVED: domain name is no longer hosted -->
              <!-- <div class="flow-item-container">
                  <a href="http://www.nepente.io/en/" target="_blank">
                  <img class="flow-item-image"
                    src="{{ site.github.url }}/images/supporter/nepente.png"
                    alt="Nepente supports Apache OpenWhisk">
                  </a>
              </div> -->
              <!-- REMOVED: domain name is no longer hosted -->
              <!--div class="flow-item-container">
                  <a href="https://www.neuroapplied.com/" target="_blank">
                  <img class="flow-item-image"
                    src="{{ site.github.url }}/images/supporter/neuroapplied.png"
                    alt="NeuroApplied supports Apache OpenWhisk">
                  </a>
              </div-->
              <div class="flow-item-container">
                  <a href="https://nimbella.com/" target="_blank">
                  <img class="flow-item-image"
                    src="{{ site.github.url }}/images/supporter/nimbella.png"
                    alt="Nimbella supports Apache OpenWhisk">
                  </a>
              </div>
              <div class="flow-item-container">
                  <a href="https://qzcloud.com/" target="_blank">
                  <img class="flow-item-image"
                    src="{{ site.github.url }}/images/supporter/qzcloud.png"
                    alt="QZCloud supports Apache OpenWhisk">
                  </a>
              </div>
              <div class="flow-item-container">
                  <a href="https://www.redhat.com/en" target="_blank">
                  <img class="flow-item-image"
                    src="{{ site.github.url }}/images/supporter/redhat.png"
                    alt="RedHat supports Apache OpenWhisk">
                  </a>
              </div>
              <div class="flow-item-container">
                  <a href="http://www.sitespirit.nl/" target="_blank">
                  <img class="flow-item-image"
                    src="{{ site.github.url }}/images/supporter/sitespirit.png"
                    alt="SiteSpirit supports Apache OpenWhisk">
                  </a>
              </div>
              <div class="flow-item-container">
                <a href="https://wso2.com/" target="_blank">
                  <img class="flow-item-image"
                      src="{{ site.github.url }}/images/supporter/wso2.png"
                      alt="WSO2 supports Apache OpenWhisk">
                </a>
              </div>
          </div>
      </div>
  </div>

  </div>


<div id="whiskIndexedLayout">

  <!-- Community Index -->
  <div id="whiskIndex">
    <ul>
      <li><a href="#community">Community</a></li>

      <!-- Social Media -->
      <li class="index-menu-toggle"><a href="#social">Media</a></li>
      <ul class="index-menuitems">
        <li><a href="#github">GitHub</a></li>
        <li><a href="#slack">Slack</a></li>
        <li><a href="#twitter">Twitter</a></li>
        <li><a href="#youtube">YouTube</a></li>
        <li><a href="#stackoverflow">Stack Overflow</a></li>
        <li><a href="#slideshare">Slideshare</a></li>
      </ul>

      <!-- Mailing lists -->
      <li><a href="#mailing-lists">Mailing Lists</a></li>

      <!-- Project Wiki -->
      <li><a href="#wiki">Project Wiki</a></li>

      <!-- Events -->
      <li><a href="#events">Events</a></li>

      <!-- Supporters -->
      <li><a href="#supporters">Supporters</a></li>

    </ul>
  </div>
  <section id="whiskNodes">

    <main class="doc">
          <div class="content">
              <a class="indexable" id="community"></a>
              <h2>Community</h2>
              <div>
                  <p>The Apache OpenWhisk community attempts to engage its users and developers in as many channels as we are able. Please find and subscribe to the ones that are right for you. If you wish to engage our community's Contributors and Committers around project architecture, design and source code, please subscribe to and participate in our developer mailing list as described below.</p>
              </div>
          </div>
      </main>
      <main class="doc">
          <div class="content">
              <a class="indexable" id="mailing-lists"></a>
              <h3>Mailing Lists</h3>
              <p>The developer or "dev" mailing list is where we discuss <b><i>all</i></b> the design and
                development of Apache OpenWhisk project code.
                It is <b><i>not</i></b> however a place for technical support;
                if you're looking for help on the project, please try our
                <a style="font-weight:400;" href="/documentation.html">Documentation</a>
                page and engage with us on one of the Social Media channels
                listed below.
              </p>
              <question>How do I join the Apache OpenWhisk project
                developer mailing list?</question>
              <p>To subscribe, unsubscribe or post our developer list, send
                an email message to one of the following addresses:</p>
                  <ul>
                      <li><b>Subscribe</b>: <a href="mailto:dev-subscribe@openwhisk.apache.org">dev-subscribe@openwhisk.apache.org</a></li>
                      <li><b>Unsubscribe</b>: <a href="mailto:dev-unsubscribe@openwhisk.apache.org">dev-unsubscribe@openwhisk.apache.org</a></li>
                      <li><b>Post</b> (new topic): <a href="mailto:dev@openwhisk.apache.org">dev@openwhisk.apache.org</a></li>
                  </ul>
              <p>To comment on a thread, simply reply to the message with
                the same subject text.
              </p>
              <p><b>NOTE:</b> Make sure you add a subject line to the
                subscribe/unsubscribe messages. Empty emails are ignored.</p>
              <p>To see existing messages, use:
                <a href="https://lists.apache.org/list.html?dev@openwhisk.apache.org">https://lists.apache.org/list.html?dev@openwhisk.apache.org</a>.</p>
          </div>
      </main>
      <main class="doc">
          <div class="content">
              <a class="indexable" id="social"></a>
              <h3>Media</h3>
              <p>The Apache OpenWhisk project is active on several content sharing and social media channels which aim to make it easier for users to get started, ask questions, stay informed and to interact with our community. If you wish to engage our community's Contributors and Committers around project architecture, design and source code, please subscribe to and participate in our developer mailing list as described above.</p>

              <p>Icons that link to each of the following channels are located in the header of our website and include:</p>
              <ul>
                  <a class="indexable" id="github"></a>
                  <li><a href="https://github.com/apache?q=openwhisk" title="Apache OpenWhisk project repositories on GitHub">GitHub</a>: Browse the source code, documentation and tests for all the repositories that make up our project component, deployment and tooling ecosystem.</li>
                  <a class="indexable" id="slack"></a>
                  <li><a href="slack.html" title="Apache OpenWhisk on Slack">Slack</a>: Engage the OpenWhisk developer community directly in conversations across several topics. Slack is intended for quickly getting help, not deep technical discussions. The place for the latter and all important topics is the project "dev" list.</li>
                  <li><a href="https://medium.com/openwhisk" title="Apache OpenWhisk on Medium">Medium</a>: Read the latest blog posts on the OpenWhisk project including how-tos, use cases, architecture topics and more.</li>
                  <a class="indexable" id="twitter"></a>
                  <li><a href="https://twitter.com/search?q=openwhisk" title="Apache OpenWhisk on Twitter">Twitter</a>: Follow for the latest news from the OpenWhisk ecosystem.</li>
                  <a class="indexable" id="youtube"></a>
                  <li><a href="https://www.youtube.com/channel/UCbzgShnQk8F43NKsvEYA1SA" title="Apache OpenWhisk on YouTube">YouTube</a>: See demos of OpenWhisk in action as well as recordings of community meetings and events.</li>
                  <a class="indexable" id="stackoverflow"></a>
                  <li><a href="https://stackoverflow.com/questions/tagged/openwhisk">Stack Overflow</a>: Ask questions and find answers about how to use OpenWhisk. Use the tag "openwhisk".</li>
                  <a class="indexable" id="slideshare"></a>
                  <li><a href="https://www.slideshare.net/OpenWhisk">SlideShare</a>: Look over slides from many of the presentations from past events.</li>
              </ul>
          </div>
      </main>
      <main class="doc">
          <div class="content">
              <a class="indexable" id="wiki"></a>
              <h3>Project Wiki</h3>
              <p>The project maintains a <a href="https://cwiki.apache.org/confluence/display/OPENWHISK/Apache+OpenWhisk+Project+Wiki">Confluence Wiki</a> site that provides the community a place to share their thoughts about and collaborate around any aspect of the project; whether it's about the platform architecture, an existing or planned feature or about its use cases and integrations. Examples include:</p>
              <ul>
                <li><strong>How to contribute?</strong></li>
                <li><strong>How do I become a Contributor or Committer?</strong></li>
                  <li><a href="https://cwiki.apache.org/confluence/display/OPENWHISK/Proposals">Proposals</a> (Design)</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>
                  <!-- NOTE: we have no policies now so do not link until they exist -->
                  <!-- <li><a href="">Policies</a></li> -->
              </ul>
          </div>
      </main>

      <main class="doc">
          <div class="content">
              <a class="indexable" id="events"></a>
              <h3>Events</h3>
              <h5 style="margin-top:20px;">Apache OpenWhisk events</h5>
              <p>
                  Please reach out to community at <a href="mailto:dev@openwhisk.apache.org">dev@openwhisk.apache.org</a> to promote any OpenWhisk event.
              </p>
              <ul><li><em>
                  To view a list of past events please refer to the <a href="events.html">Events Archive</a> page.</em></li>
              </ul>

              <h5>Apache events</h5>
              <p>
                Find out about all upcoming events sponsored by the Apache Software Foundation by clicking the image below.
              </p>
                  <div style="">
                    <a href="https://apache.org/events/current-event"><img src="https://www.apache.org/events/current-event-234x60.png" alt="Join us at the latest Apache sponsored event."/></a>
                  </div>
          </div>
       </main>

  </section>

</div>

</div>
<!--
<p>The Apache Software Foundation does not endorse listed events. Get in touch with us to suggest event listings. See social media https://openwhisk.apache.org/social</p>
 -->
