The pfSense Store

Author Topic: What skills are needed for Development  (Read 8558 times)

0 Members and 1 Guest are viewing this topic.

Offline mikeisfly

  • Sr. Member
  • ****
  • Posts: 472
  • Karma: +7/-0
    • View Profile
What skills are needed for Development
« on: July 12, 2013, 05:43:21 am »
My apologies in advance if this is answered some where else, I really want to start contributing to the Pfsense project other than helping with tech support in the forums and donating money. I really wanted to help with code development and I didn't find this information anywhere. What skill sets are needed if someone wanted to contribute? And are there any resources that people have that people could research so that they can contribute constructively? Here are some assumptions I'm starting off with:

1. FreeBSD
2. PHP
3. HTML
4. XML
5. C++

Any info here is much appreciated. By trade I'm a network engineer with a deep background in Cisco and Windows, but in my younger years I have done some development in qBASIC, PASCAL, Fortran, C++. I really want to get back into programming and I thought why not do that by working on a project that I love and support.

Thanks,

Offline Klaws

  • Full Member
  • ***
  • Posts: 253
  • Karma: +14/-3
    • View Profile
Re: What skills are needed for Development
« Reply #1 on: July 12, 2013, 07:12:01 am »
If you want to develop kernel patches, C is the language. For the frontend (the WebGUI stuff), PHP, HTML, JScript/JavaScript/ECMAScript. While pfSense uses XML to store it's configration, you don't need to handle the XML config file yourself, there are functions for you to do the dirty work.

How much FreeBSD knowledge you need depends on which area you want to tackle.

To actually contribute, you need to know how to operate Git/Github. If you have previous experience with version control systems like SVN, you'll probably feel some sort of at home there, although the vocabulary appears to be totally different. For example, the "trunk" is the "master branch". And the pfSense team prefers backports instead of reintegration.

Offline phil.davis

  • Hero Member
  • *****
  • Posts: 4612
  • Karma: +550/-3
    • View Profile
    • International Nepal Fellowship
Re: What skills are needed for Development
« Reply #2 on: July 12, 2013, 08:05:10 am »
I came from a Pascal/Fortran/C/OpenVMS/DCL background and managed to learn new things :)
I think the main thing to learn is PHP. The manual here is good - http://www.php.net/manual/en/index.php - if you can already program then you are just learning the concepts of PHP and then the nitty-gritty of how to do each kind of test, loop, operation... in the new language.
As per any other development project, you don't write much from scratch. You find something that does a similar thing to what you want, read the code, understand it, cut-and-paste.
If you are just changing a few files, I find it is easy just to get them off online GitHub, edit in Notepad++ (if you have a Windows laptop/client),... as per this post: http://forum.pfsense.org/index.php/topic,47676.msg251034.html#msg251034 - you don't have to learn any command-line Git.
One day, if you (or I) grow up and develop a really big enhancement, then we can install Git on the local client and do all the fancy stuff, then submit a pull request with 50 files.
I found the easiest way to work out what is where is to traverse around the GitHub folders, 3 folders have most of the useful stuff - /usr/local/www for the code that drives the GUI, /etc for startup script things, /etc/inc for PHP include files that have sub-routines for all and sundry.
As the Greek philosopher Isosceles used to say, "There are 3 sides to every triangle."
If I helped you, then help someone else - buy someone a gift from the INF catalog http://secure.inf.org/gifts/usd/

Offline dhatz

  • Hero Member
  • *****
  • Posts: 1000
  • Karma: +5/-0
    • View Profile
Re: What skills are needed for Development
« Reply #3 on: July 12, 2013, 10:22:19 am »
My apologies in advance if this is answered some where else, I really want to start contributing to the Pfsense project other than helping with tech support in the forums and donating money. I really wanted to help with code development and I didn't find this information anywhere. What skill sets are needed if someone wanted to contribute? And are there any resources that people have that people could research so that they can contribute constructively? Here are some assumptions I'm starting off with:

Well, the fastest/easiest way to get started would be by visiting the actual pfSense code repository at GitHub:
https://github.com/pfsense
which will immediately make clear to you that pfSense development is mostly done in PHP with some C and some shell scripts.

Next you should check the pfSense redmine bugs/features database:
http://redmine.pfsense.org/projects/pfsense/issues


Depending on what type of contributions you expect to make, you might need some background in pf, FreeBSD & *ix networking. There is a lot of on-line documentation about the latter two; for "pf" you can read "The Book of PF, 2nd Edition" by Peter N.M. Hansteen (2011), but keep in mind that pfSense's pf contains quite a bit of custom code (check pfsense-tools/patches/RELENG_8_3), so it's neither FreeBSD nor OpenBSD.

As mentioned by phil.davis you can check the files on your own pfSense installation, in directories
/etc/inc (most of pfSense code)
/usr/local/www (pfSense webGUI)
/var/ (/var/etc temporary config files used by pfSense daemons - e.g. ipsec, openvpn, filterdns)

Since the new pfSense 2.2 will be based on FreeBSD-10, you keep up with FreeBSD development mailing lists:
http://lists.freebsd.org/pipermail/freebsd-net/
http://lists.freebsd.org/pipermail/svn-src-all/


I think the best way to contribute would be to find a specific feature which you know best or use daily in your deployment, code an enhancement and submit a pull request.
« Last Edit: July 12, 2013, 10:52:54 am by dhatz »

Offline mikeisfly

  • Sr. Member
  • ****
  • Posts: 472
  • Karma: +7/-0
    • View Profile
Re: What skills are needed for Development
« Reply #4 on: July 12, 2013, 09:09:09 pm »
Thanks everyone for the good information. I have some work to do. There is a lot of good info in this post, is there any way we can get it stickyed?

Offline jits

  • Full Member
  • ***
  • Posts: 279
  • Karma: +6/-0
    • View Profile
Re: What skills are needed for Development
« Reply #5 on: September 12, 2015, 06:29:15 pm »
Hi,

I'm just starting in Python and decided to stop, so I could first learn calculus. It just dawned on me one morning in the shower that calculus is going to be the key to solving your future programming frustrations...to each his own I guess..

Offline jwt

  • Administrator
  • Sr. Member
  • *****
  • Posts: 344
  • Karma: +101/-31
    • View Profile
Re: What skills are needed for Development
« Reply #6 on: November 22, 2015, 06:39:47 am »
It just dawned on me one morning in the shower that calculus is going to be the key to solving your future programming frustrations.

You should try Lisp.

Offline foggyhub

  • Newbie
  • *
  • Posts: 1
  • Karma: +0/-0
  • Digital Marketing Consultant
    • View Profile
    • Website Development and Digital Marketing
Re: What skills are needed for Development
« Reply #7 on: September 02, 2017, 07:53:58 am »
if we talk about software development

Go with HTML
CSS
java
php


credit @optimumlogic
I'm a "Rahul Yadav" with years of experience; co-founder of foggyhub; "Entrepreneur" enthusiast; Digital Marketing service in india; avid drinker of red wine; self-proclaimed steak expert; and all-round cool guy. I'm also shorter than you (probably). You can follow me on Facebook and Twitter.

 I am founder of <a href="http://www.foggyhub.com>Foggyhub[/url]