Imperium - Ideas & help?
Okay, maybe a little background first. My name is Adrian Lewis; Iím the network manager in a rural high school. My first professional passion is the school network (a lot of personal time has gone into it as has most of yours I imagine), my second is Imperium.
Imperium is my attempt at a network management suite of tools. Simply put, over the years working here, I have coded hundreds of scripts/programs/sites to help my job be more... easier (or efficient if youíre my boss reading this).
So after a lot of swearing after losing the source for a bunch of programs I wrote, I decided to create a suite. A place for everything to come together.
Imperium was born. Imperium is heavily based on plugins. So the core client has some built in features (the main stuff like printer/drive mapping, core logging, acc management & other admin tasks), but you can add other features by coding a plugin (easy in c#), then installing it onto the server which in turn distributes it to the clients when needed.
So far (it's in the internal alpha stage) it's going along pretty nicely!
So, my reason why Iím posting here is for 2 things;
1) I'm a little unsure of how to release it. There are a number of options:
- Core program freeware & more advanced plugins (i.e. classroom management) on a license basis.
- Whole thing freeware
- Whole thing licensed
Now Iím a fellow believer in open-source... half the servers we use here survive on the idea of that. But I donít really want to expose the world too my butt ugly commenting... the SDK is bad enough! But Iím happy with putting some/all of it as freeware. Although I have put a lot of my own time into this and it would be nice to see something back. But then again there are lots of things out there that already do all this!!!
2) Possible feature requests. I'm in the process of putting up a detailed feature list which Iíll give the URL to once Iím finished over the next day or two, but so far a quick list is as follows:
- Complete Login Management
- Multiple Login Management
- Printer Mapping
- Drive Mapping
- Fairly advanced permissions system (based on AD groups and expanded by built in levels)
- Ban Management (links with various other servers to uphold email/internet/account bans)
- File Monitoring (watches defined paths for file changes/types and alerts as required)
- Screenshot system (allows any plugin to take a screenshot and submit to the DB. And notify admin/teacher if required)
- USB Device Tracking (tracks USB storage devices used on workstations. Gives times, serial numbers, models etc. Can also lock a device to a user so will stop other users using it)
- Process Monitoring (Watches the user's process list for blacklisted processes or unknown processes. Also allows users to kill of processes under their credentials (donít worry, you can specify which processes to hide!))
- Basic print monitoring (to be expanded. So far just provides a basic print history)
- A whole load of administrative features as well. Basically everything AD Users and Computers offers with additions of linking to an MIS)
- Swear Word monitor (This doesnít actually filter it and stop them typing it, but will alert an admin and take a screenshot when it detects someone typing a word from a predefined (customizable) list of words)
Please, donít see this as an attempt for me to try and flog this. As I have said above. I really donít know what the best way to go with this is. Any advice/hints/tips would be very much appreciated.
At the moment I'm afraid I canít give a copy to anyone to demo. It's in an internal alpha phase and I donít want it to break anyone's network! But pending how this discussion goes, once it's stable, I may put a copy up for people to try out if itís wanted.
Here's some pictures (donít knock the office 2k7 look... the colors are changeable (possibly based on permissions?) and the ribbon bar is an excellent way to organize the huge mass of functions). This is as logged in as an admin. Iíve included some raw screenshots of the data logged for a few little plugins as I havenít coded a front end for them yet.
Licensing is completely up to you, and depends on whether you want to take it commercial and make some pennies ... Difficulty here is whether you legally own the product if it was made during 'company time' at work.
I think the best idea is to open it up to a team of beta/alpha testers, get their opinions and from there perhaps consider looking at the options.
Based on the featureset you've listed, it sounds very extensive, and would and could be worth a bleeding fortune.
legally speaking (and long story short) yes i own it. I have spent some development time (and alot of testing time) in school hours, however we (the school and I) have a contract drawn up which states I am the owner of the software and i lease it to the school for free in exchange for allowing me to use their network to test/develop it.
I'm lucky to have a very very nice SLT :)
I like the idea about having a alpha/beta team, when it's at that phase, prehaps i'll open it up and get people to sign up if their intrested (after signing something to the effect of i'll help you as much as possible if something goes wrong, but not legally responsible etc).
As for the commercial side of it, the large feature set is the primary reason i thought it might do well on the market. And although i have a limited company registered in case i decide to go down that route, my business skills arnt very good, so i'm not too confident on that.
But still, I love the idea of opening it up for a semi-open alpha/beta testing phase. I'll have a website up by the weekend with some more details if that helps?
P.s. I welcome as much input as possible, good or bad (constructive only please!).
I would be interested in writing a management interface for my BITS-based package deployment tool for this.
BITS-based? That sounds an interesting idea
Its how CC4 will do it, it delivers the software in spare bandwidth, and if the pc reboots it will continue where it left off. This means that the packages will be deployed in the background and not throttle the users experience by consuming needed bandwidth, or locking out the pc to perform package installation (like Group Policy does). If that works, look out for many for cc4 style features from me e.g. (Network Recycle Bin, etc.)
That looks very interesting, i would certainly give it a test drive if it was available.
BITS is how the server downloads updates from the central repository and likewise for updates to the clients from the local server. I could expose the management class i've written to help with other updates.
BTW, network recycle bin? Cool :)
I've used BITS on WSUS, so I'm familiar with it, just never had the brainwave of deploying software with it. Beats waiting 20 mins for Office to deploy over wireless at startup...
stratisphere, i have already written a BITS based software distribution client, and I am willing to help you integrate it with Imperium if you would like (as well as other features like the NWB).
If you are going to go down the open source route, then the sooner you release the code and setup a shared repository to the code the better.The project may well benefit from sharing the code at an early stage in development, rather than an almost complete stage.
There are already several commercial/freeware products out there that do a lot of what you are proposing. Yours could possibly be the first open source?
If I still worked for a large American Outsourcing firm I would be asking how much it has cost you and your employer to develop an in house solution, as opposed to buying a solution that is already in the market place. If yours is to be commercial will it be faster, cheaper, more productive?
I guess the point I am tyring to get at, is that there is not really a half way house position to take :)
In relations to BITS I have found this article helpful Using Windows XP Background Intelligent Transfer Service (BITS) with Visual Studio .NET, but is vb.net, rather than c#.
If you would like any help beta testing the client and server let me know.
Yes, I have seen this article, and I already have produced a client that can manipulate BITS :D
Originally Posted by monkeyx
Get it up into some sort of version control repository e.g. svn,cvs,bzr.
Any one who can manage to download the source using version control should know that it is generally development code.
However before putting stuff up I would decide on the license, what restrictions if any do you want to put on it.
If your going down the open source route pick a fairly well known license, see the OSI website, however most people think GPL when they hear open source.
Then wait for RM/Viglen/AN Other company to pick up you software and employ you as a consultant on megabucks :-)
If you decide to release it under one of the more popular open source licences (GPL, BSD, Apache, Mozilla) you can host your project for free with Google Code which includes Subversion, Wiki, Issue tracker and Downloads. I'm now using it for Classroombookings.