"Hey look! A bandwagon! Let's jump on it!" No, that's not why Passageways has started an open source project. The reality is that we just wanted to deliver more.
It was pointed out at PowWOW that any company who has happy customers has a sales force equivalent to the sum of its users. For Passageways, we strive to have all 28,000+ of you telling everyone you see how much you enjoy working with us. If we take that same mentality, and apply it more directly to our platform, you come up with open source.
Over the years we've created some modules that might be for demo purposes, or that add some small, but useful functionality to your portal. Things like our RSS Module, or the Rolodex Module. The problem was that we didn't have a good place to host them and keep them up to date. That changed when we started preparing for this year's PowWOW where we planned to actually code with the developers present. We needed to put that code somewhere people could get to it after the conference. That place, is Microsoft's CodePlex, an open source community like SourceForge, but aimed at .NET development.
CodePlex gives us source control, including integration with TFS. It lets us track issues. They let us add developers, like you, to our project so that we can collaborate on the project, they even provide us with a forum to collaborate on. The benefit to you is that
You get to see our code, which is a great way to learn how to develop your own modules to run on the portal
You get free stuff. Stuff that's helpful or stuff that's fun, and stuff that Matt makes in his free time will probably find it's way up there too. We already have one customer who has shared a Yahtzee module (thanks Sean!) for you to enjoy.
You get to own it. Since it's open source, that means you can add a feature at any time. If you find a bug, you can fix it right now.
So if you're a developer, a portal admin, an advanced user, or just a portal enthusiast you need to go to our project at http://www.codeplex.com/passageways/. For those who have something to contribute, or want to get their hands on the source code, just drop Passageways a line and we'll get you set up post haste!
Follow Up: One "missing" feature is the ability get email notifications of new discussions or changes to the CodePlex site. Fear not! There is an RSS feed, and using a tool like RSSFWD you can take that RSS feed and have any updates sent right to your inbox.
We're wrapping up the 3.3.0.0 release of Enterprise Instant Messenger and I wanted to share some knowledge I gained about Active Directory while looking in to how an organization might deploy the new client to hundreds of computers.
Some history: For the first release in some cases, admins went around to each machine and stepped through the client installer. Passageways employees even helped out in this process for some of the larger jobs. While I do love talking to and spending time with our outstanding customers, I'm very glad I wasn't around back then. I myself have worked almost exclusively in the web world for a while and I am not a network administrator so I have never really had to worry about how new applications get distributed inside an organization. That being said, if this article seems rudimentary I apologize, but hopefully it will offer some value to some of the folks out there.
Here at Passageways I was working with a network admin who had set up a group policy to run a VB Script file when a user logged in. This file essentially took a copy of the installed client folder, and copied it to each computer on the network. This got us most of the way there, so I added a few lines to install the registry keys, make a shortcut on the desktop, and moved the variables an admin may wish to change to the top where they're easier to see. Great!
The downside to this first option is that the installer never gets run, so there isn't an entry in the Add/Remove Programs list under the control panel, so removing the EIM Client it is a manual task. Our Dev Lead, Matt, then pointed me at msiexec. Msiexec is a command line utility that will run an MSI file. Our client installer happens to be a glorified MSI file, so this works well. Using this method is our best practice since it will ensure that users have the latest version of the EIM Client. In fact, we plan to ship the EIM server with a batch file for your use with the following line in it:
This line installs the Client to the Program Files directory using ports 1111, 2222, and the server of MyEimServer. It does this even for users who do not have admin rights to their machine, and the /qn option means it does it behind the scenes without the user ever having to lift a finger.
Now there's still one more option combining the power of msiexec and Active Directory that may be of interest to you. AD lets you "Publish" installers through the Add/Remove Programs console under the Add New Programs section. To do so, you'll want to first transform the MSI, effectively modifying the MSI with the properties we set when calling msiexec above. Then, once you've got an MSI customized for your organization, follow these steps to publish the installer to your users (steps modified from Visio Deployment):
On the Start menu, point to Programs, point to Administrative Tools, and then click Active Directory Users and Computers.
In the console tree, right-click the domain or organizational unit for which you want to set the Group Policy.
Click Properties, and then click the Group Policy tab.
Under Computer Configuration or User Configuration, open Software Settings.
Right-click the Software Installation node, and then click Properties.
In the Software Installation Properties dialog box, click the General tab, and then browse to the location of transformed installer you've created.
In the New Packages section, select Publish.
This specifies that when you add the MSI, by default you want it published with standard package properties.
In the Installation User Interface Options section, specify what level of information the user will see during installation. Select one of the following options:
Basic: Displays minimal information when users install the EIM Client. This installs the client in unattended mode and requires no user interface. This setting corresponds to the /qb- command line option of msiexec.
Maximum: Displays all installation messages and screens during the installation of the EIM Client.
Click OK.
The end result is that when your users log off, then log back in, they will now see the EIM Client in the list of applications they can install in the Add New Programs section. This method does not install the client for them, so it is a great option if you do not require your users to have EIM installed, or it may be a handy tutorial if you want to do a similar thing for another product.
This past sprint has been a bit of a challenge for me since I undertook the creation of a new control. Some of you had noticed a performance issue with some of the controls we had been using from Telerik. These controls are great, they let you do all kinds of things like have images, expandable trees, and drag and drop. Unfortunately, all of that work is done on the end user's computer. That's fine and dandy when you're talking about a few dozen items in the control. But once you start to get around 300 or more, then things really start to bog down.
For Form Builder I set out to replace our UserChooser that relied heavily on Teklerik. I wanted to provide the same functionality, without the performance hit. It needed to load quickly, and there needed to be some visual cue if it was going to take a while to take an action. Matt was a big help throughout this process answering my questions and showing me how to set things up so we can reuse this code for other applications.
What I learned along the way is that control design is not for the weak hearted or those who like to write quick and dirty or "spaghetti" code. It takes an order of magnitude more planning that a normal web control or an ASP page. And you do your best to anticipate how someone else might use it, so you make it as flexible as you can without losing sight of the original goal you set out on. It's a balancing act, the kind where you have to juggle fire and tame lions all at the same time.
The end result is that you can now add a hierarchy of items from the source list, have a set of destination lists to add those items to, and include all the images you like. Oh, and it's pretty blazing fast for both loading and single item manipulation. It's also not tied to any one data set, so we could use this for anything and with a bit more polishing you should see it in the Portal FX in an upcoming patch!
As a software developer I had grown accustomed to being stuck in a cloth and metal box and only getting exposure to my fellow cube dwellers and my immediate supervisor. What drew me to my new post here at Passageways was the emphasis the company continues to put on all employees having direct contact with the customers. If I'm writing code, and I want to know how people will use a feature, I can go directly to those people and ask them right out, instead of getting a speculative interpretation.
Keeping with that mentality, I'm very excited about the inception of this blog and what it means for our customer-provider relationship. For me personally I look forward to sharing the ins an outs of our development process so that you can see how and where your participation steers our decisions. I'm also hoping that there will be time to show you how to better leverage the effort we put into our product from a coding point of view.
One last thing; we're currently in the design phase of our sprint (think of it as a sub-division of a project that lasts about a month). In the design phase, the features have been selected, but we are in the process of figuring out how we, as developers, will implement those features. Everything from what classes to make, to what colors and icons to use is part of this phase. This particular sprint is for our eForms Builder Module and has several bug fixes and one enhancement which is to make a copy of an existing form. If you have any strong opinions about how this feature should behave, now is the time to drop us a line!