> On May 12, 2016, at 1:32 AM, Patrick Smith via swift-evolution > <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 > > _______________________________________________ > swift-evolution mailing list > swift-evolution@swift.org > https://lists.swift.org/mailman/listinfo/swift-evolution
_______________________________________________ swift-evolution mailing list swift-evolution@swift.org https://lists.swift.org/mailman/listinfo/swift-evolution