|
| 1 | +# DataShuttle: Cross-platform Executable Package (Aakash Kharb) |
| 2 | + |
| 3 | +## Personal Details |
| 4 | + |
| 5 | +- **Full name**: Aakash Kharb |
| 6 | + |
| 7 | +- **GitHub username**: aakash-test7 |
| 8 | +- **Zulip username**: Aakash Kharb |
| 9 | +- **Linkedin**: [https://linkedin.com/in/aakash-kharb/](https://linkedin.com/in/aakash-kharb/) |
| 10 | +- **Location & Time-zone**: India, Indian Standard Time (GMT+5:30) |
| 11 | + |
| 12 | +## Code Contribution |
| 13 | + |
| 14 | +- [https://github.com/neuroinformatics-unit/datashuttle/pull/473](https://github.com/neuroinformatics-unit/datashuttle/pull/473) |
| 15 | +- [https://github.com/neuroinformatics-unit/datashuttle/pull/471](https://github.com/neuroinformatics-unit/datashuttle/pull/471) |
| 16 | + |
| 17 | +## Project Proposal |
| 18 | + |
| 19 | +### Synopsis |
| 20 | + |
| 21 | +DataShuttle currently requires Conda for installation, which limits accessibility for non-technical users. This project aims to create a standalone, cross-platform executable package for DataShuttle that works on Windows, macOS, and Linux. This project will: |
| 22 | + |
| 23 | +- 1. Package DataShuttle as a standalone, cross-platform executable (Windows, macOS, Linux) without Conda/Python, prioritizing CLI/headless compatibility. |
| 24 | +- 2. Solve Textual’s terminal rendering issues by: |
| 25 | + - Bundling a lightweight terminal (e.g., wezterm) only for GUI systems. |
| 26 | + - Providing a fallback mode for headless environments (e.g., basic TTY output or Web-based rendering). |
| 27 | +- 3. Ensure robust deployment via pip-installable wheels + self-contained binaries for flexibility. |
| 28 | + |
| 29 | +## Key Challenges |
| 30 | +- Terminal rendering |
| 31 | +- Cross-platform support |
| 32 | +- Minimal dependencies |
| 33 | + |
| 34 | +### Deliverables |
| 35 | + |
| 36 | +- **Research Report** |
| 37 | + - - Comparison of packaging tools (PyInstaller, PyOxidizer, Nuitka, Briefcase) with pros/cons for CLI vs. GUI. |
| 38 | + - - Evaluation of Textual rendering fallbacks (e.g., --headless mode, WebRender). |
| 39 | + |
| 40 | +- **Implemented Solution** |
| 41 | + - - Primary: Statically linked binaries (CLI-first) for all platforms. |
| 42 | + - - Optional GUI: Bundled terminal (disabled by default in headless mode). |
| 43 | + - - pip support: Installable via `pip install datashuttle`. |
| 44 | + |
| 45 | +- **CI/CD Integration** |
| 46 | + - - Automated builds for native binaries (Windows .exe, Linux .AppImage, macOS .app). |
| 47 | + - - HPC testing: Verify compatibility on SSH-only environments. |
| 48 | + |
| 49 | +- **Documentation** |
| 50 | + - - Proper detailed writings. |
| 51 | + - - Entry and endpoints marked, along with some creative visualisations. |
| 52 | + |
| 53 | +- **Testing Framework** |
| 54 | + - - Headless testing: I'll setup in a virtual machine instance. |
| 55 | + - - GUI testting: A display environment , I have a Mac. |
| 56 | + - - Performance tests: Time, memory |
| 57 | + |
| 58 | +### Implementation Timeline |
| 59 | + |
| 60 | +| Period | Tasks | Hours/Week | |
| 61 | +|-----------------|---------------------------------------------------------------|------------| |
| 62 | +| Community Bonding | Familiarize with codebase, setup dev environment, finalize research plan | 25 | |
| 63 | +| Week 1-2 | Research packaging solutions (PyInstaller, PyOxidizer, Briefcase), evaluate approaches | 35 | |
| 64 | +| Week 3-5 | Prototype selected solution, address terminal rendering issues | 40 | |
| 65 | +| Week 6-7 | CI/CD for multi-platform builds + headless testing | 40 | |
| 66 | +| Week 8 | pip wheel support, minor testing, analysis | 35 | |
| 67 | +| Week 9-10 | Comprehensive testing across platforms | 35 | |
| 68 | +| Week 11-12 | Documentation, final polishing, mentor review | 35 | |
| 69 | + |
| 70 | +Total time = 25 + 180 = 205 |
| 71 | + |
| 72 | +### Stretch Goals |
| 73 | + |
| 74 | +- Implement auto-update functionality |
| 75 | +- Create GUI installer for each platform |
| 76 | +- Optimize package size and performance |
| 77 | + |
| 78 | +### Communication Plan |
| 79 | + |
| 80 | +- Weekly video calls with mentor for progress updates |
| 81 | +- Daily stand-ups via Zulip chat |
| 82 | +- Regular updates via GitHub PRs/issues |
| 83 | +- Immediate communication for blockers via Zulip/email |
| 84 | + |
| 85 | +## Personal Statement |
| 86 | +"There's no value in lies. I know how to work and I am passionate about it. At night, sleep becomes easy, especially when I see something I've created." |
| 87 | + |
| 88 | +### Past Experience |
| 89 | + |
| 90 | +With 3 years of Python experience, I've worked on: |
| 91 | + |
| 92 | +- Full-stack applications (chickpea7.streamlit.app, aakash-dbms.streamlit.app) |
| 93 | +- Terminal applications (aakash-terminal.vercel.app) |
| 94 | +- Machine learning and data science workflows |
| 95 | +- Backend system design and implementation |
| 96 | + |
| 97 | +### Motivation |
| 98 | + |
| 99 | +I'm passionate about making technical tools more accessible. DataShuttle solves important problems in neuroinformatics, but its current installation process creates unnecessary barriers. This project aligns perfectly with my interest in developer tools and user experience. |
| 100 | + |
| 101 | +### Why Me? |
| 102 | + |
| 103 | +- Strong Python fundamentals and problem-solving skills |
| 104 | +- Experience with cross-platform development challenges |
| 105 | +- Quick learner with ability to dive into new technical areas |
| 106 | +- Passion for creating polished end-user experiences |
| 107 | + |
| 108 | +### Availability |
| 109 | + |
| 110 | +- No other commitments during GSoC period |
| 111 | +- Available 35-40+ hours per week |
| 112 | +- No planned vacations during program |
| 113 | + |
| 114 | +## GSoC Expectations |
| 115 | + |
| 116 | +I hope to: |
| 117 | + |
| 118 | +- Contribute meaningfully to open-source neuroscience tools |
| 119 | +- Deepen my understanding of Python packaging and distribution |
| 120 | +- Learn from experienced mentors in the field |
| 121 | +- Build connections within the neuroinformatics community |
| 122 | + |
| 123 | +## Other Applications |
| 124 | + |
| 125 | +Currently only applying to NIU for GSoC 2025. Fully committed to this project. |
0 commit comments