View
216
Download
0
Tags:
Embed Size (px)
Citation preview
Sometimes I write software in exchange for money (don’t judge)
Sometimes I write software in exchange for knowledge, experience, as a favor, to teach, or just for fun
Hi, I’m Jeff
It lets you give back to the community you’ve probably already benefited from
You can take an existing tool and make it more contoured to your specific needs
It provides a means of “crowd sourcing” a solution to a problem
It can lead to a business model that makes money – just because the code is free, doesn’t mean the support is.
Why Open Source?
Wordpress DotNetNuke NHibernate NAnt NUnit Linux Notepad++ Apache Web
Server TeamCity
CruiseControl.Net
OpenOffice Gimp VirtualBox Firefox Thunderbird VLC Chromium DOSBox
Mono Moonlight Vuze MySQL Pidgin Paint.Net
Some common examples…
The originator of an open source project is often referred to as the coordinator
Someone modifying an existing open source project and committing their code change back to the repository is a contributor
Coordinating and Contributing
The many flavors of open source…◦ BSD◦ GPL◦ Apache◦ MIT◦ MS-PL (also MS Shared Source…)◦ And many, many more
Licensing
Software is considered Free Software when its license grants these freedoms:◦ Freedom to run the program for any purpose◦ Freedom to study and change the program
(access to source code is a prerequisite)◦ Freedom to redistribute ◦ Freedom to distribute your own modified versions
Free Software
General Public License (GPL)◦ Uses copyright against itself◦ Makes sure that anyone who creates a derivative
work can only release that work under the GPL Recursive licensing!
◦ Some see this as a restriction of freedom to future developers
◦ Some see this as a guarantee of freedom to future users
◦ Who is right? You decide!
Copyleft: the copyright loophole
CVS, SubVersion, etc. are all good Distributed source control really shines
though◦ Mercurial◦ Git
Source Control
I named it LaunchLater It lets users defer the auto-start
configuration of apps that boot with Windows
I know .Net, so I used .Net I wanted to know WPF, so I used WPF I wanted to earn a Nerd Merit Badge
One day I had an idea
Licensing◦ GPL
Hosting◦ CodePlex (http://launchlater.codeplex.com)
Source Control ◦ Mercurial
I also use the TortoiseHg client, and it’s open source
The choices I made
This is pretty much just like developing proprietary software
I found myself almost subconsciously trying to make extra effort to conform to simple coding practices with the use of patterns wherever possible
Developing with open source in mind
MVVM◦ Popular pattern that has been made famous
through its application in WPF/Silverlight applications
◦ Gives you an intermediary object between the Model and the View that can be easily used for binding
Let’s see one of those patterns
Two main programs◦ Configuration Manager
Allows the user to configure which apps start at boot and how long to defer them.
◦ LaunchPad Starts with windows and executes the schedule of
deferred apps to launch
How the app works
My code is better structured and more easily modifiable
Anyone who is already acquainted with the MVVM pattern can quickly pick up on how this software works
The more people who are easily able to improve the code, the more likely the code will improve without my help
What was that about a Nerd Merit Badge?
The Payoff
This is a real thing You can find them at
http://nerdmeritbadges.com I have one now
◦ Jealous? I offered one to the first person to make a
contribution to my project◦ A guy named Jesse Brown won
Jealous?
Nerd Merit Badges
Open source can be awesome You’re likely already using it I gained knowledge and experience that I
might not have otherwise gained I was able to take that knowledge back to
the office and be more productive in my day to day work
Now others can benefit from my code
And so…
Use it Change it Improve it Share it Publish it And even hate it
◦ And then spend hours talking trash about it in forums and tweeting about how completely God-awful it is and then compiling those tweets into one giant hate-blog.
You are free to…
My name is Jeff Cox My twitter name is @jeffcox111 My email address is [email protected] My blog is at
http://LiberatedSoftware.wordpress.com LaunchLater can be found at
http://launchlater.codeplex.com
Thanks!