We are currently using CI on a pretty big project and I have both good and bad things to say about it. The good news is that it is a "rails like" framework, but without the magic. Some of the helpers are really nice, the validation lib is pretty nice allowing for callbacks to both validate and alter data. Problems I have with it are support for transactions, which seem to be there but fail miserably when something goes wrong. If an exception is thrown the transaction has begun but it never hits a rollback, so all those queries are hanging in the balance and never get commited or rolled back. There is also this recurring theme in CI that they had to do everything themselves. This means that instead of using a well established Email lib they wrote their own, which has severe limitations. You can extend these all of these classes and easily integrate others so Email wasn't so big of a deal. We are just using phpmailer instead. You cannot however extend the DB class. You have to hack up the original, which is what we have been doing to provide SQL queries in the log file during development, and transactions that actually work. This wasn't too bad to do, but it is already introducing a problem. Upgrading from 1.5.whatever to 1.6 breaks the modifications that we did. So now we have the problem of versioning our own copy of CI with our fancy DB stuff, and the actual product we are developing. That being said it is the best PHP programming experience that I have ever had.