These are just general thoughts I've had as I read through Bismuth, get familiar etc.
- WIP code not intended for production use should be developed on its own branch as to not polute the codebase.
- Old deprected no longer used code should be removed. It's always in the git history if you need it in the future.
- Scripts should probably be in their own subfolder, with a clear opening comment about their intended use case
- Ideally the core would be made into actual installable module (w/
setup.py
), and dice, explorer etc setup as co-modules (ie,bismuth.explorer
,bismuth.core
). This could still be done in the same repo. This would be very helpful for integrators since right now it's difficult to import for instancekeys.py
methods to use in my own scripts unless I put my code in the root directory as well. - There shouldn't be potentially executable code (.py) in
static/
folder. Not a big deal. - All node persistence data should be stored in a dedicated folder making it easy to purge (reset) or backup/sync. I'm sure there's a reason for it being put in
static/
, but it muddies the waters on what is ephemeral/git tracked, etc. - The config file should have some comments. See postgres's config for a great example.
- I would prefer to see proper logging used. Ideally there would be no print usage. Levels and module labels are extremely useful for debugging complicated issues in large codebases.
- In a perfect world node.py would be refactored into a self contained class. This would allow easier network simulation testing, etc.
- Moving towards pep8 compliance would be good. imports are the most negative violation that I see. Some lines are excessibvely long and difficult to read.
- There's a lot of code duplication I see. Ideally classes for major groups of functionality would allow better re-use. For instance,
keys.py
andessentials.py
seem to have very similar functionality.
I think this project is really cool, and I would love to see it become easier to work with and better documented to encourage growth of the developer community that has already grown around it. Addressing some of these issues should help push it in that direction.
Missing things that I will need in some shape or form:
- Working Dockerfile
- Settable config values from Env variables