7 ms·
Puppet has to be one of the worst peices of software I've ever used. The language is full of terrible ideas (lets get rid of loops since those confuse sysadmins
by nukemaster 4y ago
Puppet has to be one of the worst peices of software I've ever used. The language is full of terrible ideas (lets get rid of loops since those confuse sysadmins and make the only replacement require combinators via the goofy custom functions) and the documentation is full of broken links. Hira data always leaves you guessing at what a value actually is. It's like JS, you can make it work but it requires a ton of discipline and effort and is just ridiculous.
If you need to write unit tests for your deployment automation then you might be over complicating it.
- dapak 4y agoAs someone that has built and maintained several Puppet based infrastructure environments, I can get the frustration of Puppet when it is not configured correctly or left to its own devices. You absolutely need to keep Puppet up to date in your environment or it will steamroll you over time with pain/upgrades. However, I do need to correct you that Puppet does support loops and various other ways to munge data for quite a few years/versions now. In addition, _Hiera_ is not that bad once you understand the overall hierarchy of your infrastructure and it gets easier if you shift the default data store to something like HashiCorp Vault for storing secret data. We get away with not writing tests (we do heavy linting/checks though) in our Puppet infrastructure currently because everything has been documented for our development teams on best practices, trainings, and just communicating expectations well. There are some things that can sneak thru sure, but overall we've had #greatsuccess with just being open about we expect in our repos and being approachable to new committers for onboarding reasons. Puppet can be a beast to keep up to date I will say, but if you have a good plan in place it's really a wonderful tool for everyone involved.
- jerf 4y agoOne of the worst classes of software is the software whose architecture starts out with "Turing completeness is bad and hard and we'll just ban it", but it turns out the problem space needs it, whether you like it or not, and it ends up creeping back in one step at a time anyhow. Terraform kinda took a similar path, although the reigning champion of this style of software has to be HTML templating solutions. "Templates shouldn't have code in them! Ever! Any! Totally broken bad bad bad, and that's why I started this new template language that has no code constructs in it at all! Although, uh, we do kinda need to be able to loop through things like table rows from databases... and, well, we need if statements to highlight a particular result... and, well, we need full arithmetic support so we can use the modulo operator on those rows... and we need functions to factor out reusable functionality at the template layer... and oh crap that's all you need for Turing Completeness, isn't it? Well... uhh..." "Hi, I'm another developer and I'm starting a new template language because that previous one is broken and busted and written by dum dums because it has Turing completeness in it! Templates shouldn't have any code in them, ever! Although, uh, I do kinda need for loops for table rows from databases..."
- nukemaster 4y agoExactly! And once you bring back recursion in the new language you're without the tools and practices everyone has developed over the past half century. Everything is just so much harder. Really what we should be doing is generating data structures in <whatever> language rather than creating new languages.
- lamontcg 4y ago*cough* Chef *cough* Ruby *cough*
- polynomial 4y agoDoesn't React somewhat solve this, when used correctly? (Though it's entirely possible to make an even bigger mess with React.)
- tempodox 4y agoIsn't React Turing-complete?
- tehbeard 4y agoI think they mean it doesnt reinvent for/if like angular and vue do.. You just use the js primitives.
- polynomial 4y agoYes, exactly.
- jerf 4y agoI wasn't 100% sure enough about React to be sure, but based on my limited experience, that sounds correct, so I don't think it fits my example. I'm looking more at things like the Django template library, handlebars, Go HTML templates, etc. etc. And most especially things written with the idea that code shouldn't be in templates. Template languages that were always capable of running code, and were simply separate languages so designers don't have to learn a general-purpose programming language but can learn just this focused thing they need are obviously not what I mean. I've drunk from the "templates shouldn't have logic in them" well too, but I think as you scale up it just becomes impractical. And in that case, you're better off with a template that always knew it was going to have code in rather than a template language that was designed from the beginning to not have it, but had code sneak in through the back door anyhow. The first one will at least be designed. The second one... well....
- cassandratt 4y agoUnless they changed something significant since I used it last, the puppet language is Ruby. They didn't get rid of loops, they used functional iteration (recursion) so you don't have side effects; it's declarative. Ansible uses YAML to do the same, and it's really the only way I'm aware to get idempotent results. Your last sentence is true only for the most trivial of deployments, at which point, why are you using deployment automation in the first place, because it's a huge tech cost to invest in. If your deployments are that simple, why ass complexity by using a deployment automation and not just do a bin dump?
- deleted 4y ago[deleted]
- bastardoperator 4y agoPerforce has to be one of the worst pieces of software I've ever encountered. Every perforce shop I go to treats perforce like a disk or san with little to do with versioning or software development. Find me a perforce instance that doesn't have gigabytes or terabytes of binary data. You can't... it's become a catch all for everything. One shop I was at that's fairly well known had multiple fedora and centos RPM repos checked in. Compiled versions of Linux from version 2 to 5, silverlight exe's, pdf's, hundreds of excel files, what I had a hard time finding was actual source code. I couldn't think of two better pieces of software to go die together.