======================== Contributing to httpstan ======================== **httpstan** is a shim_ allowing clients able to make HTTP-based requests to call functions in the Stan C++ library's ``stan::services`` namespace. **httpstan** was originally developed as a "backend" for a Stan interface written in Python, PyStan_. Goals: - Provide access to frequently-used functions in Stan C++ library's ``stan::services`` namespace. - Minimize toil. Maintaining httpstan should require as little time as possible. Non-goals: - Provide access to functions other than those in the ``stan::services`` namespace. There are only three exceptions to this non-goal: ``model_base_crtp.log_prob``, ``model_base_crtp.write_array``, and ``stan::model::log_prob_grad``. If these goals and non-goals strike you as restrictive, we kindly remind you that httpstan is open source software which you are free to fork and customize. .. _shim: https://en.wikipedia.org/wiki/Shim_%28computing%29 .. _PyStan: http://mc-stan.org/interfaces/pystan.html How to Make a Code Contribution =============================== Code contributions must be readable and easy to understand. httpstan emerged out of a rewrite of an existing piece of software (PyStan) which was difficult to maintain. httpstan aims to be maintainable. See `Contributing to PyStan`_ in the PyStan repository. Contributions to httpstan follow the same guidelines. There is one important difference between httpstan and PyStan. httpstan provides access to Stan functions via an HTTP-based REST API. This REST API follows the conventions described in the document `API Design Guide `_ and the `Google JSON Style Guide `. .. _Contributing to PyStan: https://pystan-next.readthedocs.io/en/latest/contributing.html