Skip to content
@kbrw

kbrw

Kbrw, Build Robust soft|user|data-Ware

CONTRIBUTING

Hi, and thank you for wanting to contribute. This document is divided in two parts: one more philosophical, and one more practical. Both are important, but the practical part depends on the philosophical one, you are therefore warmly invited to read this document in full. This document is not set in stone, and we will update it according to our experience over time.

Core Principles

  • Backward Compatibility:   This is the most important value to Kbrw. Unless Elixir, Erlang, or Javascript brings an incompatible change, we strive as much as possible to keep our libraries stable, and backward compatible. Libraries MUST NOT break with elixir 1.12 and erlang 24 at the minimum.
  • Auditability:   Regarding the library life-cycle, this means that we want to be able to follow the changes that happened through the git history. This has a few implications on what kind of change we accept or refuse, and how we want these changes to take form.

How This Works in Practice

The first rule:

Start with opening an issue.

Details what kind of error you are encountering, or what kind of feature you want to see added. Describe how to reproduce the error, or how the feature would be used. Try to provide concrete examples of code. If you want to bring the change yourself, please also describe how you would go about it:

  • For correcting an error, details where the sources of the error are, why it causes an error, what you plan to change and how.
  • For adding a feature, details where the code would be impacted, why you want to bring the change there, and how you came to this conclusion. In either case, we will provide feedback, either a go ahead to create a PR to be reviewed, an extended discussion on how to approach the change differently, or a refusal.

The issue should be geared toward one and only one change, with as limited of a scope as possible.

The PR itself

Try to make the least amount of change as possible. We will provide feedback if we see a way that can be done with less. Try also to fit it all in one commit, although if it's impossible for X or Y reason, try to do it so each commit keeps the lib functional, no broken intermediate state. Once the inspection is all done and everything is accepted, we will squash the merge if necessary.

Code formatting

If no .formatter.exs exists, please don't run mix format on the project. This will bring a lot of unnecessary changes. Likewise, please don't manually modify the code layout outside of your direct changes. In other words, please keep the changes to a minimum.

Refactoring

Please discuss this extensively with us before engaging yourself in this kind of change. We probably won't accept it if it's not done in order to facilitate one or more changes that you have in mind, or that you have already opened as an issue.

What about non functional change ?

Keep it to the first rule, we can probably suggest something to make your contribution be more than changing two words in the comments.

Pinned Loading

  1. reaxt reaxt Public

    Use React template into your Elixir application for server rendering

    Elixir 374 38

  2. sweet_xml sweet_xml Public

    Elixir 363 61

  3. ewebmachine ewebmachine Public

    The HTTP decision tree as a plug (full elixir rewriting of basho/webmachine with improvements)

    CSS 96 18

  4. elixir.nvim elixir.nvim Public

    Vim Completion/Doc/Eval for Elixir (nvim), compile https://github.com/awetzel/neovim-elixir and https://github.com/awetzel/nvim-rplugin

    Vim Script 103

  5. gitex gitex Public

    Elixir implementation of the Git object storage, but with the goal to implement the same semantic with other storage and topics

    Elixir 68 5

  6. exos exos Public

    Exos is a simple Port Wrapper : a GenServer which forwards cast and call to a linked Port.

    Elixir 78 7

Repositories

Showing 10 of 43 repositories
  • ewebmachine Public

    The HTTP decision tree as a plug (full elixir rewriting of basho/webmachine with improvements)

    kbrw/ewebmachine’s past year of commit activity
    CSS 96 MIT 18 2 1 Updated Dec 11, 2024
  • reaxt Public

    Use React template into your Elixir application for server rendering

    kbrw/reaxt’s past year of commit activity
    Elixir 374 MIT 38 7 2 Updated Nov 5, 2024
  • sweet_xml Public
    kbrw/sweet_xml’s past year of commit activity
    Elixir 363 MIT 61 22 5 Updated Oct 9, 2024
  • calibex Public

    Elixir ICal : bijective coding/decoding for ICal transformation, ICal email request and responses.

    kbrw/calibex’s past year of commit activity
    Elixir 16 MIT 9 1 2 Updated May 28, 2024
  • json_stream Public

    Small but useful wrapper above erlang `jsx` to stream json elements from an Elixir binary stream.

    kbrw/json_stream’s past year of commit activity
    Elixir 8 MIT 0 1 0 Updated Mar 25, 2024
  • stemex Public

    Stemex is a NIF wrapper above the snowball language (http://snowball.tartarus.org)

    kbrw/stemex’s past year of commit activity
    C 7 MIT 4 1 0 Updated Mar 14, 2024
  • mailibex Public

    Library containing Email related implementations in Elixir : dkim, spf, dmark, mimemail, smtp

    kbrw/mailibex’s past year of commit activity
    Elixir 62 MIT 23 4 3 Updated Mar 12, 2024
  • delayed_otp Public

    Delay death of supervisor children or gen_server : for instance Erlang supervisor with exponential backoff restart strategy

    kbrw/delayed_otp’s past year of commit activity
    Elixir 25 5 3 2 Updated Feb 22, 2024
  • exfsm Public

    Simple elixir library to define a static FSM.

    kbrw/exfsm’s past year of commit activity
    Elixir 11 MIT 5 2 1 Updated Feb 19, 2024
  • plug_forwarded_peer Public

    Very simple plug which reads `X-Forwarded-For` or `Forwarded` header according to rfc7239 and fill `conn.remote_ip` with the root client ip.

    kbrw/plug_forwarded_peer’s past year of commit activity
    Elixir 24 MIT 8 0 0 Updated Sep 13, 2023