I reviewed the file and directory structure of several web-based free software projects released in 2003–2004: the Koha 1.2.0 library management system, the MRBS 1.2.1 meeting room booking system, and the DSpace 1.2 content repository system. These were written in Perl, PHP, and Java, respectively.
Endpoint files are named using an action, optionally followed by an entity, following patterns such as search.pl, search.php, SimpleSearchServlet.java, updatebibitem.pl, edit_entry.php, and EditProfileServlet.java. These verbs or verb phrases may or may not align with user workflows. For example, Koha includes opac_reserve.pl, indicating it handles the reservation workflow via the Online Public Access Catalog (OPAC) API. However, there is no dedicated "borrow" endpoin…
I reviewed the file and directory structure of several web-based free software projects released in 2003–2004: the Koha 1.2.0 library management system, the MRBS 1.2.1 meeting room booking system, and the DSpace 1.2 content repository system. These were written in Perl, PHP, and Java, respectively.
Endpoint files are named using an action, optionally followed by an entity, following patterns such as search.pl, search.php, SimpleSearchServlet.java, updatebibitem.pl, edit_entry.php, and EditProfileServlet.java. These verbs or verb phrases may or may not align with user workflows. For example, Koha includes opac_reserve.pl, indicating it handles the reservation workflow via the Online Public Access Catalog (OPAC) API. However, there is no dedicated "borrow" endpoint file.
Each system is designed in a modular style. Koha has a Borrower.pm module that provides a reserveslist function; MRBS uses functions.inc with functions such as make_room_select_html; and DSpace’s Item.java includes methods like findAll. That said, they do not strictly follow a multi-tier architecture, for instance, database queries are not isolated into a dedicated data access layer. Still, DSpace, by using Servlets and JSPs, does establish a distinct presentation layer.
Because of the verb-based naming convention, files emphasize what they do rather than which architectural layer they belong to. This makes their purpose easy to understand at a glance.
However, this approach can make organization and testing more challenging. Logic, database queries, and presentation code are often mixed; sometimes not even separated into distinct functions.