Developer Documentation: Difference between revisions

From SambaWiki
m (Add link to 'Samba Next Goals' page)
(link to samba developers guide (link to go live soon))
(42 intermediate revisions by 9 users not shown)
Line 6: Line 6:


* [[CodeReview|Doing code review]]
* [[CodeReview|Doing code review]]

* [[Using_Git_for_Samba_Development|Using Git for Samba Development]]


* [[ActiveProjects|Active projects]]
* [[ActiveProjects|Active projects]]





= Release planning =
= Release planning =


* [[Samba_Release_Planning|Samba release planning]]
* [[Samba_Release_Planning|Samba release planning]] (including the [[Samba_Release_Planning#Release_Branch_Checkin_Procedure| Policy and steps required for checkins to branches]])

* [[Branch_Policy|Policy on checkins to branches]]


* [[Samba_Features_added/changed_(by_release)|Samba Features added/changed (by release)]]
* [[Samba_Features_added/changed_(by_release)|Samba Features added/changed (by release)]]


* [[Samba_Next_Goals|Samba Next Goals]]
* [[Samba_Next_Goals|Samba Next Goals]]





= Source code =
= Source code =


Samba development is stored in the [https://www.git-scm.com/ Git] SCM system. See [[Using Git for Samba Development]] for more detail on how Samba uses Git.
* GitWeb

:* [http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v4-0-test v4-0-test] (branch for next 4.0.x release)


Two web interfaces are:
:* [http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v4-0-stable v4-0-stable] (branch for current 4.0.x release)
* [https://git.samba.org/?p=samba.git;a=heads Samba's own GitWeb] ([https://git.samba.org/?p=samba.git;a=shortlog;h=refs/heads/master latest changes in the master branch])
* [https://gitlab.com/samba-team/samba Official Samba GitLab Mirror]


Samba is no longer actively developed on [https://github.com GitHub] but for reference and to keep old code from being mistakenly examined, the [https://github.com/samba-team/samba Offical Samba Team GitHub Mirror] is kept up to date.
:* [http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master master] (current Samba development for future releases)


== Samba codebase organization ==
: For more info on available branches, as well how to obtain the sources via a Git client, see the [http://www.samba.org/samba/devel samba.org devel page].


{{:Samba codebase organization overview}}


The Samba codebase is broken down in detail in the '''[[Samba_codebase_organization|Samba codebase organization page]]'''.


= Debugging / Testing =
= Debugging / Testing =

* [[The_Samba_Selftest_System|The Samba Selftest System]]

* [[Samba CI on gitlab]]

== [[Writing_Tests|Writing and running Samba tests]]==


* [[Writing_Torture_Tests|Writing Torture Tests]]
* [[Writing_Torture_Tests|Writing Torture Tests]]

* [[Writing_Python_Tests|Writing Python Tests]]

* [[Writing_cmocka_Tests|Writing cmocka Tests]]

* [[Writing_Shell_Tests|Writing Shell Tests]]

* [[Writing_Perl_Tests|Writing Perl Tests]]


* [[WinTest|Testing against Windows using WinTest]]
* [[WinTest|Testing against Windows using WinTest]]


* [[Understanding_make_test|Understanding make test]]
* [[Testing_development_trees|Testing development trees]]


== Debugging help ==
* [[Debugging_individual_tests|Debugging individual tests]]


* [[Keytab_Extraction|Keytab extraction]]
* [[Keytab_Extraction|Keytab extraction]]
Line 53: Line 63:
* [[Wireshark_Keytab|Wireshark with keytab to decrypt encrypted traffic]]
* [[Wireshark_Keytab|Wireshark with keytab to decrypt encrypted traffic]]


* [[KernelClientTesting|How to test the Linux kernel client against Samba]]

* [[Saving_RPC_FAULTs|Saving packets that failed to parse to test IDL fixes using ndrdump]]

* [[Python/Debugging|Debugging in Python]]

== Development testing ==


* [[Testing removal of ifdef or configure checks|Testing removal of #ifdef or configure checks]]
* [[Fuzzing|Information on Samba's fuzzing infrastructure]]


= Bug reporting =
= Bug reporting =
Line 60: Line 79:


* [[Capture_Packets|Packet capturing]]
* [[Capture_Packets|Packet capturing]]


= Security =

* [[Samba_Security_Documentation|Samba Security Documentation]]
* [[Samba_Protocol_Security|Samba Protocol Security Layers]]

= Presentations =

* [[Presentations|Presentations about Samba, including slides and papers]]




Line 66: Line 95:


* [http://www.samba.org/~sharpe/The-Samba-VFS.pdf Writing a Samba VFS]
* [http://www.samba.org/~sharpe/The-Samba-VFS.pdf Writing a Samba VFS]
* [[The new version of Writing a Samba VFS]] (for Samba 3.6 and earlier)
* [[Writing a Samba VFS Module]] (for Samba 4.0 and above)




Line 71: Line 102:
= Clustered Samba =
= Clustered Samba =


* [[Clustered_Samba|Clustered Samba]]
* [[CTDB_and_Clustered_Samba|CTDB and Clustered Samba]]

* [[CTDB_Project|CTDB Project]]



* [[New_clustering_features_in_SMB3_and_Samba|New clustering features in SMB3 and Samba]]


= Building Samba =
= Building Samba =
Line 119: Line 148:
* [[Samba4/ActiveDirectory|Active Directory Plans]]
* [[Samba4/ActiveDirectory|Active Directory Plans]]


* [[Samba4 AD Plugfest 2010 TODO list|Samba 4 AD Plugfest 2010 TODO List]]
* [[Samba4/Domain_Member|Domain Member plans]]


* [http://download.samba.org/pub/samba/rc/ Development Releases of Samba4 (technology previews, alphas, betas, release candidates)]
* [[Samba4/LDAP_Backend|LDAP Directory Server Backend History Notes]]


= Prehistoric documentation from the Samba3 development era=
* [[Samba4 AD Plugfest 2010 TODO list|Samba 4 AD Plugfest 2010 TODO List]]

* [https://samba-team.gitlab.io/samba/htmldocs/Samba-Developers-Guide/index.html Samba Developers Guide]

= Academic Writings etc. =

* [https://www.samba.org/samba/news/articles/gensec-white-paper.pdf GENSEC white paper (2005)]

* [https://www.samba.org/samba/news/articles/abartlet_thesis.pdf Thesis on Samba (2005)]

* [https://www.samba.org/~metze/presentations/2007/thesis/StefanMetzmacher_Bachelorthesis_ENG_Draft-9811557.pdf Thesis on Samba replication (2007)]

* [https://www.samba.org/samba/news/articles/samba3-4_integration.pdf Integration of Samba 3 & Samba 4 (2005)]


* [http://is.muni.cz/th/359290/fi_b/thesis.pdf Thesis on Talloc (2012)]
* [ftp://ftp.samba.org/pub/samba/samba4/ Development Releases of Samba4 (technology previews, alphas, betas, release candidates)]

Revision as of 05:08, 28 April 2021

How can I contribute


Release planning


Source code

Samba development is stored in the Git SCM system. See Using Git for Samba Development for more detail on how Samba uses Git.

Two web interfaces are:

Samba is no longer actively developed on GitHub but for reference and to keep old code from being mistakenly examined, the Offical Samba Team GitHub Mirror is kept up to date.

Samba codebase organization

Broadly speaking, the Samba source-code tree can be organized into the following major groups:

  • Top-level libraries, which contains common code shared amongst the Samba processes.
  • Source3, which is code primarily used by the file server and domain member.
  • Source4, which is code primarily used by the Active Directory Domain Controller.
  • Infrastructure components, which provide the build and test framework for Samba.
  • Autogenerated code, which is used for parsing DCE/RPC packets as well as other regularly structured buffers.

The Samba codebase is broken down in detail in the Samba codebase organization page.

Debugging / Testing

Writing and running Samba tests

Debugging help

Development testing

Bug reporting


Security

Presentations


VFS


Clustered Samba

Building Samba


Building packages


Google Summer of Code


Historical Documentation on the Development of Samba4

  • Franky: A Hybrid Samba Active Directory Controller (outdated!)

Prehistoric documentation from the Samba3 development era

Academic Writings etc.