Dann Corbit wrote:whp wrote:ChessX is meant to be modern free chess database. It has been developed since about 2006 spring and the response it quite good - version 0.5 was downloaded 1442 times only for Windows (and few hundreds more for Linux and MacOS X). The problem is ChessX lacks manpower.
So if you are interested/skillful in: C++, Qt 4.2+ and want to help develop nice looking, usable, chess database please consider ChessX as your next open source project

.
Check the
ChessX website and
its Source Forge project site (go for mailing lists - forums are not used).
I myself believe ChessX is a good candidate to become next SCID. Unfortunately I am not into C++ and Qt (rather a Java amateur programmer).
It is abysmally slow. So slow, in fact, that it cannot be used for serious real-life sized databases.
Something that calls itself a chess database should (in fact) use some sort of database mechanism.
ChessX is not a database at all. It's a nice looking GUI on top of a very, very inefficient flat-file mechanism.
Unless someone bolts a database interface of some kind to that thing, it's not going anywhere.
The main problem is that the search/filter classes are written independent to work independent of the database. Even if the database format/class would have efficient search functions, the framework does not have the possibility to use it.
In other words: Instead of giving some sort of filter rules object to a database to yield the matching games, it will start with all games, and try to apply one filter criteria to all games in that database by loading the game. If it is a match, the game stays, if it is not a match it will be removed (from the search results). If all games in the database are processed against the first criterium, the next filter criterium will be checked against all remaining games etc.
Normally, databases work the other way around: They will find the games matching a criterium (or a combination of them) quickly by having dedicated indexes. So it depends on the database (format) and its capabilities how to search most efficient. As long as the search routines themselves are unaware of the type of database used, it will never be able to search efficiently.
It is possible to do this with virtual functions, so that the Parent database class can still contain the less efficient search methods (for use in eg the PGN database class and similar structures).
I've discussed this before with Michal (one of the chessx designers), and apparently this was either not understood, or not found to be important.
Richard.