5 ms·
Why python for the client software if you obviously already have Go experience in-house? Using python means you have to run all this virtual-env crap in a bash
by NateDad 11y ago
Why python for the client software if you obviously already have Go experience in-house? Using python means you have to run all this virtual-env crap in a bash script, apt-get install a bunch of crap for setup and not support Windows. Seems like using a (nearly) dependency-free Go application for the client as well would have been a no brainer. Was it just a case of having more access to python devs, or were there other technical reasons? Anyone know? I bet this has been asked before, but not I'm turning anything up with google.
- mholt 11y agoI can't speak for them obviously, but here's a Go ACME client if you're looking for one: https://github.com/xenolf/lego https://github.com/xenolf/lego - we're using it in Caddy[1] to make HTTPS the default for websites. [1]: https://github.com/mholt/caddy/commits/letsencrypt https://github.com/mholt/caddy/commits/letsencrypt
- NateDad 11y agoWow, that's awesome. Nice work integrating this into caddy. Although, it makes me even more confused as to why they used python for the official client.
- est 11y ago> NateDad 28 minutes ago > Why python for the client software if you obviously already have Go experience in-house? Using python means you have to run all this virtual-env crap in a bash script, apt-get install a bunch of crap for setup and not support Windows. Seems like using (nearly) dependency-free Go application for the client as well would have been a no brainer. Was it just a case of having more access to python devs, or were there other technical reasons? Anyone know? I bet this has been asked before, but not turning anything up with google. wow what's going on here? Auto comment robot gone wrong?
- tlrobinson 11y agoThe client is written in Python, and the parent comment is ranting about it. https://github.com/letsencrypt/letsencrypt https://github.com/letsencrypt/letsencrypt
- bpicolo 11y agoThey provide docker packaging. So it's just as dep-free as Go. Not to mention python is on pretty much every platform in existence by default. If you're expecting this as a global binary like you would in go there's no reason you can't just "pip install letsencrypt"...
- NateDad 11y ago> They provide docker packaging. So it's just as dep-free as Go. ...except needing docker and everything running it in a docker container entails over a simple CLI. Also, it looks like they say "for god's sake don't pip install": Please do not use python setup.py install or ``sudo pip install`. Those mode of operation might corrupt your operating system and is not supported by the Let’s Encrypt team! https://letsencrypt.readthedocs.org/en/latest/using.html#installation-and-usage https://letsencrypt.readthedocs.org/en/latest/using.html#ins... > python is on pretty much every platform in existence by default. ....except Windows? Which also doesn't support docker.
- jhall1468 11y ago> ....except Windows? Which also doesn't support docker. So the actual problem you have is that you selected an operating system that has zero native support for interpreted languages, and you're mad that they didn't cater their software to you?
- kibibu 11y agoHey now, don't forget about .BAT files (Seriously, though, VBscript, JScript and VBA are natively supported through WSH on Windows)
- NateDad 11y agoI use Ubuntu, but I've been a Windows software developer in the past. I don't immediately discount that platform, because I know a ton of developers run Windows.
- bpicolo 11y ago
- bracewel 11y agoThe backend and client are both very large, very different projects that share a small crossover (the ACME protocol) and were written by two different teams. I can't speak exactly to why Python was chosen, but it should be noted this isn't intended to be the be-all-end-all in terms of clients. There are already a number of other independent clients that have been developed for various different purposes.
- mkj 11y agoMaybe the python client will run on more architectures without having to provide different binaries? (Just guessing)