Live data from Hacker News

Modern CI is too complex and misdirected

gregoryszorc.com

181–184 of 184 posts

Re: Modern CI is too complex and misdirected

#181
post #62

Earlier quoted context omitted.

People hate on it, but do you know what language would be perfect these days? Easy shelling - check. Easily embeddable - check Easily sandboxable - check. Reasonably rich standard library - check. High level abstractions - check. If you're still guessing what language it is, it's Tcl. Good old Tcl. It's just that is syntax is moderately weird and the documentation available for it is so ancient and creaky that you ca…

How is the Windows support? One of my big needs for any general-purpose build system is that I can get a single build that works on both Windows and POSIX. Without using WSL. That said, you're right, at least at first blush, tcl is an attractive, if easy to forget, option.

The IDE/editor that ships with Python for Windows is built on Tkinter, which is a wrapper for Tcl/Tk. So it seems to work fine.

Re: Modern CI is too complex and misdirected

#182
post #176

Earlier quoted context omitted.

> Any language that runs in both environments with an environment abstraction that spans both? Do you have examples? This is harder to do than it would seem. You would need an on demand environment setup (a virtualenv and a lockfile?) or a homogeneous environment and some sort of RPC mechanism (transmit a jar and execute). I expect either to be possible, though I expect the required verbosity and rigor to impede sign…

>Do you have examples? This is harder to do than it would seem. Examples of cross platform code? There are millions. >You would need an on demand environment setup (a virtualenv and a lockfile?) or a homogeneous environment and some sort of RPC mechanism (transmit a jar and execute). I expect either to be possible, though I expect the required verbosity and rigor to impede significant adoption. Why need it be verbose…

We're not talking about a program that could run on any given platform (cross platform). We're talking about one program that is distributed across several machines in one workflow. That's a form of distributed (usually) heterogeneous computation. And typically with a somewhat dynamic execution plan. Mix in dynamic discovery of (or configuration of) executing machines and you have a lot of complexity to manage.

This is why I wanted to see some specific examples. I haven't seen much success in this space that is general purpose. The closest I have seen is "each step in the workflow is a black box implemented by a container", which is often pretty good, though it isn't a procedural script written in a well known language. And it does make assumptions about environment (i.e. usually Linux).

Re: Modern CI is too complex and misdirected

#183
post #9

This makes no sense to me. Modern build systems have reproducible results based on strict inputs. Modern CI/CD handles tasks that are not strictly reproducible. The continuous aspect also implies its integrated to source control. I guess I don't understand the post if its not just semantic word games based on sufficient use of the word sufficient. Maybe the point is to talk about how great Taskcluster is but the only…

Your CI pipeline builds and tests your project, which is the same thing your build system does, except they are each using different specifications of how to do that. The author argues this is a waste. I think by introducing continuous deployment you are changing the topic from what the author wrote (which strictly referred to CI).

This is indeed the key distinction - the author did strictly refer to CI, and for that their argument works, but that's essentially strawmanning as IMHO most people who are using CI don't care about "pure CI", they want (and get) CI/CD from "CI tools" so CI/CD is the actual thing that should be compared with build systems.

Re: Modern CI is too complex and misdirected

#184

I think that modern CI is actually too simple. They all boil down to "get me a Linux box and run a shell script". You can do anything with that, and there are a million different ways to do everything you could possibly want. But, it's easy to implement, and every feature request can be answered with "oh, well just apt-get install foobarbaz3 and run quuxblob to do that." A "too complex" system, would deeply integrate…

Our agency develops wordpress sites and shopify storefronts, managing multiple clients became cumbersome so we have decided to automate. I must admit that at first it was all black magic to us, we were using Jenkins and eventually were forced to hire someone proficient with YAML scripting. Even then, the automation processes caused some issues and it wasn't as straightforward as we expected. Until recently. Our new front-end hire told us about Buddy - suddenly CI/CD became so damn simple. I had no idea how easy it can be - predefined actions, easy to understand trigger conditions and env vars, automatically fetched dependencies, deploying only changes, team management etc. It all feels next gen. We were able to migrate our Jenkins processes that we've been building for months in roughly two days. If CI/CD is still some sort of wizardry for you, try Buddy - seriously, you'll thank me later :)
Post reply on HN