Live data from Hacker News

CopperSpice, a Modern C++ Fork of Qt

copperspice.com

21–30 of 104 posts

Re: CopperSpice, a Modern C++ Fork of Qt

#21
post #17

Uhm, "modern" and "built using GNU Autotools" in a single sentence just doesn't compute. Cross-platform portability obviously isn't their goal. Oh and thank you for removing moc and replacing that with some template black magic. Yeah, you can do that, but your developers are going swear up a storm at you once they see the wonderful compilation errors that e.g. MSVC produces with templates ... But I guess they don't t…

> Uhm, "modern" and "built using GNU Autotools" Autotools represents a pragmatic solution to a non trivial problem. What's your solution? Hipster like complaining? Perhaps the c/c++ eco system is too easy and straightforward for the hipster developer class?

Before you call someone "hipster", I suggest you actually learn something about the problem.

CMake is the defacto standard for building portable C/C++ software today, there is also SCons. In fact, Qt includes its own build system called qmake. All of these offer much more than the GNU Autotools ever did.

So why do these things exist when autotools are so wonderful? Well, autotools are a damn nightmare to maintain (m4 scripts anyone?) and next to impossible to use outside of the GNU ecosystem - try to use it on Windows or Android without crutches like MinGW or Cygwin.

Basically, an autotools build system is pretty much unusable except on a POSIX/Unix-like platform and even then it handles only building of the package. Not a proper installation support (e.g. support for installer building/packaging), no tests, no continuous integration/compile farm support, poorly written m4 code breaks parallel compilation, etc.

Re: CopperSpice, a Modern C++ Fork of Qt

#22
post #17

Uhm, "modern" and "built using GNU Autotools" in a single sentence just doesn't compute. Cross-platform portability obviously isn't their goal. Oh and thank you for removing moc and replacing that with some template black magic. Yeah, you can do that, but your developers are going swear up a storm at you once they see the wonderful compilation errors that e.g. MSVC produces with templates ... But I guess they don't t…

> Uhm, "modern" and "built using GNU Autotools" Autotools represents a pragmatic solution to a non trivial problem. What's your solution? Hipster like complaining? Perhaps the c/c++ eco system is too easy and straightforward for the hipster developer class?

Use something like CMake which is cross-platform, works very well in most cases and a lot of cross-platform open-source C++ libs are using already.

Re: CopperSpice, a Modern C++ Fork of Qt

#23
post #12
post #11

Earlier quoted context omitted.

Advanced template metaprogramming is far less common of a skill than opening a generated source file and reading source code.

Well, one of the aim of C++11 (and 14) is to make template metaprogramming much easier.

To the user it shouldn't matter wether you use a moc DSL or a template DSL. If you're a developer, you'll have to learn the innards of the moc on top of C++, which already contains templating anyway. When I first saw the signal/slot API, I wondered how they solved it and was dissappointed that they used a standalone tool for something that could've been solved with standard C++.

Re: CopperSpice, a Modern C++ Fork of Qt

#24
post #22

Earlier quoted context omitted.

> Uhm, "modern" and "built using GNU Autotools" Autotools represents a pragmatic solution to a non trivial problem. What's your solution? Hipster like complaining? Perhaps the c/c++ eco system is too easy and straightforward for the hipster developer class?

Use something like CMake which is cross-platform, works very well in most cases and a lot of cross-platform open-source C++ libs are using already.

CMake. Making easy things easy and hard things impossible. Provided most cases are easy, an acceptable solution.

Re: CopperSpice, a Modern C++ Fork of Qt

#25
post #17

Uhm, "modern" and "built using GNU Autotools" in a single sentence just doesn't compute. Cross-platform portability obviously isn't their goal. Oh and thank you for removing moc and replacing that with some template black magic. Yeah, you can do that, but your developers are going swear up a storm at you once they see the wonderful compilation errors that e.g. MSVC produces with templates ... But I guess they don't t…

> Cross-platform portability obviously isn't their goal.

As someone who runs a couple of obscure platforms, I swear every time I have to use a non-Autotools project. Autotools may be slow and may check for seventeen different fortran compilers even if your project never uses fortran, but portability-wise it simply works.

Re: CopperSpice, a Modern C++ Fork of Qt

#26
great! could you explain in detail why you want to replace MOC:

"The redesign allowed us to completely remove the Qt Meta-Object Compiler (moc) system. Moc is a code generator and did not support many aspects of C++ including templates, complex data types, static type checking, and relies heavily on string comparisons. Removing moc improves run time performance, reduces the complexity of the build process, and allows more issues to be detected at compile time."

Re: CopperSpice, a Modern C++ Fork of Qt

#27
post #8

Why? And why 4.8? The 5.x branch is a far better version of Qt. This looks ridiculous. Qt is a massive framework - the work of hundreds, if not thousands, of people - and this seems to be the work of a random dev with zero backing and a 2004-style website with zero content (everything, even the 14-forum completely empty phpbb forum).

There are some downsides to Qt5. * It's huge - something like 30 MB for "hello world" on Windows. * Deployment is a nightmare (loads of plugin DLLs, there's some crazy path stuff going on, if you use QML you have to include a load of system qml files). There is a windeployqt tool which helps but it still isn't as easy as with Qt4. * QML/QtQuick are very nice for some things, but in a lot of ways they kind of suck. E.…

>It's huge - something like 30 MB for "hello world" on Windows.

First, 30MB for "hello world" doesn't mean it will get linearly bigger as code grows. Most is one time off overhead. Else something like Kate would be an 1 TB binary.

Second, 30MB hasn't been an issue since 2002. Heck, I have 20+ apps, each over 30MB, on my PHONE.

Re: CopperSpice, a Modern C++ Fork of Qt

#28
post #7
post #6

Earlier quoted context omitted.

I fail to understand either, but they say: > CopperSpice has been modified to remove moc, the Qt meta object compiler. Moc was removed to simplify the build process, allow CopperSpice to be a standalone library, increase run time performance, and allow developers to utilize C++11 features. So they replaced the moc functionality with some c++11 magic ?

> So they replaced the moc functionality with some c++11 magic ? You mean they replaced moc magic with C++11?

I didn't realize the c++11 standard could make it possible to get rid of moc. Defenately better this way around ;)

I can't wait to see this happening upstream for Qt5.

Re: CopperSpice, a Modern C++ Fork of Qt

#29
> The redesign allowed us to completely remove the Qt Meta-Object Compiler (moc) system.

I recall having heard that this was one of the new goals for Qt now that we have C++ 11.

Is the intention of this fork to merge back at some point? I don't see the fragmentation working out for everyone in the long run.

Re: CopperSpice, a Modern C++ Fork of Qt

#30
The last time I used Qt was a long, long, time ago. I liked it, mainly because it avoided the STL and was cleaner. I'm not a fan of C++ (I consider it a baroque and overly complex language), but I enjoyed using Qt.

So, this line seems like a drawback to me, instead of an advantage:

"CopperSpice is a C++ library derived from the existing Qt 4.8 framework. Our goal was to change the core design of the libraries, leveraging template functionality and C++11 capabilities."

Post reply on HN