GithubHelp home page GithubHelp logo

swiftpackageindex / packagelist Goto Github PK

View Code? Open in Web Editor NEW
753.0 19.0 620.0 7.2 MB

The master list of repositories for the Swift Package Index.

Home Page: https://swiftpackageindex.com

License: Apache License 2.0

Swift 100.00%
swift spm

packagelist's Introduction

Valid JSON

The Swift Package Index

Anyone can add a package to the Swift Package Index. Please feel free to submit any package repository to the index, whether it's a package written by you or someone else. There's also no quality threshold. As long as the packages are valid and meet the requirements below, we will accept them. If you're unsure about any of the requirements, please submit the package(s), and we'll happily provide help.

There are a few requirements for inclusion in the index, but they aren't onerous:

  • The package repositories must all be publicly accessible.
  • The packages must all contain a valid Package.swift file in the root folder.
  • The packages must be written in Swift 5.0 or later.
  • The packages should have at least one release tagged as a semantic version.
  • The packages must all output valid JSON when running swift package dump-package with the latest Swift toolchain.
  • The package URLs must include the protocol (usually https) and the .git extension.
  • The packages must all compile without errors.
  • All package content must comply with our code of conduct.

Add Packages Button

Note: Our build system can now generate and host DocC documentation and make it available from your package’s page in the index. All we need is a little configuration data so that we know how best to build your docs.

More information here.

Note: If submitting your own packages, don't forget to add shields.io badges to your package's README to always have up to date swift version and platform compatibility information readily available. Once your package appears in the index, use the "Do you maintain this package?" link in the right-hand sidebar of your package page and use the provided markdown.

For example:

Removing a Package

You can request to have a package removed from the index with this GitHub workflow.

packagelist's People

Contributors

adam-fowler avatar appracatappra avatar aure avatar berikv avatar chrismarshallny avatar ctreffs avatar dagronf avatar daveverwer avatar eneko avatar finestructure avatar gabriellanata avatar github-actions[bot] avatar gonzalezreal avatar heckj avatar helje5 avatar kiliankoe avatar leogdion avatar marcoeidinger avatar mattmassicotte avatar maxdesiatov avatar maxxfrazer avatar mkj-is avatar muukii avatar roanutil avatar sherlouk avatar sloik avatar stephencelis avatar vsanthanam avatar web-flow avatar zntfdr avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

packagelist's Issues

Deal better with stable and pre-release package versions

Inspired by this conversation.

When building out the site I specifically looked at what Xcode will import if you paste in a git repository. It picks the latest, stable version of a package. For example, even though Alamofire has a 5.0.0-beta.7 release right now, Xcode shows 4.8.2 when importing it. I chose to match that with the site.

As you can see in the Twitter thread, that's not perfect.

Show featured packages on the home page

Add two or three sections to the home page of the site. The sections could show things like:

  • Popular repositories over the last 30 days
  • Most recent package version updates
  • Newest packages
  • Trending packages (packages that are being starred a lot on GitHub maybe?)

Slightly related to #59.

AutoPR Test: Not a GitHub URL

List Packages

https://sidetrack.app/

Not sure where this will get captured. I suspect it won't fail the validate, and so will pass the pipeline but won't trigger the PR because changes should be empty and thus we'll get a failure message which says there wasn't an issue?

Linux support

As far as I can tell, there is no way to filter or even see if a package has Linux support. This is a major use case for me as most of what I do is cross-platform and it is much harder to find packages that are also cross-platform.

Use the SwiftPM api for an iOS/Catalyst app

Hi Dave,

First, thank's to you for this project !

As a side project for this weekend, I started an iOS app for browsing packages from your website using the SwiftPM API.

I would like to know if it is okay for you that I use the api of SwiftPM for this project ?
I plan to make the app open-source on Github (once it will be more complete).
Of course I will add link to the original website and never claims the ownership of SwiftPM :)

As new features, I will try to make a macOS app from the iOS version with Catalyst (I didn't tried it yet as I don't put any beta version on my personal computer), star a repo, and some other stuff :)

Thank's for your response and your project,

Aurel

[Proposal] Rename "SwiftPM Library" to avoid confusion

Hey @daveverwer, long-time subscriber of the iOS dev newsletter here, awesome work!

Would like to raise a point about the naming of this project. "Library" has a specific meaning in the engineering world, especially when related to dependencies, package management, and software development. Wikipedia defines a library as:

[...] a collection of non-volatile resources used by computer programs, often for software development. These may include configuration data, documentation, help data, message templates, pre-written code and subroutines, classes, values or type specifications.

Of course, in the case of this project, Library means the more classical definition:

[...] a curated collection of sources of information and similar resources, selected by experts and made accessible to a defined community for reference or borrowing.

I think that "Library" in the context of package management is clearly linked to the computing term, and that developers might be confused by the naming of this project. This is what immediately stood out to me when it was announced: the project could have been anything from a swift package itself to a documentation about swift libraries. But I definitely didn't expect it to be a curated list of packages.

My proposal would be to rename the project from "The SwiftPM Libary" to something that clearly means "A list of packages/libraries". I'm not super creative in terms of naming, but it could be something like:

  • SwiftPM Package List
  • SwiftPM Search Engine
  • SwiftPM Curated List

I might or might not be the only one confused by the naming and I'm not sure how to evaluate how many devs are, but I think this is a point worth raising. Thanks!


List of proposed names in this thread:

  • SwiftPM Package List
  • SwiftPM Search Engine
  • SwiftPM Curated
  • SwiftPM Directory
  • SwiftPM Registry
  • Swift Nest
  • Swift Package Index
  • Dave's Packages
  • The Emporium of Curious Objects and Magical Essences

README.md - dump-package vs. packages.json

There is some confusion in the README.md between the validation package submitters should do for their packages and validation developers should do to the final packages.json PR.

I'm not sure how exactly that differentiation should be made but perhaps headers or a step by step guide to say this is how to validate your package:
swift package dump-package | jq -e ".products | length > 0"
which tests that they have a valid package with products.

And then what someone can do to validate their packages.json after the pull request such as
jq -e . packages.json > /dev/null

I am more than willing to supply a PR depending on the suggestions made.

Can we add gitlab url?

Hi,
I have 2 packages on gitlab

  • TNetwork Simple, lightweight and robust network micro-framework
  • TStorage The SQLite micro-framework for Swift

Can I add them to the json file?

Feature Request: Add ability to browse index

One feature I'd love to see in future releases of the Swift Package Index in the ability to browse all available packages, say ordered by date updated (or alphabetically by name) say 50 or so per page. I'm a browser and sometime not really sure what I'm looking for so search doesn't work in these cases.

Add crates.io like functionality.

Rust users have https://crates.io. I wish SwiftPM can borrow some ideas:)

There are three main sections.

  • New
  • Most Downloaded
  • Just updated

Detail page includes statistics and all kind of meta information (author, keyword, open issues, last updated date etc.)

Add individual package pages to the site showing more metadata per package

Each package should have a static, permanently available page where more metadata is displayed about it. The search results would still go directly to the git repository, but the package pages would be available with a "More information" (or similar) link.

Individual package pages should include things like:

  • Package quality metrics (see #58).
  • Number of versions available, and when they were released.
  • Latest stable version and latest beta version.
  • All of the metadata also displayed in the search results.

Package Quality Metrics

This will probably be the major push of the site post launch. Each package should have package quality metrics like the old CocoaPods site had.

Metrics should include things like:

  • Does it have an open source license?
  • Does it have a README of an appropriate length?
  • How many releases have been made, and when was the last release?
  • Does this project have tests?
  • If the project has CI, and if so extract the:
    • Is it building?
    • What's the code coverage and are tests passing?
  • If there are docs, where are they?

Please suggest additional metrics below.

Can I help transfer knowledge to this project somehow?

Hey! About a year ago I tried to make a site similar to this as an experiment with Serverless Swift. I don't work on it these days much but I was wondering if there's something from the work I've done that would be useful to this project as well.

The site is here: https://www.swiftpackage.directory/
The code here: https://github.com/bitwit/swift-package-directory

It runs a github scraper from 2014 looking for all repos that include swift. For the sake of not overloading it with repos that had added a Package.swift as an afterthought, I ignored any repos that also had cocoapods or carthage so that it focused on libraries with first class support for swiftPM. It's not perfect but it help build the database out a little bit and you could still add your own manually.

If there's anything from this project, UI or backend code that might be useful to incorporate in your project just let me know and I'm happy to help!

Promising libraries

For now you just index the ‘best’ lib, but what about the new ideas or the new lib that may do not meet the quality level you set but have a good potential to be a popular lib?

I know that the purpose of this site is to make our choice easy but maybe you can have a section for « trending » lib for example :)

Display authors of packages prominently in the search results

People deserve credit for their work! Display the main authors for a package. Interesting thing here is how do you determine the main authors for a package. This is my current thinking.

  • Count the number of commits from each author and then anyone with more than 5% of the total commits is an author
  • Anyone with less than 5 commits in total can never be listed as an author.
  • Order the list of authors from most commits to least.

This should show people who are actually contributing in a meaningful fashion, while also protecting against repositories that are brand new and so only have a very small number of commits where even fixing a typo might take you over the 5% threshold.

Validation script and default branches

/cc @leogdion

I wonder if there's an easy way to make the validation script work with default branches as there was another pull request today that came in with two packages that do not use master.

The GitHub API to get repository details does return a default_branch property which is probably the quickest and easiest way to figure out the correct raw URL to the Package.swift.

No rush for this, but I wanted to log it

Roll-out plan for issue-based package adding workflow

Roll-out plan for @Sherlouk’s new issue-based package adding workflow:

  • Merge #1612 but make no other changes.
  • We test it and see how it feels.
  • Rewrite sections of the README here and the “Add a Package” page on the main site.

After this, we could even look into auto-merging PRs when they pass CI. We don’t do any validation of packages over and above the CI checks and so we could speed that process up too.

Add searching by specific fields

For example, a search for "network swift:5" would bring back all packages that match the query "network" and support Swift 5.

Other examples that should work:

  • "platform:iOS,macOS" - all packages matching the listed platforms.
  • "author:Dave" - all packages where the author's name is Dave. 😂
  • "released:12mo" - all packages where the latest version has been released within the last 12 months.

Sorting and filtering

It would be fantastic to be able to see a list of ALL the packages if no search term is entered, as well as sorting and filtering them.

My specific use case is being able to see all Swift packages that vend executable products, which means that they will be installable via Mint https://github.com/yonaskolb/Mint
This would require a filter on the type of products a package has. From the work in #74 this information is already indexed.

Examples of sorting could be:

  • last updated
  • name
  • github stars
  • usage: how many times that packages is used in other packages

Examples of filters:

  • minimum swift version
  • supported platform (iOS, tvOS, watchOS, macOS)
  • minimum platform version
  • product type
  • has tagged versions
  • license type

If you want help with any of this, I'm happy to contribute

Add a Package Updates page

Add an "updates" page to the site (with an RSS feed, and a weekly/daily email list) showing all new packages added, and when new versions are added to existing packages.

Slightly related to #56, but should be tracked separately.

Automatically activate search field on page load

Every time I visit the site I expect to be able to start typing immediately, but instead I have to click to activate the search field before doing so.

It would probably help to copy similar behavior from crates.io, libraries.io, search.maven.org and others.

Packages that contain a period in name break validation

Was looking to add my package WMATA.swift to the Index. So I added the repo to packages.json

"https://github.com/emma-k-alexandra/WMATA.swift.git"

When running swift ./validate.swift I get the error

Warning: Using anonymous authentication -- may run into rate limiting issues

Processing package list ...
ERROR: url not found (404): https://raw.githubusercontent.com/emma-k-alexandra/WMATA/master/Package.swift

Looks like the .swift portion of the name is being removed inadvertently as the correct url does exist.

https://raw.githubusercontent.com/emma-k-alexandra/WMATA.swift/master/Package.swift

This style of naming is accepted by SwiftPM and Xcode.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.