Skip to main content

Pricing of good continuous integration service – reply to codeship

I've recently discovered nice continuous integration and continuous deployment service – codeship.io. It's not just another hosted Jenkins and it has some very interesting features (like integration with major code hosting services and development tools). But I won't probably use it except maybe for some pet projects of mine with no active development. Here are my reasons why:

  • Free plan is no good for even one project. 50 builds per month is not enough for anything: any project in active development usually needs several daily builds, even if not counting merges and feature branches. Commit early, commit often (and with CI it also means test often) is the usual approach of our days.
  • Cheapest paid plan costs $50 per month. Yes, it has unlimited almost everything, but fifty bucks is small, but significant amount of money and small business (or non-profit project) can usually utilize them better.
  • Setting up Jenkins, on the other hand, would cost you about $5/mo for hosting and couple of hours of sysadmin's work.
They also have larger plans and all paid plans are structured by number of concurrent builds, the only limited thing in the system. And since I was asked in twitter how would I structured pricing of such project, here follows my ideas about it:
  • "Pay as you go" pricing is good. AWS is very popular partially because of that. Plans with some amount of batteries included are good too, but it should not be mandatory. So if you just starting development and don't need much of testing or just ended active development and build/deploy only occasionally, you can pay a few bucks, but if you're active user, you pay more.
  • Free plans are not required if service is cheap. It's usually better to have ten customers paying $1 than to have one customer paying $10 and twenty free riders. I'm not saying that some free plans or time-limited free trials don't help to review and test, they do help, but good cheap service is better than bad free one.
  • Most costly resource for continuous integration service (apart from development cost) must be the build time (time of using build instances, if we're talking cloud, or or cpu time if we use some other virtual machines, like, on our own hardware). Maybe also storage, not quite sure. So it would be better to charge less for less time-consuming projects and more for more time-consuming. Number of concurrent builds, number of total builds are not that important: some projects may be compiled for hours, some are built and tested in a few seconds.
  • Maybe optional delayed builds could be a good way for saving for some users. Like AWS has "spot instances" to utilize unused resources. Delayed builds could either use spot instances or use reserved instances when no one else uses them. Because no everyone needs instant builds, I can imagine someone want, like, 30% discount for builds delayed up to one hour, for example.
  • No build time used – no money charged. Except maybe for something little for storage and other costs.
It's not like I'm going to start competition tomorrow, so my observations are mostly from user's viewpoint, but if I were starting it, I'd do it like I said and would probably take a significant market share (given the competitive technical qualities).

P.S. Also, small technical side note, I don't like their lack of periodic builds and ability to use custom git repositories (not on github or bitbucket) – some people just don't use github for various reasons (they claim to fix this soon though) and periodic builds might sometimes be helpful for "nightly" builds (there are projects so big that it's not worth it to build them more often anyway).

Popular posts from this blog

New horizons

I originally started this blog with ideas of reviewing devices and services and hoping that eventually if it gets popular enough somebody starts sending me stuff to review. A lot has changed since, I stopped obsessing that much about new gadgets and got into vintage electronics, many of things that were new and interesting a few years ago are a commodity now. I thought about reviewing the phone I finally got to refreshing last year (S23 Ultra is ok upgrade for Note 8, I'm glad that new ultras will finally have flat screen again, I might upgrade next year or so just for that) but I don't really feel like it or think it would mean much for the readers. Most of my vintage electronics is at home where I haven't been for a couple years and it's not something I can currently do something about, I touched a soldering iron like once or twice this year. I might post something work-related once I get the hang of what I'm actually doing there and have some rough ideas wen dece...

Huawei TalkBand B3 (active) review

Despite the fact that no manufacturer ever sent me any free gadget for review, I'm continuing doing it. Maybe I'll become a popular reviewer and they will change their mind. This post will be the first in this year's wearable gadget reviews. To put it into perspective for those who don't know me, I'm not a fitness person, like at all. I eat healthy, I walk kinda a lot, I do some aerobics and occasional cardio but that's it. I'm too lazy even for jogging. But, for some reason, I currently have not one, not too, but three fitness trackers on my wrists. Yeah, crazy, I know, but that was the only way to compare them properly. By the way, wearing TalkBand on the same wrist with anything else is super inconvenient, you can hardly take it out for calls. But more on that later. Why do I need any fitness tracker? Apart from knowing time, I like to know how active I'm during the day, and, more importantly, track my sleep. I have some issues in that department so...

Using virtualenv for more than Python projects

Sorry, it's not a complete instruction, just a thought. It occurred to me (some time ago) that Python's virtualenv is, essentially, a simplified version of system "prefix", it has bin, lib, include, and can have more stuff when needed. If you're willing to experiment (you'll probably have to set a few additional environment variables and/or build flags but that's no big deal), you can install various other tools there up until you have a complete system with its own compiler and complete set of libraries although it's much simpler to keep using system compiler and libraries only complimenting them when needed. Granted, prefixes are nothing new, people were using /opt (and their home directory) this way since the beginning of time. But with little help of virtualenv-wrapper or pyenv you can easily switch between them and isolate environments better. Binaries and stuff installed in virtualenv would override system defaults but only when venv is activat...