---
layout: community
title: Community
permalink: /community/
---

# Kogito Community
<br/>

## Getting help

### Documentation

If you have any questions, make sure to take a look at the [Kogito documentation](https://docs.kogito.kie.org/latest/html_single/). 

### Examples

Kogito can be used in many ways, so to help you get started, we provide a wide range of examples demonstrating from simple hello world to more advanced use cases
using DMN, BPMN, KNative, Serverless Workflow and more. Head to [Kogito examples](https://github.com/apache/incubator-kie-kogito-examples/) repository in GitHub and start exploring.
The team is constantly updating this repository with new and exciting features as they are added to Kogito. 

### Discussions and Mailing list

You can also ask questions on our mailing list. Join the Google group via email kogito-development+subscribe@googlegroups.com or by visiting the [Google Groups page](https://groups.google.com/d/forum/kogito-development).

### Blog

Follow helpful articles and posts on [Kie Blog](https://blog.kie.org/) presenting interesting use-cases and examples of Kogito in action.

### Chat

Join our community chat by joining the #kogito channel on [https://kie.zulipchat.com/](https://kie.zulipchat.com/).
Inside our KIE organization you will find various streams where you can follow any of the topic discussions, create your own topic to ask a question or even help out others.  Since most of the developers use this for their day to day discussions as well, you will find a lot of experts there, and a ton of information.

### Twitter

Follow us on [twitter](https://twitter.com/kogito_kie) if you want to stay up-to-date on latest announcements, blogs or events.  Retweet what you like! 

### Videos

Many Kogito videos can be found on our [KIE Youtube channel](https://www.youtube.com/channel/UCUjeymTM-TrwHs36388VRbw).  Subscribe if you want to be notified straight away when new videos are posted.
<br><br><br>
## An Open Project

Kogito is an Open Source project licensed under the [Apache License version 2.0](https://www.apache.org/licenses/LICENSE-2.0). First and foremost, it is an open community where contributions, ideas and discussions are done in the open and we welcome contributors! Let’s join forces in building the future of business automation.<br/><br/> 

### Code and issue tracker

The source code is hosted on GitHub. If you need to report a bug or request a new feature, look for a similar one on our [Jira issue tracker](https://issues.jboss.org/projects/KOGITO). If you don’t find any, create a new issue.
<br><br><br>
## Contributing

There are a lot of ways to contribute to Kogito development:
* Writing documentation and quickstarts
* Fixing bugs or even just opening an issue
* Suggesting new features and improvements

Join us on the mailing list or chat if you're looking for an opportunity to help out or have a great idea you would like to share! 
