GSoC 2020 Samba Experience

hezekiah maina hezekiahmaina3 at gmail.com
Wed Sep 9 08:32:37 UTC 2020


Hello everyone,

I finally came to the end of Google Summer of Code 2020 program. I'm glad
to have passed the program.
I learned a lot of things which before the program I didn't have much
knowledge about. I will outline some of those new things that I learned and
give some feedback on areas I think could be improved to make Samba
even better.
One of the things that I learned in the program was using Samba Active
Directory Domain Controller. I didn't know much about working with an AD
DC. From having to set a server as an AD DC to having one that is
functioning well was a great learning experience. Making mistakes is vital
to learning how to work with something and I did a whole lot of them. DNS
configuration and setting up Kerberos admin server was particularly hard
for me but with time I have figured how to work with them. I'm glad to have
had great mentors who led me through every step of the learning process.

Another thing I learned was to develop Cockpit plugins.Cockpit (
https://cockpit-project.org/) gives linux server administrators a visual
interface to interact with a server using a web browser. One of the most
important features of Cockpit is that it provides an API for developing
plugins to extend its capabilities. I was working on developing one of
these plugins for samba-tool command line utility. Samba-tool helps
administrators manage their Samba Active Directory Controller. So, which
problem were we trying to solve? Using a command line tool is mostly prone
to making spelling mistakes and a lot of repetitive typing to achieve some
functionality. Having a visual interface reduces the mistakes users can
make, improves the user's productivity and is a much more appealing way to
onboard new users. You can find documentation about the plugin and how to
install it for your operating system here:
https://wiki.samba.org/index.php/GSOC_cockpit_samba_ad_dc.

I primarily used React and Javascript to develop the plugin. There are many
other tools that are provided by the team at Cockpit for starting a new
project including a starter kit with most of the files for the project
already included. (https://github.com/cockpit-project/starter-kit)

Another Open Source tool that I learned to work with was Open Build Service
(https://openbuildservice.org/). Through OBS I was able to write some
config files which when pushed to build.opensuse.org builds packages for
the different distributions and makes a package available for the end
users. Leveraging the OBS, I was able to develop the plugin for users of
Fedora 32, Debian 10 and Ubuntu 20.04 (
https://build.opensuse.org/package/show/home:Hezekiah/samba-ad-dc)

One of the areas I found to be really hard was installing provisioning a
Samba Active Directory Domain Controller. The Samba documentation for
installing and working with an AD DC is pretty comprehensive but not really
that straight forward for new users. Some of the concepts in the
documentation require some prior knowledge of working in an AD DC
environment and I think it is an area that could be improved to easily
onboard new users coming to Samba. As outlined earlier some of these
concepts include setting up Kerberos admin server and DNS configuration
though the Samba documentation on troubleshooting DNS problems is truly
priceless.

Another area that I also found to be really difficult was packaging for the
various operating systems distributions. This might not be part of what
Samba does but I hope it could be improved. There wasn't any comprehensive
documentation I could find to help with the packaging of the plugin and had
to depend on my mentors for guidance most of the time. Through trial and
error I was able to understand how to package for the 3 linux distributions
but I really hope this could be made easier for new developers.

Lastly I found the Samba codebase on GitLab really scarely :). Having the
entire codebase in one repository is really hard to figure out which part
does what. I'm not sure if it could be subdivided into various projects but
if this is not possible a little bit of code commenting and maybe readmes
could be used to help new developers understand how the various pieces fit
together.

I'm really thankful to the entire Samba community for having me as part of
the GSoC 2020 program. I'm particularly thankful to Alexander Bokovoy and
Andrew Bartlet. They both were my mentors for the program and were glad to
help me resolve problems I encountered along the way. I'm also thankful to
members who used the plugin, discovered bugs and informed me and my mentors
about them and to all those that answered and clarified my questions on
samba-technical.

Samba has really been instrumental to my start of the journey of
contributing to Open Source Software and will continue being part of this
amazing community.
I will continue contributing to the organization and improve the plugin. It
has been a really good learning experience and will continue to learn more
about Samba and the various OSS projects the community develops.

Thank you all and have a great day!


More information about the samba-technical mailing list