[webkit-dev] The Care and Feeding of WebCore Modules

Alexey Proskuryakov ap at webkit.org
Tue Feb 28 11:11:30 PST 2012


Having read the wiki page, I'm even more unhappy with the approach that has been taken than I used to be. In fact, it is harmful even to the goals of the refactoring.

If a single #ifdefed line in DOMWindow.idl is a burden for development, what about adding several new files to each and every build system, and maintaining these multiple files into perpetuity? That's much more work for everyone - port maintainers, core developers, and feature developers. The likelihood of repeated breakage is higher with the need to maintain a more complicated build system.

Sticking to the concrete example, these lines in WorkerContext.idl are not really something a WebSocket engineer maintains. It's more important for a person working on JS bindings and/or on threading, and the need to hunt down these across many files makes hacking more difficult. How can one even find an answer to the very practical question of which properties are available on WorkerContext if these are split across multiple files?

#if defined(ENABLE_WEB_SOCKETS) && ENABLE_WEB_SOCKETS
        attribute [JSCustomGetter,V8EnabledAtRuntime] WebSocketConstructor WebSocket; // Usable with the new operator
#endif

The goal is to make hacking easier. Moving files to separate directories should be done as long as that helps to advance the goal, but not beyond that, even if we now have an entertaining tool in the form of supplemental interfaces that lets you go far beyond reasonable.

- WBR, Alexey Proskuryakov


28.02.2012, в 0:29, Adam Barth написал(а):

> I wrote up a short wiki page explaining how the modules system works
> and how to use it when building new features:
> 
> https://trac.webkit.org/wiki/Modules
> 
> We've been making good progress refactoring some existing features to
> use the system.  This refactoring both improves the hackability of
> WebCore by simplifying the core objects (e.g.,
> Page/DOMWindow/Document/Navigator) and paves the cowpaths for new code
> to avoid bloating these objects.
> 
> In Bug 79663, Alexey asked why we were moving the WebSocket
> declaration out of WorkerContext.idl and into Modules/websockets.
> Viewed in isolation, I can understand why that change looks somewhat
> mysterious.  Hopefully the wiki page above provides some more context
> for the change.  In particular, WebSockets fits neatly into the
> modules pattern.  We've already removed almost all mentions of
> WebSockets from WebCore proper.  Besides one item in
> WebCore::Settings, WorkerContext.idl is the last file in WebCore
> proper to mention WebSockets.
> 
> Adam




More information about the webkit-dev mailing list