My previous blog post, written just over a month ago, described the idea that I had for an open source handy little Windows tool. I named it LaunchLater and I had hoped to deliver a beta within two weeks. I missed my two week window, by almost three weeks, but tonight I can proudly say that Version 1.0 is ready.
It has a long way to go. There are one or two known bugs. I don’t have any custom graphics or icons done yet. I have some skeleton code in place for several features that don’t yet exist. It has dependencies that could potentially be factored out.
But it works.
At least within the initial scope of the application, it works. As described in my previous post, it allows you to create a schedule of apps to defer execution of at startup. The app that has been my prime candidate for deferred launch is Dropbox and by deferring its launch my laptop boots much faster. And I know that my hard disk is allowed to get the boot process out of the way before starting that index.
LaunchLater consists of two executables. The first is the process that actually interprets the schedule of apps to run at login. I call this app the LaunchPad. Its user interface is currently nothing more than an icon in the notification area that messages you when it is launching another app.
The second app is the configuration tool (pictured below). It allows you to add, edit, and remove applications from the launch schedule. All of the LaunchLater code is written in C# 4.0, but this app is specifically written using Windows Presentation Foundation 4.0 (WPF). The reason I chose WPF is that it allows for a much more graphically enhanced user experience. If you’ve never experienced WPF or Silverlight, I suggest looking into it. It is sort of like all of the pretty good ideas behind web development coupled with the fun of managed .Net code. My only real problem with it is its reliance on eXtensible Application Markup Language (XAML), simply because I hate all things that look like XML. Once you dig into it though, it’s not that bad, and Visual Studio 2010 (along with the Community Preview of Blend 4) does a lot of the heavy lifting for you.
I have made the application installer along with all source code available on CodePlex (http://launchlater.codeplex.com). It is released under the GNU General Public License. I have put a lot more time and thought into my decision on software licensing than I expected to, and to my surprise it has been quite interesting.
Licensing (A Moral Quandary)
This license appealed to me for two reasons. The first is simple: it grants everyone in the world the right to download, use, modify, and redistribute my software at no cost. Open source software has saved my neck many times and I feel wonderful about releasing my own.
The second reason is a bit more complicated. There is a difference between general free software and what is referred to as “copyleft”ed software. If my code were completely free, it would allow someone to develop a spin off of the application, and then sell it for potentially millions of dollars (I flatter myself to dream that this application could be worth as much). I really don’t feel that I have a problem with this. If someone finds a way to make money off of this, I honestly respond with, “more power to you, sir!” That person clearly took the time and effort to put a business plan behind my code, and I haven’t. Not with this software anyway.
But copyleft prevents users from doing this. It restricts all future child applications of this app to use the exact same license, ensuring that every derivative application is also free to use, modify, and redistribute.
This is quite a moral dilemma. On the one hand, I don’t want to limit anyone’s freedoms, include that of profiting off a modified version of my code. On the other hand, by ensuring that future versions of the software are free I am benefiting the community by making sure that software is available to everyone.
I settled on the latter. Copyleft benefits everyone, where as allowing a future copyright, even with credit to me in the license, only benefits the one who sells it. I feel bad about putting a restriction on free software, but the restriction is what will keep it free.
Give It A Try
If you would like to give LaunchLater a shot, you can do so by downloading the installer on this page.
If you would like the source code, go here and click the “Download” link on the left hand side.
Please comment and offer any suggestions or critiques. I appreciate all of it.
So as I said last time, stay tuned.
I have a plan.