Information Technology Solutions, Inc. Inc. Solutions, Technology Information

FIRST CLASS FIRST

is published often by often published is Computing Object-Based

Computing Computing

Object - Based Based - - Object Object

THE OBJECTWARE PROFESSIONALS NETWORK Eric Wespestad, Chicago • quality (trusting objects you didn’t Robust interobject communication is a Information Technology Solutions create, standards for testing), and necessary precondition for component • storage of objects (persistency and software. Among other methods to archiving) accomplish this end, NEXTSTEP is OPN was founded shortly before NeXT- graced with Portable Distributed Objects, WORLD Expo 1993 under the name of OPN maintains an archive of its mailing a nearly transparent method of interappli- Open Protocols for NeXTSTEP - but list that is available via ftp for those cation messaging, even across heteroge- later changed its name, as it’s focus interested in the topics mentioned above. neous networks. expanded, to reflect the many facets of the ObjectWare equation. Since that time “OPN's mission is to evangelize individuals from about 80 organizations component software which can be Component software also needs stan- have participated in discussions like the woven by users into customized dard object programming interfaces to be following: solutions. OPN will provide the tech- exported by the various components. nical and political infrastructure for a OPN is serving as a forum where the vibrant component software mar- • brokering of objects (finding them), ket.”—Marcos Javier Polanco NEXTSTEP community can discuss and agree on what these standards must be. • documenting objects (figuring out “NeXT has for years offered the best Once users obtain these various objects technical foundation for this new how to use commercial objects), they will want to weave them together into age, but it did not come about. Why • licensing objects (how to distribute not? Selling kits to developers will customized applications, using either the and pay for third-party objects), not cause a paradigm shift in the Objective-C++ compiler or systemwide industry. Selling components to scripting languages. ! • normalization of protocols by which users will, and that means asking objects interroperate (assembling them "what will it take" for them to applications from the parts of other prefer components to Lotus Smart- See the related article “A Scenario for the applications), Suite.”—Marcos Javier Polanco ObjectWare Marketplace“ on page 5 .

INFORMATION TECHNOLOGY SOLUTIONS, INC Object-Based Computing / December 1993 500 WEST MADISON, SUITE 2210, CHICAGO, IL 60661 14 NEW ADDRESS ! Information Technology Solutions, Inc. 500 West Madison, Suite 2210 Chicago, Illinois, 60661

312.474.7700 312.474.9361 FAX NEW ADDRESS !

these in the future. In any case, be sure to Secondly, while our basic Makefile is (and probably will continue to be) BACKUP THE ORIGINAL MAKE- easily created/modified for each new kit, debated regarding performance FILES FIRST! we would be more inclined to create particularly. more such kits, if the process of putting the kit together (i.e. generating the • Shared libraries. This is what NeXT You might also consider modifying the Makefile) were as simple as Project- does with NEXTSTEP. This is useful basic ProjectBuilder templates (located Builder makes it for "normal" applica- (like the bundles approach described inside of its ".app" folder) in order to tion projects. Therefore, some kind of have your libraries (say, "libSuperDuper- above) for having common, shared code, "automated makefile generator" could be Kit.a") as a default library (much like which is dynamically loaded. used here. "libSys_s.a" and "libNeXT_s.a") for Additionally (this benefit is also present every new project that you start. Once in the bundle idea) this common code again, the warning is to BACKUP THE Finally, it's always nice to be able to could be changed, and all other ORIGINAL FILES FIRST! "see" your kit. By this I mean program- applications that use it would have the mers often want to view the relationship new and (hopefully) improved code between objects (in the case of an OO automatically! (Much like NeXT's Some other issues which I haven't environment, the class hierarchy). Some addressed here (but may in a future arti- tool for being able to quickly and easily famous claim about faxing in the Print cle) include such things as: Kit/Library look at your kit would be helpful. Dia- Panel.) documentation; an automatic kit/library gram! from Lighthouse Design is • Object repositories and class version makefile generator; and, a kit/library delightful, but manual. Who wants to management. This addresses the need to hierarchy viewer draw out class hierarchies by hand? maintain a history of revisions of code, and to restore previous versions as FUTURE DIRECTIONS In order to best facilitate the code re-use necessary. This is an item that must be that we advocate and that should be gen- There are future directions that code re- addressed regardless of the choice of erally encouraged, comprehensive docu- use might go in on the NEXTSTEP oper- strategies suggested above. Since mentation is a requirement. Program- ating system. We might talk about these mers must be able to look at, not only, the irrespective of how you share code, in future articles. Specifically, other code header files, but also, fully written class ultimately there will be the need to track re-use strategies might include: description files (such as those provided and manage revisions of code. by NeXT for its classes). While access to CONCLUSION the source code is okay, this should gen- • Using the ".subproj" as the basic unit of re-usability. This accommodates the erally be discouraged, since one of the • In conclusion, you can see how easy basic tenets of good object-oriented inclusion of ".nib" files as well as other resources such as sounds and images it is to get started with a simple code re- design is that each object is a "black box" use strategy right away. This will help to and the programmer should not design (which our current system, sadly, does address many of your needs to leverage around how an object does its work, only not accommodate.) off of previous work. As we continue what the results are. But...reality is real- • Using the ".bundle" as the basic unit ity, and typically, programmers "must" of re-usability. This accomplishes the with this (hopefully) series of articles, look at the source code. To work-around same as above, but also opens the and experiment (as is always required) this, we could use an "automatic docu- possibility of creating a "/LocalLibrary/ with new tactics, we will cover new and ment generator" that would create fully Bundles" folder which would contain better ways to re-use your older code formatted ".rtf" class description files bundles of re-usable code that can be and continue to improve your (much like NeXT's). dynamically loaded. This issue has been programming leverage! !

INFORMATION TECHNOLOGY SOLUTIONS, INC Object-Based Computing / December 1993 500 WEST MADISON, SUITE 2210, CHICAGO, IL 60661 13 Strategies for Re-use continued… Now...you want use your new library in build "fat" or "Multi-Architecture your latest project ("MyProject"). To do Binary" libraries for NEXTSTEP You can put your generic ".c" files (such this, go to your ProjectBuilder Release 3.1 and on. This requires only as functions) or ".m" files (such as cate- "PB.project" file, and select the "Librar- two minor changes: gories) on the "CFILES =" or "MFILES ies" category at the bottom of the first = " lines, as follows: column in the ProjectBuilder browser. CFLAGS = -Wall -g From the Files menu, select the "Add..." CFILES = ReallyWickedFunctions.c should be changed to: EvenMoreFunctions.c command to add your new library. Find your library ("/LocalDeveloper/Librar- MFILES = ZippyCategory.m CFLAGS = -Wall -g -arch m68k -arch ies/lib SuperDuperKit.a") in the "Add" i386 As with the class files above, the header panel browser, and click "OK". in order to specify the various (in this files don't need to be explicitly listed. case two) architectures you want to build Now, one final addition and you're ready for. Next, for any headers such as protocol to fly. If already have a "Makefile.pream- declarations, or files that simply define ble" file in your project, then add the fol- And this: macros or, enums, or new types, you lowing line: must list the header on the "HEADERS = $(LIB):$(OFILE_DIR) $(OFILES) " line: OTHER_CFLAGS = -I/LocalDeveloper/ ar rc $(LIB) $(OFILES) Headers -L/LocalDeveloper/ HEADERS = $(CLASSES:.m=.h) Libraries should be changed to: $(MFILES:.m=.h) $(CFILES:.c=.h) If you don't have a Makefile.preamble SuperNeatProtocol.h already, create one with Edit, and add $(LIB):$(OFILE_DIR) $(OFILES) ReallySpecialMacros.h libtool -o $(LIB) -s - $(OFILES) UnbelievableTypedefs.h this line. This enables your project Makefile to find the new library or librar- Using NeXT's new "libtool" program to Finally, you have to specify the name of ies that you have specified, as well as any properly build your libraries. There are the directory in the "Headers" folder, that headers, of the form: certain bugs with "ar" as used previously, all of the headers (including a pre-com- when applied to "fat" libraries. What I piled header) for this kit will be put in. In #import are transitioning from 3.0 to 3.1, is creat- Now your ready to go, use anything ing a "Makefile_3.0" and making the fol- HEADER_DIR = SuperDuperKit that's in that library. lowing changes: When you build this library, a complete library archive file (called "libSuper- Some additional points about this LIB = libSuperDuperKit_3.0.a DuperKit.a" will be built in: approach. You might notice that I haven't OFILE_DIR = obj_3.0 put the libraries into: /LocalDeveloper/Libraries/Source/ This will enable you to build a 3.0 com- SuperDuperKit" patible library, if you need to, by simply /usr/local/lib typing: and copied into: and the headers into: localhost> make -f Makefile_3.0 /LocalDeveloper/Libraries /usr/local/include install Headers (including a pre-compiled The reason for this is that we prefer to OTHER POINTS header) will be copied into: keep everything centralized so that we can (easily) pick everything up and move There are several possible additions to /LocalDeveloper/Headers/ it. The "Makefile.preamble", is simple this scheme that you (and we) might SuperDuperKit enough, and helps us add to the standard make to provide a more seamless envi- Now all you have to do is open a Termi- search path for these resources. (I believe ronment. First, if your centralized devel- nal window, and "cd" into your kit's that "/LocalDeveloper" is supported as a oper folder (be it "/LocalDeveloper", or, source folder: standard search path under NEXTSTEP as in our case, "/ITSDeveloper") is not in Release 3.1 now, but I have confirmed the standard search path for libraries and localhost> cd /LocalDeveloper/ that.) You can use "/usr/local/lib" and "/ header files, and you must add a "Make- Libraries/Source/SuperDuperKit usr/local/include" if you so desire, then file.preamble" to your projects, you and build the library by typing "make you will not require the "Makefile.pre- might consider actually modifying the install", as follows: amble" line as specified above. default/standard NeXT makefiles (located in "/NextDeveloper/Make- localhost> make install Secondly, the Makefile outlined above files"). Though, the warning here is that This will build and copy everything for works fine for NEXTSTEP Release 3.0 this is DANGEROUS territory since you. and 3.1. But, inevitably, you'll want to NeXT may (and probably will) change

INFORMATION TECHNOLOGY SOLUTIONS, INC 12 500 WEST MADISON, SUITE 2210, CHICAGO, IL 60661 Object-Based Computing / December 1993 IT Solutions Developers = Black

NEXTSTEP Development & White

NFORMATION Information Technology Solutions, Inc. I We know 500 West Madison, Suite 2210 T ECHNOLOGY NEXTSTEP Chicago, IL 60661 312.474.7700 FAX: 312.474.9361 S OLUTIONS on INTEL

To pull this off, there are three simple HEADER_DIR = ?Kit clean:: things you must do. First, create a folder PRECOMP = $(INSTALLDIR)/Headers/ $(RM) $(RMFLAGS) $(OFILE_DIR) called "/LocalDeveloper/Headers" and a $(HEADER_DIR)/$(HEADER_DIR) $(LIB) $(OTHER_GARBAGE) folder called "/LocalDeveloper/Librar- OFILES = $(CLASSES:.m=.o) $(OFILE_DIR): $(MFILES:.m=.o) $(CFILES:.c=.o) ies". Inside the "Libraries" folder, create @mkdirs $(OFILE_DIR) OFILE_DIR = obj a folder called "Source". This is where With this Makefile, all we have to modify OTHER_GARBAGE = you will organize the actual source code is the following lines: for your "kits". RMFLAGS = -rf VPATH = $(OFILE_DIR) LIB = lib?Kit.a Once you have done this, collect all of INSTALLDIR = /LocalDeveloper .c.o: the necessary class, category, function CLASSES = and protocol source files, into the $(CC) $(CFLAGS) -c $*.c -o $(OFILE_DIR)/$*.o CFILES = "Source" folder. Although you can put MFILES = all of your code to be re-used into a sin- .m.o: HEADERS = $(CLASSES:.m=.h) gle "monster" library, it is probably bet- $(CC) $(CFLAGS) -c $*.m -o $(MFILES:.m=.h) $(CFILES:.c=.h) ter to break this code into separate "kits" $(OFILE_DIR)/$*.o HEADER_DIR = ?Kit which represent distinct functionality. In this case, we'll fill in "libSuperDuper- This is what NeXT has done, for exam- $(LIB):$(OFILE_DIR) $(OFILES) Kit.a" for the "LIB =" definition, as fol- ple, with the DatabaseKit, the 3DKit, ar rc $(LIB) $(OFILES) lows: and the SoundKit.

headers: LIB = libSuperDuperKit.a Let's call the first "kit" the "SuperDuper- @echo >$(PRECOMP).h Kit". Create a folder called "Super- You may change the "INSTALLDIR =" @for i in $(HEADERS); do echo "# definition, if your "Headers" and DuperKit" inside your "Source" folder, import \"$$i"\" >> and move your code into it. Now...here is $(PRECOMP).h; done "Libraries" folders are located some- what we use as a Makefile for building @$(CC) -precomp $(CFLAGS) where besides "/LocalDeveloper". libraries: $(PRECOMP).h -o $(PRECOMP).p install:$(LIB) The "CLASSES =" line is where you put LIB = lib?Kit.a @echo Installing library... the names of your class ".m" files, so put INSTALLDIR = /LocalDeveloper @install -r -m $(MODE) $(LIB) "MyCoolView.m" and "ReallyNeatOb- $(INSTALLDIR)/Libraries ject.m" here. MODE = 0644 @echo Installing headers... CLASSES = @mkdirs $(INSTALLDIR)/Headers/ CLASSES = MyCoolView.m CFILES = $(HEADER_DIR) ReallyNeatObject.m MFILES = @install -c -m $(MODE) $(HEADERS) You won't have to worry about the CFLAGS = -Wall -g -arch m68k -arch $(INSTALLDIR)/Headers/ header files for these, the Makefile takes $(HEADER_DIR) i386 care of this. HEADERS = $(CLASSES:.m=.h) @echo Making precompiled headers... $(MFILES:.m=.h) $(CFILES:.c=.h) @make headers continued on page12

INFORMATION TECHNOLOGY SOLUTIONS, INC Object-Based Computing / December 1993 500 WEST MADISON, SUITE 2210, CHICAGO, IL 60661 11 An ObjectWare Scenario continued… as to ObjectWare distribution. It provides EDITORS POSTABLE: Marcos is a vast user market for ObjectWare, and the founder of the ObjectWare Pro- spell checker is being distributed with counts on robust systems tools to man- fessionals Network. To be added to Mesa, Pages, CustomApp, etc. Is con- the OPN mailing list or to contact trolling distribution important? age the added complexity. Customers are happy with this greater complexity since Marcos, please send electronic mail to [email protected] – for What a software component does when this reduces software costs. more about OPN see page 14. ! there are no more licenses is its business. The Kala Persistent Data Server starts As technology moves forward customers metering use if no more licenses are must make compromises. Faced with the NEWS FROM ITS available. Other component vendors may choice between the unruly jungle of cli- decide to assume honesty on the part of ent/server computing and the warm, ITS recently signed an agreement their customers and continue function- fuzzy assurance of IBM's hand-holding with Hewlett-Packard Company to ing, even without paid licenses. A variety customers performed a quick cost/bene- develop a NEXTSTEP interface to HP OpenMail—which is recognized of vendor policies must be supported. fit calculation and chose to jump off the as the market leading enterprise cliff. An incremental improvement over Separating the customer (developers) messaging backbone. The HP IBM's service and price would not have from the bill-payer (users) may be prob- OpenMail client will be delivered to done the trick...the benefits must be tan- lematic; developers still have an interest several very large NEXTSTEP sites in keeping component prices low; Pages gible and overwhelming. Does this in Q2/94, a commercial offering will has great incentives to find some other ObjectWare world present a comparable follow shortly afterwards. component vendor if SuperSpell level of rewards for customers? becomes too expensive for users.

Software costs often pale in comparison to the costs of software distribution, installation, and administration. Build- ing the licensing domain management Strategies for Re-use under tools could put us well on our way to automatic software distribution & asset NEXTSTEP management tools. Chris Cuilla, ITS IN CLOSING: This business model for ObjectWare The NEXTSTEP environment is touted with great fanfare among developers because vendors provides strong incentives for of its object-oriented development environment and design features, which presents customers to purchase component soft- stronger opportunities than any previous operating system, for the re-usability of pre- ware, provides clear pathways for viously written code (in this case "objects" or "classes"). ObjectWare vendors to be compensated for their efforts, and fosters greater diver- However, when it comes to implementing effective strategies for class, category, pro- sity in the applications market, as the tocol & function re-use, many developers are at a loss, and as a result they seldom, if vast supply of ObjectWare is reconfig- at all, re-use old code. This article will cover some basic steps that you can take, either ured and repackaged into application as an individual developer, or programming team leader, to implement a simple code suites, custom applications, "Works" re-use strategy. integrated applications, etc. Most impor- tantly, it accurately prices skills in the application value-added chain, allowing The first question is, "What tools does NeXT provide to facilitate this code re-use?" for an efficient market. Unfortunately, NeXT provides very little in the way of tools to assist developers in exe- cuting effective code re-use strategies. Once again, UNIX comes to the rescue provid- This model preserves the greatest virtue ing a selection of tools (i.e. make, ar) that developers can use to execute these of Brad Cox's superdistribution (ease of strategies. replication) while teasing it away from the (uncomfortable) concept of meter- BUILDING A LIBRARY ware. It also covers the three cases posed by Mark Thomsen In this example, we will demonstrate how to execute a simple library based code re- use system. What we do, currently, is to group a set of similarly related classes, cate- 1. ObjectWare"ISV"Users gories, protocols, and functions into a library or "kit" (in NEXTSTEP parlance). This 2. ObjectWare"Integrator"Users kit is compiled and built into a centralized/shared "Libraries" folder, with headers orga- 3. ObjectWare"Users nized into a shared "Headers" folder.

INFORMATION TECHNOLOGY SOLUTIONS, INC 10 500 WEST MADISON, SUITE 2210, CHICAGO, IL 60661 Object-Based Computing / December 1993 Information Technology Look Glass Design, Inc. The Stepstone ZGDV Darmstadt Solutions Corporation (604) 739-3131 +49 06151 293863 (203) 426-1875 400 West Erie, Suite 301 (604) 739-3008 FAX [email protected] Chicago, IL 60610 [email protected] (312) 587-2000 LDGCreditCardAuthorization • LGDModem • LDGSerialPort ICpak 101 Realtime Voice and Video [email protected] Communication PagerKit • StringSurgeon • Yahv.app (Header Viewer) Stream Technologies, Metaresearch, Inc Inc. ZippyTech (503) 238-5728 +358 0 4357 7340 Insight Software (503) 232-6323 FAX info@sti.fi (412) 421-9588 [email protected] [email protected] (503) 222-2425 Object Store PO Box 322 [email protected] Color Digital Eye Objects • SoundWorks Objects Homestead PA 15120 ImageView • ScannerKit Target Development InetObjects Base Collection & (800) 444-5435 Protocol Collection Mouthing Flowers. (717) 898-9190 Itasca Systems, Inc. [email protected] (206) 325-7870 (612) 851-3155 Link View Palette• Retriever [email protected] [email protected] Palette We would be happy to list ITASCA NEXTSTEP Client • your company -- please let us ITASCA ODBMS know how to list your com- Nightshade Software Trillium Sound pany and what objects are Research, Inc. (403) 492-9343 available from your company. Joe Barello Consulting, [email protected] (800) L-ORATOR Filling out the object submis- Inc. erta.ca (403) 284-9278 sion form on the page [email protected] will also help us to provide a (212) 580-8366 FilteredFields • GraphMe • complete list of resources for (212) 580-1857 FAX NiftyButton Text-to-Speech Kit the object based NeXT devel- [email protected] oper. Tab Palette Uptime Object Factory, Objective Technologies, Inc. In future issues an important Inc. part of this publication will (+41) 55 12 42 29 be a descriptive list of tools Kapiti Limited Suite 1502 (+41) 1 932 4923 FAX 7 Dey Street and objects that are available (071) 587-0033 [email protected] New York, NY10007 to NeXT programmers. We (071) 735-3765 FAX (800) 3-OBJECT FilterKit • Generic Search will be trying to review two FIST: Complete Dealing (212) 227-6767 Facility for DBKit • Nikita: or three objects or program- ming tools each month. If you Room System (212) 227-3567 FAX Advanced NetInfo Kit [email protected] would like to have your object or tool reviewed send a ChooserPalette • Versant Object copy, with all associated liter- KCW Consulting GraphPalette • MathPalette • Technology ature and documentation to: (703) 938-4152 OTDBKit • OTI Extended Text Object • OTI Tabular Text (415) 329-7542 [email protected] [email protected] Example Objects • OTString Ted Shelton, Publisher PhoneTones Kit • SmartFieldPalette Versant ODBMS Object-Based Computing c/o I T Solutions 500 W. Madison, Suite 2210 Chicago, IL 60661 Lamb Software Design RDR, Inc. VNPSoftware (617) 661-4292 41-22 735.96.03 Suite 350 [email protected] (617) 864-6768 FAX 10600 Arrowhead Dr. [email protected] We apologize in advance that LSDDistMatrix Fairfax VA 22030 submissions for review can- (703) 591-8713 AccessKit • UIBinder Palette (703) 273-8170 FAX not be returned. [email protected] Liveware Corporation Workstation AG RDRGadgets • (303) 484-7607 RDRImageView • +41 91 505094 Object - Based [email protected] RDRSelector • RDRSound • [email protected] Computing LockOut Object Set RDRSwitchView DBDragger • FuncEdit • Knob

INFORMATION TECHNOLOGY SOLUTIONS, INC Object-Based Computing / December 1993 500 WEST MADISON, SUITE 2210, CHICAGO, IL 60661 9 An ObjectWare Scenario continued… OPI experiences a one-time spike in the With the supply/demand problem for ObjectWare solved (!), we'd do well to Pedro decides to purchase a used com- usage of SuperSpell, resulting in twenty puter from Ana Franco, a student who grace-period licenses to be issued. After adopt standard documentation & distri- had been running OnDuty under grace the grace period ends, users find that no bution format, such that ObjectWare period; her licensing domain is "tainted"; more grace-period licenses are available, repositories can easily be browsed; third- Ana's transgression will deprive Pedro of at least until the twenty from the previ- party ObjectWare should be as well inte- a grace period for OnDuty for his whole ous spike are paid for. Solution: Pedro grated into the NEXTSTEP environment licensing domain. Solution: For a while I may set a limit on how large the usage as NeXT's own: NeXT should help craft thought the licensing domain's the 'Scar- spike may be; this limits how badly his standards which will encourage a combi- let Letter' should follow Ana, that it licensing domain is tainted. natorial explosion of multi-vendor would not be handed to Pedro. But this ObjectWare. gets ugly quickly. We may say Pedro OTHER THOUGHTS: *has* to accept responsibility for Ana's ObjectWare vendors must decide to what abuse; then the market value of Ana's extent they want to control the distribu- computer is adversely affected. Resolv- This approach to ObjectWare licensing tion of their product. Under the scenario ing this issue may also provide for a way teeters on the commonality of the described here, it will be only after the to deal with economical licensing for ObjectWare underlying applications. fact that ObjectWorks will realize their notebook computers, which are detached Will there be much commonality? Is from the network periodically. there a way of measuring what it will be? continued on page10

Object Catalog Dept. of Radiology Eye Research Institute ObjectWare for NEXTSTEP Ohio State University Hospital (416) 369-6478 (416) 369-526 FAX Objects, palettes, and other (614) 447-9194 [email protected] tools for NeXT Developers: Archetype, Inc. [email protected] Calera Network OCR Toolkit (617) 890-7544 state.edu (617) 890-3661 FAX ImageScrollView/MiniView [email protected] ABComputers Harvard Toolworks, Inc. Document Engine (401) 521-2829 Digital Composition (508) 772-4420 (401) 521-2829 FAX Systems, Inc. (508) 772-4603 FAX [email protected] [email protected] BenaTong (415) 673-5322 (614) 276-7859 [email protected] DBCalendar & DBText ProFuse Rule Adaptor (614) 276-7859 FAX SpreadSheetVue [email protected] or [email protected] Anderson Financial state.edu Hot Software Digital Tool Works Systems, Inc. Serial Solutions (617) 742-4057 (617) 252-0088 (800) 237-8723 [email protected] (616) 876-8901 FAX (215) 653-0911 [email protected] Black Market Equation (215) 653-0711 FAX BarCodeKit • SerialPortKit [email protected] Technologies, Inc. (718) 522-5090 AFSApplication • AFSButton • (718) 522-5090 FAX Doberman Systems AFSEventManager • Hutchison Ave. Software [email protected] (801) 944-4329 Corp. AFSFindPanel • AFSForm • GridPalette • Multicell [email protected] AFSHelpPanel • s.com (514) 499-2067 AFSLookupsPanel • (514) 845-5236 FAX Simulation Kit [email protected] AFSMatrix • Conextions, Inc. AFSMouseCalcPanel • NewsKit • QuoteKit (508) 689-3570 AFSReportPanel • Elysia, Inc. AFSScanPanel • (508) 689-2450 FAX AFSTextField • AFS3DButton/ [email protected] (+33) 1 47 49 61 96 Graph • 3270Builder • 3270Palette • (+33) 1 47 14 99 09 FAX Object - Based AFSWindow,AFSPanel • 3270Toolkit • 5250Palette • [email protected] Computing TradeKit 5250Toolkit ImageView Palette • ScanKit

INFORMATION TECHNOLOGY SOLUTIONS, INC 8 500 WEST MADISON, SUITE 2210, CHICAGO, IL 60661 Object-Based Computing / December 1993 PROBLEM SITUATIONS: A new version of SuperSpell is shipped WorldClock from ITS Arsenio Rodriguez, a mere end-user (not directly to Pedro, who is *not* an roaming the Internet, finds and ObjectWorks customer, but maybe in the downloads a copy of Pencil Me In (PMI). next release of Mesa). Should we auto- He runs it, thus triggering a Sarrus- matically upgrade the SuperSpells used specified grace period for software use. with Pages? (This is just like upgrading Arsenio then tosses PMI. Unaware of system software.) Solution: Maybe, this occurrence, Pedro tries to take PMI maybe not. for a test drive a month later, and finds the software refuses to run. Solutions: Arsenio decides to use the color separa- tor in Pages, thus triggering a license 1. Rather than refusing to run at all, grace period for that component...Pedro PMI runs in demo mode. Arsenio gets to see the bill -> unpredictable could have also run it in demo mode expenditures! Solution: the grace period from the start, preventing the license provides a buffer for triggering licenses server from being informed. you did not really want. Also, ISV’s 2. Refuse to run full-blown software should inform their customers what the without authorization from the top price for their product will be, administrator of the licensing assuming all the components are domain. licensed. Alternatively, customers could pay for all the components up-front, and A massive application utilizes hundreds get it over with. of components, resulting in a flurry of requests to the license server. Solution: This is unlikely to happen, unless all the ObjectWorks decides to unleash a Super- components are loaded at the same time. Spell virus; the software spreads and But components could have "license del- Celia Cruz, the administrator at Mission egates"; SuperSpell could delegate Critical Inc., sees she owes money to acquiring a license to the application, ObjectWorks. Solution: Besides being a which would then go license shopping terrible PR move, the grace period is key for all its components. here. A related case is the licensing of invisible components, say a DBKit adap- A customer finds he must cut twenty tor. (Notice the ISV can bundle every checks resulting from the purchase of known adaptor with their software; only just one application! Solution: as sug- the ones used by the customer need to be gested by Ben Bernhard, one-stop shop- licensed.) Components are not free enti- ping is where the action is. It is easy to ties; they are useful only within some imagine that licensing clearing houses context. Maybe Celia can query the net- will emerge such that customers can work for which applications utilize write a check to one of them; the clearing SuperSpell; she can then match the bills house then distributes payment to all demanded by ObjectWorks with the involved parties. (1-800-OPN-SALE? usage patterns for the applications which Naw, a private concern can probably do a invoked it. This is a tough problem. good job of this.) We may even do with- out clearing houses altogether if pay- McCaw Cellular talks to Pages about an ment mechanism are built into the enterprise-wide license. However, license servers. SuperSpell is licensed per-workstation. Solution: Component manufacturers Appsoft Write's text engine captures crit- must be *very* flexible in the way their ical mass; other text engines are at a software is distributed; the components decided disadvantage, as Write's text Just $45 should have some built-in circuitry to engine has (for all practical purposes) account for the various ways in which ...and you’ve got all become system software. Solution: This they are being licensed by customers, is where the Open Protocols Project the time in the world... which affects the bill the license man- comes in and tries to hammer out @pro- ager will present to the customer. tocol(TextEngine), such that the market stays as accessible as possible. continued on page 8 800 394-4497

INFORMATION TECHNOLOGY SOLUTIONS, INC Object-Based Computing / December 1993 500 WEST MADISON, SUITE 2210, CHICAGO, IL 60661 7 manager finds that there are five unpaid even without licenses. While it may be share.) There is, of course, the dead calm licenses which are being granted under a relatively easy to determine how many when the ObjectWare vendor must sup- grace period. This is a clear signal for Mesa and Pages users there will be, esti- port application developers before they Pedro to send more cash to Pages. mating simultaneous use of component even start seeing end-user checks in the software is virtually impossible, particu- mail. Smart vendors will eat this support Pedro is happy to get fully functional larly if the component is invisible to cost rather than charge an up-front fee software to try out, and that the applica- users. for ObjectWare: their job is to get their tion was trivially easy to acquire. Fur- ObjectWare into as many customer thermore, he can tune purchases to the Let's look at this scenario from the per- installations as possible; once a particu- real, actual software usage patterns of spective of the various players: lar piece of ObjectWare achieves wide his users. coverage it becomes systems software Application Developers - will ship from the application developer's stand- One of the components shipped with more capable, integrated, and *larger* point. ISV's can also get into this game: every copy of Pages is SuperSpell, the applications. It costs the ISV very little Appsoft would do well to ship Write's multilingual spell checker from Object- to ship copies of SuperSpell, for exam- text engine as a basic word processor for Works. SuperSpell is, for the first time, ple, with their software. If SuperSpell is very cheap, as a loss-leader. This causes invoked by one of OPI's users. We enter a user-visible component, then Object- other application vendors to utilize the grace period for SuperSpell's first Works should be the one supporting it; Write's text engine (which customers license. Pedro follows the same proce- that is unless SuperSpell has been deeply have already bought) versus PasteUp's dure as before, sending a check to integrated with Mesa/Pages, in which (which customers would have to pay for ObjectWorks at some point, and gradu- case Athena Design/Pages has "internal- again). Appsoft makes money selling ally upping the number of licenses he ized" SuperSpell's functionality, making extensions to their text engine. purchases. for tighter integration than the arms- length communication normal for appli- With a vast user market becoming estab- Pedro is a bit annoyed at having to pay cations from multiple vendors. The ISV lished, ObjectWare will proliferate. individually for these various compo- also find it easier to price their applica- ObjectWare's customers are other devel- nents. However, he may actually be hap- tions: they charge users for their value opers, although the bills are ultimately pier, since he pays only for components added in putting components together. paid by users. So in order to convince that actually get used; if his users never The ability to price this value added other developers to ship with their com- touch the table editor, he never has to accurately leads to more specialized ponents ObjectWare must attain unparal- pay for it. Pages is very happy, since it firms and efficient markets. Interestingly, leled quality and its vendors must was able to distribute SuperSpell at no as sales go through the roof, Pages is not provide security to the application ven- cost to itself. Pages charged Pedro for as tempted to develop their own replace- dors. OPN may also get into the game of their VALUE ADDED, not for any com- ment to SuperSpell: they pay nothing for setting quality standards and certification ponents which may have been shipped it anyway. Time-to-market is enhanced. procedures. with Pages. ObjectWorks is overjoyed, since it got SuperSpell in more users' Incidentally, this market encourages hands. application vendors to componentize Customers - will see lower costs and their applications to a greater level. Sup- better applications. They will *demand* The plot thickens. Pedro acquires Athena pose that in order to communicate with componentized software. When they Design's Mesa, and deploys to his users, Pages' color separator I have to invoke open the appWrapper in Pages, for purchasing thirty licenses. Mesa *also* the whole of Pages. Well, other applica- example, they see eight or nine compo- comes with a bundled copy of Super- tion vendors probably want to ship just nents which they will be able to leverage Spell. But OPI does *not* need to pur- the color separator with their custom to lower the cost of future software pur- chase any more SuperSpell licenses. applications; Pages will be at a disadvan- chases. Users may also utilize scripting Pedro can leverage the components he tage if it cannot deliver such a compo- languages or Objective-C to craft their has already purchased in making his new nent on its own. own applications with these components. acquisition. He only needs to pay Athena With so many APIs exposed, deeply inte- Design for their value added by their ObjectWare vendors - are in heaven. grating even multi-vendor applications application. When he purchases a cus- For one, pricing ObjectWare becomes will become routine; monolithic applica- tom application which uses Mesa as a much, much simpler: they can estimate tions will be at a decided disadvantage in backbone, he can again leverage the their market penetration and amortize this world. licenses he already paid for. development costs over the huge user market. (This is similar to the pricing Customers will also see more applica- Pedro is overjoyed that the more he buys rationale behind Renderman, PostScript, tions, as the available ObjectWare is the more he saves! This situation also and PhotoCD licenses, although system reconfigured and repackaged into a vari- points to why ObjectWare should run software can guarantee 100% market ety of specialized applications.

INFORMATION TECHNOLOGY SOLUTIONS, INC 6 500 WEST MADISON, SUITE 2210, CHICAGO, IL 60661 Object-Based Computing / December 1993 THE INTEGRATED DESKTOP AS APIs. The current examples of these In short, successful NEXTSTEP custom- A BASELINE open-ended applications are already sur- ers are focusing their efforts on looking passing the more isolated shrink-wrap forward, not backward. From a user perspective, NEXTSTEP's software that is currently available on integrated desktop has always offered a other platforms. And that brings me to powerful form of leverage. The seam- So if, after experiencing the benefits of my last point less, consistent integration of the Work- Object Technology, the AppKit, and space Manager, Mail, and 3rd-party NEXTSTEP's integrated desktop com- applications brought users a new base- LEGACY VERSUS LEVERAGE plete with extensible shrink-wrap appli- line of interapplication cooperation that cations, a customer still wants to relegate other platforms are only now catching up There is a lot of talk these days about their productivity suite to a dark, isolated with. However, the really unique thing how the availability of SoftPC on corner of their Workspace using SoftPC, about NEXTSTEP is the synergy NEXTSTEP 3.2 will make shrink-wrap they can go right ahead and do that. between custom and shrink-wrap soft- applications on NEXTSTEP obsolete, However, while this company is reliving ware that extends the user environment but I don't see things playing out in quite the past, its competitors are looking to into something new and compelling. that way. In fact, SoftPC's isolation from the future by building an advantage with the rest of the integrated desktop will native NEXTSTEP solutions. The bot- EXTENSIBLE SHRINK-WRAP most likely reinforce customer tom line is, if they're not leveraging their EXTENDS LEVERAGE commitment to NEXTSTEP's native desktops, they might as well not be using applications. The phenomenon of ObjectWare on NEXTSTEP. ! NEXTSTEP is no longer limited to indi- vidual software components. It now Customers who develop and deploy mis- includes shrink-wrap applications on sion-critical custom applications on POSITIONS AVAILABLE NEXTSTEP that offer a new level of NEXTSTEP are using this technology to ITS is currently accepting applica- extensibility that has yet to be matched gain competitive advantage today. They tions for employment from experi- on any other platform. are using object technology to develop enced NEXTSTEP developers. and deploy better solutions faster to their Please send resumes by fax to That's why I think that much of the users. They are harnessing extensible 312.474.9361 or by email (NeXT attention being paid to component shrink-wrap applications and integrating Mail accepted) to [email protected]. No software on NEXTSTEP is focusing at this functionality into their own mission- phone inquiries please. too low a level. Most componentized critical software. software is pure code, useful mainly to other engineers. Typical components by themselves are just too small to give custom application developers any serious leverage on a large-scale A Scenario for the development effort. There is much more to be gained by merging custom ObjectWare Marketplace applications with extensible, open- Marcos Javier Polanco ended, shrink-wrap applications.

Why do extensible applications offer EDITORS NOTE: This article is from a posting Marcos made to the OPN more leverage than componentized (Objectware Professionals Network) mailing list in late July 1993 - I have left the name of real products and companies intact—their use is necessary. I had objects? Because 3rd-party application originally thought to write a piece describing OPN and the topics it has addressed. developers invest the one to two years However, upon re-reading the ObjectWare Scenario, I decided to include it that it takes to develop and refine a high verbatim, and then add a few comments myself. quality user interface. Why should cor- porate developers spend 18 months rein- Pedro Knight manages a medium-sized NEXTSTEP installation at Operational Pro- venting a spreadsheet, word processor, ductivity International. He has just decided to get copies of Pages by Pages. He or scheduling application when they can acquires a full-blown copy of the software from anywhere (Paget Press' Electronic harness an existing application and sim- AppWrapper, the guy next door, the FTP archives, Pages' BBS, anywhere. As soon as ply incorporate it into their own work? Pedro activates Pages, the software registers with the license server, standard with NEXTSTEP, to see how many Pages licenses OPI has purchased. Finding zero, Pages The most compelling promise of NEXT- informs Pedro that it will run without limits for a vendor-specified grace period. Pedro STEP's object orientation is a wide vari- deploys Pages to his users. At some point before the grace period ends Pedro sends ety of shrink-wrap applications with payment to Pages for the twenty licenses Pedro expects to use simultaneously, and gets open architectures and clean, reusable keys to these licenses. Over the next few months, more users try Pages, and the license

INFORMATION TECHNOLOGY SOLUTIONS, INC Object-Based Computing / December 1993 500 WEST MADISON, SUITE 2210, CHICAGO, IL 60661 5 Sarrus Introduces a Powerful Other scheduling software promises enterprise scheduling with the you power—if you’re willing to give up simplicity of a paper time planner. Idea in Scheduling. ease of use. We developed Pencil Me In# because you told us you needed Full-Featured and Flexible both. Pencil Me In lets everyone manage their time their own way. Eight The ROI of Group Scheduling customizable formats with alarms and Enterprises from small businesses to security. Click-to-type appointments the Fortune 1000 are discovering that and action lists. Group calendars to group scheduling gives them a coordinate schedules, and shared tangible return on their investment. calendars to reserve conference Why? Because people who work in rooms. groups spend a large part of each work day coordinating meetings, Call Us for a Free Demo juggling action items, and hunting Our customers love Pencil Me In. We down conference rooms. Group think you will too. Call us at scheduling software makes these 1-800-995-1963 for a demo of Pencil tasks more efficient for individuals and Me In. And simplify everyone’s life. for whole organizations. Sarrus Software, Inc. Power and Ease of Use 565 Pilgrim Drive, Suite C Pencil Me In is the leader in group Foster City, CA 94404 scheduling on NEXTSTEP for a simple (415) 345-8950 reason. It’s the only product [email protected] Simplicity. that gives you the power of true SOFTWARE

(C) Copyright 1993, Sarrus Software, Inc. All Rights Reserved. Pencil Me In is a trademark of Sarrus Software, Inc. NEXTSTEP is a registered trademark of NeXT Computer, Inc.

a particular Document. I was even able to For the way I have used the kit, it has use this scheme to implement many-to- been quite robust. Classes that I've used many relationships using correlation with success include IXBTree, IXBTree- Leveraging objects. Cursor, IXPostingCursor, IXPostingSet, IXRecordManager and IXPostingList. Shrink-Wrap IXFileFinder has also worked well for LIMITATIONS OF THE KIT me although I don't take full advantage on NEXTSTEP of many of it's features. The IXAttribute- One must be aware that the IndexingKit Query and the query language is not fully Andrew K. Turk, President is not as mature as some of the other kits implemented so if you try to do anything Sarrus Software, Inc. and hence has some limitations. The kit other than straightforward queries, you is quite vast and complex. There are will have problems. NEXTSTEP is all about leverage. With some areas that have not been fully NEXTSTEP's object-oriented develop- implemented and others that have not ment environment, MIS departments are CONCLUSION been adequately tested. If you work with using smaller teams of engineers to deliver more solutions in less time. Inter- the core functionality, the IndexingKit Despite its limitations, the IndexingKit nal customer satisfaction is on the up- will work well for you. If you venture out as it now exists is a very powerful tool swing, and businesses are working into some of the outer reaches of the kit, for developers. It can add a lot of value to smarter. you might encounter some problems. your applications if used properly, and frees your application from depending This is the leverage of NEXTSTEP's on an expensive relational database. When the kit was first released with object-oriented programming environ- Were it not for the IndexingKit, PDL NEXTSTEP 3.0, it had some major ment. But there is another kind of lever- would not be as functional as it now is age to be gained on NEXTSTEP – a kind flaws. The kit was vastly improved with without a tremendous amount of addi- of leverage that also grows out of NEXT- 3.1, and 3.2 promises to be even more tional expense and engineering over- STEP's object model. I'd like to talk here robust. In addition, the kit has not head. If you are working on a data- about how customers are also leveraging received the high level of support from oriented application, it would be well shrink-wrap software on NEXTSTEP NeXT as, say, the DBKit even though it worth the effort to look into the Index- and examine the competitive advantage is just as complex and perhaps more so. ingKit. ! that this new leverage provides.

INFORMATION TECHNOLOGY SOLUTIONS, INC 4 500 WEST MADISON, SUITE 2210, CHICAGO, IL 60661 Object-Based Computing / December 1993 The Record Manager Layer values of the attribute as keys and the path containing files to index. It will handle of the object as the associated recursively scan the directory and create This is where the foundation of the lower values. This way we can quickly search an index of the textual content of the files layers gets put to good use. This layer, in for an object based on the value of one of it encounters. The Digital Librarian which the IXRecordManager is the main its instance variables. In our example we application is basically a front-end to the class, implements a persistent object probably want to be able to find an IXFileFinder. store of Objective-C objects. With some AddressEntry based on the name limitations, you can literally pass it the id attribute. We would set up the attribute of an object and it will tuck it away and HOW PDL USES INDEXING KIT inversion as follows: return you a unique handle which you The Perennial Document Librarian can use as a reference. For example, [recordManager (PDL) is an example of how the power of suppose you were writing an address addAttributeNamed:"entry name" the IndexingKit can be leveraged effec- book application. You might define an forSelector:@selector(name)]; tively. PDL is a system for managing and object for each entry that looks [recordManager sharing libraries of documents among something like this: setComparator:&IXCompareMonocas users on a network of NEXTSTEP com- eStrings puters. PDL includes a server that man- @interface AddressEntry : Object andContext:NULL ages a secure library where the forAttributeNamed:"entry name"]; documents are stored. It features access { [recordManager control, check-in/check-out, revision char *name; setTargetClass:[AddressEntry maintenance, searching, notification and char *mailAddress; class] compression. char *phone; forAttributeNamed:"entry name"]; char *fax; The first statement creates the attribute PDL uses the IndexingKit in two ways. char *emailAddress; inversion. The second statement defines First it uses it at the IXRecordManager char *otherInfo; a function that will compare the values of level to store records of the documents in } the attribute so that it can be inserted the library as well as other information. - (const char *)name; properly into the B-Tree. Whenever sub- It also uses the IXFileFinder to build . sequent objects are added to the store, indices of the textual content of docu- . the IXRecordManager will send the ments in the library. @end name message to the object to determine Adding the object to the record the value of the attribute. The returned manager is simple: value will be the key used to define the With the IXRecordManager, I was able id myObj = [[AddressEntry alloc] location in the inverted B-Tree, and the to build a quasi-relational/object-ori- init]; handle of the object will become the ented database. I built a model (schema) unsigned int handle; value associated with that key. The third of the database which showed all the statement associates the AddressEntry objects (entities) and the relationships handle = [recordManager class with the attribute. Note that an between them. This model was then addObject:myObj]; IXRecordManager can manage objects implemented by using Objective-C By conforming to the IXRecordTran- of various classes in the same store. objects which are stored in the database. scription protocol, the object can be Objects contain references to other "serialized" by the IXRecordManager With attribute inversions we can quickly objects not via the id but via the unique into the data store (an IXBTree). Serial- find an object that has a certain value for handle assigned to each object in the izing is a much more efficient way of one of its attributes by searching the database. I then built inversions on these moving the object into and out of the inverted B-Tree based on the value we references so that I could easily find store. The alternative is to archive the are given, then reading the handle (or related objects. For example, I have a object into a typed stream using the handles) associated with that value. Document class and a Revision class. NXWriteRootObject function which has There is a one-to-many relationship a lot of overhead. However, certain data between these classes such that a Docu- The File Indexing Layer types cannot be serialized (e.g. void *, ment can have many Revisions, and each union, struct) and id's are not followed, This top layer of the IndexingKit is a Revision is a version of a single Docu- but for simple objects like the one above, sophisticated system for indexing files in ment. This relationship is formalized by serializing is the way to go. a UNIX file-system. It contains classes including in the Revision class a refer- that manage conversion of files into an ence to the instance of Document it is a The other important feature of acceptable format, parse the file for revision of (i.e. an instance variable that IXRecordManager is that it can auto- words, build up indices of those words, contains the handle of the related Docu- matically build inverted B-Trees on and allow queries to be performed based ment object). By building an inversion certain attributes (instance variables) of on the words. The main class, on this reference, I can easily find all the an object. An inverted B-Tree uses the IXFileFinder, can be given a directory Revision objects that are associated with

INFORMATION TECHNOLOGY SOLUTIONS, INC Object-Based Computing / December 1993 500 WEST MADISON, SUITE 2210, CHICAGO, IL 60661 3 IndexingKit continued… books, scheduling, and client tracking systems are all examples of applications work of data management. The Index- that can benefit from the IndexingKit. Object - Based ingKit provides objects that allow cre- ation and management of the database THE INDEXINGKIT Computing itself. The kit does not implement any ARCHITECTURE particular type of database such as rela- A forum for developments in object-based tional or object-oriented, rather it pro- The IndexingKit consists of several lay- computing in the NeXT community. vides fundamental building blocks that ers of functionality. Each layer, consist- allows programmers to develop their ing of several classes, is built atop An ITS Publication$ own custom database. another. The application programmer can use the kit at any level depending on Editor: Eric Wespestad the requirements. In my opinion, the The core of the kit provides reliable IXBTree class is really the foundation of Circulation: Annalea Sommerville transaction based data storage and struc- the kit. Lower levels of the kit provide a tures for efficient data organization. At Publisher: Ted Shelton backing store for the B-Trees and higher higher levels of the kit are classes that levels use the B-Trees to contain data, EMail: [email protected] implement a persistent object store, record attribute inversions and indices. allowing Objective-C objects to be Information Technology Solutions, Inc. directly inserted into the database. This I will discuss briefly the four layers of 500 West Madison, Suite 2210 is especially nice for NEXTSTEP pro- the kit and the key class of each layer. Chicago, IL 60661 grammers. At still higher levels of the kit are objects that can parse files and build The Storage Management Layer Subscription Information indices of their textual content, and it is 12 Issue subscriptions are $28. Please from this functionality that the Indexing- This lowest layer provides a backing specify hard copy version, or electronic Kit gets its name. store for small to large sets of data. It version (available only to subscribers with allocates and manages blocks of storage NeXT Mail). We regret that subscriptions are available only on a pre-payment basis. Besides data storage and management, for a client application. IXStore is the Please send checks or money orders to: the IndexingKit provides objects for fast key class of this layer. It manages mem- Information Technology Solutions, Inc. searching and retrieval of data. Objects ory-based storage consisting of elements called blocks. These blocks are relocat- 500 W. Madison Suite 2210, Chicago IL can be written to and read from the data- able within the store and thus the store 60661. Please include your name, base directly without having to be company, address, fax and telephone can be compacted to optimize memory archived into a typed stream. Also numbers, and an EMail address if available usage. IXStore also implements transac- instance variables of objects in the data- (specify NeXT Mail). Object-Based tion management so that several opera- base can be read directly without having Computing is available on-line to tions made to your database may be to read the entire object out of the data- subscribers. committed to the store at once. This also base. This makes data access fast and allows you to undo the changes before Advertising Information efficient. committing them. A sub-class of IXS- Center pages 2 (7.5×9.5) $1100 • Inside tore, the IXStoreFile, keeps its storage in front or back pages 2 (7.5×9.5) $800 • Full Any application that manages informa- a file. page (7.5 9.5) $350 • Half page (7.5 4.5) × × tion either at a personal or a group level $200 • Third page (7.5×3) or Full column can benefit from the functionality of the The B-Tree Layer (2×9.5) $120 • Business card (3.5×2) $50. IndexingKit. Often, it is not practical to This next layer up implements B-trees, rely on a commercial database for your Article Submissions which define an organization that allows application. Commercial databases often Thank you for letting us know what kind of for fast searching of data elements and add cost as well as overhead. For exam- articles you’d like to read. We are also efficient paging. The main class here is ple, a commercial database would be looking for articles to print... so please IXBTree. It is similar to the HashTable overkill for an address book application, consider sharing some of your experiences class in that it stores ordered associations yet the IndexingKit can easily be used to with the NeXT community. Please send of un-typed data using key/value pairs, submissions or questions about submission store and search address book entries therefore it can be used as an alternative deadlines to the editor. without any additional cost (as long as it data structure to the HashTable and List is bundled with NEXTSTEP). classes. I NFORMATION T ECHNOLOGY Bulletin board systems, news feed man- IXBTrees are created in an IXStore (or S OLUTIONS agement, customer service tracking, flat- IXStoreFile) and thus gain the benefit of file databases, calendering, address transaction management.

INFORMATION TECHNOLOGY SOLUTIONS, INC 2 500 WEST MADISON, SUITE 2210, CHICAGO, IL 60661 Object-Based Computing / December 1993 Published often by ObjectObject -- BasedBased INFORMATION TECHNOLOGY SOLUTIONS INC. A forum for developments in object-based ComputingComputing computing in the NeXT community. VOLUME 1, NUMBER 5, December 1993

Submissions Encouraged! editorsDesk IndexingKit: Thank you for letting us know what kind A lot seems to be happening on the The Unsung of articles you’d like to read. We are also object-based computing front recently— looking for articles to print... so please from the activities of objectware compa- Object Library consider sharing some of your experi- nies (those that sell objects, possibly in Phil Zakhour, San Franciso ences with the NeXT community. addition to applications and consulting Information Technology Solutions services), to rumors of large new “object providing” companies being created. One of the most neglected object librar- thisIssue Hopefully we are beginning to see signs ies that NeXT has to offer is the Index- of a vibrant new marketplace? Will ingKit. I believe this is so because it is In this issue the aspects of a component NeXT’s latest operating system release useful at the "back-end" of an applica- based object marketplace are explored (NEXTSTEP 3.2) and the forthcoming tion and therefore lacks the glamour and from several different view points: from Portable Distributed Objects play a sex appeal of GUI related object libraries a tour of the IndexingKit that is bundled greater role? We’ll have to wait and see. such as the AppKit and the 3DKit. Also, with NEXTSTEP - and how it was used unlike the AppKit which is used by most in building a shrink-wrap application, to While preparing some notes on the NEXTSTEP applications to build the the mechanisms for licensing of (or pay- ObjectWare Scenario presented in this user interface, the utility of the Indexing- ing for) third-party objects that are used issue, I came across the following in one Kit is more limited in scope to applica- within third-party applications, to the of my mailboxes – lucky for us a group tions that deal with information treatment of third-party applications as called OPN is taking this seriously. management. It is important not to let reusable objects (though APIs) in and of these drawbacks hide the fact that for themselves, and, rounding this off is information management applications, some advice on tailoring and operating a > “If you are a vendor, are you ready the IndexingKit is one of the most useful development environment for producing to componentize your software?” and powerful kits that NeXT has to offer. your own objectware for NEXTSTEP.

“No, because the developer market In this article I will give an overview of is much smaller than the user market and most of the user market knows the IndexingKit, why it is useful, and a contents absolutely nothing about objects. quick rundown of its key objects. I will First, we have to build the market by also give a practical example of how an editorsDesk ...... 1 application that I developed, the Peren- educating the marketplace before thisIssue...... 1 nial Document Librarian, was able to use we try to sell something.” objectCatalog ...... 8 the IndexingKit to its advantage. One quick (but important) announce- features ment: WE HAVE MOVED. Information WHAT IS THE INDEXINGKIT? Technology Solutions, Inc. relocated to IndexingKit: The Unsung Object The IndexingKit is the only kit NeXT larger (and I must say, fancy) space in Library...... 1 offers that is data oriented. The DBKit is Chicago’s CityBank Tower. See the back Leveraging Shrink-Wrap on not a data oriented kit because all it does page and page footers for the new NEXTSTEP...... 4 is provide a layer between the user and a address. During this move I (I’m not Ted An ObjectWare Scenario...... 5 commercial database which does all the by the way :-) have adopted the editors Strategies for Re-use under role of OBC. continued on page 2 NEXTSTEP...... 10

INFORMATION TECHNOLOGY SOLUTIONS, INC 500 WEST MADISON, SUITE 2210, CHICAGO, IL 60661