Comments (13)
@alexanderepstein It makes sense, indeed the actual functionality doesn't justify the bundle size.
However have you already tested such alternative on Python and confirmed that the simple empty page example is smaller in Python than in Electron?, unless the difference is big, the cost of swapping the full app may not be worth it.
from sandman.
Going with lightweight bash version as well to do simple rest awareness and uptime notifcation hopefully can also implement update check
GUI Version
- Will remain written in electron framework
- Will be extended and improved upon until it becomes the ultimate sleep application
Bash Version
- Will maintain very similar function to GUI Version 1.4.1
- Will only notify user and show notification balloons but no buttons
- CLI
from sandman.
What's exactly the part of the app that takes memory, electron
or the app itself made in JS
?
Also idk much about Python
, how portable is it? can you still generate bundles for Windows, Mac and Linux(though idk if you actually deliver one for Linux) from Python
?
from sandman.
@luchillo17 It is mostly electron that is the issue. Electron package are bundled with chromium and utilize that to render the application. The application will take up more memory than it should for just having a blank window with no functionality. If you check out the OS and OS version section of this issue their are 3 links all of them are about packaging a Python application into an app,exe or deb.
from sandman.
I get it that the binary size is big, but have you considered checking how other softwares keep up with it ? Something like LightTable. All their binaries are within 50-60 MB range - LightTable site
from sandman.
And they already have lots of code
from sandman.
@karuppiah7890 the difference however lies within our purpose and end result although yes you are correct that a lot of applications do run to be this size these applications generally also do a lot more. A code editor with syntax highlighting, linting etc is doing a lot more and can justify that binary size of theirs. What my application actually does is relatively simple and shouldn't be hard on the computer.
As a developer I guess I am noticing that the efficiency of the application is not justified by its function and therefore I can either do two things
- add so many features that i can actually justify the size of binary size of Insomnia
- port it to a new language and then add features and styling slowly as they make sense like i have been now
Plus i started this project to learn some javascript and the electron framework. I am definitely no master of it but i feel way more comfortable with it than i did before. So why not do that same thing with python a language i have been trying to truly grasp for a long time, now I have the opportunity with this project to do just that.
from sandman.
from sandman.
@luchillo17 you are correct i have yet to test it, however i know that python scripts are relatively small hopefully the packaging would only increase that by a little bit. I think the only reason it may not be worth it is if i decided to go in the direction of #15 because with the current setup it is easier to add features as the npm library is massive and generally well documented. However if this app just becomes a more polished version of what it already is then it should definitely be ported to some other language.
from sandman.
Well i would like for you to expand on it, specially on the Chronotypes Quiz and Settings issue i put, which still has no answer #22
from sandman.
@luchillo17 sorry meant to answer that previously and i hope i have the ability to expand on it as well this issue is here just to remind me to justify or remove this problem
from sandman.
@alexanderepstein Write a small program in each language. Test functionality and binary size if that is the main concern. Also writing in Java may require a JVM to run...not sure if Python needs any additional overhead to run.
If you like the results from a small program with VERY basic functionality then you can begin porting more and more portions. The first step is definetely writing smaller programs to see if 1. it is doable, 2. it gives the file size decrease you want, and 3. it can be run across platforms with ease.
from sandman.
I'm mostly specialized on JS, now making the ultimate task scheduler with electron, and i'm very happy with it, though mine does pack considerable UI features, and since it needs to make important tasks like connecting API's and executing scripts, i've always considered the architecture and functionality over the bundle size.
However if you make @DavidWigley suggested tests and are satisfied with Python portability and bundle size, then go for it, it's your app and you should make it in whatever you enjoy (though i don't recommend Java, i'm making some projects for university course and after comparing it to C++ i cannot begin to like it).
from sandman.
Related Issues (20)
- [Feat] Consider people chronotypes HOT 4
- [RFC] Add how to generate binaries from source in the docs HOT 3
- Update The Preferences Window HOT 1
- Clean Up The File Structure Of The Master Branch
- Speed Up Packaging For All Platforms + Have Installers For Mac and Windows HOT 2
- No system menu options for Debian ? HOT 7
- [Bug] Default settings for Wake-Up time not working since V1.2.0 [WINDOWS] HOT 9
- Close On X Bug [MAC] HOT 1
- [bug] notification HOT 1
- PLEASE TAKE THIS SURVEY TO DECIDE THE NEXT DIRECTION OF INSOMNIA HOT 1
- Application Provides Break Notification Out of Sync With Time HOT 11
- No System Tray Icon HOT 3
- Bright blue background HOT 9
- [Bug] Unordered optimal sleeping times HOT 2
- Create a Debian control file HOT 1
- Restart notification pops up every hour. HOT 14
- Optimal Sleeping Times not displaying properly HOT 3
- Android Sandman HOT 4
- Add hibernation/sleep to notification.
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from sandman.