The Atmosphere Story
A brief history of the Meteor package manager
A time before packages
Back in the “old days”[1] when Meteor first appeared, despite listing “smart packages” as a core feature of the framework, there was actually no easy way to include a custom package in your app. The packages/
directory didn’t exist, nor the PACKAGE_DIRS
environment variable. There was no documentation of the package API.
If you wanted to write your own package, as many intrepid developers did, the only way to include it in your app was to clone the Meteor repository, place your package there, and manually run your app using the checked out version.
It was a pain, it didn’t scale to more than one app, and it was hard to develop applications with others because it required you to have a version of Meteor modified in the same way. In short, it sucked.
The dawn of Meteorite
Nevertheless, people did start writing packages, and a few even made it to GitHub. However, it wasn’t getting any easier to use them. Until Mike Bannister came along.
A prominent member of the Meteor community, Mike took it on himself to improve the situation. His Herculean efforts and painstaking work with node filesystem libraries resulted in the first version of mrt
– a.k.a Meteorite. This tool automated the process of checking out a custom Meteor version and attaching a set of checked out packages to it.
Soon afterwards I joined in the efforts and we quickly improved the tool to deal with dependencies between packages, submodules (for “wrapper” packages) and many other conveniences.
Meteorite and the birth of Atmosphere
The tool was eminently usable, and packages started to appear on GitHub profiles everywhere. But there was no easy way to find them or add them to your project without manually twiddling with your smart.json
.
The obvious next step was to create a repository where people could discover packages. Thus Atmosphere was born. It consisted of two parts:
- A set of publications and methods that Meteorite could use to
add
andpublish
packages, - A website that developers could use to browse & discover packages.
The initial release of atmosphere was pretty simple, but it worked.
The website had humble beginnings. We had yet to exceed a hundred packages for the first few months so a flat list of all packages made sense. Search wasn’t really needed because the list was so short. It was a perfect tool for simpler times.
Merging plans, fallow times
Talks soon began of merging support for third-party packages and a repository into Meteor core. The Meteor team were keen to make it happen, but given the fact that the Meteorite approach “worked OK”, it fell down in the list of priorities.
Meanwhile Mike moved on to other things, and I was content to idle Atmosphere and Meteorite while awaiting the “upcoming merge”. In our stead, community contributors pushed on–especially Tarang Patel who added search and GitHub Readmes to the site.
Growing Pains
Still, even as things stagnated a little, developers were happy. Creating and sharing of packages flourished with more than 1,000 added to the ecosystem.
Unfortunately, the site was never built for that many packages. Displaying all the packages on first render on the front page had some pretty serious performance implications for users and the Meteor servers. Arunoda Susiripala‘s Fast Render package was invaluable, but we still encountered server outages and load issues.
Moreover, there was another discovery problem that wasn’t addressed. Although you could search for packages, there was no way to order packages or discern which were active and worth using.
Atmosphere 2.0
Something needed to be done. We (Percolate) decided to step up and build a new Atmosphere — a modern, fast, well engineered package manager to accompany the framework of the future. After much thought and work we crafted the Atmosphere 2.0 site to address the challenges of performance and discovery. Although it’s by no means a finished product, we think it’s a more effective way to discover the packages you need build your project.
The future
Our overriding goal for Atmosphere is to make it easier to find good packages. We selected the features on our roadmap to help us achieve this goal. We hope our small contribution helps great packages find an audience, resulting in projects that change the world. Join us for the ride.
Keep track of Atmosphere progress by signing up to the mailing list and following @atmospherejs on twitter.
[1] Yes we are talking as far back as 2012.
Stepping through a book on CSS and HTML now, and then on to Javascript and Meteor. Did find the tutorial at meteor.com to be a good introduction.
Download count in atmosphere is not reactive, is that means MeteorJS can’t handle like a big user/data base ?
Was atmosphere built with Meteor?
Yes, Atmosphere was built with Meteor.
If it were me, I’d probably work in a Linux VM of some kind. VirtualBox is free and has worked well for me in the past. Personally I hate using Windows command prompt so much that I would probably want one for programming purposes on Windows even if my tools were supported.
Fantastic work guys, thank you for such important resource!
Actually, Atmosphere is such big deal for Meteor that it could make the success or failure of the entire Meteor project. In my experience as Meteor beginner, Atmosphere is my first resource to install and play with Meteor features. On the other side, ask why some developer left Ruby on Rails as soon as the gems system became unmanageable.
What about simple filters like “compatibily version”? I don’t want to see versions that are not compatible with my environment. Also, how can I choose between so many different “accounts” without drilling down each of them? To see if there are recent updates I have to click on every single package.
hi
is there any open source API available for atmospherejs, i already did one by crawling
https://ww2.meteor.com/spreadjs/linto
i want to do some apolitical package based on that
sorry “apolitical” is a mistake in my android keyboard
We don’t have a public API at the time but it seems like you’re gotten pretty far by crawling! Our previous ddp pub was hosed and caused some performance headaches.
Very interesting story.. In the advantage of the opportunity I would thank You for such beautiful tool :) gr8 job!
My biggest problem is that I use Windows and mrt doesn’t work under Windows.
It’s doable but not funny or comfortable.
i used to drive by a bar (forget the name) who’s sign read “beer, wings, spirits”. for some reason that amused me enough to pay homage. (;
That’s very interesting to read about all these events those happened to Atmosphere. What is the origin of “Beer. Wings. Smart Packages” moto?