On Sun, 2016-05-01 at 07:55 -0600, Joshua Olson wrote:
[…]
> 
> P.S. A discussion about their planned package manager:
> 
> https://github.com/ponylang/ponyc/issues/247
> 
> They like Go's approach, with dependencies listed in the source
> files, but
> with more consciousness of centralizing some of them in a
> configuration
> folder and predownloading for machines with limited network access.
> That's
> what I remember at least.

Go assumes use of Git, Mercurial or Bazaar with explicit statement of
the repository in the source code for all packages not in the standard
distribution. There is no curated central registry of packages, it is a
chaotic free-for-all. This approach has many positive aspects: it does
not have a central high-priest controlled (and therefore subject to
censorship and whim) location for packages; access to experimental
stuff is easy, and the same as anything else. It also has a lot of
problems of reproducible builds and so has led to a need for vendoring
other people's packages on a per project basis.

Python has pip and PyPI. Now whilst pip is getting better, PyPI is an
uncurated depository of all that people choose to put there. There is a
lot of good stuff, but a lot of total dross. But the system is central
and this means all packages are the same as far as source code is
concerned. In many ways the package management of Python is better for
source code than Go.

I have no knowledge of the Ruby Gem system.

Rust and Ceylon have taken a road that combines the Go way and the
Python way. Both have a central, curated repository, so there are the
problems of high priest bias for the content, and the separation of
experimental and published content. However this solved the problem of
reproducible builds without vendoring. Rust has Cargo, in the way that
Go has Go and D has Dub: a tool for managing dependencies and
compilation. This allows for accessing experimental repositories
instead of the central published repository.

Ceylon originally assumed use of an IDE such as Eclipse or  IntelliJ
IDEA and that handled the dependencies and compilation, but now there
is a good Gradle plugin that allows for command line usage.

Personally I find the Python, D, Rust, and Ceylon ways of managing
external packages much nicer than that of Go, but even Go is far
superior to the situation that is C and C++. And Fortran.  :-)

-- 
Russel.
=============================================================================
Dr Russel Winder      t: +44 20 7585 2200   voip: sip:[email protected]
41 Buckmaster Road    m: +44 7770 465 077   xmpp: [email protected]
London SW11 1EN, UK   w: www.russel.org.uk  skype: russel_winder

Attachment: signature.asc
Description: This is a digitally signed message part

------------------------------------------------------------------------------
Find and fix application performance issues faster with Applications Manager
Applications Manager provides deep performance insights into multiple tiers of
your business applications. It resolves application problems quickly and
reduces your MTTR. Get your free trial!
https://ad.doubleclick.net/ddm/clk/302982198;130105516;z
_______________________________________________
Chapel-developers mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/chapel-developers

Reply via email to