submit to reddit
Travis Oliphant

Binstar is Out of Beta, Now Available for Everyone

I am very excited to announce the public availability of Binstar. Binstar is a free service for hosting public packages for pip and conda with support for R, npm, and other formats in the near future. Private packages can also be hosted for a nominal monthly subscription. An on-premise version of Binstar is also available as part of Anaconda Server.

Successful software development means software deployment. Any software that is deployed once is typically deployed several times. Managing the workflow of rapid development and software deployment when so many pieces of rapidly-developed software have dependencies that are themselves rapidly changing can be very painful.

A side-effect of the rapidly advancing wave of open-source software is that this deployment pain is increasing. Quite often the developer who benefits from the rapid development made possible by the new dependencies leaves a wake of maintenance and deployment nightmares for others in the organization (or their hoped-for user-base) to help fix. A big part of developing SciPy and NumPy, for example, was actually spending a lot of time making them easier to install. I’m grateful for the successful adoption of these tools. This success has led me personally on a path that has culminated in the creation of both conda and now Binstar. Both of these freely available tools can provide enormous benefit to those struggling to manage the software development and deployment life-cycles. (I’ve written about my personal journey through software development and deployment elsewhere.)

This is why I am very excited to promote the public availability of Binstar. I see this free web-service as a part of helping to solve those challenges. Binstar has been in beta mode for the past 10 months and has seen significant internal use at Continuum Analytics and our beta users. Binstar provides a fundamental opportunity to extend the boon that available binary components has provided to the Unix world to the Windows platform – especially for Python, R, Node, Ruby, and other open-source communities.

While Binstar and conda are highly optimized to work very well together to create an unparalleled solution for continuous integration and deployment, Binstar also supports packages from other package managers such as pip and R. Support for rpm, npm, gem, and other platform-or-language specific package managers is straightforward depending on interest. Email us if you have particular requests.

Package Everything

Binstar simplifies installation headaches by providing a way to host easily-accessible package repositories for any kind of installable package, starting with packages compatible with “pip install” and “conda install“. Over the years, it has been clear that installation headaches diminish greatly when binary installable packages are available for the user platform.

When I started releasing software on the internet in 1998, it was possible to just provide a “tarball” with the source-code and some instructions, and that was it. As more and more software has become available from more and more people and more and more people are wanting to use that software, that style of “integrate-everything-yourself” is no longer feasible. In a corporate setting requiring everyone to do a lot of work to deploy software doesn’t make any sense at all. Deployment should be simple and able to be automated regardless of the number of dependencies.

While sometimes we may think of a “platform” as a piece of hardware and an operating system version, a platform is really your collection of dependencies for whatever application stack you are concerned with. As a result, the number of platforms is as numerous as the number of possible end-user entry-points.

Binstar makes it easy to freely host all the packages for every chain of dependencies you can imagine and make those packages available to anyone on the Internet.

Package Namespaces

Binstar can be used with both pypi (pip) and conda packages. Those who use conda packages will love being able to have their own package namespace to upload their builds. These binary packages will not conflict with anyone else’s built packages.

Those who build packages ready for a “pip install” command will also appreciate being able to upload pypi-like packages into their own package namespace. Your packages will not conflict with any other user’s packages on Binstar.

R-users can upload their R-packages to Binstar even if CRAN will not accept them due to lack of support for a particular platform, for example.

Having your own package namespace which others can easily install from allows for many possibilites for robust Continuous Integration, testing of new features, and easy deployment instructions – even for the most complicated dependency chain.

Conda has built in support to recognize binstar.org as a place to retrieve packages. To install a package from a user’s namespace using conda, add the channel to your list of repositories – or use the “-c” flag with the user’s name

conda install -c user-name package-name

Channels

Channels are an important Binstar concept and we use them extensively at Continuum. Channels allow you to organize your available packages into different groupings. You can “tag” packages with channels so that they will be available to users that look at that channel. You can think of channels as “directories of packages” – except packages can be in multiple directories at the same time.

Installing from a particular channel is simple. For conda, you simply add the channel to your list of repositories – or use the “-c” flag with the channel name.

conda install -c user-name/channel/channel-name package-name

or to always search that channel

conda config --add user-name/channel/channel-name

As shown previously, you can also just use the user-name, which then defaults to the “main” channel.

You can lock channels to prevent them from being changed which would allow you to ensure that anyone can point to your particular channel and get exactly what they need to run your application or script.

Binstar keeps track of everything that happens in a channel so you can easily review what changes were made to a channel that you are sending to others as the definitive install point for your software.

Growing Support For All Package Managers

Currently Binstar supports both pip and conda as well as nascent support for R’s native package format. Other package formats can be supported farily quickly depending on demand and available resources. On the roadmap is support for rpm, dpkg, npm, gem, cpan, and more.

Public packages are free (and will always be free)

Our goal with Binstar is to get people to “package everything” for every possible software platform. High level languages make software development fast, but they can also complicate software delivery. Binstar.org fills the gap between source development, and deployment on a package level. Packages that you give away publicly will always be free to host on Binstar (with some soft limits on the total size of the packages you can host).

What you can pay for

I’ve become aware over the past few months that when some people get free things backed by a company they want to know “the catch”. As someone who has grown up in an open source and scientific culture of giving away as much as I could and who is building a company that gives away as much as we can, it has been awakening to understand this reaction, and respond to it. As a company we do sell things which you can choose to buy or not. We strive to message clearly about what we are selling and what is free. For Binstar, we are selling more space, private packages, and eventual access to a cross-platform build service for Continuous Integration. We may decide to offer more premium things in the future, but we will never charge for free packages that fall under a reasonable size limit. If you never need the premium things we offer through Binstar, then you can keep using Binstar for free and help people quickly deploy and update the software you have written by “packaging everything”.

On the other hand, if you do need more space or want to share private packages either as an individual or an organization you can upgrade your plan and start enjoying those benefits immediately. Access to the Binstar build service will eventually be available to organization plans only. You will need to contact us if you want early access.

For those who don’t want to put their private packages in a protected, but still public cloud, you can also buy an “on-premise” version of binstar to run inside your organization as part of Continuum’s Anaconda Server product.

Binstar client

To use Binstar, you can build a package with “conda build” and it will by default ask you if you want to upload your package to Binstar. You can install the Binstar command line client using “conda install binstar” or “pip install binstar” if you are not yet using conda.

binstar -h

will provide help, but the basic commands you will need to use the command-line client to manage your packages on binstar are:

binstar login
binstar register
binstar upload
binstar remove
binstar logout

You can get command-line help for each of these commands using “-h” after entering the corresponding command at a terminal prompt.

The combination of conda and Binstar is something we have become quite dependent on here at Continuum for all our development and deployment needs. We are excited to share these innovations with everyone, and we welcome your feedback. Go ahead and sign up for a free account at http://binstar.org and start uploading packages today. If you like what you see, and have private packages to share with others, sign up for a premium account or contact us at sales@continuum.io if you’d like to get Binstar deployed internally to your organization as part of Anaconda Server.

Tags: Anaconda Anaconda Server Binstar Packaging
submit to reddit
comments powered by Disqus