Dev Docs
Netatalk Project Developer Docs
This wiki branch contains documentation and knowledge about the Netatalk project for developers - a Free and Open Source implementation of the Apple Filing Protocol (AFP).
These developer docs are intended to supplement the main user docs (https://netatalk.io/manual/en/) to simplify and encourage contributions to Netatalk.
These developer docs include many Mermaid diagrams to make understanding easier and ease the learning curve (hopefully).
What is Netatalk?
Netatalk is a robust, lightweight and fast AFP 3.4 server implementation that enables Unix/Linux systems to act as native file servers for Mac clients, providing seamless integration with macOS features like Time Machine, Spotlight, and Bonjour service discovery.
Developer Docs Structure
- Navigation index and table of contents
- Core library functions and interfaces
- High-level system architecture
- Component interactions and data flow
- Network protocol implementation
- AFP daemon implementation
- AppleTalk protocol support
- User Authentication Modules (UAM)
- CNID database system
- Master daemon and service coordination
- Initial setup and configuration
- Volume configuration reference
- Coding standards and development practices
- High-performance network tuning
- Frequently encountered problems and solutions
Source Code Organization
The main Netatalk implementation resides in these key directories:
libatalk/- Core AFP library implementation and utility functionsetc/afpd/- AFP daemon (afpd) source code and protocol handlersetc/netatalk/- Master daemon and service managementetc/cnid_dbd/- CNID database daemon for file ID managementetc/uams/- User Authentication Modules (UAM) implementationsinclude/atalk/- Public header files and API definitionsmeson.build- Build system configuration and dependency managementtest/- Test suite and benchmarking utilitiescontrib/- Additional scripts and integration tools
Key Features
-
AFP 3.4 Protocol Support - Full implementation with modern macOS compatibility Implementation:
etc/afpd/afp_*.c,libatalk/dsi/,include/atalk/afp.h -
AppleTalk Legacy Support - Maintains compatibility with classic Mac systems Implementation:
libatalk/atp/,libatalk/asp/,include/atalk/atp.h,include/atalk/asp.h -
Spotlight Integration - Search functionality via GNOME Tracker/TinySPARQL Implementation:
etc/afpd/spotlight*.c,libatalk/util/server_ipc.c -
Time Machine Support - Native macOS backup destination Implementation:
etc/afpd/volume.c,etc/afpd/enumerate.c,etc/afpd/afp_options.c -
Advanced Authentication - Multiple UAM modules including DHX, DHX2, PAM, Kerberos Implementation:
etc/uams/,etc/afpd/auth.c,include/atalk/uam.h -
High Performance - Optimized for large file transfers and concurrent connections Implementation:
libatalk/dsi/dsi_tcp.c,etc/afpd/fork.c,etc/afpd/file.c -
Cross-Platform - Supports Linux, BSD variants, macOS, and Solaris Implementation:
meson.build,include/atalk/compat.h,libatalk/compat/
Project Information
-
License: GNU General Public License v2 with portions BSD or MIT License Files:
COPYING,COPYRIGHT, header comments in source files -
Language: C11 with GCC extensions Standards Compliance:
meson.build(c_std setting) -
Build System: Meson (migrated from Autotools) Build Configuration:
meson.build,meson_options.txt,subprojects/ -
Repository: https://github.com/Netatalk/netatalk
- Website: https://netatalk.io
- Documentation: https://netatalk.io/manual/en/
Doc Sources:
doc/manual/,doc/manpages/,doc/developer/,README.md
Community
- GitHub Discussions: https://github.com/Netatalk/netatalk/discussions
- Mailing Lists: netatalk-admins, netatalk-devel
- Community Forums: TinkerDifferent, 68kmla, E-Maculation
Footnotes
This is a mirror of the Netatalk GitHub Wiki
Last updated 2025-12-07