These are some really interesting analogies.  How would you imagine the 
community “governance” of these “plugins” (which I assume would be libraries or 
packages) to be managed?  What does it mean for the “full community” to manage 
them, and provide the rough guarantees you suggest?

I like the general premise here: support a library ecosystem for Swift, with 
possibly layers of expectations and guarantees on the quality of those 
libraries and the features they support.

A related question, what can we do to how the communication discussion via 
Swift.org <http://swift.org/> can be used to facilitate building such a library 
ecosystem?  Kelvin Ma made a great point about shouting out on the mailing list 
for a project and getting no real response.  I’m getting optimistic that we can 
move to a forum soon; could we use that forum in a way to help facilitate 
something like what you are proposing? 

> On Nov 8, 2017, at 4:30 AM, Wallacy via swift-evolution 
> <swift-evolution@swift.org> wrote:
> 
> @Félix Fischer
> 
> Yes, I wanted to say central index. I chose the wrong term.
> 
> Actually I could have summed it up like this:
> - Central Index
> - SwiftPM to download/search using this index like npm/nuget
> - GStreamer organization Style.
> 
> I do not agree with Ted that only a few projects should be ranked, everyone, 
> as it is in npm should be available. Only be graded according to 
> recommendations.
> 
> For exemple this is what GStreamer do:
> 
> gst-plugins-base
> a small and fixed set of plug-ins, covering a wide range of possible types of 
> elements; these are continuously kept up-to-date with any core changes during 
> the development series.
> 
> We believe distributors can safely ship these plug-ins
> People writing elements should base their code on these elements
> These elements come with examples, documentation, and regression tests
> gst-plugins-good
> a set of plug-ins that we consider to have good quality code, correct 
> functionality, our preferred license (LGPL for the plug-in code, LGPL or 
> LGPL-compatible for the supporting library).
> 
> We believe distributors can safely ship these plug-ins
> People writing elements should base their code on these elements
> gst-plugins-ugly
> a set of plug-ins that have good quality and correct functionality, but 
> distributing them might pose problems. The license on either the plug-ins or 
> the supporting libraries might not be how we'd like. The code might be widely 
> known to present patent problems.
> 
> Distributors should check if they want/can ship these plug-ins
> People writing elements should base their code on these elements
> gst-plugins-bad
> a set of plug-ins that aren't up to par compared to the rest. They might be 
> close to being good quality, but they're missing something - be it a good 
> code review, some documentation, a set of tests, a real live maintainer, or 
> some actual wide use. If the blanks are filled in they might be upgraded to 
> become part of either gst-plugins-good or gst-plugins-ugly, depending on the 
> other factors.
> 
> If the plug-ins break, you can't complain - instead, you can fix the problem 
> and send us a patch, or bribe someone into fixing them for you
> New contributors can start here for things to work on
> 
> For example, let's say that the proposal on type Result <T> is not approved.
> 
> The community cam build a Result<T> "project" ate "swift-extension-base" and 
> everyone at "base" level must agree to use then (or improve then) to avoid 
> one of the concerns at Result<T> proposal (several projects build the own)...
> 
> So in Swift side maybe the indexer (and the community) can classify projects 
> in this way:
> 
> swift-extension-base  // (Swift Core Team maybe can manager this one)
> 
> a small and fixed set of features, covering a small range of possible types 
> of elements; these are continuously kept up-to-date with any core changes 
> during the development series.
> 
> We believe distributors can safely ship these features
> People writing elements should base their code on these elements
> These elements come with examples, documentation, and regression tests
> swift-extension-good // (Community can manage this, and Swift Core Team can 
> do some advices)  
> a set of features that we consider to have good quality code, correct 
> functionality, our preferred license (Swift Licence), and covering a wide 
> range features.
> 
> We believe distributors can safely ship these plug-ins
> People writing elements should base their code on these elements
> swift-extension-ugly // (Full Community)  
> a set of features  that have good quality and correct functionality, but 
> distributing them might pose problems. The license on either the or the 
> supporting libraries might not be how we'd like. The code might be widely 
> known to present patent problems.
> 
> Distributors should check if they want/can ship these plug-ins
> People writing elements should base their code on these elements
> swift-extension-bad // (Full Community)  
> a set of features that aren't up to par compared to the rest. They might be 
> close to being good quality, but they're missing something - be it a good 
> code review, some documentation, a set of tests, a real live maintainer, or 
> some actual wide use.
> 
> If the features break, you can't complain - instead, you can fix the problem 
> and send us a patch, or bribe someone into fixing them for you
> New contributors can start here for things to work on
> 
> I just change plugins to feature to make more sense here... And at "base" 
> level we can just drop very small projects, and make few guarantees that will 
> always work. And at good level we can drop bigger projects like Alamofire, 
> Perfect etc, because of the nature of those projects, we know that will get a 
> good support but we cant guarantee that documentation and tests and language 
> updates will always be pair with the rest.
> 
> And at "bad" level, will be like NPM is today... just a easy way to obtain 
> some 3rd party code but no guarantees at all!
> 
> We heve IBM Swift Package Catalog (https://packagecatalog.com 
> <https://packagecatalog.com/>) but i think we can do better.
> 
> Also, if we (and Apple) do nothing, the community someway will do! It's like 
> Brew/Macports at some point people will build the tools to make the ecosystem 
> easier. Is better make something oficial (like npm/nuget) of course.
> 
> A "Non-Standard Libraries" its a non start for me, but good indexer, a good 
> integration with SwiftPM, a oficial help/support of the Swift Core Team, and 
> a set of rules/patterns to rule this (and other) projects is a good feature 
> to have.
> 
> Em ter, 7 de nov de 2017 às 21:16, Alejandro Martinez via swift-evolution 
> <swift-evolution@swift.org <mailto:swift-evolution@swift.org>> escreveu:
> I’m with Ted on this one. 
> I would also love to see the Swift ecosystem grow but I think that it has to 
> happen with SPM. With improvements on SPM (as discussed in other threads) and 
> having a proper index (imho Cocoapods webpage is the best one out there, with 
> stats about docs, unit testing, downloads...) that makes finding libraries 
> easier. 
> But also a discussion forum where great libs can be shared and highlighted to 
> the rest of the community and big community efforts coordinated. If you look 
> at Rust is a great example, their forums attract the whole community (sadly 
> not something the mailing list does) and big and important projects have come 
> up from the community that have made a huge impact. With that in place and 
> some libs out there maturing I’m sure that in the future the conversation to 
> include battle tested code into an oficial distribution would be easier.
> 
> Sent from my iPad
> 
> On 7 Nov 2017, at 21:58, Ted Kremenek via swift-evolution 
> <swift-evolution@swift.org <mailto:swift-evolution@swift.org>> wrote:
> 
>> Hi Dave,
>> 
>> Thanks for bringing up this topic.  This has been kicked around a little, 
>> and we’re still exploring different models on how to extend Swift.
>> 
>> The server APIs work group is one operational model for the community to 
>> build out a new set of core libraries.  That work group was formed out of 
>> the observation that there were different implementations of the same thing 
>> being created by different Swift on server efforts, and that those different 
>> efforts should pool those resources together and standardize on some 
>> fundamentals.
>> 
>> That analogy could work here.  However, it also has possible major 
>> downsides.  It can be heavyweight, and also artificially raise the 
>> importance of certain people’s library efforts over others by creating a 
>> formal work group whose efforts are expected to eventually be incorporated 
>> into the core Swift distribution.  It would also force a discussion up front 
>> of what even makes sense to incorporate into the core Swift distribution, 
>> which might be artificially constraining the exploration of the set of 
>> libraries to implement.
>> 
>> I need to think about your idea more, but my first reaction is that my 
>> preferred route is that the community builds these libraries, ideally using 
>> Swift Packages, and through trial and use we evaluate those libraries and 
>> then decide if they should be incorporated as part of the core distribution. 
>>  There’s many factors involved in deciding if they can be incorporated into 
>> the core distribution, but all of those could be informed by actually 
>> building libraries and see them getting used.
>> 
>> We could also figure out a way to possibly highlight these efforts to the 
>> Swift community, maybe on swift-evolution or other means — but all with the 
>> expectation that these libraries are not *necessarily* going to be 
>> standardized as part of the core swift distribution.  I don’t think that’s 
>> all that bad either; not every library will make sense to incorporate into 
>> the core Swift distribution (e.g., they are highly domain specific) but 
>> still supporting their development would be beneficial to the community.
>> 
>> Note that any change going into the Swift core distribution inevitably 
>> involves swift-evolution and the core team.  Changes going into the core 
>> Swift distribution must meet a very high bar as far as implementation and 
>> design, the confidence we have into committing to specific APIs (especially 
>> since we’ll have ABI stability in Swift 5), and other factors.  Thus this 
>> will not really alleviate much burden on the Core team or on the community — 
>> one of the core goals of your proposal.  Further, incorporating all those 
>> concerns up front when building libraries might be counterproductive.
>> 
>> FWIW, Ben Cohen and I have been talking about possibly using Swift packages 
>> as a way to seed out experimental ideas for extensions to the Standard 
>> Library.  This would allow ideas to be trialed by real usage (a complaint 
>> I’ve seen about some changes we’ve made to Swift in the past).  Users could 
>> build things on top of those libraries, knowing they are available as 
>> packages, and if an API “graduates” to being part of the Standard Library 
>> the user can then depend upon it being available there.  If it never 
>> graduates, however, the package remains around.
>> 
>> One thing that resonates me in what you propose is about having a 
>> “well-organized effort” whose aim is to make these libraries feel cohesive 
>> and implemented well.  However, given that many of these naturally fall 
>> somewhere in the spectrum of responsibilities within the Standard Library 
>> and Foundation, I think it is self-misleading to think that the Core Team or 
>> others would not be involved in these efforts if the intention is to 
>> possibly incorporate these one day into the core Swift distribution.  There 
>> also may be other ways to achieve that level of cohesion in API design, such 
>> as through community discussion (possibly via the Swift.org 
>> <http://swift.org/> mailing lists/forums).  This discussion would not 
>> necessarily be the same as the path to “ratification” of a library into core 
>> Swift, but a step that could benefit many library authors (including 
>> considering ideas one day incorporated into the core swift).  With such a 
>> mechanism many library authors could benefit even if they do not intend to 
>> have the library as part of the core distribution.
>> 
>> My apologies that these are all hand-wavy ideas, but I’m trying to paint a 
>> possible alternative way to achieve your goal of more library evolution for 
>> Swift without having such a formal work group that may be too heavy weight 
>> or too narrowly focused.
>> 
>> Ted
>> 
>>> On Nov 7, 2017, at 9:54 AM, Dave DeLong via swift-evolution 
>>> <swift-evolution@swift.org <mailto:swift-evolution@swift.org>> wrote:
>>> 
>>> Hi Swift-Evolution,
>>> 
>>> The Standard Library's goal is to be small and targeted. However, many 
>>> aspects of Apple-provided frameworks need or offer opportunities for 
>>> improvement or wholesale replacement. These enhancements lie beyond the 
>>> scope of the Standard Library.
>>> 
>>> To address this, we'd like to propose the idea of a "Non-Standard Library"; 
>>> this would be a library that ships with a regular installation of Swift, 
>>> but is not imported into .swift files by the compiler, unless explicitly 
>>> requested by the developer.
>>> 
>>> We are proposing a well-organized effort to parallel the Standard Library 
>>> without putting additional implementation responsibilities onto the core 
>>> team. This effort would mitigate what we see as platform-independent 
>>> requirements that provide native Swift implementations that aren't burdened 
>>> by Apple history.
>>> 
>>> Mission Statement
>>> 
>>> We propose to create an open-sourced "Non-Standard Library" effort that 
>>> coexists with, coordinates with, and is blessed by the open source Swift 
>>> development community. The "Non-Standard Library" will offer a 
>>> well-curated, high-value collection of routines, types, and documentation 
>>> to support Swift development on all platforms.
>>> 
>>> Goals
>>> 
>>> The main goals of this effort would be:
>>> Alleviate pressure on the Core Team while providing the developer community 
>>> with functionality that normally falls under Apple's internal development 
>>> umbrella.
>>> Deliver authoritative, reliable, and regularly updated libraries avoiding 
>>> issues faced by third-party dependencies.
>>> Provide oversight, organization, and full community involvement to ensure 
>>> its components are worthy, maintained, and passing a bar of need and 
>>> excellence.
>>> Suggested Libraries
>>> 
>>> There are several areas we think that are ripe for improvement and 
>>> implementation as a non-standard library, such as (but not limited to):
>>> A BigNum library
>>> A full-featured Random library
>>> A simplified date/time library
>>> A library for manipulating paths (that is not based on URL or String)
>>> An expanded Swift-native Geometry library and so forth.
>>> The scope and extent of the sublibraries would be proposed and debated on a 
>>> parallel Non-Standard Library Evolution development list.
>>> 
>>> Coordination
>>> 
>>> This effort would be fully coordinated with the Swift development team, 
>>> respecting the team's existing commitments and responsibilities. We would 
>>> request an Apple body to act as an official coordinator, enabling both 
>>> oversight of this effort and to expose Apple-sourced suggestions to the 
>>> Non-Standard community for action.
>>> 
>>> Next Steps
>>> 
>>> To proceed, we need a general community consensus that this effort is worth 
>>> the significant overhead it would involve.
>>> 
>>> We must then:
>>> Select a project lead, who appoints technical leaders from the community.
>>> Recruit a core team, a small group responsible for strategic direction, 
>>> pulled from experienced members well versed in contributing to Swift-dev.
>>> Establish a Non-Standard Swift Evolution process, based on the one that is 
>>> currently followed by Swift Evolution. Following SE practices will 
>>> guarantee a consistent and excellent language experience for those 
>>> developers including the Non-Standard library into their projects.
>>> Build a Non-Standard Swift Evolution repository home.
>>> Adopt a code license, based on Swift's current licensing.
>>> Define the community working group rules and code of conduct.
>>> Establish a mailing list and/or forum.
>>> Begin the selection of target sublibraries and populating them by 
>>> recruiting committers and contributors.
>>> Alternative Names
>>> 
>>> Suggested names for this effort include the following.
>>> Extended-Standard Library
>>> Community-Standard Library
>>> Non-Standard Library
>>> We are not married to any of these names and welcome alternative 
>>> suggestions.
>>> 
>>> Measures of Success
>>> 
>>> A successful Non-Standard Library will provide a stable and incrementally 
>>> grown ecology of Swift frameworks that developers can depend upon with a 
>>> minimum of turbulence and regret cycles. For that reason, the most 
>>> successful content will be core functionality, with significant field 
>>> testing prior to adoption. We recommend that NSSE follow a model of 
>>> provisionary adoption and refinement before deployment to ensure any 
>>> adopting code base will not be affected by later module changes.
>>> 
>>> Thanks,
>>> 
>>> Dave DeLong and Erica Sadun
>>> _______________________________________________
>>> 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 <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

_______________________________________________
swift-evolution mailing list
swift-evolution@swift.org
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to