A namespace is a unique name which groups certain things (like procedures, constants, variables, templates) together.

A namespace is used to uniquely identify one or more names from other similar names of different objects, groups or the namespace in general. Namespace makes it possible to distinguish objects with similar names but different origins. — Techopedia

All exported symbols (procedures, constants and variables) need to be unique in the system and thus needs to be in a namespace. But as RPG does not support the namespace concept we have to make those symbols unique by prefixing them with a namespace, f. e. arraylist_create. There could have been dozens of create procedures. But by putting a namespace in front of the procedure name it will be unique in the system.

If a program or service program is made up of multiple modules then I also prefix the exported symbols with a subnamespace, f. e. stream_emitter_int where stream is the namespace and emitter is the subnamespace.

I try to use whole words for namespaces. This makes it easier to read and remember.