Linux support
Closed this issue Β· 27 comments
I'd love to play with this tool on Linux. Is any porting planned? What would be the main challenges for a port (I imagine the GUI toolkit being the likely biggest -- only? -- issue)?
GitUp is pretty much a 100% Mac app and is not portable. A complete rewrite is needed for another platform.
How about GNUstep? Is it possible to compile GitUp using it?
Someone could try but I doubt it.
Hm, would the Electron platform help to make this a multi-platform tool?
@brylie Electron apps are slow.
@brylie JavaScript, HTML, and CSS add additional levels of abstraction.
Electron is slow compared to native apps and they know it: electron/electron#5672. Most importantly, I cannot imagine how GitUp being an Obj-C app could be easily converted to a JS app.
There are a lot of considerations when calling an application or framework slow.
This has much more to do with how individual Electron-based apps are written than it does Electron itself.
-- @mnquintana
electron/electron#5672 (comment)
you are assuming that the speed difference between native apps and Electron based apps is purely dependent on Electron itself. How the apps which run on Electron are designed and written has a huge impact on their performance.
@sedwards2009
electron/electron#5672 (comment)
I am not trying to start a flame war here, as it was a simple suggestion for a multi-platform development framework. If there are some specific suggestions as to what parts of Electron are slow and how those parts would relate to GitUp, that might lead to a productive discussion.
GitUp looks really nice, and I think people would enjoy using it on other platforms.
By way of example, GitKraken, another Git GUI, is built with the Electron framework:
https://www.gitkraken.com/
GitKraken, however, is not open-source.
GitUp is not your average Git client, which just display a table of recent commits with a few branches drawn next to it, and therefore could be written in pretty much any language and toolkit and have acceptable performance.
For GitUp to be able to load and render the topology of an entire repo of 50,000 commits in less than one second, and let you navigate around this fast, it has to be highly optimized across the entire stack.
Electron would mean an 100 MB app instead of 5 MB, 10X slower, a UI that breaks many OX conventions, and let's not forget, a vastly more complicated and slower build system and write-run-debug development loop.
We are missing the point here. What might be a path towards cross-platform support?
A rewrite.
Point taken.
π
What technologies would be worth considering for multi-platform compatibility?
For example, it may be of value to consider the web platform:
I found gitup through the interview @swisspol did with The Changelog, and I seem to remember that the app internally uses GitUpKit, which was meant to be a better git library.
I took a look at it and I presume that the super-cool features of GitUp, namely undo/redo and all sorts of tree manipulations, are implemented there. It is written in ObjC, but that is cross-platform, right? So it is only the commit display and the UI that would definitely require a rewrite?
Actually, I'm wrong :) GitUpKit also includes a lot of view code. So, yes, a full rewriteβ¦
Yeah. Unsubscribing due to the fact that Linux support is not likely.
Anyone know a tool for Linux that has gitup's reflog viewer / navigator type functionality? I miss it :(
@astubbs no reflog viewer but ungit is the closest I found. I have a pr in progress on there where eventually I hope to incorporate some of gitups ideas.
I'm also using libgit2 but encountering weird issues with diffs sometimes.
Hello there, some people talked about Electron, but I would like to suggest Tauri, which is a Rust-based alternative providing the same features but outputting small and fast apps.
@KaKi87 getting very off-topic, but Tauri doesn't seem to include NodeJS, which would be necessary for many of these kinds of apps?
No, because Tauri provides many APIs, including filesystem, shell and HTTP features, which should be enough to manipulate local and remote git repositories.
Working on this over here if anyone is still interested: https://github.com/codymikol/git-down , slowly but surely making progress.