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.