On Feb 22, 2006, at 7:34 PM, Daniel Swarbrick wrote:

Overall, I'm right behind benjk's ideas (my preference being the XML
config files, although .plist looks manageable too), and look forward to
working on them.

I am using Apple's Core Foundation (CF) framework to read/write those files. The beauty of CF is that you don't actually have to settle for one format. CF handles both XML plists and NeXT plaintext plists, whichever you throw at it.

To allow cross-platform development Apple has released an open source subset of CF called CF-Lite under BSD/MIT style license terms for use on other *nix platforms and everything needed to read and write those property lists is part of CF-Lite.

More info on CF-Lite can be found at ...

http://developer.apple.com/opensource/cflite.html


At the same time, I agree with Bartek that we need to draw a line in the sand and push a stable version out the door, to attract some more Asterisk users over here.

It's of course up to you but you may want to consider including this in the original release.

For one, the changes involved are fairly minor because the CF/CF-Lite framework does all the work. I am not doing any parsing at all, I am only calling CF functions to return a value for a given key and populate Asterisk's/OpenPBX's existing internal data structures with those return values in the same way the Asterisk INI parser does.

Whilst the changes are minor, the benefits are significant and manyfold.

In fact, if legacy support, such as the ability to import or read INI files is moved into a separate conversion utility or into a plug-in module (ie. res_config_ini.so) then the core will actually be smaller and leaner because config file parsing is no longer done in the core itself.

Rest assured that Apple's CF and CF-Lite framework has several orders of magnitude more quality assurance behind it than Asterisk's config file parser and the chance that Digium's code will ever catch up is even smaller than OBL getting elected president of the United States.

At the same time the changes I suggest here have a fairly large potential to attract both new users and developers. This is because the way configuration files are organised and formatted is largely the equivalent of a GUI application's look and feel. Just like most people will decide to try out a GUI app as a result of how the screenshots appeal to them, the layout and syntax of configuration files will often be the only thing that allows new users to compare one server application with another.

Do people prefer postfix or exim over sendmail because they have a more modern design and better security models? Or do they initially choose them because sendmail configuration files look like alien hieroglyphs when compared to postfix or exim configuration files? The architectural benefits are most often seen as a nice-to-have item which will only be appreciated and understood once the software has been in use for some time. The original choice is most often largely based on "how easy is it for me to learn to work this thing".

Consequently, I believe that a well structured and intuitive configuration file system is a major factor in winning new users who might otherwise choose Asterisk simply because it has got more momentum.

The impact of this will be higher if the very first release has a different configuration file system than what Asterisk has got. It would send a visible message along the lines of "we do things more intuitively over here".

Further, the reason I am doing this in the first place is so I can develop a nice GUI front end. Whilst it is not impossible to do that on the basis of the INI format based configuration file system, it is an order of magnitude harder and a lot more work. Even then, the final result is likely to end up the way AMP has turned out. It's alright as long as you don't try to do anything AMP doesn't do for you and as long as you don't have to do any troubleshooting, but if you need to go under the hood it's going to be messy and confusing.

The property list based configuration in combination with the CF/CF- Lite framework will make the development of GUIs much easier. Further, whatever the GUI does, it will always show up clean and orderly on the property list level. Likewise you can edit your configuration files manually and the GUI will be fully aware of whatever changes or additions you have made.

For GUI developers this will make such a big difference that OpenPBX will likely attract the attention of GUI developers who would otherwise develop for Asterisk. The use of the CF-Lite framework guarantees GUI developers that their GUI apps will always be using the very same code to read and write configuration data as the server itself. Yet unlike Asterisk's config file parser, the CF-Lite framework doesn't require GUI developers to open source their apps if they don't want to, which should attract commercial GUI developers.

All in all, I see the changes I suggested as a low effort - high impact feature that can help OpenPBX to distinguish itself from Asterisk.

regards
benjk


                
___________________________________________________________ Yahoo! Photos – NEW, now offering a quality print service from just 8p a photo http://uk.photos.yahoo.com
_______________________________________________
Openpbx-dev mailing list
[email protected]
http://lists.openpbx.org/mailman/listinfo/openpbx-dev

Reply via email to