|
Developing software used to mean writing it. Now it means assembling parts built in another part of the world and open source components found on the web. In effect, developers have become linked in a global network of supply and demand. In theory, this trend should transform the economics of turning ideas into software by driving down the cost of creating products. In practice, development organizations are so inefficient at working with externally sourced components that the costs of assembling them can outweigh the benefits of not having to write them. |
Cloudsmith provides infrastructure that developers need to work efficiently within this new component-based software economy. Our web services provide new and better ways of sharing, finding and consuming software across a cloud of parts and projects. |
|
At one level, the problem is just logistics—the developer effort required to move code from point A to point B on Internet. Software components are made up of lots of other components, often from different open source projects. Making sure you have the right configuration of parts means circling through unrelated project sites, reading documentation, resolving inconsistencies and downloading massive files. Days of work, for example, are needed to package an open source Java/web stack, when common sense suggests it should take just hours. At another level, the problem is that developers lack efficient ways to coordinate how they consume and produce these components. For example, when you include someone else's component in your work, you don't know how it will fit until you put all the parts together. And when you publish a new version of a component, you have no idea how that will affect what others have built with the old version. |
A commercial distro provider (Red Hat, for instance) is usually there to keep things working where millions of users need the exact same thing, such as a Linux operating system or Java application server. But in most cases, users want to use some configuration of parts that is relatively unique. In these cases, there is little opportunity for a commercial support vendor, so each user organization is essentially on its own. One way of describing what Cloudsmith does is to say we make it economically feasible to support a configuration of which you are the only user. Put another way, we help every user to be its own "Red Hat." |
|
We help in two ways. First, we reduce the friction of assembling the components, making the logistics of sharing software configurations among developers simpler. |
Second, we aggregate the efforts of developers in creating and maintaining software configurations, helping communities of developers create new products and support existing products without a commercial vendor. |
|
We use the idea of a 'virtual' distro to simplify the logistics of assembling components. It's a simple concept, but it makes a big difference. 'Distro' usually means a set of software components (mostly open source)from a bunch of different (open source) projects assembled into an integrated product. The conventional distro is 'physical,' meaning all the bits from all the different places have been combined into a single physical package you download from one central place (usually the publisher's download site). Assembling all those bits centrally isn't particularly efficient, especially since they often get taken apart and reassembled a different way by the user on the other end. In many cases, the effort required to package up the distro actually discourages the would-be publisher from publishing it in the first place. |
The Cloudsmith 'virtual' distro service lets the publisher specify which components make up the distro and where they can be found, and provides a mechanism for dynamically downloading and assembling them directly from their original locations. When the consumer clicks on a single URL representing the distro, it appears to just 'materialize' directly from the cloud. This lets you share nearly any software idea as a working product, with minimal effort. For example, you can take a demo or prototype, publish it as a virtual distro and then include its Cloudlink in your blog. When other developers want to try it, they just click on the link and get it. Your idea is now an immediately consumable stream of code. |
|
The key challenge in sharing software configurations is knowing how the pieces fit together. We help by aggregating structural information about the configurations they publish into a shared map that helps them create new configurations and supporting existing ones. Assembling components is more complicated than just snapping them together, partly because you may have little idea how they themselves were assembled. In many cases, when you look inside, all you see is a long list of files, with no real understanding of their complex relationships and dependencies. It is hard to know what you need to change if things don't work, and what will break if you change something. This makes it very resource-intensive to assemble those components into larger works. Similarly, when you use products created by others, you do so at your own risk, because it may be hard to update or fix them without their direct support. Commercial distro providers make a major investment in understanding how their component bases fit together. Some of the effort is unavoidable, particularly testing whether the product you are maintaining still does what you expect it to do. |
But a large part consists of lots of small steps, such as documenting the structure of what you assembled in a way that allows others to build on it. This is the problem that the Cloudsmith map service addresses. The map exposes the structure of every configuration it contains, whether published by a Cloudsmith user or discovered by the service on the web, in a uniform way, allowing developers to navigate from a given component, to the components it depends on and those that depend on it. When you create and share a distro, other users see this structure, which means they can easily reconfigure and change your distro either to use it in another work or to maintain it. So, for example, you can use Cloudsmith to package a new distro in minutes, without leaving our site. You simply browse through our map, adding the components you want to include to a list. Then you convert that list into a new virtual distro, which you can publish as a Cloudlink in your blog. |
|
Nearly any developer who works with components and collaborates with other developers will benefit from Cloudsmith over time. Initially, however, our focus is on developers who are Java and Eclipse-centric. Following are a few basic scenarios where Cloudsmith can help:
|
|