Samba-TNG is a fork of Samba. It was derived from the same code but is being developed independently.
The most important reason: differences of opinion on the overall software architecture. While the two projects share a large common codebase, there are some important differences in the way some bits are put together.
We are also less formal than the Samba Project in software engineering. See the next question….
Samba is a large, well-established project with a great deal of corporate interest and involvement. As such, they have to be very careful when making large changes to their code. This has led to the attitude that the code repository should be kept pretty much in working condition at all times, making it difficult to implement experimental changes and improvements.
The Samba-TNG project started in late 1999 as a separate CVS branch of the Samba code, specifically to allow some of the more experimental code ideas to be fleshed out and tested without affecting the stability of Samba as a whole. Specifically, developer Luke Leighton had many new ideas about the design of the domain controller code, some of which were considered either too risky or too controversial for the main development codebase. Thus, the Samba-TNG branch was initially his playground for trying out these ideas.
In October 2000 the project was moved to its own servers, mailing lists, etc. and the world heard about the “Samba fork”, which by then was actually old news.
While there is rivalry between the two projects, it is not hostile. On the contrary, code is frequently synchronized between the two projects in areas where we agree. We also routinely refer prospective users to Samba in cases where it would better fit the user's needs.
See this message from Andrew Tridgell for the “other side” of this story.
If you just want a file and print server, use Samba. They have a lot more developers than we do (so far!) and are able to support a much wider range of platforms and situations. At present we are neither willing nor able to try to outrun Samba in file and print serving; it is simply not our focus.
If you want a replacement for an NT primary domain controller, you can use either project. The main philosophical difference is that the Samba project wants to produce a Unix server capable of acting as an NT domain controller, whereas the Samba-TNG project wants to basically be an NT domain controller running on Unix. The other difference is that Samba-TNG is somewhat more advanced in terms of protocol support, although Samba is catching up and may be ahead in some areas.
If you want an NT domain controller running with an LDAP backend, optionally integrated with your LDAP-based Unix user database, you probably want to use Samba-TNG. Samba has some experimental support for this, but Samba-TNG has had it working for much longer so it is more mature.
We're really getting closer. Just having released the first beta version we are looking forward to getting feedback in order to improve our code. Nevertheless, many people have good luck running TNG in production.
Yes, you can. One of our users did it with LDAP and latest CVS.
See examples/hechenberger directory in CVS for useful scripts and hints. He migrated the whole domain with all users and groups without having to rejoin client machines or creating users and groups from scratch.
We have two mailing lists for bugs, tng-users and tng-technical. If you suspect you may just be doing something wrong, you probably want tng-users. If you know what you are doing and think you've found a genuine bug, use tng-technical.
(Don't worry if you pick the wrong list; most of the developers read both.)
See the next three questions….
Download the CVS branch code (see the CVS page) and familiarise yourself with the general architecture. Like all large software projects there are many idiosyncrasies in the Samba code. You will not be able to contribute significantly until you have figured some of these out (string handling is a big one).
To coordinate with the rest of the world you will need to keep up with the tng-technical list. For minor patches, just work something up and post it to the tng-technical list, along with an explanation of what it does or fixes (if it isn't obvious, like a help text typo). For major work, you should generally start by posting an informal design spec to tng-technical, for feedback; then go from there.
To contribute code to Samba-TNG, download the CVS branch code (see the CVS page) and start hacking. You probably want to join the tng-technical list to discuss changes. When you have a patch ready, mail it to the tng-patches list.
Maintain it for us, and we'll be grateful. Like almost all programmers, we would rather write code, and there are only so many hours in a day.
Luke Leighton wants to rewrite Samba-TNG to use the same approach Microsoft used when writing the NT networking code – using an IDL compiler to automate the RPC parsing code. He has wanted this for a long time, but there wasn't a suitable free IDL compiler available. Luke recently discovered the FreeDCE effort to provide a free implementation of DCE/RPC on Unix. He and others are now working on (or at least talking about) rewriting TNG to use FreeDCE.
The benefits to doing so: faster development, more correct code, fewer bugs, and the warm fuzzy of doing something just like Microsoft. (: Oh, and a framework for building other projects on similar foundations, like an Exchange server. The drawbacks: a lot of man-hours to rewrite what we already have.