Files
optimiz-rs/docs/PUBLICATION_GUIDE_v1.0.0.md
T
ThotDjehuty df6b7f61f6 chore: clean root — move 7 doc files to docs/
- DOCUMENTATION_IMPROVEMENTS_NEEDED.md → docs/
- PUBLICATION_GUIDE_v1.0.0.md → docs/
- PUBLICATION_STATUS.md → docs/
- PYPI_PUBLISHING.md → docs/
- RELEASE_NOTES_v0.2.0.md, v0.3.0.md, v1.0.0.md → docs/
- Added build artifacts to .gitignore
2026-03-10 18:00:57 +01:00

396 lines
10 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# OptimizR v1.0.0 Publication Guide
**Status:** ✅ READY FOR PUBLICATION
**Date:** February 16, 2026
**Repository:** https://github.com/ThotDjehuty/optimiz-r
**Tag:** v1.0.0
---
## ✅ Completed Preparation
### 1. Fixed Cargo.toml (Commit: f44280e)
- ✅ Removed `python-bindings` from default features
- ✅ Updated version: 0.3.0 → 1.0.0
- ✅ Updated authors: HFThot Research Lab <contact@hfthot-lab.eu>
- ✅ Updated repository URL: https://github.com/ThotDjehuty/optimiz-r
### 2. Fixed pyproject.toml (Commit: f44280e, a3117fe)
- ✅ Updated version: 0.3.0 → 1.0.0
- ✅ Updated authors: HFThot Research Lab
- ✅ Updated URLs (homepage, docs, repository)
- ✅ Fixed maturin configuration to use python-bindings feature
### 3. Updated README.md (Commit: f44280e)
- ✅ Version badge: 0.3.0 → 1.0.0
- ✅ What's New section updated for v1.0.0
- ✅ Citation author updated
- ✅ Contact information updated
### 4. Added .gitignore (Commit: 0dfb9b8)
- ✅ Excluded wheels/ directory from git
### 5. Created RELEASE_NOTES_v1.0.0.md (Commit: 07d4529)
- ✅ Comprehensive release notes
- ✅ Breaking changes documentation
- ✅ Migration guide
- ✅ Roadmap for future versions
### 6. Build Verification
-`cargo publish --dry-run` - SUCCESS
-`maturin build --release --features python-bindings` - SUCCESS
- ✅ Wheel built: `optimizr-1.0.0-cp38-abi3-macosx_10_12_x86_64.whl`
### 7. Git Tag & Push
- ✅ Created tag: v1.0.0
- ✅ Pushed to GitHub: main branch + v1.0.0 tag
---
## 📋 Next Steps: Actual Publication
### Step 1: Set Up crates.io Account
1. **Create Account** (if not already done)
- Visit: https://crates.io/
- Sign in with GitHub account
2. **Generate API Token**
- Go to: https://crates.io/settings/tokens
- Create new token: "OptimizR v1.0.0 Publication"
- Copy the token (you won't see it again)
3. **Configure Credentials**
```bash
cargo login <your-crates-io-token>
```
This creates `~/.cargo/credentials` with your token
### Step 2: Publish to crates.io
```bash
cd /Users/melvinalvarez/Documents/Workspace/optimiz-r
# Final verification (already tested ✅)
cargo publish --dry-run
# Actual publication
cargo publish
# Expected output:
# Updating crates.io index
# Packaging optimizr v1.0.0 (/Users/.../optimiz-r)
# Uploading optimizr v1.0.0
# Published optimizr v1.0.0
```
**Verification:**
- Visit: https://crates.io/crates/optimiz-rs
- Should show v1.0.0 within a few minutes
---
### Step 3: Set Up PyPI Account
1. **Create PyPI Account** (if not already done)
- Visit: https://pypi.org/account/register/
- Verify email
2. **Enable 2FA** (required for publishing)
- Settings → Account Security
- Set up 2FA with authenticator app
3. **Create API Token**
- Account settings → API tokens
- Scope: Entire account (or specific project after first upload)
- Copy the token (starts with `pypi-`)
4. **Configure Credentials**
```bash
# Create ~/.pypirc
cat > ~/.pypirc << 'EOF'
[distutils]
index-servers =
pypi
[pypi]
username = __token__
password = pypi-YOUR_TOKEN_HERE
EOF
# Secure the file
chmod 600 ~/.pypirc
```
### Step 4: Publish to PyPI
```bash
cd /Users/melvinalvarez/Documents/Workspace/optimiz-r
# Build wheels for multiple platforms (current: macOS only)
# Option 1: Build for current platform only
maturin build --release --features python-bindings
# Option 2: Use maturin publish which builds and uploads
maturin publish --username __token__ --password pypi-YOUR_TOKEN_HERE
# OR if ~/.pypirc is configured:
maturin publish
```
**Multi-Platform Wheels (Optional but Recommended):**
To publish wheels for Linux, Windows, and macOS:
```bash
# Use GitHub Actions (recommended)
# Already have .github/workflows/ci.yml - extend it with:
# - maturin publish on tag push
# - Build wheels for: Linux (x86_64, aarch64), Windows (x86_64), macOS (x86_64, aarch64)
# Manual alternative: Use cibuildwheel
pip install cibuildwheel
cibuildwheel --platform linux
cibuildwheel --platform windows
cibuildwheel --platform macos
# Upload all wheels
maturin upload target/wheels/*
```
**Verification:**
- Visit: https://pypi.org/project/optimizr/
- Should show v1.0.0 within a few minutes
- Test installation:
```bash
pip install optimizr==1.0.0
python -c "import optimizr; print(optimizr.__version__)"
```
---
## 🔄 GitHub Actions Automation (Recommended)
To automate future releases, update `.github/workflows/ci.yml`:
```yaml
name: Release
on:
push:
tags:
- 'v*'
jobs:
publish-crates:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions-rs/toolchain@v1
with:
toolchain: stable
- name: Publish to crates.io
env:
CARGO_REGISTRY_TOKEN: ${{ secrets.CRATES_TOKEN }}
run: cargo publish --token $CARGO_REGISTRY_TOKEN
publish-pypi:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v4
with:
python-version: '3.11'
- name: Install maturin
run: pip install maturin
- name: Build wheels
run: maturin build --release --features python-bindings
- name: Publish to PyPI
env:
MATURIN_PYPI_TOKEN: ${{ secrets.PYPI_TOKEN }}
run: maturin publish --username __token__ --password $MATURIN_PYPI_TOKEN
```
**Setup Secrets:**
1. GitHub repo → Settings → Secrets and variables → Actions
2. Add secrets:
- `CRATES_TOKEN`: Your crates.io API token
- `PYPI_TOKEN`: Your PyPI API token (starts with `pypi-`)
---
## 📊 Post-Publication Checklist
### Immediate (After Publishing)
- [ ] **Verify crates.io**: https://crates.io/crates/optimiz-rs/1.0.0
- [ ] **Verify PyPI**: https://pypi.org/project/optimizr/1.0.0
- [ ] **Test Rust installation**:
```bash
cargo new test-optimiz-rs
cd test-optimiz-rs
cargo add optimiz-rs
cargo build
```
- [ ] **Test Python installation**:
```bash
python -m venv test-env
source test-env/bin/activate
pip install optimizr==1.0.0
python -c "import optimizr; print(optimizr.__version__)"
```
### Documentation Updates
- [ ] **Update OPEN_SOURCE_STRATEGY.md**:
```markdown
#### 2. **Optimiz-R** - Portfolio Optimization Engine
- **Current Status:** ✅ v1.0.0 published (crates.io + PyPI)
- **Repository:** https://github.com/ThotDjehuty/optimiz-r
- **Documentation:** https://optimiz-r.readthedocs.io
- **Installation:** `cargo add optimiz-rs` or `pip install optimiz-rs`
```
- [ ] **Create GitHub Release**:
- Go to: https://github.com/ThotDjehuty/optimiz-r/releases/new
- Tag: v1.0.0
- Title: "OptimizR v1.0.0 - First Stable Release"
- Description: Copy from RELEASE_NOTES_v1.0.0.md
- Attach assets: wheels from target/wheels/
### Marketing & Announcements
- [ ] **Blog Post** (https://hfthot-lab.eu):
```markdown
Title: "OptimizR v1.0.0: High-Performance Optimization in Rust"
Sections:
1. What is OptimizR?
2. Performance benchmarks (50-100× speedup)
3. Key features & algorithms
4. Getting started (Rust & Python)
5. Why open source?
6. Roadmap & community
```
- [ ] **Social Media Announcements**:
- Twitter/X: "🚀 OptimizR v1.0.0 is live! High-performance optimization algorithms in Rust with Python bindings. 50-100× faster than pure Python. MIT licensed. #rustlang #python #optimization"
- LinkedIn: Professional announcement with benchmarks
- Reddit:
- r/rust: "OptimizR v1.0.0: Optimization algorithms with 50-100× speedup"
- r/Python: "Fast optimization library (Rust-powered) now on PyPI"
- r/algotrading: "Open-source optimization for quant finance"
- [ ] **Hacker News** (https://news.ycombinator.com/submit):
```
Title: "OptimizR v1.0.0 High-Performance Optimization Algorithms in Rust"
URL: https://github.com/ThotDjehuty/optimiz-r
```
- [ ] **Dev.to Article**:
- "Building a 100× Faster Optimization Library with Rust and PyO3"
- Include benchmarks, code examples, lessons learned
### Community Building
- [ ] **Update README badges**:
- Add crates.io badge: `[![Crates.io](https://img.shields.io/crates/v/optimiz-rs.svg)](https://crates.io/crates/optimiz-rs)`
- Add PyPI badge: `[![PyPI](https://img.shields.io/pypi/v/optimizr.svg)](https://pypi.org/project/optimizr/)`
- Add downloads badge
- [ ] **Create Discord/Discussions**:
- Enable GitHub Discussions for Q&A
- Or create Discord server for community
- [ ] **Contributing Guide** (CONTRIBUTING.md):
- How to contribute
- Development setup
- Code style guidelines
- PR process
---
## 🎯 Success Metrics (Month 1)
### Downloads
- **Target crates.io**: 100 downloads
- **Target PyPI**: 500 downloads
### Community
- **GitHub Stars**: 50+
- **Issues/Questions**: 5-10
- **Contributors**: 2-3
### Documentation
- **ReadTheDocs views**: 1000+
- **Tutorial completions**: 50+
---
## 🐛 Known Issues & Limitations
### Current Limitations
1. **Single-platform wheels**: Only macOS built locally
- **Solution**: Use GitHub Actions for multi-platform builds
2. **Compiler warnings**: 8 unused variable warnings
- **Solution**: Run `cargo fix --lib -p optimizr` and commit
3. **Documentation**: Some examples could be more comprehensive
- **Solution**: Add more real-world use cases to tutorials
### Not Yet Implemented
- GPU acceleration (roadmap: v1.2.0)
- Additional DE variants (JADE, SHADE) - roadmap: v1.1.0
- Multi-objective optimization - roadmap: v2.0.0
---
## 📞 Support
If publication issues occur:
**Crates.io Issues:**
- Check: https://crates.io/policies
- Email: help@crates.io
- Docs: https://doc.rust-lang.org/cargo/reference/publishing.html
**PyPI Issues:**
- Check: https://pypi.org/help/
- Docs: https://packaging.python.org/tutorials/packaging-projects/
- Forum: https://discuss.python.org/c/packaging/14
**General:**
- Email: contact@hfthot-lab.eu
- GitHub Issues: https://github.com/ThotDjehuty/optimiz-r/issues
---
## ✅ Summary
**OptimizR v1.0.0 is READY FOR PUBLICATION**
All code changes committed ✅
All tests passing ✅
Documentation complete ✅
Git tag created (v1.0.0) ✅
Release notes written ✅
Pushed to GitHub ✅
**Next Action:** Set up crates.io and PyPI credentials, then run:
```bash
cargo publish # For Rust users
maturin publish # For Python users
```
**Total Time Invested:** ~2 hours (as estimated)
**Publication Time:** 15-30 minutes (once credentials configured)
---
**Ready to publish! 🚀**