There are other projects aiming to create a framework for DNS updates. Please update this if you are aware of others. They are described here, along with what differentiates them from put-dns, and where there is common ground.
This looks very promising, is packaged for Debian, and has a CLI interface.
It has quite a range of providers, and a well defined interface to create new providers. It is written in Python, but its development system is very PIP focussed, and seems to be going down the poetry route, and into areas I do not know about. I looked at setting up a 'none' provider, following the developer instructions failed for me, and it looks as if it will depend on poetry to build, which may not end up buildable under Debian.
Its CLI interface also looks like
lexicon cloudflare create www.example.com TXT --name="_acme-challenge.www.example.com." --content="challenge token"
i.e. the first argument is the name of the DNS provider. This is not useful for de-coupling the creation of DNS records from specific providers, which is the goal of put-dns.
It might be possible, given a working and packagable development environment to create a 'config' provider, whose job would be to read the details of the provider, access details etc from a configuration file, turning the previous example into
lexicon config create www.example.com TXT --name="_acme-challenge.www.example.com." --content="challenge token"
where /etc/lexicon.conf would contain 'provider=cloudflare'
I will instead, for now at least, use it as a possible back end, called by put-dns, and keep an eye on it, as it looks promising.
This has an established set of Providers, and having Provider compatibility with octodns would be a very good thing.
It is targeted at people running much larger systems than put-dns, who want to set up all records for a zone, for system deployments such as Puppet or Chef.
put-dns is targeted at updating a single record for a single zone at each call, to simplify deploying services so that setting up DNS records could be migrated from being a task for an end user into a function performed by a software package. It would not be an efficient solution for mass DNS updates, and is not intended to be.
This connects large scale service providers with large scale DNS providers, to enable end users who are customers of both to manage their DNS more easily. Service Providers and DNS providers register templates which describe the types of requests they might make through the DNS service.
put-dns is targeted at organisations or individuals wanting to run some form of server, for example an email, or XMPP or Matrix server, all of which require DNS records to function, primarily for their own use. They should not have to register as a provider of services to make the necessary DNS changes easily. Companies reselling services to end users would make their customer experience simpler with domainconnect.
Tools to access specific providers
Some project provide access to a single DNS provider, and potentially could be used as back ends for put-dns
This is works with a single DNS provider, and is packaged for Debian