Hi Tony,

Thanks for the response! As Kevin said:

“And if done right, the swiftified types can operate without Foundation at all”

This is why I think DispatchData would be superior to NSData, as NSData brings 
along all the rest of Foundation, whereas the entire Dispatch library looks 
like a great fit for Swift.

In fact, won’t Foundation require Dispatch as a dependency? So there’s already 
a doubling there if it is.

I think Dispatch is much more native than Foundation, and would vote to have 
its Dispatch- prefixes removed rather than Foundation remove its NS- ones.

Patrick


> On 13 May 2016, at 5:06 AM, Tony Parker <anthony.par...@apple.com> wrote:
> 
>> 
>> On May 12, 2016, at 1:32 AM, Patrick Smith via swift-evolution 
>> <swift-evolution@swift.org <mailto:swift-evolution@swift.org>> wrote:
>> 
>> I second Matthew’s points. I believe dropping NS- is more harmful than 
>> helpful, especially for the future. People have been using Foundation with 
>> the prefix for decades, so I don’t think there’s a longing need that will 
>> make using it in Swift unbearable. It has an older Objective-C flavoured 
>> approach, relying heavily on classes, run loops, key value observing (e.g. 
>> NSOperation), exceptions, and notifications. I think its philosophy will 
>> stand out more than its NS- prefix. Even if many classes become value types, 
>> it feels more like a port.
>> 
>> I think for something to be so central as the recommended ‘foundational’ 
>> library for Swift, it carries too much baggage, which is unfortunate in the 
>> light of Swift’s radical eagerness to reject unnecessary legacy.
>> 
>> Many Foundation classes expect NSObject subclasses for delegates and for key 
>> value coding & observing. Key value observing requires on-the-fly 
>> subclassing at run time, something which goes strongly against Swift’s 
>> philosophy AFAIK.
>> 
>> Foundation is in some cases a wrapper around underlying technologies such as 
>> GCD, because years ago an Objective-C wrapper was seen as a more friendly, 
>> more safe, and a more familiar object-oriented approach. With Swift we have 
>> the power to make those technologies themselves more friendly, safe, and 
>> familiar with modernisations such as the current proposal for libdispatch. 
>> Extensions allow us to add properties and methods directly to the native 
>> types.
>> 
>> NSURL has methods such as .getResourceValue(_:forKey:) that involve mutable 
>> state.
>> 
>> I think removing the prefixes will take valuable real estate for types such 
>> as ‘URL’ and ‘Data’, which instead can have new replacements made, focused 
>> on the use-cases of only Swift. I think DispatchData could be a fine choice 
>> for ‘Data’, and has the strong benefit that it bridges to NSData on Darwin.
>> 
> 
> Perhaps you missed it, but SE-0069 adds corresponding value types for URL and 
> Data, among others.
> 
> - Tony
> 
>> I fully support the idea of improving Foundation, and of there being a 
>> Linux-compatible version. I don’t support it being as first class as the 
>> standard library or libdispatch, and don’t support removing the NS prefixes.
>> 
>> Patrick
>> 
>> 
>>> On 11 May 2016, at 1:36 AM, Matthew Johnson via swift-evolution 
>>> <swift-evolution@swift.org <mailto:swift-evolution@swift.org>> wrote:
>>> 
>>>> What is your evaluation of the proposal?
>>> I very much support hoisting types, updating enumerations, and updating the 
>>> NSStringEncoding constants.  
>>> 
>>> I do not support dropping NS on type level names.  Dropping the 2 character 
>>> prefix is a very small benefit and it comes with very real costs.  I 
>>> believe unprefixed top level names should not be taken without a manual 
>>> review of the API design.  
>>> 
>>> Types which will be value types in the future are obvious candidates for 
>>> redesign but are not the only types whose API would benefit by human 
>>> consideration and Swiftification.  Keeping the NS prefix until this happens 
>>> recognizes that the Swiftification of Foundation is a work in progress.  It 
>>> will give us more options in the future that don’t involve breaking 
>>> changes.  
>>> 
>>> It will also serve as a signal to developers about what kinds of APIs 
>>> should be considered idiomatic in Swift.  If we want developers to learn 
>>> how to distinguish idiomatic Swift, our API guidelines, etc from 
>>> Objective-C mappings we need to provide some cues.  I believe name prefixes 
>>> are a good way to do this.
>>> 
>>> I hope that we will move forward with most of this proposal while keeping 
>>> the NS prefix for top-level names.
>>> 
>>>> Is the problem being addressed significant enough to warrant a change to 
>>>> Swift?
>>> Yes, but we need to do this carefully, deliberately and in a way that we 
>>> won’t regret in the future.  I believe several parts of the proposal are 
>>> warranted, but the namesake “drop NS prefix” portion should deferred until 
>>> each type receives manual consideration and possibly redesign.
>>> 
>>>> Does this proposal fit well with the feel and direction of Swift?
>>> Mostly yes.  However, taking top-level unprefixed names without a process 
>>> of Swiftification does not.
>>> 
>>>> If you have used other languages or libraries with a similar feature, how 
>>>> do you feel that this proposal compares to those?
>>> I think this question is N/A for this proposal.
>>> 
>>> I hesitate in saying this, but I think the best comparison to consider is 
>>> the origin of Foundation and Cocoa themselves.  They are fantastic 
>>> Objective-C APIs.  If they had originated by wrapping pre-existing APIs 
>>> written in a different language with different idioms and then 
>>> incrementally enhanced I wonder if they may have been less fantastic.  
>>> 
>>> I believe reserving unprefixed top-level names for manually designed, 
>>> idiomatic types is the path for Swift that avoids this risk altogether and 
>>> gives us the best chance possible at an incredible, idiomatic set of 
>>> libraries.
>>> 
>>>> How much effort did you put into your review? A glance, a quick reading, 
>>>> or an in-depth study?
>>> I participated in the discussion, read the proposal, and carefully 
>>> considered the consequences of each piece.
>>> 
>>>> More information about the Swift evolution process is available at
>>>> 
>>>> https://github.com/apple/swift-evolution/blob/master/process.md 
>>>> <https://github.com/apple/swift-evolution/blob/master/process.md>
>>>> Thank you,
>>>> 
>>>> -Doug Gregor
>>>> 
>>>> Review Manager
>>>> 
>>>> _______________________________________________
>>>> swift-evolution-announce mailing list
>>>> swift-evolution-annou...@swift.org 
>>>> <mailto:swift-evolution-annou...@swift.org>
>>>> https://lists.swift.org/mailman/listinfo/swift-evolution-announce 
>>>> <https://lists.swift.org/mailman/listinfo/swift-evolution-announce>
>>> 
>>> _______________________________________________
>>> swift-evolution mailing list
>>> swift-evolution@swift.org <mailto:swift-evolution@swift.org>
>>> https://lists.swift.org/mailman/listinfo/swift-evolution 
>>> <https://lists.swift.org/mailman/listinfo/swift-evolution>
>> 
>> _______________________________________________
>> swift-evolution mailing list
>> swift-evolution@swift.org <mailto:swift-evolution@swift.org>
>> https://lists.swift.org/mailman/listinfo/swift-evolution 
>> <https://lists.swift.org/mailman/listinfo/swift-evolution>
_______________________________________________
swift-evolution mailing list
swift-evolution@swift.org
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to