catchorg / Catch2

A modern, C++-native, test framework for unit-tests, TDD and BDD - using C++14, C++17 and later (C++11 support is in v2.x branch, and C++03 on the Catch1.x branch)
https://discord.gg/4CWS9zD
Boost Software License 1.0
18.69k stars 3.05k forks source link

CATCH needs a more searchable name #406

Closed vadz closed 7 years ago

vadz commented 9 years ago

This is not the first time I run into this and I always just shrugged it off before, but after completely failing to find anything about the issue I was interested in (whether anybody has already done something to help with migrating the existing tests using CppUnit to CATCH) I have to say that this is a real problem: it's just impossible to find anything about CATCH using web search.

It needs to use some unique name or at least not a word so prevalent when speaking about unit testing in C++ (because I'm not interested in finding about how to catch exceptions in CppUnit, damn it).

It can be anything you like, I don't know if you prefer obvious but dull names (CppCatch, CatchUTF, ...), some other abbreviation (C++ Automated Tests Now Are Possible) or stupid puns (Notry, Dogch, ...) or hopefully something better I can't find, but it needs to be something you could enter into your search engine and actually find something related to CATCH.

chvillanuevap commented 9 years ago

That is not a bad idea. I usually need to enter more keywords into my Google search to find the right information; for example, 'catch unit framework'. Or I simply need to restrict my search to GitHub with 'catch github...'.

+1 on this. I like the sound of CppCatch or Catch++

On Wednesday, April 22, 2015, VZ notifications@github.com wrote:

This is not the first time I run into this and I always just shrugged it off before, but after completely failing to find anything about the issue I was interested in (whether anybody has already done something to help with migrating the existing tests using CppUnit to CATCH) I have to say that this is a real problem: it's just impossible to find anything about CATCH using web search.

It needs to use some unique name or at least not a word so prevalent when speaking about unit testing in C++ (because I'm not interested in finding about how to catch exceptions in CppUnit, damn it).

It can be anything you like, I don't know if you prefer obvious but dull names (CppCatch, CatchUTF, ...), some other abbreviation (C++ Automated Tests Now Are Possible) or stupid puns (Notry, Dogch, ...) or hopefully something better I can't find, but it needs to be something you could enter into your search engine and actually find something related to CATCH.

— Reply to this email directly or view it on GitHub https://github.com/philsquared/Catch/issues/406.

claymation commented 9 years ago

+1 — how about Catchy?

martinmoene commented 9 years ago

CATCH – C++ Automated Test Cases in Headers.

mmm, Hctac, Chtac , Thacc, none of them unique.

catch, arrest: encage => encase, oh not going well at all...

paolobolzoni commented 9 years ago

Strange, I always get this software as first result with: catch c++ test

chvillanuevap commented 9 years ago

@paolobolzoni That's sort of the point though. You need to enter additional keywords to find this framework.

Try typing just 'cppunit' instead. You find that framework right away. No additional keywords. The same will not occur if you just type 'catch'.

paolobolzoni commented 9 years ago

I guess you feel the problem, but I really don't... Typing spaces or letters kinda looks the same to me, but if you dislike typing spaces so much, I get this software as first result also with catchtest.

chvillanuevap commented 9 years ago

Yes, getting the GitHub repository as the first result in Google is not that hard. I agree.

However, what if I want to find additional tutorials or examples people have posted on their blogs? Or comparisons of the framework against CppUnit, Google Test, Boost, etc? Compare the results of 'catch review' vs. 'cppunit review', or 'catch tutorial' vs. 'cppunit tutorial'.

Again, I understand that typing one or two additional keywords fixes the issue. But doing anything that makes it easier for the user to find information is a win.

paolobolzoni commented 9 years ago

I see the point now, perhaps making the official name catchtest (or something...) can indeed help.

danijar commented 9 years ago

+1 for catchtest

DarrenCook commented 9 years ago

+1 for anything other than "catch" :-) "Catch++" would work for me, as would any of the other suggestions here.

In case anyone still doesn't get the problem: "catch C++" gets me an article on exceptions. "catch C++ test" gets me an article on testing for C++ exceptions. More realistically: "catch can I use helper functions" simply does not find the answer. (Around the 60:00 point in the Phil 2014 presentation answered it for me: yes, but there is one thing to watch out for.) "catch stop giving me hex format for integers" never came close to finding issue #409. Etc.

danijar commented 9 years ago

Maybe it's better to find a name without special characters in in. I also like the suggestion @claymation made of above, which is Catchy.

itrion commented 9 years ago

This discussion is very interesting. There are a lot of questions which are hard to find because catch is very generic. I like Catch++.

and.. what about a tag in stack overflow?

martinmoene commented 9 years ago

Nice tip. There is: catch-unit-test.

martinmoene commented 9 years ago

@philsquared Perhaps it'sa good idea to mention the StackOverflow catch-unit-test tag where also the dedicated Google Groups forum is mentioned, e.g. under More of the Readme, and maybe also in the Google group itself.

refi64 commented 9 years ago

+1 to adding that to the readme. I didn't even know there was a Google Groups forum!

philsquared commented 9 years ago

sorry guys - just getting to my issues backlog...

I think it's time to take this seriously. I've been having a think about a new name. It's been hard. I really like Catch, and it has a certain amount of momentum behind it. I don't take changing it lightly. But I'm aware of the problems. Thanks to all those in this thread - as well as other places - who care enough about Catch to be raising the issue and making suggestions.

I've considered:

Also, coming up with a name that is entirely unlike Catch may make it harder for people to join the two up - although I'm not sure that concern holds up to inspection.

Anyway I have stumbled on one that I do like. It's an acronym - ironically even more naturally so than Catch - has a relatable identity (great for icons and other imagery) - and has those properties I liked (friendly, fun etc). It is an existing word but I think sufficiently unrelated in context that it shouldn't be an issue. I've had a search around and it doesn't come up much in the context of technology at all - let alone C++ and/ or testing!

So what is it?

Here it is...

Are you ready for it?

. . . . . . . . .

Catfish

That's: C++ Automated Test Framework In a Single Header.

Thoughts?

Regards,

[)o IhIL..

vendethiel commented 9 years ago

There's got to be an ascii "catfish" somewhere..

philsquared commented 9 years ago

http://asciiart.en.utf8art.com/arc/fish_40.html

The-Compiler commented 9 years ago

:cat: :fish: :cat2: :tropical_fish: :exclamation:

Stupid emoji-puns aside: I love it! It's distinctive, a bit similiar to catch, and (no pun intended) catchy!

vadz commented 9 years ago

I like it! It doesn't seem to conflict with anything (there seems to be something with this name for Javascript but nothing related to unit testing), it is fun and you could even find some relationship with the library purpose if you really stretched it (it bottom feeds on your bugs?).

Sorry to have burdened you with all this by originally opening this ticket (IME naming is not just one two but the hardest problem in computer science...), but I think it was worth it, Catfish is an excellent find, thanks!

DarrenCook commented 9 years ago

Interesting analysis. A completely new name loses you all "brand" you currently have, so may not be so useful. "catfish" has lots of logo potential, but is still an existing word: how do I catfish on google gets 12.6 million hits that any new Catch articles have to compete with. how do I "catchtest" gets 2000 google hits - it fact it has such as small share of the webosphere at the moment that I need to add quotes to stop Google thinking I made a typo. how do I "catch++" has 187 hits (and the 3rd one is this thread ;-)

vadz commented 9 years ago

I played with various searches as well and for me the important thing is that there are almost no matches for "catfish c++ unit tests" currently. The only possible conflict I saw was this program that exists in some Linux repositories but I a package would be called libcatfish-dev and not just catfish anyhow, so this is not a big deal.

DenBeke commented 9 years ago

+1 for Catfish!

DraTeots commented 9 years ago

+1 for Catfish too!

martinmoene commented 9 years ago

.... this code seems somewhat fishy ;)

martinmoene commented 9 years ago

(sorry wrong button)

mloskot commented 9 years ago

@vadz has raised an interesting issue. I can recall that every time I web-searched for CATCH, I was wondering how to get best results with such a common name! :-) I give :+1: for renaming CATCH.

:-1: for catfish, because it's not unique enough - there's already 30 million pages indexed by the big G :)

CATCH -> Ketchy

refi64 commented 9 years ago

@mloskot Sounds like ketchup...

chvillanuevap commented 9 years ago

Even though "catfish" already returns 30 million pages in Google, I believe it is a good name.

The problem with Catch is that "catch" is a verb that can be used in the context of any unit test framework. For example, "catch c++ unit test" returns pages related not only to the Catch framework, but to other ones as well.

It is highly unlikely that "catfish c++ unit test" will return pages related to anything but to this framework.

philsquared commented 9 years ago

Thanks for all the positives! @DarrenCook and @mloskot: thanks for voicing your concerns. They are quite valid (and I believe I raised them too). While there's more nuance to what you actually said I think I can summarise both of you by saying that, yes, Catfish is an existing word - and wasn't the the problem with Catch in the first place?

Actually the original problem is that it's hard to home in on Catch because the term is overloaded right down to the narrow context in which it exists (as has been mentioned a few times already).

Here's another way to look at it:

Scenario 1: Someone hears about Catch and wants to find out more/ has an issue and needs to look it up. They go to their search engine of choice and first type:

Catch

Nothing on the first page. "Silly me - I need to make it more specific".

Catch C++

Lots of stackoverflow hits for try-catch. If you're lucky you might hit the test framework on the first page - but it's a way down.

"no, no! I mean the test framework"

Catch Unit Test

Several results about testing exceptions. The test framework probably crops up in the first handful of hits, though (bear in mind results vary by search engine and filter-bubbling). But you might miss it.

Of course if you're looking for developer-oriented stuff you'll probably just go straight to stackoverflow. The situation will be much better there, right? No. It's worse. Much worse! Embarrassingly so!

Now repeat the whole exercise with Catfish:

Catfish

Lots of pages about fish. "Silly me - I need to make it more specific"

Catfish c++

Will probably take you straight there

Catfish test

Will probably take you straight there

Stackoverflow: Catfish

Will probably take you straight there.


Well I'm sold!

philsquared commented 9 years ago

@DarrenCook - you also mentioned losing the "brand". I alluded to this too when I talked about momentum. To be honest that's my biggest concern too - and the one that still gives me pause. Catch is gaining recognition - but I think a (good) name change could accelerate that as much as harm it!

For a start, if someone familiar with Catch searches for Catch they'll still hit a load of the old links - links that will eventually take them back to GitHub (which can be renamed with forwarding), or my blog, or the Google Group - or somewhere where the name change will become apparent. There may be some initial confusion for some. There might be some rare cases where some people get lost and never come back. But I think they really will be rare.

But the majority of people will, eventually, come along for the ride - and all the new people will (mostly) be none the wiser. Did you know that Catch was originally called YACUTS? [1]

That said, as I've made clear originally, I don't take a name change lightly. If it wasn't a real problem - which has been referred to me many times - not just here - I wouldn't be considering this step.

[1] http://www.levelofindirection.com/journal/2010/5/21/the-ultimate-c-unit-test-framework.html

vadz commented 9 years ago

Losing the existing name is the largest drawback I see too, but OTOH it will only increase with time passing and I still think that it's in the project long term interests to change the name to be more search-friendly, so the sooner it will be done, the better.

Maybe you could officially call it "To Catch a Catfish" (haven't you dreamed of following in Harper Lee's footsteps?) to ease the transition...

paolobolzoni commented 9 years ago

Personally I stand for catchtest or catch++ or some variant like that. Changing the name completely with another real word does not really seems to help to the original problem too much. Sure catfish, unlike catch, is not a c++ keyword, but in my opinion is not enough to solve the problems.

On Fri, May 22, 2015 at 9:04 AM, VZ notifications@github.com wrote:

Losing the existing name is the largest drawback I see too, but OTOH it will only increase with time passing and I still think that it's in the project long term interests to change the name to be more search-friendly, so the sooner it will be done, the better.

Maybe you could officially call it "To Catch a Catfish" (haven't you dreamed of following in Harper Lee's footsteps?) to ease the transition...

— Reply to this email directly or view it on GitHub https://github.com/philsquared/Catch/issues/406#issuecomment-104453877.

The-Compiler commented 9 years ago

Scenario 1: Someone hears about Catch and wants to find out more/ has an issue and needs to look it up. They go to their search engine of choice and first type:

Catch

Nothing on the first page. "Silly me - I need to make it more specific".

Catch C++

Lots of stackoverflow hits for try-catch. If you're lucky you might hit the test framework on the first page - but it's a way down.

"no, no! I mean the test framework"

Catch Unit Test

Several results about testing exceptions. The test framework probably crops up in the first handful of hits, though (bear in mind results vary by search engine and filter-bubbling). But you might miss it.

Hahaha - this was exactly the scenario I was in. And I remember I thought "catch is a silly name for a C++ related project" :P

philsquared commented 9 years ago

@vadz, "To Catch A Catfish" was the name I had in mind for the blog post I'd write introducing the change :-) As for the Harper Lee tie in - that will probably have to wait until we have Mocks ;-)

@paolobolzoni Thanks for your opinion. I do take it seriously. I happen to disagree about it being "not [different] enough to solve the problems." I think it would make a significant different, while retaining the exact qualities I liked in Catch (friendliness, fun, memorable, etc). I think coming up with something truly unique (so the ultimate in searchability) that still retains these qualities (or, at least, doesn't lose too much) is a tall order. I'm certainly still open to suggestions there. Ironically I think it's the tweaked names that probably don't go far enough to solve the problems - not because using them wouldn't be less ambiguous - but because they're not different enough for people to use them instead of the root word, which has momentum and familiarity. I could be wrong there - and am not closed to persuasion - but currently that's my thinking.

Furthermore, I believe it was you that said (and I agree) that, with the way modern search engines work, there's effectively no difference between "catchtest" and "catch test".

The ++ suffix might have a better weighting in searches - and if we change the base name to Catfish it gives us a chance to get people used to it from the start:

Catfish++ - "Automated Test Framework In a Single Header - all in C++" (get it?)

But this suffix has one fatal weakness! It can't be used in C++ names - so in code we'd have to shorten it to Catfish (or, without the base name change, Catch) - which then makes it less clear what the canonical name is - perhaps confusing the issue even more! Oh, and it's also more awkward to say it out loud.

BTW there's a popular BDD test framework (for iOS) called Kiwi. If you go to stackoverflow and search for Kiwi (no other keywords) all the top hits are for the test framework. For me it seems to come quite high in google searches (for just the word Kiwi). It's difficult to assess the filter-bubbling contribution there - it's much further down the page on duckduckgo. But, even on DDG it takes all the top slots for "Kiwi test", "Kiwi iOS", "Kiwi Objective-C" or "Kiwi BDD". I don't think they have a searchability problem.

mloskot commented 9 years ago

@kirbyfan64 It does not matter how it sounds. GDAL, a project I also contribute to, is often pronounced like "goodl", sounds like "google".

@philsquared I understand the StackOverflow orientation and uniqueness refinement that considers space of C++ projects. Regarding ++ suffix, I still remember times when the big G was returning C results while searching for C++, perhaps it's no longer justified concern (though, try and compare searching for "it++" vs "it--", Google still seems to behaving inconsistently).

Catchlib

I think it would do pretty good job: 1) preserve old name 2) become searchable (there are Touchlib, there is netlib, cpp-netlib, all easy to search for).

Regardless, renaming a well-established project is hard and will never satisfy majority of users. It's like, never ask your family how you want to name your child, just name her/him first, then introduce to the family :)

The-Compiler commented 9 years ago

Catchlib

I think it would do pretty good job: 1) preserve old name 2) become searchable (there are Touchlib, there is netlib, cpp-netlib, all easy to search for).

Catch isn't a library though. It's a test framework and/or runner.

Catchlib would suggest it's something I use in my own code to do something (catching exceptions? :P).

mloskot commented 9 years ago

@The-Compiler one may argue, C run-time library is not just a library, it is a runner too :) Anyway, just shared my opinion, but to stop messing this thread, not going to dwell on fine details and defend one of zillion personal preferences.

philsquared commented 9 years ago

@mloskot I agree that "renaming a well-established project is hard" - although I'm not sure if (done well) it couldn't satisfy the majority of users. It certainly wouldn't satisfy all users - but then that's already the case! I think a good rename has the potential to satisfy more users than are currently satisfied. That's by no means a given, and is certainly a risk! I've said a few times now that I don't take this lightly. The matter has come up numerous times over the last couple of years in particular and I've not ignored it - but weighed it up and landed on the side of keeping things as they are. This time around I'm getting more of an impression that there's a very real obstacle to greater adoption here and so am finally considering it.

Interestingly, wrt "catchlib", my primary forwarding url for Catch is catch-lib.net. I share @The-Compiler's view that Catch is not really a library, but catch-lib was the best domain I could come up with at the time. I also have catch-test.net but it's amazing how that one extra letter makes me prefer the slightly shorter one :-)

Of course Catfish doesn't make that much easier (could do catfish-lib.net, I suppose).

philsquared commented 9 years ago

oh, forgot to make my main point (re catchlib) - which is that it suffers from the same derivative problem I've already mentioned.

paolobolzoni commented 9 years ago

We are focusing in adding after catch or replacing the name, but what about prefixing? Like "bugcatch" or "spookcatch"?

On Fri, May 22, 2015 at 5:19 PM, Phil Nash notifications@github.com wrote:

@mloskot https://github.com/mloskot I agree that "renaming a well-established project is hard" - although I'm not sure if (done well) it couldn't satisfy the majority of users. It certainly wouldn't satisfy all users - but then that's already the case! I think a good rename has the potential to satisfy more users than are currently satisfied. That's by no means a given, and is certainly a risk! I've said a few times now that I don't take this lightly. The matter has come up numerous times over the last couple of years in particular and I've not ignored it - but weighed it up and landed on the side of keeping things as they are. This time around I'm getting more of an impression that there's a very real obstacle to greater adoption here and so am finally considering it.

Interestingly, wrt "catchlib", my primary forwarding url for Catch is catch-lib.net. I share @The-Compiler https://github.com/The-Compiler's view that Catch is not really a library, but catch-lib was the best domain I could come up with at the time. I also have catch-test.net but it's amazing how that one extra letter makes me prefer the slightly shorter one :-)

Of course Catfish doesn't make that much easier (could do catfish-lib.net, I suppose).

— Reply to this email directly or view it on GitHub https://github.com/philsquared/Catch/issues/406#issuecomment-104562086.

philsquared commented 9 years ago

Interesting @paolobolzoni. I think that would suffer less (although not entirely free of it) from the derivative problem. However I can't think of any prefixes that I like. There is a temptation to add something (like your bugcatch example) that makes it relate more to testing - but what I liked about Catch on its own was that it always hinted at that without saying it outright - which is in keeping with the idea that a test framework certainly plays a role in catching bugs, but that's not it's only (or, for some, even main) purpose (e.g. use it to drive design etc).

Again, I'm still open to other ideas (btw I'm not going to make a final decision on this for a while yet - probably a week at least).

paolobolzoni commented 9 years ago

*catch ;)

On Fri, May 22, 2015 at 5:27 PM, Phil Nash notifications@github.com wrote:

Interesting @paolobolzoni https://github.com/paolobolzoni. I think that would suffer less (although not entirely free of it) from the derivative problem. However I can't think of any prefixes that I like. There is a temptation to add something (like your bugcatch example) that makes it relate more to testing - but what I liked about Catch on it's own was that it always hinted at that without saying it outright - which is in keeping with the idea that a test framework certainly plays a role in catching bugs, but that's not it's only (or, for some, even main) purpose (e.g. use it to drive design etc).

Again, I'm still open to other ideas (btw I'm not going to make a final decision on this for a while yet - probably a week at least).

— Reply to this email directly or view it on GitHub https://github.com/philsquared/Catch/issues/406#issuecomment-104566540.

martinmoene commented 9 years ago

but what I liked about Catch on its own was that it always hinted at that without saying it outright - which is in keeping with the idea that a test framework certainly plays a role in catching bugs, but that's not it's only (or, for some, even main) purpose (e.g. use it to drive design etc).

Catch could have been Coach (and have a similar problem).

philsquared commented 9 years ago

Not sure I get your point. Martin

martinmoene commented 9 years ago

Edited: As in: Catch relates to testing (finding errors), Coach relates to discovery of the design.

[My hope is to trigger yet other ways of thinking]

martinmoene commented 9 years ago

Finding a new name is quite a challenge (no: Challenger test framework).

Here I'd like to voice something else. I like to eat fish, but I would call no fish cuddly (if that's the right term). That is, for me (and maybe others) the connotation could be improved upon.

Edit: But that would probably change when catfish is  a   the test framework ;)

raytrap commented 9 years ago

Catch++ sounds logical, maybe a variant of it without special chars. How about CatchXX, crosscatch. And, sorry, C.C.Catch.

danijar commented 9 years ago

I like catfish as a name. Don't know if that's a real problem, but there is CatFish disk catalogs, a snapshot manager written in C++ with the newest release being from 1999.

As for the appended ++ some suggested above, it reduces memorability for new people, is not a valid Github repository name and people would just call it catfish anyway.

@raytrap I agree that it would be better to find a name without special chars. Most of the names you suggested feel hard to pronounce though. I somewhat like crosscatch, in the context of cross-platform. It underlines the ubiquity of the framework ;)

By the way, what do you guys think on capitalization? For example, most repositories have lowercase names. I though it might be a good time to adopt this as well when we're changing the name.

PureAbstract commented 9 years ago

FWIW, for some reason for which I cannot explain, I don't much care for the name 'catfish'.