Skip to content

Commit 8ec3629

Browse files
authored
Update README.md
1 parent 3555deb commit 8ec3629

1 file changed

Lines changed: 168 additions & 103 deletions

File tree

README.md

Lines changed: 168 additions & 103 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,31 @@
1+
```markdown
12
<p align="center">
2-
<a href="https://github.com/1minds3t/omnipkg/actions/workflows/security_audit.yml"><img src="https://github.com/1minds3t/omnipkg/actions/workflows/security_audit.yml/badge.svg" alt="Security Audit"></a>
3-
<a href="https://pypi.org/project/omnipkg/"><img src="https://img.shields.io/pypi/v/omnipkg.svg" alt="PyPI version"></a>
4-
<a href="https://www.gnu.org/licenses/agpl-3.0"><img src="https://img.shields.io/badge/License-AGPLv3-red.svg" alt="License: AGPLv3"></a>
5-
<a <img src="https://github.com/1minds3t/omnipkg/actions/workflows/test.yml/badge.svg" alt="Build Status"></a>
3+
<a href="https://github.com/1minds3t/omnipkg/actions/workflows/security_audit.yml"><img src="https://github.com/1minds3t/omnipkg/actions/workflows/security_audit.yml/badge.svg" alt="Security Audit"></a>
4+
<a href="https://pypi.org/project/omnipkg/"><img src="https://img.shields.io/pypi/v/omnipkg.svg" alt="PyPI version"></a>
5+
<a href="https://www.gnu.org/licenses/agpl-3.0"><img src="https://img.shields.io/badge/License-AGPLv3-red.svg" alt="License: AGPLv3"></a>
6+
<a href="#"><img src="https://github.com/1minds3t/omnipkg/actions/workflows/test.yml/badge.svg" alt="Build Status"></a>
67
</p>
7-
omnipkg - The Dependency Orchestration Engine
8+
9+
# omnipkg - The Dependency Orchestration Engine
10+
811
One environment. Infinite packages/versions/dependencies. No duplicates/downgrades ever again. You can significantly reduce your reliance on pipx, uv, conda, Docker, etc. today.
9-
💥 The Proof: Orchestrating an "Impossible" Install
12+
13+
## 💥 The Proof: Orchestrating an "Impossible" Install
14+
1015
Other tools attempt dependency resolution. Omnipkg orchestrates dependency symphonies.
16+
1117
To prove this, we'll do something no other tool can: install two conflicting versions of PyTorch in a single command, provided in the "wrong" order.
12-
Step 1: Request the Impossible
18+
19+
### Step 1: Request the Impossible
20+
```bash
1321
$ omnipkg install torch==2.0.0 torch==2.7.1
22+
```
1423

15-
Step 2: Watch the Magic
16-
omnipkg doesn't fail. It orchestrates. It intelligently reorders the request for optimal execution, installs the newest version, then isolates the older, conflicting version in a bubble.
24+
### Step 2: Watch the Magic
25+
26+
omnipkg doesn’t fail. It orchestrates. It intelligently reorders the request for optimal execution, installs the newest version, then isolates the older, conflicting version in a bubble.
27+
28+
```
1729
🔄 Reordered packages for optimal installation: torch==2.7.1, torch==2.0.0
1830

1931
────────────────────────────────────────────────────────────
@@ -24,173 +36,212 @@ omnipkg doesn't fail. It orchestrates. It intelligently reorders the request for
2436
────────────────────────────────────────────────────────────
2537
📦 Processing: torch==2.0.0
2638
...
27-
🛡️ DOWNGRADE PROTECTION ACTIVATED!
39+
🛡️ DOWNGRADE PROTECTION ACTIVATED!
2840
-> Fixing downgrade: torch from v2.7.1 to v2.0.0
2941
🫧 Creating isolated bubble for torch v2.0.0
3042
...
3143
🔄 Restoring 'torch' to safe version v2.7.1 in main environment...
3244
✅ Environment protection complete!
45+
```
3346
3447
The operation leaves a pristine main environment and a perfectly isolated older version, ready for use.
35-
The Unsolvable Problem, Solved.
36-
For decades, the Python community has accepted a frustrating reality: if you need two versions of the same package, you need two virtual environments. A legacy project needing tensorflow==1.15 and a new project needing tensorflow==2.10 could not coexist. We've been stuck in dependency hell.
48+
49+
## The Unsolvable Problem, Solved.
50+
51+
For decades, the Python community has accepted a frustrating reality: if you need two versions of the same package, you need two virtual environments. A legacy project needing tensorflow==1.15 and a new project needing tensorflow==2.10 could not coexist. We’ve been stuck in dependency hell.
52+
3753
omnipkg ends dependency hell once and for all.
38-
It is a revolutionary package manager that allows you to run multiple, conflicting packages and dependencies in a single Python environment. omnipkg intelligently isolates only the conflicting package and its historically-correct dependencies, while your entire environment continues to share all other compatible packages. Our roadmap includes a "time machine" builder that can even handle legacy packages that no longer build on modern systems, giving you access to ancient dependencies with a single command.
54+
55+
It is a revolutionary package manager that allows you to run multiple, conflicting packages and dependencies in a single Python environment. omnipkg intelligently isolates only the conflicting package and its historically-correct dependencies, while your entire environment continues to share all other compatible packages. Our roadmap includes a “time machine” builder that can even handle legacy packages that no longer build on modern systems, giving you access to ancient dependencies with a single command.
56+
3957
The result is one clean environment, infinite versions, and zero waste.
40-
🛠️ Easy Install
58+
59+
## 🛠️ Easy Install
60+
4161
Get started in under 1 minute.
62+
63+
```bash
4264
# First, install omnipkg (after installing Redis)
4365
pip install omnipkg
4466
4567
# Then, run the fully automated stress test
4668
omnipkg stress-test
69+
```
70+
71+
## 🌍 Real-World Example
4772

48-
<table>
49-
<tr>
50-
<td width="50%">
51-
🌍 Real-World Example
5273
Imagine maintaining a Flask app that needs:
53-
* flask-login==0.4.1 (legacy)
54-
* requests==2.28.0 (new)
55-
* scikit-learn==0.24 (ML)
56-
Traditional:
57-
3 separate environments
58-
omnipkg:
59-
Single environment
60-
</td>
61-
<td width="50%">
62-
🏢 Enterprise Impact
63-
| Metric | Before omnipkg | After omnipkg |
64-
|---|---|---|
65-
| CI/CD Complexity | 5 envs | 1 env |
66-
| Storage Overhead | 8.7GB | 3.5GB |
67-
| Setup Time | 22 min | 30 sec |
68-
| Deduplication | 0% | ~60% |
69-
| KB Build Speed | N/A | 7 pkgs/sec |
70-
| Recovery Time | Hours | Seconds |
71-
</td>
72-
</tr>
73-
</table>
74-
🧠 Key Features
75-
* Intelligent Task Reordering: Automatically sorts packages to install newest versions first, ensuring downgrade protection is triggered with surgical precision.
76-
* Intelligent Downgrade Protection: Automatically detects and prevents pip installs that would break your existing environment.
77-
* Surgical Version Bubbles: Creates lightweight, self-contained bubbles for conflicting packages and their entire historical dependency trees.
78-
* Efficient Deduplication: Bubbles only contain the necessary files. All compatible dependencies are shared with the main environment, saving on average 60% of disk space.
79-
* Dynamic Runtime Switching: A seamless loader allows your scripts to activate a specific bubbled version on-demand, without changing your environment.
80-
* Atomic Environment Cleansing: A core design principle that surgically prepares the environment before complex operations.
81-
* Lightning-Fast Knowledge Base: Builds metadata at 7 packages/second with intelligent caching and delta updates.
82-
* Nuclear-Grade C-Extension Mixing: 100% reliable runtime swapping of numpy, scipy, and other C-extensions that was previously "impossible".
83-
* The Guardian Protocol: omnipkg revert with automatic environment snapshots - your ultimate undo button.
84-
* Registry-Based Deduplication (Coming Soon): A future feature to expand space savings by sharing files across bubbles.
85-
* Multi-Interpreter Support (Coming Soon): Seamlessly switch between different Python versions in a single environment.
86-
* Extreme Scale Testing: Battle-tested with 35GB+ of bubbles in tmpfs (until the developer's RAM gave up!).
87-
Your Environment Visualized
74+
75+
- flask-login==0.4.1 (legacy)
76+
- requests==2.28.0 (new)
77+
- scikit-learn==0.24 (ML)
78+
79+
**Traditional**: 3 separate environments
80+
**omnipkg**: Single environment
81+
82+
## 🏢 Enterprise Impact
83+
84+
|Metric |Before omnipkg|After omnipkg|
85+
|----------------|--------------|-------------|
86+
|CI/CD Complexity|5 envs |1 env |
87+
|Storage Overhead|8.7GB |3.5GB |
88+
|Setup Time |22 min |30 sec |
89+
|Deduplication |0% |~60% |
90+
|KB Build Speed |N/A |7 pkgs/sec |
91+
|Recovery Time |Hours |Seconds |
92+
93+
## 🧠 Key Features
94+
95+
- **Intelligent Task Reordering**: Automatically sorts packages to install newest versions first, ensuring downgrade protection is triggered with surgical precision.
96+
- **Intelligent Downgrade Protection**: Automatically detects and prevents pip installs that would break your existing environment.
97+
- **Surgical Version Bubbles**: Creates lightweight, self-contained bubbles for conflicting packages and their entire historical dependency trees.
98+
- **Efficient Deduplication**: Bubbles only contain the necessary files. All compatible dependencies are shared with the main environment, saving on average 60% of disk space.
99+
- **Dynamic Runtime Switching**: A seamless loader allows your scripts to activate a specific bubbled version on-demand, without changing your environment.
100+
- **Atomic Environment Cleansing**: A core design principle that surgically prepares the environment before complex operations.
101+
- **Lightning-Fast Knowledge Base**: Builds metadata at 7 packages/second with intelligent caching and delta updates.
102+
- **Nuclear-Grade C-Extension Mixing**: 100% reliable runtime swapping of numpy, scipy, and other C-extensions that was previously “impossible”.
103+
- **The Guardian Protocol**: omnipkg revert with automatic environment snapshots - your ultimate undo button.
104+
- **Registry-Based Deduplication (Coming Soon)**: A future feature to expand space savings by sharing files across bubbles.
105+
- **Multi-Interpreter Support (Coming Soon)**: Seamlessly switch between different Python versions in a single environment.
106+
- **Extreme Scale Testing**: Battle-tested with 35GB+ of bubbles in tmpfs (until the developer’s RAM gave up!).
107+
108+
## Your Environment Visualized
109+
110+
```
88111
├── numpy==1.26
89112
├── pandas==2.1
90113
└── .omnipkg_versions (bubbles)
91-
├── tensorflow-1.15
92-
│ ├── numpy==1.16 # isolated, 58% space saved
93-
└── tensorflow-2.10
94-
├── numpy==1.24 # isolated, 62% space saved
95-
🎯 Why omnipkg Changes Everything
96-
🏢 Enterprise Scenario
97-
"Our data science team needed 3 versions of TensorFlow (1.15, 2.4, 2.9) in the same JupyterHub environment. omnipkg made it work with zero conflicts and saved us 60% storage space."
98-
Before omnipkg:
99-
* Need Django 3.2 for one project, Django 4.0 for another? → Two virtual environments
100-
* Legacy package needs requests==2.20.0 but your app needs 2.28.0? → Dependency hell
101-
* Want to test your code against multiple package versions? → Complex CI/CD setup
102-
* Made a mistake? → Start over from scratch
103-
With omnipkg:
104-
* One environment, infinite package versions
105-
* Zero conflicts, zero waste (60% deduplication on average)
106-
* Runtime version switching without pip
107-
* Install from requirements.txt with intelligent conflict handling
108-
* omnipkg revert for instant rollback
109-
* Just install and import - things simply work
110-
* Only specify versions when you need runtime switching
114+
├── tensorflow-1.15
115+
│ ├── numpy==1.16 # isolated, 58% space saved
116+
└── tensorflow-2.10
117+
├── numpy==1.24 # isolated, 62% space saved
118+
```
119+
120+
## 🎯 Why omnipkg Changes Everything
121+
122+
### 🏢 Enterprise Scenario
123+
124+
“Our data science team needed 3 versions of TensorFlow (1.15, 2.4, 2.9) in the same JupyterHub environment. omnipkg made it work with zero conflicts and saved us 60% storage space.”
125+
126+
**Before omnipkg**:
127+
128+
- Need Django 3.2 for one project, Django 4.0 for another? → Two virtual environments
129+
- Legacy package needs requests==2.20.0 but your app needs 2.28.0? → Dependency hell
130+
- Want to test your code against multiple package versions? → Complex CI/CD setup
131+
- Made a mistake? → Start over from scratch
132+
133+
**With omnipkg**:
134+
135+
- One environment, infinite package versions
136+
- Zero conflicts, zero waste (60% deduplication on average)
137+
- Runtime version switching without pip
138+
- Install from requirements.txt with intelligent conflict handling
139+
- omnipkg revert for instant rollback
140+
- Just install and import - things simply work
141+
- Only specify versions when you need runtime switching
142+
143+
## 🔥 Ultimate Validation: NumPy & SciPy Version Matrix
144+
111145
<details>
112-
<summary><strong>🔥 Ultimate Validation: NumPy & SciPy Version Matrix</strong></summary>
113-
<br>
114-
<p align="center"><strong>🚀 omnipkg Ultimate Validation Suite</strong></p>
115-
<p align="left"><strong>🚀 PHASE 1: Clean Environment Preparation</strong></p>
146+
<summary><strong>🚀 omnipkg Ultimate Validation Suite</strong></summary>
147+
148+
**🚀 PHASE 1: Clean Environment Preparation**
149+
150+
```
116151
...
117152
Successfully installed numpy-1.26.4
118153
119154
🔬 Analyzing changes...
120155
121-
🛡️ PROTECTION ACTIVATED\!
122-
\-\> Handling: numpy v2.3.2 → v1.26.4
156+
🛡️ PROTECTION ACTIVATED!
157+
-> Handling: numpy v2.3.2 → v1.26.4
123158
🫧 Creating bubble for numpy v1.26.4
124159
...
125160
✅ Bubble created: 1407 files
126161
📊 Space saved: 0.0%
127162
🔄 Restoring numpy v2.3.2...
128163
129-
✅ Environment secured\!
164+
✅ Environment secured!
165+
```
130166

167+
**🚀 PHASE 2: Multi-Version Bubble Creation**
131168

132-
<p align="left"><strong>🚀 PHASE 2: Multi-Version Bubble Creation</strong></p>
169+
```
133170
...
134171
--- Creating numpy==1.24.3 bubble ---
135172
🫧 Isolating numpy v1.24.3
136173
✅ Bubble created: 1363 files
137174
138-
\--- Creating scipy==1.12.0 bubble ---
175+
--- Creating scipy==1.12.0 bubble ---
139176
🫧 Isolating scipy v1.12.0
140177
✅ Bubble created: 3551 files
178+
```
141179

180+
**🚀 PHASE 3: Runtime Validation**
142181

143-
<p align="left"><strong>🚀 PHASE 3: Runtime Validation</strong></p>
144-
💥 NUMPY VERSION SWITCHING:
182+
**💥 NUMPY VERSION SWITCHING:**
145183

184+
```
146185
⚡ Activating numpy==1.24.3
147186
✅ Version: 1.24.3
148187
🔢 Array sum: 6
149188
150189
⚡ Activating numpy==1.26.4
151190
✅ Version: 1.26.4
152191
🔢 Array sum: 6
192+
```
153193

154-
🔥 SCIPY EXTENSION VALIDATION:
194+
**🔥 SCIPY EXTENSION VALIDATION:**
155195

196+
```
156197
🌋 Activating scipy==1.12.0
157198
✅ Version: 1.12.0
158199
♻️ Sparse matrix: 3 non-zeros
159200
160201
🌋 Activating scipy==1.16.1
161202
✅ Version: 1.16.1
162203
♻️ Sparse matrix: 3 non-zeros
204+
```
163205

164-
🤯 COMBINATION TESTING:
206+
**🤯 COMBINATION TESTING:**
165207

208+
```
166209
🌀 Mix: numpy==1.24.3 + scipy==1.12.0
167210
...
168211
🧪 Compatibility: [1. 2. 3.]
169212
170213
🌀 Mix: numpy==1.26.4 + scipy==1.16.1
171214
...
172215
🧪 Compatibility: [1. 2. 3.]
216+
```
173217

218+
**🚀 VALIDATION SUCCESSFUL! 🎇**
174219

175-
<p align="center"><strong>🚀 VALIDATION SUCCESSFUL! 🎇</strong></p>
176-
<p align="left"><strong>🚀 PHASE 4: Environment Restoration</strong></p>
177-
- Removing bubble: numpy-1.24.3
178-
- Removing bubble: numpy-1.26.4
179-
- Removing bubble: scipy-1.12.0
220+
**🚀 PHASE 4: Environment Restoration**
180221

181-
✅ Environment restored to initial state.
222+
```
223+
- Removing bubble: numpy-1.24.3
224+
- Removing bubble: numpy-1.26.4
225+
- Removing bubble: scipy-1.12.0
182226
227+
✅ Environment restored to initial state.
228+
```
183229

184230
</details>
231+
232+
## 🔬 Live Example: Safe Flask-Login Downgrade
233+
185234
<details>
186235
<summary><strong>🔬 Live Example: Safe Flask-Login Downgrade</strong></summary>
236+
237+
```bash
187238
# Install conflicting flask-login version
188239
$ omnipkg install flask-login==0.4.1
189240

190241
📸 Taking LIVE pre-installation snapshot...
191242
- Found 545 packages
192243

193-
🛡️ DOWNGRADE PROTECTION ACTIVATED!
244+
🛡️ DOWNGRADE PROTECTION ACTIVATED!
194245
-> Detected conflict: flask-login v0.6.3 → v0.4.1
195246
🫧 Creating bubble for flask-login v0.4.1
196247
-> Strategy 1: pip dry-run...
@@ -200,7 +251,7 @@ $ omnipkg install flask-login==0.4.1
200251
🧹 Creating deduplicated bubble...
201252
⚡️ Loading hash index from cache...
202253
📈 Loaded 203,032 file hashes
203-
⚠️ Native isolation: MarkupSafe
254+
⚠️ Native isolation: MarkupSafe
204255
✅ Bubble created: 151 files copied, 188 deduplicated
205256
📊 Space saved: 55.5%
206257
🔄 Restoring flask-login v0.6.3...
@@ -216,13 +267,18 @@ $ omnipkg info flask-login
216267
🫧 Available: 0.4.1
217268
📊 Space Saved: 55.5% (188 files deduplicated)
218269
🔄 Switch: omnipkg activate flask-login==0.4.1
270+
```
219271

220272
You now have both versions available without virtual environments or conflicts.
273+
221274
</details>
275+
276+
222277
> Professional enough for enterprises, fun enough for developers
223-
>
224-
<br>
225-
For the memes
278+
279+
## For the memes
280+
281+
```
226282
___________________________________________
227283
/ \
228284
| pip is in omnipkg jail 🔒 |
@@ -237,12 +293,21 @@ For the memes
237293
(__)\ )\/\
238294
||----w |
239295
|| ||
296+
```
297+
298+
## 📄 Licensing
240299

241-
📄 Licensing
242300
omnipkg uses a dual-license model:
243-
* AGPLv3: For open-source and academic use (View License)
244-
* Commercial License: For proprietary systems and organizations
245-
Commercial inquiries: omnipkg@proton.me
246-
🤝 Contributing
247-
This project was born out of a real-world problem, and it thrives on community collaboration. Contributions, bug reports, and feature requests are incredibly welcome. Please feel free to check the issues page to get started.
248301

302+
- **AGPLv3**: For open-source and academic use ([View License](https://www.gnu.org/licenses/agpl-3.0))
303+
- **Commercial License**: For proprietary systems and organizations
304+
305+
Commercial inquiries: [omnipkg@proton.me](mailto:omnipkg@proton.me)
306+
307+
## 🤝 Contributing
308+
309+
This project was born out of a real-world problem, and it thrives on community collaboration. Contributions, bug reports, and feature requests are incredibly welcome. Please feel free to check the [issues page](https://github.com/1minds3t/omnipkg/issues) to get started.
310+
311+
```
312+
313+
```

0 commit comments

Comments
 (0)