Comments (7)
I like the idea for code maintainability. It definitely isn't lost on me that piu could become quite a beast down the road to maintain. However, I think keeping the install process simple and having a single executable is essential. Along those lines, I would like to keep contributing as simple as possible to encourage others.
That said, using CI would solve the problem. I would like to keep it simple, say limiting itself to concatenating the files together based on placeholders in the main script, just so it's easy for new contributors to understand.
A third solution isn't as elegant, but it might be a stepping stone to CI. Using src/
and dist/
folders and using something akin to a Makefile. Building the script would be up to the committers, however this later could be part of the CI process. In this way, only the URL location to download piu would change.
Let me think about this for a little bit and see what would make the most sense. I'm definitely interested in splitting piu's logic into easy to manage components.
from piu.
Might be worthwhile to use GitHub releases for the executable (via CI concatenation) , and you can split the source up within the code.
That way nothing really changes from an end user perspective (just install latest release), you don't need to store a compiled version, and code base can be a bit more structured / maintainable
from piu.
@scottgearyau I like that idea for it's simplicity; not having to maintain a separate all-in-one script for the end user. I think I'll go that route.
Also, I wanted to state I haven't been on Github that much due to coworker passing from COVID. Things are very up in the air right now at my workplace as well as the emotional toll of loosing a close friend. As soon as things settle piu's development will continue. I am not abandoning it by any means.
from piu.
No worries mate, do whatever it takes so you are well again :)
from piu.
That's horrible, sorry to hear. Take it easy mate! I've forked and begun writing a simple build script (via Makefile) that can be worked on over time ☺
Edit: On second thoughts, might just convert to a bash script... doesn't make sense to add another dependency (no matter how common)?
from piu.
something like pmm from bedrock linux does..
Are you saw it?
I like it, maybe take a look for inspiration...
from piu.
Bedrock is pretty awesome, but this was the first time I looked behind the curtain, so to speak with pmm. I really like the idea.
Going forward I want some feedback on a monolithic vs. modular design for the future:
Assume we've already separated out each package manager's logic (apt, dnf, etc) into individual files:
Options:
- A. Have all of the logic built-in
- GitHub releases / CI would auto concat the separate files into one bash script
- pro/cons: An all-in-one script, but development gets a little more complicated for the first time GitHub contributor
- We don't necessarily need to do CI in which case the cons are a moot point
- B. Pull logic from individual config files like pmm
- those would still be distributed with piu, but there would need to be "installer logic" for lack of a better term to put them somewhere like
~/.config
or/opt
- pro/cons: Easier to develop, but we'd have to maintain an installer script
- those would still be distributed with piu, but there would need to be "installer logic" for lack of a better term to put them somewhere like
- C. Do the above, but dynamically download it on first run (instead of distributing it with the download)
- Note that the auto-detection logic is already in piu, there wouldn't need to be additional logic besides downloading the given config file
- pro/cons: Development on our end is easier and piu is still easy to install for the user, but piu would be downloading config files from online
- is that even a problem?
So I'd like to hear from everyone what direction they think we should take this.
from piu.
Related Issues (14)
- Add Void Linux package management HOT 1
- piu files HOT 5
- OpenSUSE / zypper HOT 2
- Refactor Arch Linux's `piu files` HOT 4
- Installation command does not work (Ubuntu 20.04.1 LTS)
- Create a logo to avoid the current non-free one
- Package for Homebrew HOT 3
- Manual installing doesn't work HOT 1
- piu's future!
- Manjaro Linux: `piu u` does not upgrade packages HOT 1
- Brew errors when passed -y HOT 1
- OSX Support (brew)
- Add macos support statement to README HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from piu.