Skip to content

Commit f75ec2f

Browse files
Datashuttle proposal (Aakash Kharb) (#16)
* Datashuttle proposal (Aakash Kharb) * Update DataShuttle:Cross-platform Executable Package (Aakash Kharb).md * Update DataShuttle:Cross-platform Executable Package (Aakash Kharb).md * Update DataShuttle:Cross-platform Executable Package (Aakash Kharb).md * Update DataShuttle:Cross-platform Executable Package (Aakash Kharb).md * Update DataShuttle:Cross-platform Executable Package (Aakash Kharb).md * Rename DataShuttle:Cross-platform Executable Package (Aakash Kharb).md to DataShuttle-Cross-platform Executable Package (Aakash Kharb).md --------- Co-authored-by: Adam Tyson <[email protected]>
1 parent a4122be commit f75ec2f

File tree

1 file changed

+125
-0
lines changed

1 file changed

+125
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,125 @@
1+
# DataShuttle: Cross-platform Executable Package (Aakash Kharb)
2+
3+
## Personal Details
4+
5+
- **Full name**: Aakash Kharb
6+
- **Email**: [[email protected]](mailto:[email protected])
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

Comments
 (0)