Their FAQ page explains it a lot better than I can: https://sales.jetbrains.com/hc/en-gb/articles/207240845-What...
Their FAQ page explains it a lot better than I can: https://sales.jetbrains.com/hc/en-gb/articles/207240845-What...
My current git setup:
- Git Fork for committing, pushing
- P4 Merge for resolving conflicts (it's not a pretty app, but the fantastic feature set more than makes up for the non-native look)
- GitUp for reordering, editing and splitting commits
- Command line for the rare things the GUIs can't do
None of those cost money and I don't understand how these awesome apps are all free. I would pay for all of them, they are much better than Tower.
I'm not an emacs user but always install it (via spacemacs) everywhere solely to host Magit.
GUIs aren't super flexible but they are good at taking a common flow users go through and making it stupid simple to exercise. A lot of the usage of git should be stupid simple, with only infrequent need for complex interaction. Obviously there are some people out there for which a GUI will never be sufficient for their needs, but I'd argue it isn't the common case.
Sourcetree is my go to git client, but if I couldn't use sourcetree I'd be OK with pretty much any git GUI. But git CLI is reserved for particularly tricky things that GUIs just can't handle well. (And I need to look up the specific flags or commands every single time.)
I think that because it seems they founded a company "Fork" which inevitable will need to make money eventually.
edit: I'm of course willing to pay some bucks for great software if it's a fair pricing model.
Not subscription based!
Somehow I hesitate to pay subscription based models, although I understand why this model exists.
Never looking back, SM is amazing.
Git Tower folks: Stop pissing off your paying loyal users. Get a hint, I want my money back because you guys never made v2 properly stable and jumped on v3 for an awful cash grab. Fuck you, kindly.
Sublime HQ is an amazing company. I would pay for their products even if they charged double. Honesty and integrity matters. You’re not selling to normal sheep, programmers are a smart bunch.
I work in a very large monorepo, so it's not like I'm working in a git tree that isn't complicated.
I nearly spat out my drink. Git is many things but those aren't the first two words that would leap into my head.
What is complex is the hundred features and commands it provides on top of that model.
I strongly disagree.
Let's list just basic git concepts that you're likely to encounter fairly early on: the working tree, staged commits, branches, remotes, stashes, detached heads, tags, submodules, merge conflicts, squashed commits, fast-forwards, rebasing, cherry-picking.
Some of these you could choose to ignore - rebasing and submodules - but on the whole you need at least a cursory understanding of everything on that list to get by without a git angel to get you out of trouble. I still have a person I phone when anything out of the ordinary happens and I've taught git to other people!
I'm also genuinely surprised that people use GUI for git. For merge I understand, but for all other tasks cmdline is easier and faster.
Which is exactly why people want better clients than the official git cli client.
For me, I just Right click -> TortoiseGit -> Show Log -> scroll -> Right-click -> Browse Repository.
How long does it take you? For me it takes < 10 seconds (I just timed myself).
I understand that YMMV -- de gustibus non disputandum est -- but I have ever understood the appeal of GUI tools especially for something like git. I do use magit, but even then I do most manipulation with the command line interface
This misses the point of the problem -- the point is you don't know precisely what string to grep for.
> or git log > file and look at it in an editor. no need to change the tools just for this unusual action.
I mean, nobody said this 1 reason should be enough to make you switch tools? I was just giving an example.
And no, it's not "unusual" just because you say so to try to dismiss the problem. I know I use Browse Repository as well as the GUI logs pretty frequently, and they're godsends compared to your solution.
And lastly: this is what your solution actually looks like:
1. Dump the entire log output into a temporary file
2. Open that temp file in your editor
3. Look through the commit messages/dates/names
4. Realize that's not quite enough to narrow down your search to a single commit (maybe you want to see the diffs or file paths or something else?)
5. Try to figure out which flags you should to pass to git log to dump all the info you need
6. Call git log again, hopefully now it dumps all the info you need
7. Open the temp file again in your editor
8. Scroll through your file containing diffs/names/whatever extra info you dumped
9. Type 'git checkout COMMIT -- file/path' once you find something
10. (Hopefully,) before you press Enter, realize you're about to trash your current copy of the file, which had some other changes
11a. Run git stash, and now suddenly messing up your staging area that you'd carefully staged changes in, and also messing up the file metadata (e.g. Make will now rebuild everything...), OR
11b. Figure out how to run git checkout-index -a -f --prefix=/destination/path/ so that you check the file out into a different directory.
12. Once you have a copy of that file, look through it, maybe examine/pull out the code you wanted (or whatever)
13. Remove the temporary file you checked out.
14. Remove the temporary file in your editor.
15. git stash pop.
And somehow you always do all the above without making a mistake, otherwise have fun reverting or recovering lost data.
With a GUI log TortoiseGit's log, you literally:
1. Click on a commit with the date you're interested in
2. Select Browse Repository
3. Double-click each file you want to examine to see the diff
4. If it's not the file you want, press Escape and click again.
Not only is the number of steps smaller, each one is also significantly faster, and less risky too. No need to mess with a single temporary file, fire up your editor manually, or risk losing anything.
Anyway, again: this was just 1 example meant to get the idea across, hopefully with the aid of your imagination to extrapolate to other scenarios. But if you're going to trash this all with "this never comes up" I don't really have the energy or interest to keep bringing up examples or try to convince anyone; you should just keep using the CLI.
Perhaps you could be faster with the GUI than on the CLI, but learning a GUI doesn't come with zero overhead: you have to understand it's terminology, how it's configuration works, what its icons and symbols mean. Particularly when it comes to VCS management, GUI's like to simplify sometimes complicated or nuanced VCS behavior and you can't really be sure what is being done to your repo until you've pressed the button and done it. Not to mention you are now investing time learning a program that can be abandoned at any time and leave you without the basic knowledge necessary to manage your repo (not saying this would affect you this way, but it could certainly be a reason to not learn it in the first place).
I mean, it's not like you can ever convince me that >10 keystrokes are as fast as 1 click, but regardless, this is easy enough to settle -- just time yourself and let me know how long the steps take you on the CLI.
> Perhaps you could be faster with the GUI than on the CLI
Hence the point!
> but learning a GUI doesn't come with zero overhead:
I don't think anybody claimed this either, so it's fine.
> you have to understand it's terminology, how it's configuration works, what its icons and symbols mean.
It sounds like you haven't used TortoiseGit... at all? How often have you had to look at its manual? How many times have you had to look at the manual of git itself? Honestly, your own reply is warranted here so many times more than it was to me -- "I don't think a lot of the steps are as painful as you make them about to be."
In fact so many of the commands are so obviously self-explanatory (both in text and in icons) that you literally never need to look them up. Stuff that you would never just guess how to do in git itself. Like when you right-click a file in a commit and click "Save revision to...", which also has a floppy next to it. Is it really such a mystery what it does? Is it even remotely comparable to figuring out checkout-index (or whatever the right command is)?
And honestly: it's such a poor attempt at an argument to suggest that the minor ramp-up time of TortoiseGit is somehow not worth the perpetual git pains it saves you from that I don't even know what to say.
> Particularly when it comes to VCS management, GUI's like to simplify sometimes complicated or nuanced VCS behavior and you can't really be sure what is being done to your repo until you've pressed the button and done it.
First, this is such an unnecessary strawman. If you're so worried what some GUI command does, then just use the CLI for it instead.
Second, this is completely irrelevant for read-only operations (like log, Browse Repository, etc.) which were the ones concerned here.
And third... again, it sounds like you're only saying this because you haven't used TortoiseGit, because (shockingly enough, to someone coming from the git CLI) it's not a minefield; in fact it has a number of safeguards. "Commit" creates a commit, "Revert" reverts your changes, "Checkout" checks out a commit, etc... and in fact fails if your tree is dirty, so you don't lose data. Heck, sometimes the git commands it prints end up being more correct than what you'd type on the command line. I know I've learned a fair number of random git features from TortoiseGit.
> Not to mention you are now investing time learning a program that can be abandoned at any time and leave you without the basic knowledge necessary to manage your repo
Again, nobody said you shouldn't learn the CLI. In fact, I'll say it right here: you should definitely learn the CLI, especially for git, before moving to the GUI, or you will be confused (though even then, you'd probably be less confused than you would be if you started with the CLI itself).
> (not saying this would affect you this way, but it could certainly be a reason to not learn it in the first place).
No, it's most definitely not a reason not to learn it.The discussion was never about what you learn in the first place, but what you use. You should learn the command-line regardless. And even regarding usage, it's again a strawman: nobody even suggested you should never use the CLI. The question was "why do people want a graphical git client?" and the answer was "because it makes {tasks} easier", for some tasks. If you find any tasks that don't fall in that category, just use the CLI. It's just a tool after all, not a religion.
I know your reply was to debasarab2 and my upstream comment did say YMMV, but in fact it is a lot faster for me (and likely debasarab2) to type 10 characters than click an icon. My working mode is simply different. We’re not saying you’re wrong, what we’re saying is it’s not universal.
If I Haase to click a button I have to move a hand off the keyboard, shift my gaze, find the mouse pointer, move it, then BT my hand back to the keyboard.
Whereas on a command line I always know where my keystrokes go, I never have to move my hands or look away from the screen, and I have >40 years of typing at computers wired into my basal ganglia. (This is despite the fact that the first computer I used, a CADR lisp machine, had a mouse and bitmap display). GUI interfaces are simply much slower for me, except in very unusual applications. I am not claiming it to be universal but it is clear the affordances of the command line are significantly lower-friction for people accustomed to them.
But again: I will believe you if you measure it and report back. So far the only person who's measured anything has been me, and I have to wonder why others are so averse to it.
If you have a dirty wd, stash.
But, to be honest, I almost never perform that action, and when I do I use the web browser.
You remember the hash of your June commit 3 years ago??
> But, to be honest, I almost never perform that action, and when I do I use the web browser.
Web browser... for a local repo? Or do you mean you don't have a solution if your repo isn't on GitHub or you don't have an internet connection handy?
(You should also time yourself on your web interface by the way.)
...which is what the git log above is there for.
> Web browser... for a local repo? Or do you mean you don't have a solution if your repo isn't on GitHub or you don't have an internet connection handy?
Yeah, local repo. You know, git is not GitHub. :)
> (You should also time yourself on your web interface by the way.)
Just paste the hash commit in the HEAD selector or even in the URL.
So a graphical interface then? I'm sure you can see why using a GUI for other functions is just as useful.
For something like git, the slightly more visual representation is a benefit to many, too.
I'm not here to knock CLIs, there are a set of tradeoffs to be made, and CLIs win in many cases (flexibility, scriptability, being able to copy snippets you frequently use, etc). The above does tend to hold true, however.
Its output is so rich and complex that it's impossible to make it legible outside of a real GUI, with graphics and colors.
'for a new person, it's almost impossible to get anything done with a table saw'
And I've never used one, but I'm sure it takes some learning, skill, and practice to get good cuts the way you need them, e.g. bang on 45deg all the way across for a 'mitred' corner joint. And it certainly needs learning, care, and attention to operate safely.
I don't mean it to be an insensitive analogy - accidents involving table saws are obviously horrendously worse than those involving git.
We want to make sure that Tower can stay a high-quality application in the long run. This means we want to constantly improve the application, add new features, fix bugs, and help users with great customer support. To be able to do that, we need a steady and reliable source of income. The thruth is: for us - a small, self-funded business - a recurring revenue model from a subscription is the only sustainable way to survive.
A model where the user gets to keep the last version after she stops paying for the product does not work for a small business. If you have a team of 1,000 employees like JetBrains, you might be be able to afford this. But not a 7-person team like ours. For two reasons:
(1) First, it doesn't provide the steady and reliable source of income that we depend on. It's the old one-time payment model of the past - which we tried and which did not pay the bills for us in the long term.
(2) Second, and maybe more importantly: very quickly, there are lots of different old versions of the product out there. People want bugfixes, documentation and support for their version, no matter if they're currently paying or if they don't anymore. With a 7-person team, we simply cannot do this. We need to focus all of our painfully limited time on _one_ version and make sure to improve that one.
Most of our users make a simple calculation: "Can Tower help me or my team save some time or prevent some mistakes?" Over the course of the next 12 (!) months, even 1 or 2 hours or a mere handful of mistakes would make this worthwhile. If so, Tower has _easily_ paid itself off.
We offer a free and fully-featured 30-day trial that will help you answer this question for yourself - without any risks or commitments.
On the other hand, reasonable customers do not expect support beyond the latest version and whatever they are currently paying for: "we have fixed that in the latest version, which you should buy" is a valid and honest answer to support issues.
For a tool that can be changed with very little friction like a revision control client, the typical "calculation" about spending money is likely to be waiting for an actual troublesome situation and then get out of it with a short subscription or a 30-day trial.
For some reason you do expect you can sell them on this new payment model that benefits mostly you, so it's really not your communicative skills or your customers' capacity to learn that are the problem here. That really only leaves us with the financial advantage to you.
They offer both purchase and subscription models, and a free license for open source work. Runs on Mac, Windows and Linux. I've been using it for years and have always been very pleased.
Also, JetBrains can afford that model because the JDK and other software languages are changing and it's not very feasible for their users to stay on an old version for very long.
(obdisclaimer: I worked for Adobe several years ago, but have no current stake other than being on the CC photography plan)
I used to buy it every couple of versions or when it went on sale, and that was good enough for my needs. No such luck anymore.
Did a stint on Sketch as well. It’s now gone subscription, but it think it’s the more acceptable “still works but you stops getting updates” type subscription like jetbrains.
What I really want is an Affinity photo library manager like Lightroom. I’ve looked at some currently available options and not been impressed, but there were tweets to the effect that Affinity was thinking about it.
I fought the subscription plan for LR, but realized I usually updated yearly and had this complicated file management system for my photos. For $120/year I have the latest LR versions on all my devices and only have to worry about true backup.
I do keep an eye out for a LR replacement, but I haven't found anything that comes close to LRs file management.
Have you tried Xero? I haven’t, but if you have, I’d be curious to hear your take on it.
This came about due to a decent amount of consumer backlash, if I recall correctly. They used to sell standalone perpetual licenses which included a period of updates.
"JetBrains listened to their customers, took feedback on board, and made meaningful changes that addressed the concerns."
In a perfect world, that would the minimum expected behaviour, but in the world we live in, it's kind of surprising when it happens.
Yes, you can make something sound positive when you leave out material facts. They knew an expiring license would be much less popular than a non-expiring one before they did it. So, just saying they listened to their customers leaves out the very important detail that they ignored their customers the first time around.
Also useful as a guide to show the customer they should go ahead and voice their displeasure when these situations arise, preferably before the product is so entrenched in the given market that they can "pull an Adobe" in this situation ("Don't like the new terms? Fuck you, pay us").
So Jetbrains model is an improvement over most other companies but it is not as consumer friendly as the old licensing model.
I would love to have the old model back(buy now with 12 months of updates) but that ship has sailed.Honestly I’m quite happy with it as a compromise, especially with the All Products Pack - I save money every year than when I used to buy upgrades for IntelliJ and ReSharper stand-alone, and JetBrains has incentive to keep pumping out new features to keep me from deciding to utilize my fallback license.
I wonder how big is that part of the revenue.
Guice support, for example. You can live without it, but if you are working on a larger Android codebase and utilize it then it may be useful.
I'm missing something. What's the difference between that and what they're doing now? You pay $X, you get a perpetual licence and updates for a limited period.
Old model: Pay $X.XX and get one year of updates.
New model: Pay $X.XX (spread over 12 months) and you can use all new versions UNTIL the subscription ends. At which point, unless you renew, you have to DOWNGRADE to the one year old version.
Let's face it, downgrading such an import tool is not something developers will be comfortable with (especially since JB products occasionally have show-stopping bugs).
Having said that, I'll admit to liking their products (and support). But the model is not as generous as everyone seems to think.
https://blog.jetbrains.com/blog/2015/09/18/final-update-on-t... - the perpetual license fallback did not exist under the original proposals and only happened due to backlash.
It's useful context. Yes, it's good that they listened to their customer base - and I've not criticised the current subscription model.
But I still think it's relevant and on-topic to point out that the previous model was more generous and they tried to do full-SaaS when reading the parent comment in isolation sort of suggests they did this out of the goodness of their hearts (and entirely unprompted).
If you have an option, stick with open tools with strong community support. Just observation: with commercial tools you don't have full control of your own work, nuff said
When your one-year subscription expires you actually have a perpetual license for the first version that was available when you signed up. NOT for the last one available when the contract ended.
In other words, when your one year subscription is up, you have to downgrade to a one year-old (possibly buggy) version.
For more mature toolchains like C or Java, this seems reasonable. For ones that undergo massive updates each version (WebStorm, AppCode) it's a non-starter.
EDIT: on second read, this may have been what the parent poster was trying to say. I'm leaving this comment as-is though because there seems to be a TON of confusion about this point.
> you get a perpetual license for the latest version of the product when you initially subscribed
Which is correct, and is the same thing you described.
>... after paying for any particular version of a product for 12 months, you also get a perpetual license for that particular version and so on and so forth."
Also kind of unclear. And judging by the comments here, many many people misunderstand this. I think it's a general expectation that you'd get access to most up-to-date version of the product when your subscription ends. Not the version from the day your subscription started.
Think about it. If there's a bad bug or regression in the old "perpetual" version you aren't entitled to the subsequent bug fixes. Bug fixes which you've been "using" for the past year. It's kind of a hard thing to swallow.
My PHPStorm subscription expires in less than a week. In order to continue using it (without re-subbing), I have to downgrade from 2019.3 (current release) to 2018.3 (the release available on the date I subbed). Software that is one year old.
Similarly, the JetBrains site says my WebStorm subscription expires in around 10 months. At which point I have to downgrade to 2019.2 if I don't re-sub. Today's current version is 2019.3.
>Also every year the price goes down, so you pay less and less
That part is true and it's certainly commendable that they do that.
Rather, I thing it is right thing to do - to pay some recurring cost for the software we use and to let the developers of that software to make their buck.
We are too accustomed to get everything for free at the expense of someone else.
At least you should still be able to open up old projects.
If you use Adobe Creative Cloud, and you stop paying, do you lose access to all your data?
I have already tried Pixelmator and the Affinity suite, but after that shady behavior plus the monthly fee, I ended up uninstalling anything Adobe based and just switched completely to Affinity Design and Photo. The only thing I'm missing is when somebody sends me an .ai file in a certain format, but if they export with SVG or with PDF support, zero issues there.
In the old world, you bought the latest version, got upgrades for a year - sometimes more, then got a discount on upgrading come a newer version. At any time you stopped paying you kept the latest software, in sync with everyone else. You'd slowly move out of step.
In JetBrain's fabulous con you pay a sub for the latest, and if you decide to stop paying - almost certainly having paid markedly more during the duration of your sub than under the old model - you get shunted to an older version, instantly putting you at least a year out of step with everyone else.
A far better licencing model is to have one time charge and free upgrades for a year followed by nagging that can be turned off. This would have exact same effect but much easier to have purchase orders pass throughs in big company rule books.
JetBrains have far more potential than $270M. One of the easiest thing they can do is to allow users in same companies to form user groups on their website. They can then approach those companies to buy site licenses with list of all these supportive users at those companies. They can then evangelize to users within same companies who are not yet using their products. This would make sure their subscription churn is lowered due to individual developers.
I feel like this is the downside to the subscription license model - if you want to use the product at all you have to keep paying unless the version you've currently got is somehow perfect. And in the case of JetBrains products I've used, it is not. I wish companies like this offered something like an LTS branch where I could pay (subscription even!) for a version that just actually works instead of constantly having to put up with new features/bugs just to get fixes for workflow issues.
At some point, software stops working with OS upgrades etc. anyway and I can deal with that. But I don't want to pay a subscription for something I use a couple times of year and don't need the latest version of.
After year three even their "everything" licence feels affordable for a working dev. (€649 for the first year, €389 by year three: https://www.jetbrains.com/store/#commercial?billing=yearly )
I wish more companies did this.
The organizational license is only needed if your employer is paying for you or compensating you for the license cost: https://sales.jetbrains.com/hc/en-gb/articles/207241075-What...
I've been a happy customer and Resharper user for many years and it makes my life much better, so it's great to see the company doing well.
I go back to JetBrains and now I basically have to use their IDE because my company does, and it's not very easy to get the same kind of experience with Java with Vim or Emacs.
I'm using CLion to help me learn C++ because it knows C++ better than I do (and on a Mac I'm not using Xcode for writing C++, only building it). For £10-£20 a month, that is discounted every 12 months, with full ownership of the last version you had... it's great. They seem to handle it a lot better than Sketch as well, who will force you to find the download page for old versions. IntelliJ just seems to give you what your license allows.
I'd still go back to emacs in a pinch but I'm not proficient enough with C++ or Java and those ecosystems to know how to set my environment up.
JetBrains seem to have a pretty fair and solid strategy and it must be doing well enough for them to expand their IDE-base so far.
But, it sounds like a pure switch to SaaS would have alienated customers and perhaps would have forced more users to seek alternatives, and we might not have seen the business as this scale today.
Wonder if this was the optimal move at the time.
It’s also worth noting that the requirement is 12 consecutive months. You can’t have any breaks so you need to be actively subscribed to take advantage of this.
It’s not the best solution (I am a fan of pay for a year (prepaid or monthly) and you get 12 months of updates where you keep all of them), but it’s a good compromise in the era of SaaS. And a compromise I’m willing to make for their IDEs.
If your company won’t pay for it you can buy a personal subscription cheaply.
The Ultimate version comes with bells and whistles, but truth be told I'm only paying for it because of how happy I am with it.