Release 0.9 ("Astrakhan")
Hello, long time no see. It's been over a year since our release, but we have fun stuff to share in our ninth release, named after the Russian city of Astrakhan.
For this release we have mainly focused on ease of use and ease of installation for new users. Recognizing that most users don't have their own servers, we've been working on making it easier to run Camlistore on cloud providers. Initially we've targeted the Google Cloud Platform and Scaleway, making sure Camlistore is well-adapted to those environments. For users wishing to use Google Cloud Platform, we now provide a web-based launcher for users to create their own Camlistore instances:
For users wishing to use Scaleway, see our early scaleway-camlistore image. Our Scaleway image does not yet use Scaleway's Object Storage service, however, and puts all Camlistore data on the same volume as the Camlistore code itself, potentially complicating upgrades. It should be considered an early preview.
Making Camlistore run well on cloud providers required two other
major features: the
blobpacked storage backend (for
latency and cost reasons) and HTTP/2 (for latency reasons).
blobpacked storage backend allows faster reading &
serving of files because it stores related blobs contiguously within
larger container blobs (which are also valid zip files) instead of
many small randomly dispersed blobs. See the blobpacked
The Go HTTP/2 implementation
was developed for both Camlistore and the Go standard library and will
be included in Go 1.6. Camlistore 0.9 only requires Go 1.5 but
includes a vendored copy of
Binary release, new in this release:
Please note that Go 1.5 or newer is now required for this release.
33 total commiters over 942 commits since Camlistore 0.8, including Aaron Bieber, Aaron Boodman, Andrew Gerrand, Antonin Amand, Bill Thiede, Brad Fitzpatrick, David Jack, Emil Hessman, Eric Drechsel, Fabian Reinartz, Fabian Wickborn, Felix Geller, Gina White, Govert Versluis, Jingguo Yao, Lindsey Simon, Mario Russo, Mathieu Lonjaret, Matthieu Rakotojaona, Patrick Mezard, Robert Kroeger, Salman Aljammaz, Salmān Aljammāz, Steven L. Speek, Tamás Gulácsi, Will Norris.
Changes in 0.9
- Restrict upload by WiFI SSID.
- Do not fetch file if already exists on local disk.
- New option for the
- Detect and warn when using the wrong GPG key.
- New option for the
initcommand can now initialize the client configuration automatically from the server (using the server’s
- New option for
- Use VolumeName on OS X.
- Detect and warn when outdated.
hookcommand to install and run git hooks. The only currently available hook is
pre-commit, which runs gofmt and checks for trailing whitespace.
- New option for
- New option for
- Launcher to help deploy Camlistore on Google Cloud Platform.
misc/docker/dock.go: new program to generate a docker image for camlistored, as well as binaries in isolation.
- New flag to generate build tags.
- Optional faster resizing with djpeg (if available).
- Support for tiff decoding.
- Use golang.org/x/image/draw for YCbCr resizing.
- New importer: pinboard.
- Improved MySQL connection handling (switch to
- New sorted implementation: LevelDB. It is now the default index storage in the server configuration that is generated when no configuration file exists.
- Out of order reindexing finished/fixed.
- When indexing from images: always try a small prefix buffer first, then read full file if needed.
- Defined a (large) limit on key and value size for all sorted implementations.
- The wholeRef of a file is always indexed, for faster file stats everywhere.
- RDBMS-specific placeholder replacements (and table name replacements) are now cached.
Misc performance changes, bug fixes, clean-ups, etc.
- make.go: improvements, refactoring, and cleanup.
- Migration to new third_parties:
- goexif: features and fixes, then contributed upstream.
- Server system status is constantly refreshed over websocket.
- Most of the JSON maps (e.g. for server responses) should be gone in favor of annotated structs.
- More robust localhost detection.
- The setup wizard was removed.
- Solaris: Camlistore should at least build.
- Darwin/386: deprecated, and user is warned about it when trying to build.
- Cache last blob read when reading files -> major performance optimization.
- File/chunks related changes, often optimizations with blobpacked in mind.
- New “Around” parameter for queries. Introduced to help web UI features.
- New “filename” search predicate.
blobpackedblobserver: keeps related blobs physically contiguous within zip files.
- Many Google Cloud Storage improvements, including using the official
google.golang.org/cloud/storagepackage almost everywhere.
- New SubFetcher interface.
- New BlobStreamer interface.
- New WholeRefFetcher interface.
- New memory blobserver.
- With the arrival of the new vendoring mechanism in Go 1.5 (on by default in Go 1.6), we started moving our vendored libraries from the
third_partydirectory to the
vendordirectory (as is the convention for the new mechanism). This means we do not have to modify the import path of the third party packages we use anymore.
- In addition, we also started moving a fair number of the Camlistore packages out of the camlistore.org namespace, to independent packages under the go4.org namespace. The goal is to make those packages more visible and usable as they can be useful to a larger audience.
- We are now using Travis CI, until we can rewrite our build bot based on the Go buildlet and trybots.
- New launcher to deploy Camlistore on Google Cloud: https://camlistore.org/launch.
- CONTRIBUTORS are generated from git log.
- Issue tracker has moved to github.
camwebbinary which runs the camlistore.org website has been updated to run easily on Google Compute Engine and auto-refresh from the Camlistore source tree. This means our website should be more easily updated going forward.
- Markdown is now supported, and some of the static
htmlcontent has been converted to it.
- New style: top search bar, pudgy navigation menu, vertical contextual actions sidebar.
- Simpler URL blobRef format:
- Some new features:
- Improved uploading: context aware (add to an existing set), duplicate detection/prevention, better drop area, show bytes transfered.
- Aspects: generic attributes editor for permanode aspect. New directory aspect.
- Sidebar: mass tagging/deleting.
- Selections state is saved accross navigation.
- Download: view original (non-resized) item.
- Videos rendering.
- Pages changes:
- Improved status page, with lots more info, and restart camlistored “button”.
- New help page: client tools configuration, and download links.
- New mobile auto-configuration page with QR code.
- New /debug/config page.
- Piggy menu shows server errors.
- Left/right navigation restored.
- Better layout on mobile.
- Cleaned out most of the non-React, legacy code.
- New package that provides a filesystem abstraction layer.