go.sdls.io/sin@v0.0.9/README.md (about)

     1  # Sin
     2  
     3  Sin is a stripped version of [gin-gonic/gin](https://github.com/gin-gonic/gin) that aims to keep things simple. If Gin
     4  identifies itself as a "web framework", then Sin is a "web micro-service interface development library".
     5  
     6  Sin does not hold your hand with helper functions such as "`ClientIP()`", which because of their high level of
     7  abstraction from the simple principles and good "hygiene practices" of "web" software development leads to so called
     8  "[security issues](https://github.com/gin-gonic/gin/pull/2474)" and then patches that
     9  [break](https://github.com/gin-gonic/gin/issues/2697) peoples work.
    10  
    11  Sin is for battle tested services and for developers that know what they're doing.
    12  
    13  Until `v1` is released, more parts of the original Gin codebase will be stripped or modified to suit the development
    14  needs of SUDOLESS, which aims to [KISS](https://en.wikipedia.org/wiki/KISS_principle).
    15  
    16  All code to Sin is released under the [MPL 2.0 LICENSE](https://mozilla.org/MPL/2.0/).
    17  
    18  ## Why?
    19  
    20  ### Fewer dependencies
    21  
    22  ```shell
    23  # gin
    24  github.com/gin-contrib/sse v0.1.0
    25  github.com/go-playground/validator/v10 v10.4.1
    26  github.com/golang/protobuf v1.3.3
    27  github.com/json-iterator/go v1.1.9
    28  github.com/mattn/go-isatty v0.0.12
    29  github.com/stretchr/testify v1.4.0
    30  github.com/ugorji/go/codec v1.1.7
    31  gopkg.in/yaml.v2 v2.2.8
    32  ```
    33  
    34  ```shell
    35  # sin
    36  github.com/stretchr/testify v1.7.0
    37  ```
    38  
    39  Why pull all those dependencies and the dependencies dependencies, when I am not even using protobuf.
    40  
    41  ### Highly opinionated
    42  
    43  Stripped out features that are of no use to us; those include, but are not limited to:
    44  
    45  * Default JSON encoding/decoding (no third-parties, no JSONP, no SecureJSON, etc)
    46  * No Bind* methods
    47  * No assistive
    48  
    49  If the stripped down version suits your needs, you're in luck. If not, this library is not for you.
    50  
    51  ### Less Abstraction
    52  
    53  With bad abstraction comes complexity and confusion.
    54  
    55  ### For Professionals
    56  
    57  You wouldn't drive a car without a license. You wouldn't perform surgery without a PhD. You wouldn't operate dangerous
    58  machinery without the proper training. So why would you deploy software out into the world without knowing what you're
    59  doing?!
    60  
    61  Some machines cannot be made "safer" for the user without losing performance, or hiding features behind complexity. As
    62  such we aim to make Sin a powerful tool, full of risks for those who do not know anything about their environment and
    63  for those who do not read the manual.
    64  
    65  ## Mission
    66  
    67  Sin `v1` will be released once as much of Gin has been replaced, and the projects gets closer to the simplicity of the
    68  [httprouter](https://github.com/julienschmidt/httprouter) project, which Gin is build on.