On Sat, Jan 28, 2012 at 4:48 PM, Brett Wilson <bre...@chromium.org> wrote:
> On Sat, Jan 28, 2012 at 4:07 PM, Maciej Stachowiak <m...@apple.com> wrote:
>>
>> On Jan 28, 2012, at 9:24 AM, Brett Wilson wrote:
>>
>>> On Sat, Jan 28, 2012 at 12:19 AM, Adam Barth <aba...@webkit.org> wrote:
>>>> On Fri, Jan 27, 2012 at 9:44 PM, Darin Fisher <da...@chromium.org> wrote:
>>>>> On Fri, Jan 27, 2012 at 2:39 AM, Adam Barth <aba...@webkit.org> wrote:
>>>>>> On Fri, Jan 27, 2012 at 1:49 AM, Maciej Stachowiak <m...@apple.com> 
>>>>>> wrote:
>>>>>>> That said, this plan was based on the premise that Chromium folks were
>>>>>>> willing to cooperate with the unforking effort, and would be happy to
>>>>>>> use a
>>>>>>> WebKit-integrated URL library based on GoogleURL. If that is no longer
>>>>>>> the
>>>>>>> case, then certainly we should not proceed on a false premise.
>>>>>>
>>>>>> I've been talking a bit with Benjamin about this topic off-list.  I'm
>>>>>> hopeful that with some careful attention to dependencies and
>>>>>> interfaces, Chromium will be able to use WTFURL in place of GoogleURL.
>>>>>
>>>>> I still think it is a bit backwards for Chromium's network stack to depend
>>>>> on WebKit,
>>>>> but I remain open minded about this.  I'm curious how it will work out.
>>>>
>>>> The general approach I had in mind was to view WTFURL as a separate
>>>> library that just happens to be hosted at svn.webkit.org.  That
>>>> requires some careful managing of dependencies but it seems worth
>>>> trying.
>>>
>>> I don't really want to reopen this debate, but how is that different
>>> than checking GoogleURL into webkit? Maciej was saying that this would
>>> impose an unacceptable burden on WebKit developers. I'm wondering what
>>> his specific complaints about burden are and whether they might also
>>> apply to a standalone WTFURL class.
>>>
>>> For example, if Maciej is concerned about coding style, we can easily
>>> fix that either way and it's a non-issue. If the concern is
>>> familiarity, I'm not sure I see the difference between "Adam
>>> reimplementing WTFURL" and "using some existing code" since they're
>>> both "new code" from the perspective of average WebKit contributors.
>>
>> I don't think anyone is expecting to implement new URL code from scratch. 
>> The proposals that were put forward are, as I understand them:
>>
>> (1) Check in GoogleURL as-is into the ThirdParty directory as an external 
>> dependency; future maintenance would be done via the canonical GoogleURL 
>> repository.
>> (2) Check in GoogleURL as a proper part of WebKit, adapting its coding style 
>> and wrapping it in a way that works well with other WebKit/WTF data types.
>>
>> The issue is not new code or not, but the ability to maintain it going 
>> forward.
>
> That's great, thanks.
>
>>> I'm asking because I suspect Maciej's main concern is control over the
>>> library and dependencies and the ability to easily make changes
>>> necessary for Apple and WebKit (I would be worried about this, too).
>>
>> That's exactly it.
>>
>>> From my perspective, however, this might imply that he would want the
>>> ability in the future to make modifications and add dependencies that
>>> would be nonstarters with respect to Chromium's requirements. The
>>> normal answer (which I agree with) when some random port wants to do
>>> something weird and be able to compile without, for example,
>>> JavaScript, is that "WebKit doesn't support these one-off use cases,
>>> take the whole thing" and we should agree that this reasoning wouldn't
>>> apply to dependencies on the URL component.
>>>
>>> I think there was some agreement last year when the first part of this
>>> project happened. If we restart it, I would want to again make sure
>>> that everybody really understands what our dependency requirements are
>>> and agree that we're not going to be changing them because it's better
>>> for the "WebKit community" (c.f. Joe Mason's request to use all of
>>> WTF). I also worry that this will be a 9 month project for Adam, as
>>> the current partially done parsing thing took longer than anybody
>>> would have liked. Personally I would prefer Adam spend time fixing my
>>> security bugs :) So I want to be explicit on what Apple perceives as
>>> the benefit of "Adam writes a bunch of new well-tested code with no
>>> dependencies" vs. "copy existing well-tested code with no dependencies
>>> into third_party and possibly reformat" so we can make sure there are
>>> no surprises later.
>>
>> I think that, at this point, Benjamin is volunteering to do the bulk of work 
>> and Adam is offering to help. The code would be more along the lines of 
>> reformatting and refactoring than "write[ing] a bunch of new code" as I 
>> understand it.
>>
>> I understand your concern about wanting to keept his code free of unwanted 
>> dependencies. However, we do already have a pretty hard boundary that WTF 
>> can't depend on anything higher in the stack. We could make WTFURL even more 
>> restricted if that was necessary or helpful. However, I think most of us who 
>> do not work on Chromium are not clear on what exactly the dependency 
>> constraints are. It would be helpful if you or Adam or someone else could 
>> document them.
>>
>> Let's take some specific examples. Would using WTF::Vector inside the 
>> implementation (not necessarily at the API boundary, just internally) be 
>> acceptable? Or would it be required to use C arrays or std::vector? Would 
>> using WTF's ASSERT family of macros be acceptable, or should some other form 
>> of asserts be used? The are examples I can think of where "dependencies" 
>> could simply be added in the course of trying to get the code to be in 
>> WebKit style.
>
> I'm not necessarily speaking for the network folks, but I would not
> want any WTF dependencies at all. The existing core code doesn't have
> any dependencies on STL, and even the ICU dependency (for IDN and
> query encoding) is optional. The library is used for some places where
> we want minimal code. For example, GoogleURL is Google's safe browsing
> URL canonicalizer which is used in a variety of contexts on the server
> and in client code. We need to be able to preserve these uses without
> linking in largish template libraries.
>
> The GURL class is written on top of this core library code and uses
> STL for convenience with the rest of Chromium code. Our KURL wrapper
> is also written on top of this core layer, so we don't have to do a
> WTF::String -> std::string conversion (which is obviously important
> for performance).

So to clarify, I think we need to keep the current architecture.
Obviously WebKit needs a URL class that uses its String class, so
WTFURL would probably be a wrapper around some core library for WebKit
to use. Chromium would rewrite our GURL class to use the same core
library and keep std::strings (we don't want all our browser-level
code to have to convert std::string -> WTF::String just like today we
don't want to do the inverse in WebKit).

Brett
_______________________________________________
webkit-dev mailing list
webkit-dev@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev

Reply via email to