Just a look at the user/src classes so far.
http://gwt-code-reviews.appspot.com/1449817/diff/4001/user/src/com/google/gwt/user/client/ui/DefaultEventBusProvider.java File user/src/com/google/gwt/user/client/ui/DefaultEventBusProvider.java (right): http://gwt-code-reviews.appspot.com/1449817/diff/4001/user/src/com/google/gwt/user/client/ui/DefaultEventBusProvider.java#newcode41 user/src/com/google/gwt/user/client/ui/DefaultEventBusProvider.java:41: public static DefaultEventBusProvider instance() { Why not also provide a static setInstance()? Is there a Provider<EventBus> interface this type could implement? Sprinkling such a specific type name around an app seems a bit gross. http://gwt-code-reviews.appspot.com/1449817/diff/4001/user/src/com/google/gwt/user/client/ui/DefaultEventBusProvider.java#newcode68 user/src/com/google/gwt/user/client/ui/DefaultEventBusProvider.java:68: public EventBus get() { Without making get() and init() abstract, anyone providing a subclass could forget to override one or the other. How about breaking this type up in the way Scheduler and SchedulerImpl are arranged? http://gwt-code-reviews.appspot.com/1449817/diff/4001/user/src/com/google/gwt/user/client/ui/IsEventSource.java File user/src/com/google/gwt/user/client/ui/IsEventSource.java (right): http://gwt-code-reviews.appspot.com/1449817/diff/4001/user/src/com/google/gwt/user/client/ui/IsEventSource.java#newcode28 user/src/com/google/gwt/user/client/ui/IsEventSource.java:28: * event bus. Why a String and not the general Object that Events can use as a source? http://gwt-code-reviews.appspot.com/1449817/diff/4001/user/src/com/google/gwt/user/client/ui/IsWidgetDriver.java File user/src/com/google/gwt/user/client/ui/IsWidgetDriver.java (right): http://gwt-code-reviews.appspot.com/1449817/diff/4001/user/src/com/google/gwt/user/client/ui/IsWidgetDriver.java#newcode53 user/src/com/google/gwt/user/client/ui/IsWidgetDriver.java:53: public interface IsWidgetDriver { This type name implies there should be a single method WidgetDriver asWidgetDriver(); WidgetDriver could then be an abstract base class to allow additional lifecycle methods to be added in the future. http://gwt-code-reviews.appspot.com/1449817/diff/4001/user/src/com/google/gwt/user/client/ui/Widget.java File user/src/com/google/gwt/user/client/ui/Widget.java (right): http://gwt-code-reviews.appspot.com/1449817/diff/4001/user/src/com/google/gwt/user/client/ui/Widget.java#newcode69 user/src/com/google/gwt/user/client/ui/Widget.java:69: private Command updateDriver; Sort fields? http://gwt-code-reviews.appspot.com/1449817/diff/4001/user/src/com/google/gwt/user/client/ui/Widget.java#newcode89 user/src/com/google/gwt/user/client/ui/Widget.java:89: public final <H extends EventHandler> HandlerRegistration addBitlessDomHandler(final H handler, Why is the handler param final on these methods? http://gwt-code-reviews.appspot.com/1449817/diff/4001/user/src/com/google/gwt/user/client/ui/Widget.java#newcode580 user/src/com/google/gwt/user/client/ui/Widget.java:580: protected EventBus requireEventBus() { Instead of having two getEventBusMethods(), what about placing a boolean flag on getEventBus() to say "don't return null" or at least delegating from getEventBus() to getEventBus(boolean) so there's only one method that actually makes EventBus objects pop into existence? http://gwt-code-reviews.appspot.com/1449817/diff/4001/user/src/com/google/web/bindery/event/shared/HandlerRegistration.java File user/src/com/google/web/bindery/event/shared/HandlerRegistration.java (right): http://gwt-code-reviews.appspot.com/1449817/diff/4001/user/src/com/google/web/bindery/event/shared/HandlerRegistration.java#newcode37 user/src/com/google/web/bindery/event/shared/HandlerRegistration.java:37: public class Null implements HandlerRegistration { Do you ever need more than one instance of this type? HandlerRegistration.NULL might be a better choice. http://gwt-code-reviews.appspot.com/1449817/diff/4001/user/src/com/google/web/bindery/event/shared/ResettableEventBus.java File user/src/com/google/web/bindery/event/shared/ResettableEventBus.java (right): http://gwt-code-reviews.appspot.com/1449817/diff/4001/user/src/com/google/web/bindery/event/shared/ResettableEventBus.java#newcode37 user/src/com/google/web/bindery/event/shared/ResettableEventBus.java:37: public ResettableEventBus(EventBus wrappedBus, String name) { If the eventSourceName is turned into an Object eventSourceTag, it would allow users to use enums or other Objects for dispatch instead of descending into String-matching hell. http://gwt-code-reviews.appspot.com/1449817/diff/4001/user/src/com/google/web/bindery/event/shared/ResettableEventBus.java#newcode77 user/src/com/google/web/bindery/event/shared/ResettableEventBus.java:77: Extra whitespace. http://gwt-code-reviews.appspot.com/1449817/ -- http://groups.google.com/group/Google-Web-Toolkit-Contributors