Nmap: What the SVN Mirror on GitHub Actually Gives You
Nmap - the Network Mapper. Github mirror of official SVN repository.
At a glance
- What is it?
- Nmap is a C network mapper with a Lua scripting engine and a custom licence that is not GPLv2. The GitHub repository is a mirror of the official SVN tree, which changes what you can expect from pull requests.
- Who is it for?
- Adopt Nmap if you need a scriptable network mapper and can accept the custom licence, which permits free end-user use but is not GPLv2 and is not compatible with it. Do not adopt it if you need to redistribute it inside a product without a commercial licence, or if you expect a normal GitHub pull-request workflow, because this repository is described as a mirror of an SVN tree and points contributors at HACKING and CONTRIBUTING.md instead.
- Can I use it commercially?
- Check first. The repository uses a licence we do not classify automatically, so read its LICENSE file before any commercial use.
- Is it still maintained?
- Yes. The repository last received commits 1 day ago.
- What is it written in?
- Mainly C, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on September 15, 2026, and from our analysis. They are not legal advice.
DEEP OPEN-SOURCE ANALYSIS
The Problem Nmap Addresses and the Audience It Assumes
Nmap maps networks. The README describes it as the Network Mapper and gives a single starting command, nmap scanme.nmap.org, which is enough to see the shape of the tool: you point it at a host or a range and it reports what is reachable and what is listening. The repository topics list the pieces that make that work: asynchronous scanning, libpcap, pcre, socket handling, and service discovery. The audience is therefore anyone who needs an inventory of live hosts and open services rather than a one-off connectivity check. The topics also list netcat and machine-learning, which indicates the project ships more than a port scanner. Zenmap is named in the README as an included graphical front-end for users who prefer not to work from the shell. The licence section frames the second audience explicitly: end users get free usage, while companies that want to redistribute Nmap technology inside their own products are directed to a commercial licence. That split shapes who can adopt the code and who can only run it.
How the Scanner Is Put Together
The language is C, with C++ and Lua also listed among the topics, and the build is the classic autotools sequence. The architecture implied by the topic list is a core scanner that talks to the network through libpcap and raw sockets, with pcre available for pattern matching and Lua for scripting. The asynchronous topic matters here: a scanner that probes many hosts at once cannot block on a single slow target, so the design has to keep multiple probes in flight. Service discovery sits on top of that, taking the ports that answered and working out what is behind them. The Lua dependency is what turns Nmap from a fixed scanner into something you extend without recompiling C. The README does not describe the internal data flow beyond pointing at the man page and the documentation site, so the exact pipeline from probe to service fingerprint is not something this material establishes. What the material does establish is that Zenmap is packaged alongside the command-line tool rather than distributed separately.
Building and Running It
The README gives three commands for the ideal case: ./configure, make, then make install. It then sends you to the Nmap Install Guide for compilation, installation and removal notes, which is a signal that the three-command path is the simple case rather than the whole story. Running it is simpler than building it: nmap scanme.nmap.org is the documented first run, and running nmap with no parameters prints a list of the most common options. The README points at the man page for those options in depth. Binary installers for Windows, macOS and Linux RPM are available from the download page, so building from source is not the only route. This repository is described as a mirror of the official SVN repository, and the homepage field points at svn.nmap.org rather than at GitHub. That is the detail to internalise before you clone: the GitHub copy tracks the canonical tree, it is not the canonical tree.
The Licence Is Custom and Not GPLv2
The README is direct about this: Nmap is released under a custom licence which is based on, but not compatible with, GPLv2. It allows free usage by end users and offers a commercial licence for companies that wish to redistribute Nmap technology with their products. For an engineer choosing a dependency, that distinction decides the question. Free usage by end users is not the same permission as free redistribution inside a product, and the README routes the second case to a commercial licence rather than to the GPL. The repository metadata reports the licence as NOASSERTION, which matches a custom licence that no automated classifier recognises. The README points to the Nmap Copyright and Licensing page for full details, and that page is where the actual terms live. Nothing in this material tells you how the commercial licence is priced or what it covers, so treat that as an open question to resolve with the project rather than something you can infer from the source tree.
Where the GitHub Mirror Constrains You
The repository description says it plainly: this is a GitHub mirror of the official SVN repository. The homepage is svn.nmap.org. If you open a pull request here expecting it to be reviewed and merged the way it would be on a project whose primary home is GitHub, the mirror model works against you. The README does not describe a pull-request workflow. It points contributors at the HACKING file and CONTRIBUTING.md for information about filing bug reports and contributing, and it names the nmap-dev mailing list as the place for questions and suggestions. Those are the channels the project documents. A mirror also means the commit history you see on GitHub is a copy of history authored elsewhere, so the authoritative record of a change is the SVN side. For someone who only wants to build and run Nmap, none of this matters. For someone who wants to land a patch, it changes where the work happens.
A Realistic Alternative: Masscan
If your actual requirement is sweeping a very large address space quickly, Masscan is the obvious comparison, and the difference is in the design goal rather than in the feature list. Nmap's topic list includes asynchronous scanning, but its documented strengths are service discovery, OS detection and the Lua scripting layer, which is why the README's first example is a single host and why Zenmap exists as a front-end for interactive work. Masscan is built around raw asynchronous transmission for internet-scale port sweeps. The trade is depth against breadth: you reach more addresses per unit time with a scanner designed for that, and you give up the service fingerprinting and scripting ecosystem that Nmap carries. The two are not mutually exclusive, and a common pattern is a fast sweep to find candidates followed by Nmap against the hosts that answered. Pick based on whether your bottleneck is the number of addresses or the amount you need to learn about each one.
Maintenance Cost and What to Verify First
The build dependencies visible in the topic list are libpcap, pcre and Lua, plus a C toolchain and autotools. Those are widely packaged, which keeps the build cost low on Linux, but the README's own routing to the Install Guide for compilation and removal notes suggests the three-command path is not guaranteed on every platform. The last push timestamp on the repository is 2026-09-06, and no releases were retrieved for this review, so versioning information is not something this material supports. The licence is the maintenance cost that does not show up in a build log: if your product redistributes Nmap technology, the README's answer is a commercial licence, and that is a procurement question rather than an engineering one. Verify the build on your target platform before you standardise on it, and read the Copyright and Licensing page before you assume the GPL habits you have from other tools apply here. They do not.
Editorial conclusion
Adopt Nmap if you need a scriptable network mapper and can accept the custom licence, which permits free end-user use but is not GPLv2 and is not compatible with it. Do not adopt it if you need to redistribute it inside a product without a commercial licence, or if you expect a normal GitHub pull-request workflow, because this repository is described as a mirror of an SVN tree and points contributors at HACKING and CONTRIBUTING.md instead. Before you commit, verify two things: that the configure, make, make install path builds on your target platform, and that your redistribution plans match the terms on the Nmap Copyright and Licensing page.
Community notes