Getting Ready for my UI Mapper Release

As my readers know, I've been working on something I've called a "UI Mapper" for a little while now.  Well I'm hoping to finally release something soon and I was wanting to get some opinions on how to actually do that.  The "issue" is that there are several pieces to this "product", some of which I want to make an open-source standard, but some of which I would still like to make a little bit of money on ($50).

First there is the central UIMapper "framework" which totally makes sense to be open-source so that anyone can target it as a standard.  This piece defines and parses the actual xml UI Mappings and contains the interfaces that must be implemented for the actual UI functionality.  For instance, there is an IORMapper interface so that theoretically you can use any ORMapper, or even your own "old-fashioned" DAL for that matter.  There is also an optional IResources interface so that you can localize all text using any approach you prefer.  Then there are IListView, IEditView, and IEditWidget interfaces that the actual UI controls should implement if they want to be "standard" and somewhat interchangeable, at least as far as the basics go of course.  My idea here is that you should be able to "map" your UI and later change the actual UI controls between those available by myself and other vendors.  I hope you realize at this point that I'm trying to avoid vendor "lock-in" since you can swap any of the parts, using my ORMapper and UI controls today, and some other ORMapper/DAL and/or set of UI controls tomorrow.  So this part I feel very comfortable making open source -- but I have a few questions even about this part -- should I name this part something different than "WilsonUIMapper" to make it feel more open, and does using ProjectDistributor for this make sense?

Then there are the actual UI "controls" that I have made, but which should in no way be required since I hope and encourage others to also make UI controls that target my "UI Mapper" framework.  These are what I want to somehow try to sale for $50 since they represent some significant work -- but I still have several options so I still need some feedback.  What I have are both Web and Windows versions of ListView (think grid) and EditView (think details) UI controls.  The ListView controls allow you to specify which properties, and in which order, are columns in the list, as well as letting you specify header labels (localizable), width, alignment, format, and sortable.  The built-in functionality is full support for selecting a row and paging and sorting, and filtering if you add the UI you want, as well as "links" for CRUD with optional deleting from the ListView with a confirmation dialog.  A lot of people will say this isn't that different from the standard grids, and that's somewhat true, but the benefit here is that you can easily layout multiple "views" on the same data, either for more flexibility or for different languages or for different "roles", and you can even make it all user-definable if you save their preferences in your database.  I also think the automatic support for paging and sorting, and deleting if you like it, is pretty slick, since the built-in grids use huge bloated datasets to "simulate" paging and sorting.  So what are my options here, before I describe my EditView controls -- I can release the real executables for these ListView controls and keep the source for sale, or maybe release just one of the Web or Windows versions, or release just demos like I do now for my ORMapper.  Maybe I even release the source for both of these and rely on only selling the EditView controls -- what do you think is a reasonable compromise to get people interested in "UI Mapping" while still making a little bit of money?

Finally there are my EditView and EditWidget controls, all of which come in both Web and Windows versions.  The EditView controls create the overall "details" view of a single entity, existing or new, in either an editable or read-only manner.  But note that the EditView controls do NOT actually "handle" the individual fields -- instead it creates an EditWidget for each field, and you can specify any EditWidget you want that implements my IEditWidget interface.  I have 10 EditWidgets right now (maybe I'll have a couple more before release) that use the standard .NET controls, but you could very easily create (or get one from somewhere else maybe) versions that support your favorite 3rd party controls or your own business-specific needs.  The types of things I have are "widgets" that represent single-line text, multi-line memos, read-only fields, boolean check-boxes, integer fields, number fields, date fields, single-select combo-boxes, multi-select list-boxes, and double-entry passwords.  My integer and number boxes use just the standard text-boxes in Web and Windows flavors, with the appropriate validation, but you could easily create your own version using Infragistics or something else and plug them in with just a single configuration line in the mapping file.  You may also want to create a more complex business-specific control, like an Address control or a custom Person Selection control -- that should also be easily doable.  I think the EditView and the EditWidgets are where its more obvious how this can be a significantly "better" way to do things, at least for most of your basic "admin" screens anyhow.  No longer do you have to carefully lineup 100 controls on a 100 different screens -- nor change them all when the designers want something slightly different.  No longer will you have inconsistencies in your UI because integers or dates were handled one way on some screens and another way on another.  No longer do you have to create separate versions for the Web and Windows, or different languages/locales -- you could even create another version of controls for cell phones if you wanted.  So this I'm thinking I would only release in demo form, but I'm certainly still willing to hear your opinions as long as you keep in mind that I'm NOT going to just open-source everything.

So what do you think I should do -- and why?  And what do you think of what I've laid out here -- any concerns or things you see missing that simply must be included from the beginning.  Again my vision is to release the "framework" as open source so that others can also build on this, although my hope is that people will buy something from me to help compensate for my time.  I also think there's a lot of value in a community of paid users from what I've seen with my ORMapper -- that may sound weird but its been very true.  I get tons of feedback and suggestions and even bug-fixes and new features from my paid ORMapper users -- but I get nothing from my open-source things, unless you count tons of newbie questions that paying users seem to avoid for the most part.  So please give me your thoughts now while I still have some choices remaining -- and thanks.

14 Comments

  • I've heard you mention the Beta... is this available for download anywhere? Would love to get my hands on it and provide feedback.



    -Michael

  • I did have a private beta that started back in July, and I've been taking the feedback I got from that, when I had time which has been a huge factor of course, but I'm now almost ready for the final release so there isn't anything I can give you until that time. But please take a look at today's blog entry and give me your thoughts -- that way I can make it what people want and finish it this month hopefully.



    Thanks, Paul Wilson

  • Whoa. I definitely want to participate and give you some input, but it's going to take some time to process everything you've presented. You've thrown out a lot of questions and ideas here. Exciting stuff... let me chew on it a while and I'll get back to you.

  • Did you obtain any professional help as far as graphics for your demo? I'd hate to try to get my boss to buy something when a demo only has "programmer" graphics.

  • You'll be able to swap out graphics, as well as any text. Also, my web controls expose css styles while windows controls expose things like fonts and colors. Of course at some point you may want to modify the source for these controls to get your own look, but you'll still have the benefits that the general framework brings.

  • Long ago I paid the $50 for a subscription to your suite of code. Your contribution to the community (open source) and your offerings are more than worth the $50. Initially I am not even sure you should release any of code for free. Demos of compiled source are good for people to get a feel for the tools, but those who will extend and build on top of them are most likely the paying folks anyhow.



    You have my vote for a subset being open (as a learning tool), but the bulk of the source being for those who appreciate your efforts enough to send the $50.

  • I can't think of any examples that were open source for the framework and pay for an enhancement that ended up being big open source hits. Imagine if nunit(junit) offered the framework for free but the console/gui tools and some of the assertions cost $$$. Imagine log4net or .Text asking that some features cost extra. People who really needed it would pay for it gladly, just as I did with the Wilson O/R Mapper. However hobbyists and students, enthusiast level developers and folks who didn't _really_ need it would probably pass it by and its overall level of adoption and saturation would suffer.



    It's a gamble for sure. I think you may be on top of something big here. Making it open source and putting it in sourceforge and getting other developers behind you could make Paul Wilson and UI Mapper very important but theres no guarantee that you would make a dime off of it. But asking a small fee for the extra goodies would be a sure way to get some level of reimbursment for your efforts.



    You have my $50 or whatever it ends up being regardless of how you decide to distribute. I'm sure you wouldn't see nearly the response, but a full open source release and a Donate link might be just the right compromise.



    Cheers,

    Street

  • I suppose there should be a demo that's free to download and try out. I think someone needs to be able to plug it in to see how it works, but they don't need source.



    I've built UI mapping tools in the past and have been thinking about doing something for .Net. Your UI Mapper might be a nice solution, so I look fwd to seeing a release.

  • I think you've hit on one of the most difficult things to decide for a freelance developer, to Open Source or not. My opinion is that you should go all one way or the other. Release it all under open source or pay a subscription for all the code. I feel that just releasing the framework with out controls wouldn't allow one to completely understand things.



    Conversely, a model that seems to work for DotNetNuke is to release the framework with a complete set of basic controls and then sell more advanced controls. That same model could work for you. Release the framework and a basic version of all the controls and sell more advanced ones.



    Also, in my opinion, just releasing as open source doesn't mean it will become a standard or even be noticed. Your writing and publishing articles does way more to attract attention and get people thinking about a new concept then just releasing some code. Maybe you could just "publish" the framework. Do a series of article that explain UI Mapping and the interfaces and how they interact, complete with code examples. Keeping in mind that you’re not marketing but teaching. Then charge the $50 for the subscription for the full source code.



    Those are my ideas, hope it helps

    Paul Welter

  • Just remember Paul....



    It's not illegal to earn a few bucks for all your work. 50$ is not the world and everyone (serious) should be able to spend this.



    I really like open source, since I can see how people smarter (and sometimes dumber ;o) than me, have solved different problems. On the other hand you shouldn't just give away (alot of) hours of work.



    I've never regretted paying the 50$ and when you look at other .net products (mostly without source code), it's almost theft at broad daylight ;o)



    Looking forward to the product.



    Thanks for everything...

    Rasmus Lindgren

  • I think you are on the right track here- its a razors and blades issues really.



    An Open source engine will help to add community value and provide a solid base which others can build on- and your paid for controls are there to make peoples lives easier- or they can build their own/grab others open source ones.



    Either way I am looking forward to seeing your efforts.



    Ben

  • Hey Paul,



    I'd have to agree with what Paul Welter has suggested. If you want it to become widely adopted, release the source for the framework and basic controls. Sell more advanced controls - unless you're not really interested in control building. Could you think of a sensible way to release a cut down/limited version of the listview?



    I think releasing it for free, and writing articles will get the widest adoption. If I got 1/10th as much use out of it as I do out of your O/R Mapper I'd happily donate another $50. However, wanting to move from a basic version to a more advanced version would probably make me realise that I've not got enough use out of it to hand you $50. :-)



    Good luck either way.

  • From a user perspective, I enjoy open source applications released under non-restrictive licenses, such as the BSD or L-GPL licenses. But that's the selfish side of me speaking.



    From a software author perspective, it's all about what will drive adoption of your solution. I can really see the open framework approach, but I don't think that selling advanced controls will drive sales (unless your framework becomes the new "Infragistics.")



    Perhaps open source the whole thing, but require a paid license for commercial use. This means that it will be easy for people to experiment with your framework, but if they wish to use it in a "Production" application, they are required to pay.



    At this price range, you have

    1. People who would like to compensate you for your work.

    2. People who will never pay a dime to you.



    What you should provide is an easy way for "Corporate" customers to expense or be invoiced. This is also why "donation" buttons are of questionable value here - I (and many others) need to be able to take a price sheet to my boss and say "I need this. It costs $x".



    Make it easy for people in Group 1. Group 2 may help drive adoption, but don't waste too many resources worrying about them.

  • Hi Paul,

    I think that if the price model you have used with the ORMapper has worked for you so far, you should do the same again. The product sounds useful and the $50 price is quite reasonable.



    I'm not sure if 'open sourcing' the main tool will be of benefit or not. There are many open source tools out there and they can be instructive and useful. However, I believe in making money for my effort and I think you should too. As long as the price is reasonable, I do not think most developers will mind pitching in. I do not necessarily think an open source portion will drive sales of the rest. I also think you will lose some control if you open source it.



    One of the things I like about the model you use for ORMapper is that I know who controls the direction of future development efforts and who to speak with regarding questions and suggestions. I like having the source because if for some reason you fall off the edge of the planet, I am not left high and dry. Most of my clients want the source for the work I do for them.



    I think a solid, functional demo is important for a reaonable 'test drive'. If I could not have had a decent test of your ORMapper stuff, I probably would not have adopted it. However, the source code *is* important to me for adoption. The price you are contemplating makes it a no-brainer for me.



    Anyway, bottom line, I like the way you have done things so far. I am looking forward to the product rollout.

    Thanks,

    -Dean



Comments have been disabled for this content.