2023-05-24 12:21:50 +01:00
# Apache Pekko
2015-04-16 22:10:32 +02:00
2024-03-22 14:16:08 +01:00
[](https://github.com/apache/pekko/actions/workflows/nightly-builds.yml)
[](https://github.com/apache/pekko/actions/workflows/nightly-builds-aeron.yml)
2024-06-15 12:58:13 +02:00
[](https://www.bestpractices.dev/projects/9032)
2023-02-22 10:49:33 +01:00
2022-11-08 05:54:56 -08:00
Apache Pekko is an open-source framework for building applications that are concurrent, distributed, resilient and elastic.
2022-11-15 14:34:20 +05:30
Pekko uses the Actor Model to provide more intuitive high-level abstractions for concurrency.
Using these abstractions, Pekko also provides libraries for persistence, streams, HTTP, and more.
2015-04-16 22:10:32 +02:00
2022-11-15 14:34:20 +05:30
Pekko is a fork of [Akka ](https://github.com/akka/akka ) 2.6.x, prior to the Akka project's adoption of the Business Source License.
2016-07-05 16:23:25 +02:00
2023-05-24 12:21:50 +01:00
## Reference Documentation
2016-07-05 16:23:25 +02:00
2023-05-23 14:08:17 +01:00
See https://pekko.apache.org for the documentation including the API docs. The docs for all the Apache Pekko modules can be found there.
2023-05-24 12:21:50 +01:00
## Building from Source
2023-05-23 14:08:17 +01:00
2024-03-22 14:16:08 +01:00
The CI build is Linux based (Ubuntu) and most Pekko developers use Macs or Linux machines. There have been reports of issues when building with Windows ([#829 ](https://github.com/apache/pekko/issues/829 )).
2023-12-04 08:59:43 +01:00
2025-05-16 16:09:14 +09:00
## Using IntelliJ IDEA
To use IntelliJ IDEA, you need to configure your project to use JDK 8. For a visual guide, refer to this [Q&A ](https://github.com/apache/pekko/discussions/1847#discussioncomment-13166066 ).
2025-08-27 16:58:49 +08:00
- File > Project Structure > Project Settings > Project > Set your JDK to version 17
- Settings > ... > Scala Compiler Server > Set your JDK to version 17
- Settings > ... > sbt > Set your JRE to version 17
2025-05-16 16:09:14 +09:00
2023-05-24 12:21:50 +01:00
### Prerequisites
2025-08-27 16:58:49 +08:00
- Make sure you have installed a Java Development Kit (JDK) version 17 or later.
2023-05-24 12:51:34 +02:00
- Make sure you have [sbt ](https://www.scala-sbt.org/ ) installed and using this JDK.
2023-05-24 12:21:50 +01:00
- [Graphviz ](https://graphviz.gitlab.io/download/ ) is needed for the scaladoc generation build task, which is part of the release.
### Running the Build
- Open a command window and change directory to your preferred base directory
2024-03-22 14:16:08 +01:00
- Use git to clone the [repo ](https://github.com/apache/pekko ) or download a source release from https://pekko.apache.org (and unzip or untar it, as appropriate)
2023-05-29 13:08:10 +01:00
- Change directory to the directory where you installed the source (you should have a file called `build.sbt` in this directory)
2023-05-23 14:08:17 +01:00
- `sbt compile` compiles the main source for project default version of Scala (2.13)
- `sbt +compile` will compile for all supported versions of Scala
- `sbt test` will compile the code and run the unit tests
2023-07-06 11:19:49 +02:00
- `sbt testQuick` similar to test but when repeated in shell mode will only run failing tests
2023-07-06 14:28:15 +02:00
- `sbt testQuickUntilPassed` similar to testQuick but will loop until tests pass.
2023-05-23 14:08:17 +01:00
- `sbt package` will build the jars
2024-01-15 10:47:23 +08:00
- the jars will be built into target dirs of the various modules
- for the 'actor' module, the jar will be built to `actor/target/scala-2.13/`
2023-05-23 14:08:17 +01:00
- `sbt publishLocal` will push the jars to your local Apache Ivy repository
- `sbt publishM2` will push the jars to your local Apache Maven repository
- `sbt docs/paradox` will build the docs (the ones describing the module features)
- Requires Java 11 minimum
- `sbt docs/paradoxBrowse` does the same but will open the docs in your browser when complete
- the `index.html` file will appear in `target/paradox/site/main/`
2023-05-24 12:21:50 +01:00
- `sbt unidoc` will build the Javadocs for all the modules and load them to one place (may require Graphviz, see Prerequisites above)
2023-05-23 14:08:17 +01:00
- the `index.html` file will appear in `target/scala-2.13/unidoc/`
2023-05-29 13:08:10 +01:00
- `sbt sourceDistGenerate` will generate source release to `target/dist/`
- The version number that appears in filenames and docs is derived, by default. The derived version contains the most git commit id or the date/time (if the directory is not under git control).
- You can set the version number explicitly when running sbt commands
- eg `sbt "set ThisBuild / version := \"1.0.0\"; sourceDistGenerate"`
- Or you can add a file called `version.sbt` to the same directory that has the `build.sbt` containing something like
- `ThisBuild / version := "1.0.0"`
2016-07-05 16:23:25 +02:00
2023-05-24 12:21:50 +01:00
## Community
2016-07-05 16:23:25 +02:00
2022-11-08 05:54:56 -08:00
There are several ways to interact with the Pekko community:
2016-07-05 16:23:25 +02:00
2024-03-22 14:16:08 +01:00
- [GitHub discussions ](https://github.com/apache/pekko/discussions ): for questions and general discussion.
2022-11-08 05:54:56 -08:00
- [Pekko dev mailing list ](https://lists.apache.org/list.html?dev@pekko.apache.org ): for Pekko development discussions.
2023-05-23 14:08:17 +01:00
- [Pekko users mailing list ](https://lists.apache.org/list.html?users@pekko.apache.org ): for Pekko user discussions.
2024-03-22 14:16:08 +01:00
- [GitHub issues ](https://github.com/apache/pekko/issues ): for bug reports and feature requests. Please search the existing issues before creating new ones. If you are unsure whether you have found a bug, consider asking in GitHub discussions or the mailing list first.
2015-04-16 22:10:32 +02:00
2023-05-24 12:21:50 +01:00
## Contributing
2015-12-29 14:36:44 +01:00
2022-11-08 05:54:56 -08:00
Contributions are very welcome. If you have an idea on how to improve Pekko, don't hesitate to create an issue or submit a pull request.
2022-04-11 17:54:23 +08:00
2024-03-22 14:16:08 +01:00
See [CONTRIBUTING.md ](https://github.com/apache/pekko/blob/main/CONTRIBUTING.md ) for details on the development workflow and how to create your pull request.
2016-07-05 16:23:25 +02:00
2023-05-24 12:21:50 +01:00
## Code of Conduct
2016-07-05 16:23:25 +02:00
2022-11-08 05:54:56 -08:00
Apache Pekko is governed by the [Apache code of conduct ](https://www.apache.org/foundation/policies/conduct.html ). By participating in this project you agree to abide by its terms.
2016-07-05 16:23:25 +02:00
2023-05-24 12:21:50 +01:00
## License
2016-07-05 16:23:25 +02:00
2024-03-22 14:16:08 +01:00
Apache Pekko is available under the Apache License, version 2.0. See [LICENSE ](https://github.com/apache/pekko/blob/main/LICENSE ) file for details.