Skip to main content

Mike Kreuzer

Scipio - a stab at replacing Carthage

September 11, 2015

I wrote Scipio, a tool to automate the download & building of Cocoa frameworks from GitHub. It's up on GitHub and PyPI now.

Scipio's written as an alternative to Carthage, which was itself created to be a decentralized alternative to Cocoapods. I love the idea of Carthage, but not its execution. Carthage was written in Swift, and not only Swift, but some of the most experimental bits of Swift. I love Swift. I love the idea of Carthage. So I wrote Scipio, in Python.

Python isn't going to get experimental again any time soon, and decoupling the language of this tool from the still rapidly changing language it's used to build means for (I hope) a lot less heartache.

I had thought about writing Scipio in Ruby. I know Ruby a lot better than I know Python, but while speed isn't everything it is something, and Ruby often falls down on speed. The Oktokit gem seems pretty fast. The idea of integrating Scipio with other tools like Fastlane was tempting too. I'm guessing that's all still probably possible, though users may be less keen. I wanted to learn something new too though, and that was decisive.

I also considered Node. I know, hardly stable, how does that fit. When I had to write my own streaming service to read files line by line, and after much trying when I could not get zip files to work at all I came to that conclusion as well and moved on.

In the brief time it took to write Scipio I learnt a lot about Python, and about the ins & outs of Python packages. I'm sure there's plenty in there so far that's not quite idiomatic Python. But it's all pretty straightforward, and hopefully stable, and I plan on writing some tests next to make sure. It's been fun too, which is not unimportant either.

Updated 15 September - unzipping files in Node works, the error was mine I think.