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

CATCH needs a more searchable name #406

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

Comments

Projects
None yet
@vadz
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

This comment has been minimized.

Show comment
Hide comment
@chvillanuevap

chvillanuevap Apr 22, 2015

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.

chvillanuevap commented Apr 22, 2015

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

This comment has been minimized.

Show comment
Hide comment
@claymation

claymation Apr 22, 2015

+1 — how about Catchy?

claymation commented Apr 22, 2015

+1 — how about Catchy?

@martinmoene

This comment has been minimized.

Show comment
Hide comment
@martinmoene

martinmoene Apr 22, 2015

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

Collaborator

martinmoene commented Apr 22, 2015

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

This comment has been minimized.

Show comment
Hide comment
@paolobolzoni

paolobolzoni Apr 23, 2015

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

paolobolzoni commented Apr 23, 2015

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

@chvillanuevap

This comment has been minimized.

Show comment
Hide comment
@chvillanuevap

chvillanuevap Apr 23, 2015

@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'.

chvillanuevap commented Apr 23, 2015

@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

This comment has been minimized.

Show comment
Hide comment
@paolobolzoni

paolobolzoni Apr 23, 2015

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.

paolobolzoni commented Apr 23, 2015

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

This comment has been minimized.

Show comment
Hide comment
@chvillanuevap

chvillanuevap Apr 23, 2015

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.

chvillanuevap commented Apr 23, 2015

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

This comment has been minimized.

Show comment
Hide comment
@paolobolzoni

paolobolzoni Apr 23, 2015

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

paolobolzoni commented Apr 23, 2015

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

@danijar

This comment has been minimized.

Show comment
Hide comment
@danijar

danijar May 2, 2015

+1 for catchtest

danijar commented May 2, 2015

+1 for catchtest

@DarrenCook

This comment has been minimized.

Show comment
Hide comment
@DarrenCook

DarrenCook May 7, 2015

+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.

DarrenCook commented May 7, 2015

+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

This comment has been minimized.

Show comment
Hide comment
@danijar

danijar 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.

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

This comment has been minimized.

Show comment
Hide comment
@itrion

itrion 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?

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

This comment has been minimized.

Show comment
Hide comment
@martinmoene

martinmoene May 20, 2015

Collaborator

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

Collaborator

martinmoene commented May 20, 2015

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

@martinmoene

This comment has been minimized.

Show comment
Hide comment
@martinmoene

martinmoene May 20, 2015

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.

Collaborator

martinmoene commented May 20, 2015

@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.

@kirbyfan64

This comment has been minimized.

Show comment
Hide comment
@kirbyfan64

kirbyfan64 May 20, 2015

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

kirbyfan64 commented May 20, 2015

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

@philsquared

This comment has been minimized.

Show comment
Hide comment
@philsquared

philsquared May 21, 2015

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

Collaborator

philsquared commented May 21, 2015

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

This comment has been minimized.

Show comment
Hide comment
@vendethiel

vendethiel May 21, 2015

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

vendethiel commented May 21, 2015

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

@philsquared

This comment has been minimized.

Show comment
Hide comment
Collaborator

philsquared commented May 21, 2015

@The-Compiler

This comment has been minimized.

Show comment
Hide comment
@The-Compiler

The-Compiler May 21, 2015

🐱 🐟
🐈 🐠 ❗️

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

The-Compiler commented May 21, 2015

🐱 🐟
🐈 🐠 ❗️

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

@vadz

This comment has been minimized.

Show comment
Hide comment
@vadz

vadz May 21, 2015

Contributor

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!

Contributor

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

This comment has been minimized.

Show comment
Hide comment
@DarrenCook

DarrenCook May 21, 2015

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 ;-)

DarrenCook commented May 21, 2015

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

This comment has been minimized.

Show comment
Hide comment
@vadz

vadz May 21, 2015

Contributor

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.

Contributor

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

This comment has been minimized.

Show comment
Hide comment
@DenBeke

DenBeke May 21, 2015

+1 for Catfish!

DenBeke commented May 21, 2015

+1 for Catfish!

@DraTeots

This comment has been minimized.

Show comment
Hide comment
@DraTeots

DraTeots May 21, 2015

+1 for Catfish too!

DraTeots commented May 21, 2015

+1 for Catfish too!

@martinmoene

This comment has been minimized.

Show comment
Hide comment
@martinmoene

martinmoene May 21, 2015

Collaborator

.... this code seems somewhat fishy ;)

Collaborator

martinmoene commented May 21, 2015

.... this code seems somewhat fishy ;)

@martinmoene martinmoene reopened this May 21, 2015

@martinmoene

This comment has been minimized.

Show comment
Hide comment
@martinmoene

martinmoene May 21, 2015

Collaborator

(sorry wrong button)

Collaborator

martinmoene commented May 21, 2015

(sorry wrong button)

@mloskot

This comment has been minimized.

Show comment
Hide comment
@mloskot

mloskot May 21, 2015

Contributor

@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

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

@kirbyfan64

This comment has been minimized.

Show comment
Hide comment
@kirbyfan64

kirbyfan64 May 21, 2015

@mloskot Sounds like ketchup...

kirbyfan64 commented May 21, 2015

@mloskot Sounds like ketchup...

@nabijaczleweli

This comment has been minimized.

Show comment
Hide comment
@nabijaczleweli

nabijaczleweli Feb 10, 2016

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.

Contributor

nabijaczleweli commented Feb 10, 2016

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

This comment has been minimized.

Show comment
Hide comment
@philsquared

philsquared Jul 5, 2016

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?

Collaborator

philsquared commented Jul 5, 2016

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

This comment has been minimized.

Show comment
Hide comment
@nabijaczleweli

nabijaczleweli Jul 5, 2016

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

Contributor

nabijaczleweli commented Jul 5, 2016

[...] 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

This comment has been minimized.

Show comment
Hide comment
@philsquared

philsquared Jul 5, 2016

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.

Collaborator

philsquared commented Jul 5, 2016

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

This comment has been minimized.

Show comment
Hide comment
@philsquared

philsquared Jul 5, 2016

Collaborator

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

Collaborator

philsquared commented Jul 5, 2016

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

@nabijaczleweli

This comment has been minimized.

Show comment
Hide comment
@nabijaczleweli

nabijaczleweli Jul 5, 2016

Contributor

If you hang out in Mac or iOS developer communities

I'd prefer to stay cancer-free, thanks

Contributor

nabijaczleweli commented Jul 5, 2016

If you hang out in Mac or iOS developer communities

I'd prefer to stay cancer-free, thanks

@rr-

This comment has been minimized.

Show comment
Hide comment
@rr-

rr- 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.

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

This comment has been minimized.

Show comment
Hide comment
@mloskot

mloskot Jul 5, 2016

Contributor

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 :)

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

This comment has been minimized.

Show comment
Hide comment
@philsquared

philsquared Jul 5, 2016

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.

Collaborator

philsquared commented Jul 5, 2016

@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

This comment has been minimized.

Show comment
Hide comment
@philsquared

philsquared Jul 5, 2016

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! :-)

Collaborator

philsquared commented Jul 5, 2016

@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

This comment has been minimized.

Show comment
Hide comment
@nabijaczleweli

nabijaczleweli Jul 5, 2016

Contributor

a custom String class

Phil y u do dis

Contributor

nabijaczleweli commented Jul 5, 2016

a custom String class

Phil y u do dis

@philsquared

This comment has been minimized.

Show comment
Hide comment
@philsquared

philsquared Jul 5, 2016

Collaborator

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

Collaborator

philsquared commented Jul 5, 2016

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

@martinmoene

This comment has been minimized.

Show comment
Hide comment
@martinmoene

martinmoene Jul 5, 2016

Collaborator

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

Collaborator

martinmoene commented Jul 5, 2016

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

@martinmoene

This comment has been minimized.

Show comment
Hide comment
@martinmoene

martinmoene Jul 5, 2016

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).

Collaborator

martinmoene commented Jul 5, 2016

@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

This comment has been minimized.

Show comment
Hide comment
@vadz

vadz Jul 5, 2016

Contributor

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.

Contributor

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

This comment has been minimized.

Show comment
Hide comment
@russel

russel 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.

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

This comment has been minimized.

Show comment
Hide comment
@philsquared

philsquared Jul 5, 2016

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.

Collaborator

philsquared commented Jul 5, 2016

@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

This comment has been minimized.

Show comment
Hide comment
@philsquared

philsquared Jul 5, 2016

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".

Collaborator

philsquared commented Jul 5, 2016

@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

This comment has been minimized.

Show comment
Hide comment
@philsquared

philsquared Jul 5, 2016

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.

Collaborator

philsquared commented Jul 5, 2016

@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

This comment has been minimized.

Show comment
Hide comment
@martinmoene

martinmoene Jul 5, 2016

Collaborator

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

Collaborator

martinmoene commented Jul 5, 2016

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

@vadz

This comment has been minimized.

Show comment
Hide comment
@vadz

vadz Jul 5, 2016

Contributor

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.

Contributor

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

This comment has been minimized.

Show comment
Hide comment
@philsquared

philsquared Jul 5, 2016

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.

Collaborator

philsquared commented Jul 5, 2016

@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

This comment has been minimized.

Show comment
Hide comment
@philsquared

philsquared Jul 5, 2016

Collaborator

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

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

This comment has been minimized.

Show comment
Hide comment
@GatoRat

GatoRat 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.)

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

This comment has been minimized.

Show comment
Hide comment
@philsquared

philsquared Jul 5, 2016

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 ;-)

Collaborator

philsquared commented Jul 5, 2016

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

This comment has been minimized.

Show comment
Hide comment
@jmcarter17

jmcarter17 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.

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

This comment has been minimized.

Show comment
Hide comment
@ryanpfeeley

ryanpfeeley Jul 19, 2016

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!

ryanpfeeley commented Jul 19, 2016

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 horenmar added the Discussion label Jan 15, 2017

@horenmar

This comment has been minimized.

Show comment
Hide comment
@horenmar

horenmar Jan 30, 2017

Member

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

Member

horenmar commented Jan 30, 2017

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

@horenmar horenmar closed this Jan 30, 2017

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