In use case lingo, the typical actors for our version control scenarios. The following list provides rough classifications for the type of individual users driving our requirements.
A developer inexperienced with version control, your typical documentation writer, or non-technical user (e.g. pointy-haired manager, administrative assistant, etc.). Able to make commits, but often lacking enough understanding of version control concepts to check out or switch to a branch. Sometimes does creative things like "delete large chunks of the repository" or "commit a merge conflict".
A software professional familiar with most of the basic concepts used with a typical version control system (e.g. repositories, workspaces, etc.), including change management (e.g. commit, revert, merge, patch, conflict resolution, etc.).
A version control master, usually involved in all important branching/merging activities, and often responsible for release engineering. Usually involved in auditing the changes in a branch, and process enforcement. Often proficient with multiple version control systems.
Other programs which invoke Subversion's functionality. These are often scripts wrapped around the command-line binaries (e.g. for SCM automation, integration, etc.), which are sometimes APIs in their own right. They're also often third party programs built on top of Subversion, integrated with its core libraries at the API level.