...and that's the problem with Git
-
I never understood people's obsession with the command line. I think that under virtually every circumstance, a well organized and well designed UI is always easier to pick up and more productive to use. Certainly more work to develop as well. Whenever I have any significant amount of work that needs committing, it is way nicer to see the list of changes in a UI so I can explicitly see unversioned files, right click and quickly add an ignore pattern if I need to, see if I accidentally changed a file I shouldn't have, double click an entry to pull up a diff easily, etc. I'm a bit of an intuitive design nazi so IMO the command line should be reserved for 1% functionality that is rarely needed.
I like a good GUI too with a BIG emphasis on GOOD. Bad GUIs are horrible. That said... The command line is easy to use in script. This is very important when you want to say, automatically unzip and commit ten things or instantly repeat the last action. If you have a command line you can write a GUI. If you only have a GUI you have to hack the code apart to remove the GUI and create a command line version or add the necessary COM/DBUS interop. A GUI is difficult to make cross platform. A GUI is almost always two to three times as much data as the program itself. More to copy around and longer to start up. A GUI requires design skills and bitmap drawing skills rather than just coding skills. A GUI slows down development of the good parts because they can't be used without including that in the GUI. Command line you add a new verb or flag and you're done.
-
I like a good GUI too with a BIG emphasis on GOOD. Bad GUIs are horrible. That said... The command line is easy to use in script. This is very important when you want to say, automatically unzip and commit ten things or instantly repeat the last action. If you have a command line you can write a GUI. If you only have a GUI you have to hack the code apart to remove the GUI and create a command line version or add the necessary COM/DBUS interop. A GUI is difficult to make cross platform. A GUI is almost always two to three times as much data as the program itself. More to copy around and longer to start up. A GUI requires design skills and bitmap drawing skills rather than just coding skills. A GUI slows down development of the good parts because they can't be used without including that in the GUI. Command line you add a new verb or flag and you're done.
Agreed on all your points. If scripts are useful then your program should certainly be scriptable. As for the rest, yeah, I made the point that it's a lot harder to code something with a GUI front end, especially if its going to be GOOD :) I can understand v0.9beta being CL-only, but after that a respectable tool with any amount of complexity it should have a nice intuitive GUI driving it. I personally like to split my tool projects into a core assembly that has all the functionality, and then reference that from a CL exe and a GUI exe so that none of the UI bloat gets loaded if you are just scripting it.