Reduce fman size / Qt, PyQt5 dependency, static linking, etc.
Nobody has claimed this yet.
- Dominant language
- Python
- Stars
- 275
- Forks
- 16
- PR merge metrics
- No merged PRs in 30d
Description
Hello, congratulations for your effort bring new SublimeText like file manager 🍷 . I would normally comment on the blog but (1) it has no comments functionality (2) and anyways a ticket is better place for that. 😉
So I read and generally agree with conclusions in your blog post: https://fman.io/blog/picking-technologies-for-a-desktop-app-in-2016/ but then I have a couple of remarks:
-
Choosing Qt and using shared libraries implies quite large app package size, this is exactly probably one of the reasons Sublime Text have chosen to have its own minimal (G)UI implementation (backed by Google's BSD licensed Skia). Then if fman is meant to be somehow Sublime Text counterpart, its size and portability (is there USB stick portable version of fman?) should be important, maybe more important that custom theming ability.
-
Then with Qt you might want to go for static linking (at least on these platforms you ship Qt with app) with stripping the final
fman.exebinary, I believe this should cut the file size at least in half, but this requires commercial license for close-source project. -
Another thing is PyQt5 dependency (which is moreover GPL or commercial only - thus all plugins relying on UI, even indirectly, may need to be open-sourced). So is it really necessary? Can the GUI be part of C++ only app core, and the python side be platform and UI kit independent? You could provide some minimal UI platform independent and widget kit independent API with pybind11, this would remove even more weight off the project and ensure that plugin maintainers will not depend on Qt, which may be bad choice for "futureproof" project, eg. you decide at some point to rewrite UI part with some other widget toolkit, but existing plugins still need Qt.
Cheers,
Adam
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
No source files, tests, or entry points are identified. Start by reviewing the linked technology-selection blog and the current Qt/PyQt5 packaging and linking setup; done would require an agreed scope for reducing application size and clarifying the static-linking and UI-dependency approach.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp, python
- Domain
- build-system, desktop
- Issue type
- Refactor
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 20/100