Skip to content

CATCH needs a more searchable name #406

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
vadz opened this issue Apr 22, 2015 · 87 comments
Closed

CATCH needs a more searchable name #406

vadz opened this issue Apr 22, 2015 · 87 comments

Comments

@vadz
Copy link
Contributor

vadz commented Apr 22, 2015

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
Copy link

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
#406.

@claymation
Copy link

+1 — how about Catchy?

@martinmoene
Copy link
Collaborator

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
Copy link

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

@chvillanuevap
Copy link

@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
Copy link

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
Copy link

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
Copy link

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

@danijar
Copy link

danijar commented May 2, 2015

+1 for catchtest

@DarrenCook
Copy link

+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
Copy link

danijar commented May 9, 2015

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
Copy link

itrion commented May 19, 2015

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
Copy link
Collaborator

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

@martinmoene
Copy link
Collaborator

@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
Copy link

refi64 commented May 20, 2015

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

@philsquared
Copy link
Collaborator

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:

  • Keeping the name similar, or derivative (e.g. catchtest, catch++, catchup - even catsh) - but the trouble here is people will continue calling it Catch, so the less ambiguous form may not gain enough traction to solve the original problem.
  • Some entirely new names, but using a similar (b)ac(k)ronym approach: Catsh (again), cpphot, hotcpp, Hoctu, shutcpp. I'm not very happy with any of those - especially those with cpp. They don't have quite the same friendly, fun, approachable, relatable quality that I feel Catch has. I had other ideas here - more on one in a moment...
  • I did start toying with non-acronym names but haven't come up with anything worthwhile yet. The trouble is you end up either adopting an existing word - which may have many of the same problems as Catch - or making a new word - in which case it feels like it should be an acronym - or at least have some nod towards letters in C++, Test, etc. I'm open to ideas, though.

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
Copy link

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

@philsquared
Copy link
Collaborator

@The-Compiler
Copy link

🐱 🐟
🐈 🐠 ❗

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

@vadz
Copy link
Contributor Author

vadz commented May 21, 2015

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
Copy link

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
Copy link
Contributor Author

vadz commented May 21, 2015

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
Copy link

DenBeke commented May 21, 2015

+1 for Catfish!

@DraTeots
Copy link

+1 for Catfish too!

@martinmoene
Copy link
Collaborator

.... this code seems somewhat fishy ;)

@martinmoene
Copy link
Collaborator

(sorry wrong button)

@mloskot
Copy link
Contributor

mloskot commented May 21, 2015

@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 👍 for renaming CATCH.

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

CATCH -> Ketchy

@refi64
Copy link

refi64 commented May 21, 2015

@mloskot Sounds like ketchup...

@nabijaczleweli
Copy link
Contributor

Had I not known what Catch is, were I to hear about it in a C++ context, I'd search for "catch c++" or "catch library", both of which are on top.

@philsquared
Copy link
Collaborator

I've let this languish again - but since work is well underway on Catch 2.0 - which is going to be a big change - it seems like the right time for a name change too, if we're going to do it.

After a little time to look back I don't particularly like the name Catfish now (my previous proposal) - certainly not enough to lose the original "branding".

So my new proposal is simply:

Catch2

The 2 here is part of the name - similar to how the X in OS X, while pronounced "ten", and associated with the 10.x versioning, was part of the name. So it would start as Catch2 v2.0.
Catch2 v3.0 might get a bit weird, but not a showstopper.

It has the advantage of being very close to the original - in a way that search engines should be able to allow for - while still prioritising exact matches.
Plus it emphases that v2 is going to be a big break (in particular it's going to require C++11 and be substantially rewritten/ refactored).

Thoughts?

@nabijaczleweli
Copy link
Contributor

[...] how the X in OS X, while pronounced "ten" [...]

Does _any_one actually pronounce it ten? I've only ever heard and used it as Ough-Ess Ecks

@philsquared
Copy link
Collaborator

If you hang out in Mac or iOS developer communities you'll hear most people pronounce it "ten" - also watch any Apple keynote that talks about it.

@philsquared
Copy link
Collaborator

Also, I think the proper "incorrect" pronunciation is, "Oh, Essex"

@nabijaczleweli
Copy link
Contributor

If you hang out in Mac or iOS developer communities

I'd prefer to stay cancer-free, thanks

@rr-
Copy link

rr- commented Jul 5, 2016

Catch2 is cool. @philsquared can we read somewhere about planned changes introduced by v2 (esp. the ones to public API / that are backwards-incompatible)?

OS X being an "OS 10" sounds pretty arrogant.

@mloskot
Copy link
Contributor

mloskot commented Jul 5, 2016

On 5 July 2016 at 12:23, Phil Nash notifications@github.com wrote:

So my new proposal is simply:

Catch2
Plus it emphases that v2 is going to be a big break (in particular it's
going to require C++11 and be substantially rewritten/ refactored).

Then, Catch11 :)

@philsquared
Copy link
Collaborator

@rr still working on it. I'm currently exploring the possibilities that the rebasing on C++11 allows. I'm going to write a blog post soon.
Originally the headline features were planned to be: concurrency support and generators/ property-based testing.
Both those features (especially the concurrency support) were key motivators in deciding that now was the time drop pre-C++11 support (Catch Classic will continue to be maintained with C++03 support - just no new major features).
But the scope for internal clean-up with C++11 has me thinking (and toying with implementations) of the following:

  1. Low std-lib dependency overhead for non-impl headers - including a custom String class. Idea is to address compile-time concerns.
  2. Reworked expression decomposition, which allows for string conversions to only occur when needed (addressing some performance concerns).
  3. New string conversions approach, which allows converters to be registered and discovered at runtime (reducing template machinery and coupling - as well as further reducing std-lib dependencies). Fallback of stringstream based conversions can be optionally disabled (to reduce those dependencies even more). The current approach also has a number of nasty order of evaluation issues.
  4. Further reduced singleton surface area - with TLS caching of results to be merged in later made possible (for the concurrency support).
  5. A more concrete, published, API for introspecting test case registry, current test info, etc.

In terms of breaking changes - despite the degree of internal rework I want to keep that to a minimum. The main areas will be around the use of strings - especially string conversions - which will use the new custom string type - as well as the new conversions framework. Reporters may be impacted too - but I may be able to provide an adapter for those (as I did with reporter interfaces changes when going to 1.0). It's possible the Session class may change too.

There's more but that's OTTOMH for now. Blog post to come.

@philsquared
Copy link
Collaborator

@mloskot

Then, Catch11

Actually there might be something in that!
I had been thinking that Catch2 feels like it's just stopping short of Catch22 - but Catch11 is halfway there! :-)

@nabijaczleweli
Copy link
Contributor

a custom String class

Phil y u do dis

@philsquared
Copy link
Collaborator

@nabijaczleweli several reasons, some of which I already hinted out. I'll go into it more in the blog post.

@martinmoene
Copy link
Collaborator

Looking at it this way the current Catch could be or have been named Catch98.

@martinmoene
Copy link
Collaborator

@philsquared Just to have it asked: could a minimal string_span (string_view) be of help?

"In case you missed it: string_view also in C++17", Herb Sutter, Trip report: Summer ISO C++ standards meeting (Oulu).

@vadz
Copy link
Contributor Author

vadz commented Jul 5, 2016

FWIW I don't think this is going to solve the problems which motivated me to open this issue. Whether it's Catch2 or Catch11 or Catch22, people will still refer to it as "Catch" for short and I don't think searching for it is going to work very well.

I still like the original CATFISH suggestion, but if you really want something even catchier, what about CATCHFISH. I'm sure someone will come up with backronym expansion for this if needed.

@russel
Copy link

russel commented Jul 5, 2016

I am sure the strapline "softly softly catchee buggy" indicates Catchee might work.

BTW next generation Catch will have to compete with RapidCheck for traction, property-based testing will become more important that example-based testing.

@philsquared
Copy link
Collaborator

@martinmoene actually it's a pair of String and StringRef I have in mind (where StringRef is similar to string_view) - both are quite minimal and are immutable. One advantage over std::string_view (other than not having to wait for C++17) is that you can usually get back to a String from a StringRef without copying.

@philsquared
Copy link
Collaborator

@vadz bear in mind there's no content (other than this page) for Catch2 in this context yet.
I still think searching for "catch2" is going to get much more targeted results than "catch" currently does.

I do hear you about people still calling it just "catch" (one of the concerns I voiced before) but there's a fine line to be trod here - too different and we lose the association with "Catch Classic". Too similar and people will drop back to calling it just "Catch". Ironically the situation has become a classic Catch-22!

I'm still opening to further suggestions. Another possibility I've been toying with is "Recatch".

@philsquared
Copy link
Collaborator

@russel yeah, PBT is certainly one of the big things I have in mind for Catch2.
But bear in mind that this isn't really a competition. If people want to use RapidCheck then that's great! My original motivation with Catch was to provide an alternative that was easier and more fun to use than the alternatives at the time.

@martinmoene
Copy link
Collaborator

@philsquared Thanks for the explanation. (The word minimal meant to imply do-it-yourself w/o waiting for C++17;)

@vadz
Copy link
Contributor Author

vadz commented Jul 5, 2016

I think keeping the same prefix would be enough to avoid breaking the association with the current version, so I think anything starting with "Catch" (CATCHEM? CATCHUP? CATCHTOO? CATCHY?) would work. From this point of view, "Recatch" is not ideal, although it does seem appealing otherwise.

@philsquared
Copy link
Collaborator

@vadz that was my thinking with Catch2. Actually a quick search now (I use DuckDuckGo which shouldn't skew the results based on previous search history etc) confirms that catch+suffix returns far more relevant results than prefix+catch.

@philsquared
Copy link
Collaborator

philsquared commented Jul 5, 2016

... actually the search terms were "c++ unit test <prefix>catch" vs "c++ unit test catch<suffix>" compared to just "c++ unit test catch"

@GatoRat
Copy link

GatoRat commented Jul 5, 2016

Why pull short with C++11? I've found that C++11 compliant compilers also support C++14 (and most of C++1z.)

@philsquared
Copy link
Collaborator

The very latest versions support large parts of C++14, yes - but even then is spotty - and only the latest versions (e.g. Visual Studio 2015, but not 2013) - whereas fairly good C++11 coverage has been around for a few years now - so even several older versions support it (although I don't think VS 2010 will keep up - not sure what the lower bound or gcc and clang will be yet).

I would love to use C++14 (17 even more so!), but most of what I would use it for here is minor convenience - compared to the night & day difference between 03 and 11. In the code I've written so far I'm not sure a single line is valid C++03 ;-)

@jmcarter17
Copy link

jmcarter17 commented Jul 12, 2016

My 2cents (For what it's worth)

When you proposed catch2, I immediately thought of Catch 22, which may or may not be bad.
Catch11 is great, and it gives you an obvious renaming path for future releases that will require a change in the standard. Catch23 would obviously mean you need a C++23 compliant compiler ...

Anyways, I'm glad that you are reopening this issue because I have had problems searching for catch solutions in the past.

I'm fine with catch2 or catch11, but people will definitely keep calling it catch.

@ryanpfeeley
Copy link

My two cents Re the original issue: philsquared is so prolific, that using "philsquared" in place of "catch" in any search query is bound to get you exactly want. Now perhaps that doesn't scale to the future since it isn't part of the brand, but steering searchers to include your handle might give you a little flexibility as you rebrand. If the biggest break is compiler dependence, using catch11, catch17, is ok. People will definitely keep calling it catch though. Embrace success!

@horenmar
Copy link
Member

I am going to close this in favor of #769, where we can also discuss the name of the upcoming rework.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests