# I would like to learn about FreeBSD and developing for it



## timetopat (Feb 5, 2013)

Greetings,
I am a College student who participated in the Google Summer of Code last summer.  Upon talking to a friend about this summer and other projects he mentioned FreeBSD.  He said compared to Linux Desktop's setup it is much more elegant and it is a shame it is not more popular.  I was reading about FreeBSD on the help pages and the project seems very interesting.  I am downloading the iso right now and have virtual box ready.  From what I understand FreeBSD is the base to other exciting projects like PC-BSD which seems very tempting because it says its more beginner friendly.

I would like to learn about FreeBSD and even possibly participate in the GSoC this year and work with BSD.  What advice do you have about learning to write applications and components for it?  What are high priority topics that need to be learned and worked on?  I saw a book that got high ratings on amazon about writing device drivers for it.  Is this a good starting point about learning?  I have knowledge of Python, C++, Java, and C#.

Thank you


----------



## SirDice (Feb 5, 2013)

I'd start with this sticky: [thread=1566]FreeBSD Development: Books, Papers, Slides[/thread]


----------



## timetopat (Feb 5, 2013)

Thank you for the quick reply. I am downloading some of the PDF books right now from the link provided.  One book from 2005 called The Design and Implementation of the FreeBSD operating system looks very promising.  Has a lot changed since then?  I was also reading in the pdf some of the FreeBSD design goals.  One of which is

Do not add new functionality unless an implementor cannot complete a real application without it

What constitutes a real application?


----------



## DutchDaemon (Feb 5, 2013)

You should make a clear distinction between "Working on the Operating System" (i.e. contributing to the FreeBSD source code) and "Working on applications for FreeBSD" (i.e. creating third-party software (ports) that runs on it). They are two entirely separate things.


----------



## SNK (Feb 5, 2013)

https://wiki.freebsd.org/IdeasPage

Here is a list with interesting projects to work on.


----------



## fonz (Feb 5, 2013)

timetopat said:
			
		

> What advice do you have about learning to write applications and components for it?
> [snip]
> I have knowledge of Python, C++, Java, and C#.


C# is hardly relevant for FreeBSD (or anything besides Windows, for that matter). It works to some extent through Mono, but it was developed by Microsoft for Windows platforms and should probably be kept there. Python, C++ and Java are all fine languages for developing userland applications; which do not even need to be FreeBSD-specific, chances are good that a FreeBSD application can be successfully ported to Linux, Mac or in some cases even Windows. But if you really wish to get into the kernel, device drivers and that sort of thing, you're probably going to need C.

There appears to be some demand for a graphical frontend (e.g. GTK, Qt, Java or something along those lines) for FreeBSD's gpart(8) partitioning tool. If you are at all interested in GUI development, perhaps you'll find this an interesting project to sink your teeth into.


----------



## j_m (Feb 9, 2013)

i suggest xcb, a level client gui api for c working with c++ too.


----------

