Hi everyone, it's been around 6 months since the original monero-bash CCS proposal. Since then, I've been continuing to maintain monero-bash, adding updates and fixing bugs. As Monero, P2Pool, and XMRig continue to add new features and configuration options, I'd like to continue maintaining monero-bash so that it supports them.
I'm currently developing v2.0.0, which is a full rewrite to improve monero-bash. I've also spent the past while making robust Bash functions (mostly for monero-bash), and have generalized them into a standard library usable in any Bash script. These helper functions will allow for cleaner code in monero-bash.
This is a CCS proposal to allow me to work for max 3 months on re-writing monero-bash, a Linux CLI wrapper/manager for Monero, P2Pool and XMRig. In particular, I'd like to make monero-bash's package manager multi-threaded, which essentially requires re-writing it from scratch.
Any extra time left-over will be spent maintaining monero-bash.
Some milestones I'd like to achieve:
- Add multi-threading to package manager
- Add interactive wallet menu (using arrow keys) Compatibility
- Fix Fedora Linux issues (systemd, SELinux)
- Support for all P2Pool options
- Harden processes, general security improvements
- Add verbose debug logging
- Cleaner UI
I'm hinto-janaiyo. Maintainer of monero-bash, and a tiny contributor to Monero.
I've gotten some feedback about the actual usefulness of this project, so I'd like argue my case here:
1. How is this different than downloading manually
Monero/P2Pool/XMRig update relatively frequently and every time you must manually check, manually download, manually verify hash/signature (...which you are all doing, right?), manually replace your old binaries with the new without messing it up. This is a problem that was solved 2 decades ago: it's called a packager manager. It would be great if all Linux repositories included these packages but they don't, and due to the nature of this software, probably never will be.
monero-bash happens to be a package manager though!
2. This is just a "Bash script"
I think monero-bash overtime has gotten a lot of nice features. Package manager with Tor support, wallet menu, live status watcher, process manager. It's currently around 4-5k lines of code (excluding comments, configs, etc) because of the (maybe too big) scope: management of everything Monero, compatible on many Linux distros. There is a lot more code than a 10-line script that does a single task. Example: an algorithm for merging two config files together. Hopefully people can see beyond the language.
3. I could do this better/for cheaper
Excluding this project and the Monero GUI, there are 0 projects out there that are all-in-one P2Pool solutions, which is unfortunate. I've always rooted for P2Pool use and I think the community sees the importance too. One of main reason I made and continued to develop monero-bash was because the lack of any tools. There is no other option out there other than manually setting everything up. A year after P2Pool's creation, the only project (that people actually use) is this one, no "better" versions or GUI versions have shown up. This project should not be the only option, an all-in-one cross-compatible GUI would be ideal... but who will make that? I'll be continuing to maintain this for a long time, since I use it myself.
Work for at the maximum 3 months to finish monero-bash v2.0.0 and continue to maintain alongside Monero, P2Pool, and XMRig.
Pricing: 38 XMR ONLY upon full completion.
Work hours: I'll be working for 3 months, around 20 hours a week, for a total of 243 hours.
At the current USD exchange rate for XMR ($140 USD, Sept 25, 2022), I'll be working for: $22/hr ($5346 / 243 hours)
If I finish early, any leftover time will be spent continuing to maintain monero-bash as needed (added new options, fixing bugs).
Estimated time to completion:
|Re-write for multi-thread support||1 month~|
|Interactive wallet menu (using arrow keys)||3 weeks~|
|Fix Fedora issues||1 week~|
|Security improvements||1 week~|
|All P2Pool options||3 days~|
|Test, refine, fix bugs, repeat||2 weeks~|
|Total time||3 months~|