Summer of Code Projects
The following is an outline of potential projects for those interested in working on Samba through Google's "Summer of Code" program. Questions about Samba's participation in the program or about a project idea, scope, or design should be mailed to email@example.com. Note that you are not limited to the project ideas listed here. Please email us if you have a new idea you would like to discuss.
If you are considering applying to SoC 2006, please make sure to read the Student FAQ. Pay close attention to Question 24 as the review process for Samba applications will be stricter this year. It is very important you convince us that:
- you will, in fact, be able to do the work you are proposing
- you understand the scope of the problem
Update (1 May): The student application form is now open for submissions at Google.
Best of luck to all the Summer of Code applicants. -- The Samba Team
SACL VFS Module (Samba 3)
Support for file systems SACLs (i.e. file system auditing) on in Samba in a VFS module by utilizing Extended Attributes. This project should ensure that users are able to successfully view and modify auditing settings on files and directories using the Windows Explorer.
Consolidate internal LDAP SASL support (Samba 3)
Samba has two separate copies of LDAP support routines. One is used to access Active Directories servers when operating as a member server and the other is used for implementing the LDAP passdb backend feature. Applicants should be comfortable with LDAP directories services and SASL mechanisms such as GSS-SPNEGO.
Backport EndPointMapper and support for ncacn_ip_tcp (Samba 3)
Current Samba 3.0 releases only support MS-RPC over SMB named pipes. The SAMBA_4_0 code base has support RPC directory over TCP which could be back ported in some degree to the SAMBA_3_0 tree.
Alternative configuration backends (Samba 3)
The current smb.conf does not allow the flexible set read and modify individual key/value pairs from within smbd. This project would explore using a registry like backend that would allow more flexibility is managing Samba's configuration settings outside on a simple text editor. The LibElektra project provides a common configuration library with storage plugins. One possibility would be to implement an LDB backend along with a simple command line interpreter/editor.
Performance optimizations on NetBSD (Samba 3)
This work is under the umbrella of the NetBSD project and is listed here for publicity and to help inform interested applicants. Please refer to the NetBSD project site for a complete description.
Full SAM implementation (Samba 3)
Provide a new database passdb backend that provides both the Unix and Win32 attributes without the use of external commands such as the "add user script".
SNMP support (Samba 3)
Explore supporting the LANMAN SNMP MIB included with Windows server operating systems in smbd, nmbd, and winbindd.
Solve the overabundance of configuration parameters (Samba 3)
Samba 3.0 includes many config options which are necessary only in extreme circumstances. Only a small percentage of the parameters are required in most installations. The challenge is to remove the more advanced settings from immediate misuse while still providing access to them when absolutely necessary.
Implement a Berkeley DB backend for LDB
Develop an Administrative Logging System (Samba 3)
The log files in Samba are commonly of more use to developers than to administrators. A new logging system (in parallel with the existing debug logs) similar to the Windows auditing facilities would record those specific events of concern to sysadmins. This support would include auditing for printers, users & groups, configuration changes, etc...
Implement missing functionality in DsGetNCChanges (Samba 4)
The primary goal is to review and implement the compression algorithm used in directory services replication.
Implement missing SWAT features (Samba 4)
SWAT research in the SAMBA_4_0 branch is very different from the model of SWAT in the Samba 3 releases. There are many possibilities for new management features that have yet to be explored.
Componentization of Samba (Samba 3 & 4)
Samba has many APIs and subsystems, such as talloc, ldb & tdb, etc..., that would be of use to the Open Source community at large. Much work is needed to break these individual projects out of the current Samba source trees and establish them an individual projects if which Samba is but one consumer.
Dbench and Nbench workload generator based on Samba 4
Samba 4 has two NTVFS backends (cifs and nbench) which allow to create a CIFS proxy which:
- intercepts CIFS traffic and forwards that to a remote server, and
- write down a workload scenario file for Nbench and Dbench tools
For every connection there is one log file is written. These logs can later be replayed by nbench/dbench against any file system/server to reproduce the same workload. Implementation of the following things will allow to create a specialized workload generator to test various usage scenarios based on real world applications:
- Add a functionality to post-process generated logs to create a combined dbench/nbench scenario representing multiple-client access pattern.
- Add CIFS Posix Extensions support to both Nbench NTVFS backend and dbench/nbench tools so that Linux applications running against Linux CIFS file system could be profiled.
- Package resulting solution as simply-installable and configurable application similar to Samba4WINS package
Subversion VFS Module (Samba 3)
Given a share that is also a Subversion working copy, provide a VFS module that performs the svn action corresponding to the file system action. For example, if a file is added from a Windows client, an "svn add" is done by the VFS module (note: not the command itself, but the equivalent SVN api call.) When (and if) to commit and what message to attach could be configurable options.
Automated testing against Windows
The Samba project does extensive automated testing on build.samba.org, but its all Samba<->Samba testing. Our testing against Windows is currently manual. We would like to use vmware or another virtual machine environment to allow for fully automated testing against Windows machines, both as clients and servers.
Re-implement smbclient in ejs (Samba 4)
ci-skads decoding and implementation
The ci-skads protocol is used to implement remote full filesystem indexing (indexed search) between windows machines. We would like to support this functionality in Samba, interfacing with existing indexing tools on Unix systems (such as beagle). This would be a very challenging project, suitable for someone experienced with analyzing completely new protocols.
GQ replacement using GTK and LDB
GQ is a widely used LDAP query tool. Many LDAP administrators would benefit if a similar tool were constructed, in particular with similar schema knowledge. Using LDB as a backend could allow easy use of Samba-supported SASL mechanisms for easier authentication. Likewise, an LDB editor in SWAT would be very useful. Building it with interactive functionality would make it a very powerful way to manage Samba4's LDB databases.
Implement an external LDAP server backend (Samba 4)
Currently, Samba4 can use either an in-memory database, or a LDAP server as the backend for it's primary user database. The LDAP backend server alternative is currently very restricted: The only supported server is a matching version of Samba4. This project would be to advance this support. Initial steps would be to load the provision, then permit password changes. Eventual support would include schema mapping.
User Manager for SWAT (Samba 4)
Samba 4 needs a user manger tool, built into the SWAT server. This could be a new tool, or an existing tool ported to Samba4. It would benefit from being interactive without page load delays, and should at least allow modification of similar properties to MMC.
This is just a holding area for project ideas. The projects listed here may be updated as developers refine a project's outline.