boto3 vs boto: Differences and History

This post summarizes the differences between boto3 and boto, the origins of "boto" itself, and the history of the AWS SDK for Python.

Introduction

I frequently use boto3, the AWS SDK for Python.

However, when I started working with AWS, "boto3" was already the standard. Since it has a "3" in its name, I wondered—was there an original boto or boto2 before it? For those familiar with AWS from the early days, the answer might be obvious, but I wasn't sure.

So, I decided to research the historical background of boto3 and summarize:

  • The differences between boto3 and boto
  • What happened to boto2
  • The origin of the name "boto"

Note: This article was translated from my original post.

The History of AWS SDK for Python

Differences Between boto3 and boto

A little research shows that boto existed as a separate library from boto3.

Looking into the differences between boto and boto3, I found an answer on Stack Overflow from the creator of boto:

python - What is the difference between the AWS boto and boto3 - Stack Overflow

A rough summary of his explanation:

  • boto was the official AWS Python SDK since 2006.
  • However, as AWS services grew, maintaining boto became increasingly difficult.
  • To address this, boto3 was developed with a fresh design:
    • It is based on botocore.
    • Low-level AWS interfaces are automatically generated.
    • This allows for a cleaner client-layer design.

So, boto had been in use for nearly a decade from 2006 until boto3's general availability in 2015. It makes sense that a redesign was needed over time.

Looking at GitHub star trends, this history becomes even clearer:

  • boto was originally a popular library.
  • Around 2015, boto3 and botocore appeared.
  • Since then, boto3's popularity has risen steadily, while boto has faded out.

GitHub stars over time for boto, boto3, and botocore

What Happened to boto2?

Now that the history of boto and boto3 makes sense, another question remains:
What happened to boto2?

To answer this, I examined how the term "boto2" was used in historical contexts.

The conclusion I arrived at: "boto2" refers to version 2 of boto.

Some documentation examples illustrate this:

The boto documentation explicitly states that it is for an older version (boto2) and recommends using boto3 instead:

You are viewing the documentation for an older version of boto (boto2).
boto: A Python interface to Amazon Web Services — boto v2.49.0

Similarly, boto3's migration guide refers to boto2 as version 2 of boto:

The rest of this document will describe specific common usage scenarios of Boto 2 code and how to accomplish the same tasks with Boto3.
Migrating from Boto 2.x - Boto3 1.36.25 documentation


Summarizing the historical transition:

  • boto has been in use since 2006.
  • Version 2 of boto was referred to as boto2.
  • In 2015, boto3 was released with a refreshed design.

That clears things up!

The Origin of "boto"

As for the origin of the name "boto," the boto3 README provides an explanation:

Boto (pronounced boh-toh) was named after the fresh water dolphin native to the Amazon river.
GitHub - boto/boto3: AWS SDK for Python

The name comes from the Amazon river dolphin (Inia geoffrensis), commonly known as "boto."

Additionally, in a GitHub issue, the creator of boto himself commented on the name's origin:

It was named after the fresh water dolphin native to the Amazon river. I wanted something short, unusual, and with at least some kind of connection to Amazon. Boto seemed to fit the bill 8^)
Why is the project named boto? · Issue #1023 · boto/boto3 · GitHub

Amazon river dolphin (boto) | Image from Wikipedia

Conclusion

This research summarizes the history of AWS SDK for Python—from the differences between boto3 and boto to the origins of "boto".

It started as a sudden curiosity, but I found it really interesting.

I hope this summary helps anyone else who has wondered the same thing.

[Related Articles]

en.bioerrorlog.work

References