Agreed that we don't want to limit ourselves in terms of languages to use,
decisions like that should be made as a result of PR review.
> For instance, `db/admin.pl` was replaced with Go instead of Python
because we didn't want to add internet dependencies during installation and
wanted a single static binary to include in the rpm.
On the master branch but not in any release yet, we use a Python rewrite
for the Postinstall script (install/bin/_postinstall) (which works
according to both CDN in a Box and internal Comcast testing so far). No
Python dependency is required, other than `python(abi)`, which is already
satisfied by a stock CentOS install (checked CentOS 5 through 8). To verify
that you have that dependency satisfied, you can run:
rpm -q --whatprovides 'python(abi)'
It runs under Python 2.7 (CentOS 7) or Python 3.6+ (CentOS 8), using a
`python(abi)`-provided Python binary or a normal Python binary that is
already in the PATH, in case the host distro is not CentOS:
https://github.com/apache/trafficcontrol/blob/1dc6a0678a/traffic_ops/install/bin/_postinstall#L1-L2
So, that is not to say that we should converge on Python (or any other
language), just that, if a given script supports both Python 2.7 and Python
3.6+ and has no Python module dependencies, Python is another language,
besides Go, that we can use with no additional dependencies installed.
-Zach
On Wed, Apr 14, 2021 at 9:56 AM Rawlin Peters <[email protected]> wrote:
> I don't think we should really make any kind of language suggestions
> in the project. While I agree Python should be considered for scripts
> that are too complex for Bash, there may be other reasons where it
> would make more sense for it to be written in Go or some other
> compiled language. For instance, `db/admin.pl` was replaced with Go
> instead of Python because we didn't want to add internet dependencies
> during installation and wanted a single static binary to include in
> the rpm. For those reasons, Go was the best tool for the job, and we
> should always try to use the best tool for the job rather than
> requiring everyone to use a specific tool.
>
> - Rawlin
>
> On Wed, Apr 14, 2021 at 8:50 AM ocket 8888 <[email protected]> wrote:
> >
> > > What would that be for?
> >
> > Not much, to be honest. Just a suggestion. I also see I didn't mention
> this
> > originally, but the suggestion is also intended to specifically mention
> > Python as a good choice for when rewriting old scripts from Perl.
> >
> > > From the homepage of the project, you can see what languages are
> > leveraged and realize that by picking something else you run the risk of
> > having your PR rejected for unmaintainability
> >
> > Sort of. If you looked a month ago using that decision-making process
> you'd
> > maybe conclude you should write your scripts in Perl. If you look today,
> > you'll see:
> > -
> > - * Go 55.3% <https://github.com/apache/trafficcontrol/search?l=go>
> > - * <https://github.com/apache/trafficcontrol/search?l=go>JavaScript
> 12.2%
> > <https://github.com/apache/trafficcontrol/search?l=javascript>
> > <https://github.com/apache/trafficcontrol/search?l=java>
> > - * Java 9.0% <https://github.com/apache/trafficcontrol/search?l=java>
> > - * HTML 7.2% <https://github.com/apache/trafficcontrol/search?l=html>
> > - <https://github.com/apache/trafficcontrol/search?l=typescript>*
> TypeScript
> > 4.3% <https://github.com/apache/trafficcontrol/search?l=typescript>
> > - <https://github.com/apache/trafficcontrol/search?l=shell>* Shell 3.4%
> > <https://github.com/apache/trafficcontrol/search?l=shell>
> > * Other 8.6%
> > <https://github.com/apache/trafficcontrol/search?l=shell>
> >
> > So you wouldn't see Python anywhere on that list
> >
> > On Tue, Apr 13, 2021 at 11:35 AM Gray, Jonathan
> > <[email protected]> wrote:
> >
> > > What would that be for? The project should accept useful additions in
> any
> > > maintainable language already. From the homepage of the project, you
> can
> > > see what languages are leveraged and realize that by picking something
> else
> > > you run the risk of having your PR rejected for unmaintainability. In
> > > those cases, sharing links to the scripts are still useful on the
> mailing
> > > lists, but simply wouldn't be merged.
> > >
> > > Jonathan G
> > >
> > > On 4/13/21, 11:16 AM, "ocket 8888" <[email protected]> wrote:
> > >
> > > I was thinking about adding a section to CONTRIBUTING.md and/or the
> > > development docs that suggests Python as the language to use for
> > > scripts
> > > that are too complex for bash but don't need the performance
> afforded
> > > by a
> > > compiled language - any objections?
> > >
> > >
>