# external packages hosted elsewhere:
# - Thrift target language
# - package manager name
# - link to package (URL) to most recent version
# - package control file (git source tree link)
# - package maintainer name
# - remarks
  - [ "(all)",       "Docker",        "https://hub.docker.com/_/thrift/",                                    "Dockerfile",                 "",                          "thrift compiler in /usr/local/bin/thrift" ]
  - [ "ActionScript","Maven",         "https://repository.apache.org/#nexus-search;quick~libthrift-as3",     "lib/as3/build.xml",          "jking",                     "" ]
  - [ "C (glib)",    "",              "",                                                                    "",                           "",                          "language has no package manager" ]
  - [ "C++",         "",              "",                                                                    "",                           "",                          "see THRIFT-4800" ]
  - [ "C#",          "NuGet",         "https://www.nuget.org/packages/ApacheThrift",                         "ApacheThrift.nuspec",        "jfarrell, codesf, jking",   "multi-framework nupkg for csharp and netcore" ]
  - [ "Cocoa",       "",              "",                                                                    "",                           "",                          "deprecated on 0.12.0 - use swift" ]
  - [ "Common LISP", "",              "",                                                                    "",                           "",                          "no official ASF package available" ]
  - [ "D",           "dub",           "https://code.dlang.org/packages/apache-thrift",                       "dub.json",                   "jking",                     "" ]
  - [ "Dart",        "Pub",           "https://pub.dartlang.org/packages/thrift",                            "lib/dart/pubspec.yaml",      "jking",                     "" ]
  - [ ".NET Standard", "NuGet",       "https://www.nuget.org/packages/ApacheThrift",                         "ApacheThrift.nuspec",        "jfarrell, codesf, jking",   "multi-framework nupkg for csharp and netcore" ]
  - [ "Erlang",      "Hex PM",        "https://hex.pm/packages?search=thrift&sort=downloads",                "",                           "",                          "no official ASF package available" ]
  - [ "Haskell",     "Hackage",       "https://hackage.haskell.org/package/thrift",                          "lib/hs/thrift.cabal",        "jfarrell, clavoie, jking",  "" ]
  - [ "Haxe",        "Haxelib",       "",                                                                    "lib/haxe/haxelib.json",      "jensg",                          "no package uploaded - see THRIFT-3036" ]
  - [ "Go",          "",              "",                                                                    "",                           "",                          "no official ASF package available" ]
  - [ "Java",        "Maven",         "https://repository.apache.org/#nexus-search;quick~org.apache.thrift", "lib/java/gradle.properties", "jking",                     "" ]
  - [ "JavaScript",  "Bower",         "https://libraries.io/bower/thrift",                                   "bower.json",                 "",                          "" ]
  - [ "Lua",         "LuaRocks",      "https://luarocks.org/modules/drauschenbach/thrift",                   "",                           "",                          "not official - stale at 0.10.0 - see THRIFT-4708" ]
  - [ "Node.js",     "npm",           "https://www.npmjs.com/package/thrift",                                "package.json",               "jfarrell, wadey, jking",    "" ]
  - [ "OCaml",       "opam",          "https://opam.ocaml.org/packages/thrift/",                             "lib/ocaml/opam",             "",                          "stale at 0.9.0 (community provided) - see THRIFT-4706" ]
  - [ "Perl",        "CPAN",          "https://metacpan.org/release/Thrift",                                 "lib/perl/Makefile.PL",       "jking",                     "" ]
  - [ "PHP",         "Packagist",     "https://packagist.org/packages/apache/thrift",                        "composer.json",              "jfarrell, bufferoverflow, jking",  "" ]
  - [ "Python",      "pypi",          "https://pypi.python.org/pypi/thrift",                                 "lib/py/setup.py",            "jfarrell",                  "stale at 0.11.0 - see THRIFT-4687" ]
  - [ "Ruby",        "Ruby Gem",      "https://rubygems.org/gems/thrift",                                    "lib/rb/Gemfile",             "jfarrell",                  "stale at 0.11.0 - see THRIFT-4707" ]
  - [ "Rust",        "Cargo",         "https://crates.io/crates/thrift",                                     "lib/rs/cargo.toml",          "all thrift committers",     "" ]
  - [ "Smalltalk",   "",              "",                                                                    "",                           "",                          "no official ASF package available" ]
  - [ "Swift",       "",              "",                                                                    "",                           "",                          "no official ASF package available" ]

