Top 1.0 tasks for me are bindings and improving the table view.
The current bindings branch is pretty functional from what I can see
the things left to do are updating (and testing) all the controls to
support their bindings.
Like Randy said already, the tableview is awesome, but like Dimitris
mentioned there's also a lot of room for improvement. Issues with the
current tableview are mainly focused on datacells and caching. I've
already started a discussion about this here:
http://github.com/280north/cappuccino/issues#issue/509.
Something else that needs focus in my opinion are the extensibility of
Cappuccino classes. Almost all classes access instance variables
directly in stead of using accessors. This makes extending those
classes hard and also breaks KVO.
For example the CPCollectionView should just be able to override
numberOfRows to return something else, this means that the CPTableView
needs to call [self numberOfRows] whenever it needs to know how many
rows it has. The method should return _numberOfRows if defined
otherwise ask the dataSource for the number of rows (the bindings
branch has a correct implementation I believe).
The CPCollectionView -> CPTableView behavior is just an example, the
problem explained exists in most Cappuccino classes which makes it
hard to extend them.
Some other concern of mine is the amount of patches that actually land
on the trunk. Like Dimitris mentioned, a lot of bugs are fixed but
never actually land on the trunk because of various reasons. Currently
the patch review process resembles Apple's App Store review process in
that there are no guidelines. I think we can all make it easier for
the committers if we make sure our patches conform to a standard set
of guidelines. This is a completely different discussion, but having a
clear set of guidelines might automatically fix the lack of
documentation and tests. Sample guidelines could be:
1. Your patch is confined in one commit so it can be easily cherry-
picked or, if it's not a single commit, is on a clean master branch.
(No other changes except for the problem you are trying to fix)
2. Your patch doesn't break any current tests and contains proper
tests where applicable (fixing the testing issue)
3. Your patch fully documents any new methods (fixing the
documentation issue)
4. Optionally, your patch may not degrade performance in any way
Having these guidelines available in a public and easy to find place
gives committers a place to point to when a faulty patch is submitted.
It also makes sure that adding changes into the trunk is just a matter
of seeing if it's a valid patch, running the (performance) tests and
actually committing it. Of course, I'm not a committer so they
actually might have more and or different demands.