# Avoid packaging scripts folder

**URL:** <https://forum.djangoproject.com/t/avoid-packaging-scripts-folder/43296>\
**Category:** Django Internals\
**Created:** [October 29, 2025, 1:13am UTC](https://forum.djangoproject.com/t/avoid-packaging-scripts-folder/43296 "2025-10-29T01:13:35Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![jacobtylerwalls](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.djangoproject.com/jacobtylerwalls/32/30603_2.png) [@jacobtylerwalls](https://forum.djangoproject.com/u/jacobtylerwalls)\
**Post date:** [October 29, 2025, 1:13am UTC](https://forum.djangoproject.com/t/avoid-packaging-scripts-folder/43296/1 "2025-10-29T01:13:35Z")

</div>

Spotted during the last release that the `do_django_release.sh` script needs a fix to work on MacOS.

As I marched off to the [Trac wiki](https://code.djangoproject.com/wiki/ReleaseScript) to update it, I paused to wonder if we should be managing our essential scripts inside the django repo itself. You get code review, you avoid fiddling with local git excludes, etc.

Many projects I’ve worked on have a `/scripts` directory (following the Scripts To Rule Them All [zen-of-tooling](https://github.blog/engineering/scripts-to-rule-them-all/) from GitHub Engineering).

We do indeed have `/scripts` with one lonely script:

```auto
$ tree scripts     
scripts
└── manage_translations.py

1 directory, 1 file

```

… but we [package](https://github.com/django/django/blob/43933a1dca07047e95ec990d9289d0212668009e/MANIFEST.in#L14) it (which appears to be an [artifact](https://github.com/django/django/commit/22587230977e862a7e87723d538b5b5e48800494) of a time when it had a script called `rpm-install.sh`).

My plan is to:

- prune `scripts` from the manifest
- add `do_django_release.sh`

Thoughts? Wise? Mad? Meh?

---

<div class="post-metadata">

**Author:** ![timgraham](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.djangoproject.com/timgraham/32/11972_2.png) [@timgraham](https://forum.djangoproject.com/u/timgraham)\
**Post date:** [October 29, 2025, 6:29pm UTC](https://forum.djangoproject.com/t/avoid-packaging-scripts-folder/43296/2 "2025-10-29T18:29:48Z")

</div>

After a “security issue” was reported against `manage_translations.py`, I asked Claude and he agreed that the scripts directory doesn’t need to be included in the release package. However, the directory was still included after I removed `graft scripts` from `MANIFEST.in`, so I didn’t make any progress.

---

<div class="post-metadata">

**Author:** ![adamchainz](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.djangoproject.com/adamchainz/32/26_2.png) [@adamchainz](https://forum.djangoproject.com/u/adamchainz)\
**Post date:** [October 30, 2025, 1:24pm UTC](https://forum.djangoproject.com/t/avoid-packaging-scripts-folder/43296/3 "2025-10-30T13:24:46Z")

</div>

> [@jacobtylerwalls](#):
>
> Thoughts? Wise? Mad? Meh?

Both sound sensible to me.

---

<div class="post-metadata">

**Author:** ![nessita](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.djangoproject.com/nessita/32/12194_2.png) [@nessita](https://forum.djangoproject.com/u/nessita)\
**Post date:** [November 20, 2025, 5:00pm UTC](https://forum.djangoproject.com/t/avoid-packaging-scripts-folder/43296/4 "2025-11-20T17:00:51Z")

</div>

PR up: [Scripts to rule them all by nessita · Pull Request #20279 · django/django · GitHub](https://github.com/django/django/pull/20279)

@timgraham I credited you in the scripts that I understand you originally created. Would you please check if I got that right?

Thanks!
