Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/theodesp/things-i-learned-while-opensourcing
Things I've learned while open-sourcing. Experience from the trenches.
https://github.com/theodesp/things-i-learned-while-opensourcing
knowledgebase opensource pragmatic
Last synced: 20 days ago
JSON representation
Things I've learned while open-sourcing. Experience from the trenches.
- Host: GitHub
- URL: https://github.com/theodesp/things-i-learned-while-opensourcing
- Owner: theodesp
- License: mit
- Created: 2017-08-09T14:50:45.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2017-08-31T11:31:09.000Z (about 7 years ago)
- Last Synced: 2024-10-19T09:17:49.992Z (about 1 month ago)
- Topics: knowledgebase, opensource, pragmatic
- Size: 5.86 KB
- Stars: 2
- Watchers: 2
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# things-I-learned-while-opensourcing
Things I've learned while open-sourcing. Experience from the trenches.## Getting started
This project is a collection of valuable knowledge topics I've accumulated while contributing to opensource projects. I've laid
down a table for each project I've contribute and made some useful remarks.[binaryornot](https://github.com/audreyr/binaryornot)
---
* Checking if a file is binary is not a trivial job. One has to perform a series of heuristic checks to see if a file is considered
binary. See [link](http://eli.thegreenplace.net/2011/10/19/perls-guess-if-file-is-text-or-binary-implemented-in-python/)
* Python has a libary called [chardet](http://chardet.readthedocs.io/en/latest/usage.html) that detects with a certain probability the encoding of a file.
* In general if a file containes a high ratio or non printable chars or some certain null bytes it is considered binary but not all the times.[Inversify](https://github.com/inversify/InversifyJS)
---
* Inversion of control is more than having a map of keys and objects. Often you need more customization.
* Inversify.js has a really good project structure for Typescript apps.
* [Reflect-Metadata](https://www.npmjs.com/package/reflect-metadata) Can be used to add additional meta properties to parameters or classes
* Decorators can be usefull for adding metadata properties in a seemless way.
* Its important to have a good PULL_REQUEST_TEMPLATE, CONTRIBUTING and ISSUE_TEMPLATE to our projects.
* [Appveyor](https://www.appveyor.com/) is really cool CI for Windows.[Cookiecutter](https://github.com/audreyr/cookiecutter)
---
* [Click](http://click.pocoo.org/5/) is as really cool package for creating beautiful command line interfaces.
* [Jinja Templates](http://jinja.pocoo.org/) has really cool features for debugging and sandboxing.
* [pytest](https://docs.pytest.org/en/latest/) is the defacto testing framework for python.
* Pytest with --cov reporting does not work well with PyCharm.
* You can pass a custom environmnent to [Popen](https://docs.python.org/2/library/subprocess.html#popen-constructor)
* Windows accepts only strings for env variables. Use os.pathsep to enable crossplatform separators.[RQ](https://github.com/nvie/rq)
---
* [rg](https://www.mankier.com/1/rg) is a command line tool similar to grep and silver searcher
* [SIGRTMIN](https://dougsland.livejournal.com/43885.html) Signals are not defined for MacOS
* [twine](https://pypi.python.org/pypi/twine) Is a tool to help you interact with PyPi
* [flushdb redis command](https://redis.io/commands/flushdb) clears all keys of a database. This command never fails.
* In old python runtimes `assertIsNotNone` is not defined
* `unicode` command is not defined for python3[angular-es6-mobx-flux-example](https://github.com/theodesp/angular-es6-mobx-flux-example)
---
* Angular 1.5+ versions introduced Lifecycle Hooks and Components [Link](https://toddmotto.com/angular-1-5-lifecycle-hooks). so its really easy to write clean angular code that resembles React Components.
* ES6 in Angular 1 is not so bad. We can leverage the power of Mobx to have a very scalable applications without having to learn another framework.[Cache Line](https://github.com/theodesp/cache-line)
---
* [Node Gyp](https://github.com/nodejs/node-gyp) Can be used to write native applications in C/C++ and reference them in Node.
The only problem is that [Node C++ Documendation](https://nodejs.org/api/n-api.html) is not very good.[Kyt-starter](https://github.com/theodesp/kyt-starter)
---
* [Kyt](https://github.com/NYTimes/kyt) Is a very versatile foundation for building webpack apps. Its one of the easiest tools to use.[fetch-future](https://github.com/theodesp/fetch-future)
---
* *Futures* are one of the best alternatives to Promises [See why](https://github.com/fluture-js/Fluture/wiki/Comparison-to-Promises) as they are composable and cancelable.## Contributing
If you like this project and you would like to share your valuable knowledge you can clone/for the project and Submit a PR.## Licence
MIT © Theo Despoudis