1 <!--#include virtual="/samba/header.html" -->
2 <title>Samba -- Summer of Code Projects</title>
3 <!--#include virtual="/samba/header_columns.html" -->
5 <h2>Summer of Code Projects</h2>
7 <div class="request" style="margin:0 0 35px 0">
8 <p>The following is an outline of potential projects for those interested in
9 working on Samba through <a href="http://code.google.com/soc/">Google's
10 "Summer of Code"</a> program. Questions about Samba's participation in
11 the program or about a project idea, scope, or design should be mailed to
12 <a href="mailto:summercode@samba.org">summercode@samba.org</a>.
13 Note that you are not limited to the project ideas listed here. Please email
14 us if you have a new idea you would like to discuss.</p>
16 <p>If you are considering applying to SoC 2006, please make sure to read the
17 <a href="http://code.google.com/soc/studentfaq.html">Student FAQ</a>. Pay close
18 attention to <a href="http://code.google.com/soc/studentfaq.html#24">Question 24</a>
19 as the review process for Samba applications will be stricter this year.
20 It is very important you convince us that:</p>
23 <li>you will, in fact, be able to do the work you are proposing</li>
24 <li>you understand the scope of the problem</li>
27 <p>Update (1 May): The <a href="http://code.google.com/soc/student_step1.html">student application
28 form</a> is now open for submissions at Google.</p>
30 <p>Best of luck to all the Summer of Code applicants. <b>-- The Samba Team</b></p>
34 <h2>Project Ideas</h2>
36 <h4>SACL VFS Module (Samba 3)</h4>
37 <p>Support for file systems SACLs (i.e. file system auditing)
38 on in Samba in a VFS module by utilizing Extended Attributes. This
39 project should ensure that users are able to successfully view and
40 modify auditing settings on files and directories using the Windows
44 <h4>Consolidate internal LDAP SASL support (Samba 3)</h4>
45 <p>Samba has two separate copies of LDAP support routines. One is
46 used to access Active Directories servers when operating as
47 a member server and the other is used for implementing the
48 LDAP passdb backend feature. Applicants should be comfortable
49 with LDAP directories services and SASL mechanisms such as GSS-SPNEGO.
52 <h4>Backport EndPointMapper and support for ncacn_ip_tcp (Samba 3)</h4>
53 <p>Current Samba 3.0 releases only support MS-RPC over SMB named pipes.
54 The SAMBA_4_0 code base has support RPC directory over TCP which could
55 be back ported in some degree to the SAMBA_3_0 tree.
58 <h4>Alternative configuration backends (Samba 3)</h4>
59 <p>The current smb.conf does not allow the flexible set read and modify
60 individual key/value pairs from within smbd. This project would explore
61 using a registry like backend that would allow more flexibility
62 is managing Samba's configuration settings outside on a simple text
63 editor. The <a href="http://www.libelektra.org/">LibElektra project</a>
64 provides a common configuration library with storage plugins. One
65 possibility would be to implement an <a href="http://ldb.samba.org">LDB backend</a>
66 along with a simple command line interpreter/editor.
69 <h4>Performance optimizations on NetBSD (Samba 3)</h4>
70 <p>This work is under the umbrella of the NetBSD project and is listed here
71 for publicity and to help inform interested applicants. Please refer
72 to <a href="http://www.netbsd.org/contrib/projects.html#smbtuneup">the
73 NetBSD project site</a> for a complete description.
76 <h4>Full SAM implementation (Samba 3)</h4>
77 <p>Provide a new database passdb backend that provides both the Unix
78 and Win32 attributes without the use of external commands such
79 as the "add user script".
82 <h4>SNMP support (Samba 3)</h4>
83 <p>Explore supporting the LANMAN SNMP MIB included with Windows
84 server operating systems in smbd, nmbd, and winbindd.
87 <h4>Solve the overabundance of configuration parameters (Samba 3)</h4>
88 <p>Samba 3.0 includes many config options which are necessary only
89 in extreme circumstances. Only a small percentage of the parameters
90 are required in most installations. The challenge is to remove
91 the more advanced settings from immediate misuse while still
92 providing access to them when absolutely necessary.
95 <h4>Implement a Berkeley DB backend for LDB</h4>
96 <p><a href="http://ldb.samba.org/">LDB</a> currently supports
97 both TDB and LDAP backend storage mechanisms. Another alternative
98 backend possibility is the <a href="http://www.sleepycat.com">Berkeley DB
102 <h4>Develop an Administrative Logging System (Samba 3)</h4>
103 <p>The log files in Samba are commonly of more use to developers
104 than to administrators. A new logging system (in parallel with the
105 existing debug logs) similar to the Windows auditing facilities
106 would record those specific events of concern to sysadmins. This
107 support would include auditing for printers, users & groups,
108 configuration changes, etc...
111 <h4>Implement missing functionality in DsGetNCChanges (Samba 4)</h4>
112 <p>The primary goal is to review and implement the compression
113 algorithm used in directory services replication.
116 <h4>Implement missing SWAT features (Samba 4)</h4>
117 <p>SWAT research in the SAMBA_4_0 branch is very different from
118 the model of SWAT in the Samba 3 releases. There are many
119 possibilities for new management features that have yet to be
123 <h4>Componentization of Samba (Samba 3 & 4)</h4>
124 <p>Samba has many APIs and subsystems, such as talloc, ldb & tdb, etc...,
125 that would be of use to the Open Source community at large. Much work
126 is needed to break these individual projects out of the current
127 Samba source trees and establish them an individual projects
128 if which Samba is but one consumer.
131 <h4>Dbench and Nbench workload generator based on Samba 4</h4>
132 <p>Samba 4 has two NTVFS backends (cifs and nbench) which allow to
133 create a CIFS proxy which:
135 <li>intercepts CIFS traffic and forwards that to a remote server, and</li>
136 <li>write down a workload scenario file for Nbench and Dbench tools</li>
139 <p>For every connection there is one log file is written. These logs can later
140 be replayed by nbench/dbench against any file system/server to reproduce the
141 same workload. Implementation of the following things will allow to create
142 a specialized workload generator to test various usage scenarios based on
143 real world applications:
145 <li>Add a functionality to post-process generated logs to create a combined
146 dbench/nbench scenario representing multiple-client access pattern.</li>
147 <li>Add CIFS Posix Extensions support to both Nbench NTVFS backend and dbench/nbench
148 tools so that Linux applications running against Linux CIFS file system
149 could be profiled.</li>
150 <li>Package resulting solution as simply-installable and configurable application
151 similar to <a href="http://www.enterprisesamba.org/">Samba4WINS package</a></li>
155 <h4>Subversion VFS Module (Samba 3)</h4>
156 <p>Given a share that is also a Subversion working copy, provide a VFS module
157 that performs the svn action corresponding to the file system action. For
158 example, if a file is added from a Windows client, an "svn add" is done by
159 the VFS module (note: not the command itself, but the equivalent SVN api
160 call.) When (and if) to commit and what message to attach could be
161 configurable options.</p>
163 <h4>Automated testing against Windows</h4>
164 <p>The Samba project does extensive automated testing on
165 build.samba.org, but its all Samba<->Samba testing. Our testing
166 against Windows is currently manual. We would like to use vmware or
167 another virtual machine environment to allow for fully automated
168 testing against Windows machines, both as clients and servers.</p>
170 <h4>Re-implement smbclient in ejs (Samba 4)</h4>
171 <p>Samba4 now has an embedded javascript interpreter, which is used
172 for both web configuration and for command line tools. The
173 interpreter has access to the extensive internal C library of
174 Samba. We would like smbclient to be rewritten in js, making it much
175 more easily extendable by administrators.</p>
177 <h4>ci-skads decoding and implementation</h4>
178 <p>The ci-skads protocol is used to implement remote full filesystem
179 indexing (indexed search) between windows machines. We would like to
180 support this functionality in Samba, interfacing with existing
181 indexing tools on Unix systems (such as beagle). This would be a
182 very challenging project, suitable for someone experienced with
183 analyzing completely new protocols. </p>
185 <h4>GQ replacement using GTK and LDB</h4>
186 <p>GQ is a widely used LDAP query tool.
187 Many LDAP administrators would benefit if a similar
188 tool were constructed, in particular with similar schema knowledge.
189 Using LDB as a backend could allow easy use of Samba-supported SASL
190 mechanisms for easier authentication. Likewise, an LDB editor in SWAT would be
191 very useful. Building it with interactive functionality
192 would make it a very powerful way to manage Samba4's LDB databases.</p>
194 <h4>Implement an external LDAP server backend (Samba 4)</h4>
195 <p>Currently, Samba4 can use either an in-memory database, or a LDAP
196 server as the backend for it's primary user database. The LDAP
197 backend server alternative is currently very restricted: The only
198 supported server is a matching version of Samba4. This project
199 would be to advance this support. Initial steps would be to load
200 the provision, then permit password changes. Eventual support would
201 include schema mapping.</p>
203 <h4>User Manager for SWAT (Samba 4)</h4>
204 <p>Samba 4 needs a user manger tool, built into the SWAT server.
205 This could be a new tool, or an existing tool ported to Samba4. It
206 would benefit from being interactive without page load delays,
207 and should at least allow modification of similar
208 properties to MMC.</p>
210 <div class="request">
211 <p>This is just a holding area for project ideas. The projects
212 listed here may be updated as developers refine a project's
216 <!--#include virtual="/samba/footer.html" -->