From 4f14291f2c6ed37183e110d5fe2d4de01ed18e28 Mon Sep 17 00:00:00 2001 From: Nyior Clement Jr <32811823+nyior@users.noreply.github.com> Date: Wed, 12 Jul 2023 08:45:05 +0100 Subject: [PATCH] Readme updates (#516) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Add community section to readme file * Add a contributing guide * Add more info on starting convos around issues * Update Slack invite link * Add new line between header and body Co-authored-by: Carl Hörberg * Take out build and performance test steps Co-authored-by: Carl Hörberg * Add link to CloudAMQP support Co-authored-by: Carl Hörberg * Add new line between header and body Co-authored-by: Carl Hörberg * Replace link to github issues with discussions * Add new lines between header and body in applicable places --------- Co-authored-by: Carl Hörberg --- CONTRIBUTING.md | 43 +++++++++++++++++++++++++++++++++++++++++++ README.md | 28 ++++++++-------------------- 2 files changed, 51 insertions(+), 20 deletions(-) create mode 100644 CONTRIBUTING.md diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000000..31b54340ec --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,43 @@ +You are interested in contributing to LavinMQ, but you are not sure how to? +Right now, you can contribute to LavinMQ in one of two ways: + +1. [Code contributions](#code-contributions) +2. [Non-code contributions](#non-code-contributions) + +## Code contributions + +The first step to making a code contribution, is starting a conversation around what you'd like to work on. You can start a conversation around an existing [issue](https://github.com/cloudamqp/lavinmq/issues) or a new one that you've created - refer to [reporting an issue](#report-an-issue). Next: + +1. Fork, create feature branch +1. Submit pull request + +### Develop + +1. Run specs with `crystal spec` +1. Compile and run locally with `crystal run src/lavinmq.cr -- -D /tmp/amqp` +1. Pull js dependencies with `make js` +1. Build API docs with `make docs` (requires `npx`) +1. Build with `shards build` + +### Release + +1. Update `CHANGELOG.md` +1. Bump version in `shards.yml` +1. Create and push an annotated tag (`git tag -a v$(shards version)`), put the changelog of the version in the tagging message + +## Non-Code contributions + +Your schedule won't allow you make code contributions? Still fine, you can: + +### [Report an issue](https://github.com/cloudamqp/lavinmq/issues/new) + +- This could be an easily reproducible bug or even a feature request. +- If you spot an unexpected behaviour but you are not yet sure what the underlying bug is, the best place to post is [LavinMQ's community Slack](https://join.slack.com/t/lavinmq/shared_invite/zt-1v28sxova-wOyhOvDEKYVQMQpLePNUrg). This would allow us to interactively figure out what is going on. + +### [Give us some feedback](https://github.com/cloudamqp/lavinmq/discussions) + +We are also curious and happy to hear about your experience with LavinMQ. You can email us via contact@cloudamqp.com or reach us on Slack. Not sure what to write to us? + +- You can write to us about your first impression of LavinMQ +- You can talk to us about features that are most important to you or your organization +- You can also just tell us what we can do better \ No newline at end of file diff --git a/README.md b/README.md index d130c1b3b4..b14796802d 100644 --- a/README.md +++ b/README.md @@ -102,25 +102,7 @@ In OS X the app, [`Instruments` that's bundled with Xcode can be used for tracin Memory garbage collection can be diagnosed with [boehm-gc environment variables](https://github.com/ivmai/bdwgc/blob/master/docs/README.environment). ## Contributing - -1. Fork, create feature branch -1. Build with `make -j` -1. Performance test with `bin/lavinmqperf throughput` and compare against `main` -1. Submit pull request - -### Develop - -1. Run specs with `crystal spec` -1. Compile and run locally with `crystal run src/lavinmq.cr -- -D /tmp/amqp` -1. Pull js dependencies with `make js` -1. Build API docs with `make docs` (requires `npx`) -1. Build with `shards build` - -### Release - -1. Update `CHANGELOG.md` -1. Bump version in `shards.yml` -1. Create and push an annotated tag (`git tag -a v$(shards version)`), put the changelog of the version in the tagging message +Kindly read our [contributing guide](CONTRIBUTING.md) ## LavinMQ with various plattforms All AMQP client libraries work with LavinMQ and there are AMQP client libraries for almost every platform on the market. Here are guides for a couple of common plattforms. @@ -147,7 +129,7 @@ and about 1000 bindings/second to durable queues. ## Implementation LavinMQ is written in [Crystal](https://crystal-lang.org/), a modern -language built on the LLVM, that has a Ruby-like syntax, uses an event loop +language built on the LLVM, with a Ruby-like syntax. It uses an event loop library for IO, is garbage collected, adopts a CSP-like [concurrency model](https://crystal-lang.org/docs/guides/concurrency.html) and compiles down to a single binary. You can liken it to Go, but with a nicer syntax. @@ -206,6 +188,12 @@ When `Client#read_loop` receives a Basic.Consume frame it will create a `Consume the queue's list of consumers. Each consumer has a `deliver_loop` fiber that will be notified by an internal `Channel` when new messages are available in the queue. +## Getting help + +For questions or suggestions: +- We are on [Slack](https://join.slack.com/t/lavinmq/shared_invite/zt-1v28sxova-wOyhOvDEKYVQMQpLePNUrg). +- You can also use the [lavinmq tag](https://stackoverflow.com/questions/tagged/lavinmq) on Stackoverflow +- If you use LavinMQ via [CloudAMQP](https://www.cloudamqp.com) then reach out to [support@cloudamqp.com] ## Features - AMQP 0-9-1 compatible