text:
New Browser Add-On Stops Unauthorized Tracking
The Electronic Freedom Foundation takes on the spy economy with new Privacy Badger extension.
The Electronic Freedom Foundation (EFF) has created a browser extension for the Firefox and Chrome browsers that automatically detects and blocks spy ads. According to the EFF, Privacy Badger "analyzes sites to detect and disallow content that tracks you in an objectionable, non-consensual manner." If a website attempts to track you without permission, or attempts to install tracking images, scripts, or other information on your system, Privacy Badger will automatically disallow the content.
Cookie-blocking settings and features have been around for years, but tracking techniques have become much more sophisticated. Trackers now have spying techniques that go well beyond what you can catch by merely blocking cookies. Privacy Badger can stop the cookies, but it also detects and stops other, more sophisticated ploys.
Interestingly, the EFF says Privacy Badger will unlock advertisers and other third-party domains that make a strong commitment to support the Do Not Track option. Do Not Track (DNT) is an optional browser setting that notifies the website that the user does not want to be tracked. The DNT concept only works if websites respect it. The EFF asks that vendors post the Do Not Track Compliance policy and commit to respecting DNT in order for the site to be unblocked.
Privacy Badger is still at the alpha release stage, and the EFF is actively seeking feedback from testers.
Issue 180/2015
Buy this issue as a PDF
Dyreza Malware is Back
Powerful man-in-the-middle attack is now targeting online shopping.
Kernel Developer Matthew Garrett Forks the Linux Kernel
Another high-profile coder says the kernel team needs a kinder, gentler culture.
Bugzilla Bug
Bug database has a bug of its own that could allow an intruder to create an unauthorized account.
US Launches New Strategy for Broadband Access
Report focuses federal resources on achieving universal Internet access.
RC4 Finally Gets the Fork
Leading browser makers say "no" to porous encryption algorithm
IBM Says TOR Network a Vehicle for Ransomware
Report from the X-Force group says attackers are using TOR to hide their crimes
Mozilla Announces new Firefox API
Future Firefox extensions will be compatible with Chrome.
Weird Security Flaw Affected Intel Chips for 16 Years
Better read this if you bought your computer before 2011
OpenSSH 7.0 Secure Shell Arrives
Users should upgrade to the new version as soon as possible
Qemu Flaw Lets the Guest Escape
Xen project announces a privilege escalation problem for Qemu host systems


text:
Same route, same weather, same pilot, same pillion, two bikes… (more…)
BIKERGLORY relaunch 5/5/15
METZELER and BIKERGLORY
Right from the start, Bg has been transparent regarding any help, support or sponsorship the site received. It's really the only way to run any media outlet which reviews product, no matter how small the scale. (more…)
CHRIS SCOTT: ADVENTURES IN MOTORCYCLING – reviewed
…. how to manage an addiction
You all know the score. Especially if you live in a country where every winter the roads are liberally doused in a mixture of urea and salt – an environmental disaster for verges, watercourses and metals. (more…)
Two and a half years ago, Bikerglory predicted the return of forced induction on production motorcycles. It was a no brainer: better fuel economy, less weight, more power – meaning a 500cc machine (for example) could do everything a litre bike can do – but better. We got the supercharger bit right. But we got the capacity wrong……
John Cantlie
Sometime Brit bike journo (TWO, MCN etc) has been taken hostage by Islamic State.
Sonic worked in the industry in it the last glory days of print – before it all got so serious and predictable. He then grew up and became a respected war correspondent. At times like this all of us will be united our hopes for his release, along with the others in the same predicament. Our thoughts are with him and his fellow hostages.

subset: commoncrawl


text:
You may also like
Rate Dr. Edward Brantley Burns
Dr. Edward Brantley Burns's Ratings
I had been to several doctors over a three month time with extreme pain in my elbow from a injury I felt like no one listed to me like I was wanting pain stuff is how I felt I made my appointment with Dr burns myself no referral and he found I did hurt it I tore a tendon.So I just want to thank him for his kindness and finding my problem now he is going g to repair it thank u
Was this rating useful? 0 [[ userState['ratings'][2751136].votes_count ]]
Could not be happier with the quality of service and the recovery time. I suffered for three years before finding dr. Burns Within three days the pain was gone and I am 100% functional with no pain whatsoever. I would recommend him to anyone who was in need od his services
Was this rating useful? 0 [[ userState['ratings'][1932542].votes_count ]]
Dr Burns has done several surgeries on my hands with excellent results. I enjoy the time I spend with him in his office and I always get sound, thoughtful advice. I am happy I have him as my doctor.
Was this rating useful? 0 [[ userState['ratings'][1932541].votes_count ]]
As a physician, I have known and worked with Dr. Burns for quite some time. However, when I went to see him as a patient, I saw another side of this very talented surgeon. He is probably the most kind, compassionate, and honest physician I have ever seen. He has a broad view of you as a patient, and will not be totally focused on you wrist or ankle, or whatever, without considering the rest of you. He is realistic, down to earth, and extremely caring. I would have no reservations what so ever in recommending Brantley to you. He is excellent in all regards. If you have a problem that he treats, do yourself a favor and go see him!
Was this rating useful? 0 [[ userState['ratings'][1932540].votes_count ]]
Dr Burns repaired a hand injury for me. He did an excellent job on the surgery and my scar is barely noticeable. His staff are always friendly and professional, from the front desk to the girls in the back taking care of me. Dr Burns is kind, was always there for me and explained the process every step of the way. Very considerate of my time and showed compassion for what the injury had done to my career. He has my hand fully functioning and I am forever grateful!
Was this rating useful? 0 [[ userState['ratings'][1932539].votes_count ]]
He is great doctor. Whent through a lot for many a few years with my right ankle but to no avail I had to have my leg amputate. Things went great and a few et backs but I am now back to work and no pain!
Was this rating useful? 0 [[ userState['ratings'][1932538].votes_count ]]
Treats all pts as drug seekers!!!!Even when you major injuries from an accident.
Was this rating useful? 1 [[ userState['ratings'][1932537].votes_count ]]
Dr. Burns nurse and staff were not helpful at all. I had a tendon release and was in a cast. I was having pain and discomfort and when I called his office for assistance. No one would call me back. I sent a fax to his nurse and office manager. Still no response. I then called his office manager and she told me "he is aware of your message and you can make an appointment to see him". I made the appointment and Dr. Burns had no idea of the messages or note that I faxed. Luckily I did go to see him. The circulation was being cut off in my hand from the cast. He was not happy with his staff. It left a very bad feeling for me to trust any staff with any doctors office.
Was this rating useful? 0 [[ userState['ratings'][1932536].votes_count ]]
Dr. Burns is one of the best ortho surgeons in the area. Very down to earth and caring. I don't understand the negative comments he has been given, every one I know that has been to him agree he is the best foot/ankle/hand specialist they know.
Was this rating useful? 0 [[ userState['ratings'][1932535].votes_count ]]
Describing my "Burns" experience without profanity is difficult. He seemed disinterested in my injury ... maybe since it didn't require surgery there just wasn't enough $$ involved for him to really give a flip. Folks, if you're searching for a good Dr., there are just too many others out there with good ratings to settle for this jerk. If you're referred to him, ask for another doctor. It's your body, your health, and your money. Don't hand any of it over to a this guy. I personally will never let any of my family, friends, or coworkers get "Burns"ed like I did.
Was this rating useful? 1 [[ userState['ratings'][1932534].votes_count ]]
Top Hospitals in Knoxville, TN
Top Urgent Care Centers in Knoxville, TN
Find a Doctor by Specialty
Featured Articles
You may also like
Top Orthopedic Surgeons
#1 of 123
#2 of 123
#3 of 123
#4 of 123
#5 of 123


text:
- Work 1-574-218-6257
- Elkhart, IN
- 41.719299 -85.979977
Old Farm Apartments
- Work 1-574-218-6236
- Elkhart, IN
- 41.652805 -85.974155
5 Apartments for Rent Near Syracuse, IN
We're expanding!
At this time we are unable to find apartments located in Syracuse, IN however we are adding more each day! As we continue to grow, check out the 5 apartments that are within 10 miles of Syracuse, Indiana.
Bison Ridge Apartments903 Bison Ridge Nappanee, IN 4655041.455856 -85.997543- Near Syracuse, IN+−Preview DetailsCollapse Details
Welcome home to Bison Ridge Apartments in Nappanee, IN. We offer you a choice of one or two bedroom apartment homes with washer/dryer connections, individual private entrances. Our community has on site laundry facilities as well. Call our leasing office today to find out more details about our community.
- One & Two Bedroom Apartment Homes
- Stackable Washer & Dryer Connections
- Pet Friendly
- Water, Sewage & Trash Included in Rent
- Central Air Conditioning & Gas Heating
- On-Site Laundry Facility
- Nicely-Equipped Kitchen with Pantry
- Patio/Balcony
- Garbage Disposal
- 24-Hour Emergency Maintenance
- Water, Sewage & Trash Paid
- Computer Lab
Pike Lake Pointe Apartments1064 North Park Ave Warsaw, IN 4658041.248592376709 -85.849006652832- Near Syracuse, IN+−Preview DetailsCollapse Details
Affordable Apartments in Warsaw, IN. 1, 2, & 3 Bedroom Apartments. Private Patios/Balconies, Extra Storage, All Appliances Included. Washer/Dryer in Each Unit. Clubhouse, on-site staff, Playground, 24 Hour Maintenance, Pet Friendly.
- Washer/Dryer in Each Apartment Home
- Spacious Floor Plans with Extra Storage
- Private Patios and Balconies
- Scenic Lake Views
- Pets Welcome
- Community Clubhouse With Kitchen
- Playground
- 24 Hour Emergency Maintenance Service
- Lincoln Elementary, Lakeview Middle, & Warsaw HS
- Cable TV Hook-Up
- Dishwasher and Frost-Free Refrigerator
- Central Air Conditioning and Gas Heat
Willow Park At Beyer Farm675 N. Colfax Street Warsaw, IN 4658041.243112310767 -85.834369808435- Near Syracuse, IN+−Preview DetailsCollapse Details
Brand New Peaceful Senior (After 55) Apartments with all the amenities! W/D Connections, Pet Friendly, Large Rooms, Water/Sewer/Trash Paid, salon, all appliances and much more!
- New Affordable Senior 1 & 2 Bedroom Apartments
- Washer/Dryer Hook Up In Every Apartment
- Pet Friendly, Pet's Wecome
- Large Spacious Rooms/Closets, Extra Storage
- All Energy Efficient Appliances Included
- On Site Laundry and Salon
- Water, Sewer, Trash Paid
- Peaceful Community with Walking Trail
- Community Room, Gazebo, Grill
- Near Shopping, Doctors, and Hospital
- Covered Front Porch
- 24 Hour Emergency and Maintenance
Canterbury House Apartments, Warsaw
100 St. Augustine's Drive | Warsaw, IN See Other Herman & Kittle Properties, Inc. Communities
Courts of Colfax
600 N. Colfax Street | Warsaw, IN See Other HI Management Communities
To see more Apartments, try broadening your search.


text:
September 8, 2012
I haven't actually been outside of the US/Canada yet, but I have high hopes of travelling to many places including Ireland, New Zealand, India, France, Iceland, Switzerland, Peru, Brazil, and so many more!
I just speak English plus a tiny bit of Spanish. I would like to improve my Spanish or possibly learn Portuguese.
I love to cook and might be interested in hosting a small cooking group to learn traditional dishes from various cultures!
Hi all! I'm new in town and love adventure!
Meetup members, Log in
By clicking "Sign up" or "Sign up using Facebook", you confirm that you accept our Terms of Service & Privacy Policy


text:
You won't be able to dismiss this by usual means (escape or click button), but you can close it programatically based on user choices or actions.
"These invitations are wonderful. The quality is excellent and our guests are loving them. We wanted something fun, not stuffy. Beautiful and classy, but down to earth. These fit the bill perfectly! The process went very smoothly except the delivery was a bit delayed."
"This card stood out immediately. Very pretty design, lots of space for text. Didn't like the original paper finish so we ordered it in the shimmery option which was beautiful. The delivery was so quick and the text personalization was exactly what we expected; the designer did exactly what we asked for and made sure everything was symmetrical and balanced when our changes were incorporated. We are very impressed with the quality of the invitation, the promptness of the delivery and the amazing customer service. Thank you!"
"We loved these invitations and so did our guests. We had serveral compliments on them. The proofing process and any changes we requested was pretty quick. I ordered them, proofed them twice (made one change) and the invitations were shipped the next day. Quick process!"
"The process is painless and timely. The proof loos exactly as the finished product. It is perfect for a garden wedding, classic, and simple. Quality is amazing, the paper is thick and you can customize everything. I am very pleased! Thank you!"
"Our wedding is going to be a great, laid back, simple environment - we were not looking for something extremely fancy. These came out very cute. We are very excited to send them out! And even better they came flawless in AMAZING time!"


text:
Ask Search Post
Motorcycles > Vehicles
Searches Related to
Harley Davidson Sportster Motorcycles for Sale with ThumbnailUsed Motorcycles on Oodle Used Motorcycles Used Road Bikes Used Sport Bikes Used Touring Motorcycles Used Dirt Bikes Used MX Bikes Used Supercross Bikes Used Scooters & Mopeds Motorcycle Trailers Classic Motorcycles Competition Motorcycles Custom Motorcycles Mini & Pocket Bikes
Best Match
Harley Davidson Sportsters for Sale with Thumbnail(1 - 15 of 3,055)
$4,009 2011 Harley-Davidson Sportster XL 1200xHarley-Davidson · Mililani, HIBoom! Box 4.3 Radio: Let's start with this: 25% more volume for your tunes. The Boom! Box 4.3 Radio puts out 25 watts per channel at 1% d...Irvinds I. · 22 hours ago
$4,009 2011 Harley-Davidson Sportster XL 1200xHarley-Davidson · Hailey, IDWide Set Handlebar: Classic style and maximum comfort. That's the perfect balance of the wide set handlebars that come standard on the St...Miguelds M. · 23 hours ago
$4,009 2011 Harley-Davidson Sportster XL 1200xHarley-Davidson · Oxford, MSThe consensus was: We want more. More low-end torque, more passing power, more perfection in the tone of the exhaust note, more of the fe...Gregoryds G. · 23 hours ago
$4,009 2011 Harley-Davidson Sportster XL 1200xHarley-Davidson · Michigantown, INBore Stroke 76.2 mm x 96.8 mm Cooling Air-cooled, Evolution Compression Ratio 8.9:1 Fuel System Electronic Sequential Port Fuel Injection...Estherds E. · 23 hours ago
$4,009 fdxfdf 2011 Harley-Davidson Sportster XL 1200x zsdzHarley-Davidson · Urbandale, IACHASSIS Exhaust Chrome, staggered shorty exhaust with dual, tapered mufflersWheels, Optional Style Type N/AWheels, Front Type Black, Spli...Rolandods R. · 1 day ago
$4,007 fdxfdf 2011 Harley-Davidson Sportster XL 1200x zsdzHarley-Davidson · Lees Summit, MOThe airbox delivers increased intake airflow and the cam optimizes phase and duration. The result: better low-end torque and faster 60 to...Rudolphds R. · 1 day ago
$3,500 1987 harley davidson sportster 1100ccHarley-Davidson · Brockport, NYthe bike is old school no fancy hardwear all parts are harley no issues no leaks great running fast four speed load pipes good shapeFrank M. · 2 days ago
$12,500 2007 Harley Sportster 1200cc TrikeHarley-Davidson · Tulsa, OK2007 Harley Davidson Sportster 1200 Trike. Many upgrades including 2009 Hercules Kit, bigger fuel tank, digital fuel gauge, Chrome mini a...Matt B. · 3 days ago
$3,010 2013 Harley Davidson Sportster Forty Eight XL1200XHarley-Davidson · Saint Louis, MOSuper clean 2013 Sportster Forty Eight. This bike is very sharp in the vivid black color. I have added a Thunder Header exhaust, EVO styl...Елена К. · 5 days ago
$3,060 2012 Harley-Davidson Sportster Nightster Xl1200n OtherHarley-Davidson · Westland, MITHIS NIGHTSTER 1200N HAS LOW MILEAGE AND IS IN PERFECT CONDITION. UPDATED FLANDERS HANDLE BARS AND JOKER MACHINE RELOCATION KIT FOR THE S...Оксана Г. · 5 days ago
$3,350 1959 Harley-Davidson Sportster XLHHarley-Davidson · Lakewood, CA1959 Harley XLH - Hi-fi blue and birch white, very correct restoration in 2001 of a nice original motorcycle.PLEASE INCLUDE YOUR CELL NUM...Dandillon D. · 6 days ago
$2,570 2001 Harley-Davidson SportsterHarley-Davidson · Duvall, WA2001 HARLEY DAVIDSON 1200 SPORTSTER WITH TRIKE KIT INSTALLED IT IS A SST TRIKE KIT RUNS AND HANDLES GREAT QUICK DETATCH WINDSHIELD CHROME...Светлана П. · 1 week ago
$2,807 zasza 2005 Harley-Davidson Sportster XL1200 ZX 14zaszaHarley-Davidson · Ponte Vedra Beach, FLcorner on a Buell - which is a common sticking point between us. If I were to be critical here, it is that it over-steers in the bends, b...Tyroneds T. · 1 week ago
$2,806 sdzd 2005 Harley-Davidson Sportster XL1200 ZX 14 dszdHarley-Davidson · Eagle Rock, CAis the same as used on the Sportster Sport and happily controls a full fifty percent more torque, the same brakes arrest the 290kg Super ...Scottds S. · 1 week ago
$2,809 zsdzd 2005 Harley-Davidson Sportster XL1200 ZX 14 dszdHarley-Davidson · Stamford, CTThe last 883 I rode was fitted with the diminutive 2.25 US Gallon fuel tank, and I thought at the time it was too small, but considered t...Omards O. ·1 listing · 1 week ago
More Listings on Oodle Marketplace Atlanta Motorcycles | Columbia Motorcycles | Hartford Motorcycles | Lakeland Motorcycles | Las Vegas Motorcycles | Manchester Motorcycles | New York Motorcycles | Providence Motorcycles | Raleigh Motorcycles | Richmond Motorcycles | San Diego Motorcycles | San Jose Motorcycles | San Francisco Motorcycles | Saint Louis Motorcycles | West Palm Beach Motorcycles. Oodle Marketplace is a great place to find used cars, used motorcycles, used RVs, used boats, apartments for rent, homes for sale, job listings, and local businesses.
Safety Tips
Safety Tips
- Meet the seller and test drive before you buy.
- Be cautious of underpriced items.
- Don't wire money or take advance payments.
- Only pay for shipping if you know the seller.
To learn more, visit the Safety Center. Report suspicious listings by clicking on .


text:
|Publication number
|Publication type
|Application number
|Publication date
|Feb 20, 2003
|Filing date
|Aug 15, 2001
|Priority date
|Aug 15, 2001
|Publication number
|Ulises Cicciarelli, James Fox, Francisco Gonzalez, Patrick Keane, Robert Leah
|Original Assignee
|International Business Machines Corporation
|Export Citation
|BiBTeX, EndNote, RefMan
|Patent Citations (5), Referenced by (64), Classifications (5), Legal Events (1)
|External Links: USPTO, USPTO Assignment, Espacenet
[0001] The present invention is related to U.S. Pat. No. ______ (Ser. No. 09/669,227, filed Aug. 25, 2000), titled "Object Model and Framework for Installation of Software Packages Using JavaBean™"; U.S. Pat. No. ______ (Ser. No. 09/707,656, filed Nov. 07, 2000), titled "Object Model and Framework for Installation of Software Packages Using Object Descriptors"; U.S. Pat. No. ______ (Ser. No. 09/707,545, filed Nov. 07, 2000), titled "Object Model and Framework for Installation of Software Packages Using Object REXX"; U.S. Pat. No. ______ (Ser. No. 09/707,700, filed Nov. 07, 2000), titled "Object Model and Framework for Installation of Software Packages Using Structured Documents"; U.S. Pat. No. ______ (Ser. No. 09/879,694, filed Jun. 12, 2001), titled "Efficient Installation of Software Packages"; U.S. Pat. No. ______ (Ser. No. ______, filed Jul. 19, 2001), titled "Object Model and Framework for Installation of Software Packages using a Distributed Directory"; and U.S. Pat. ______ (Ser. No. ______, filed concurrently herewith), titled "Run-Time Rule-Based Topological Installation Suite". These inventions are commonly assigned to the International Business Machines Corporation ("IBM") and are hereby incorporated herein by reference.
[0002] 1. Field of the Invention
[0003] The present invention relates to a computer system, and deals more particularly with methods, systems, and computer program products for improving the installation of software packages or "suites" by including topological information in an installation suite pertaining to the run-time environment for the products provided in the suite.
[0004] 2. Description of the Related Art
[0005] Use of computers in today's society has become pervasive. The software applications to be deployed, and the computing environments in which they will operate, range from very simple to extremely large and complex. The computer skills base of those responsible for installing the software applications ranges from novice or first-time users, who may simply want to install a game or similar application on a personal computer, to experienced, highly-skilled system administrators with responsibility for large, complex computing environments. The process of creating a software installation package that is properly adapted to the skills of the eventual installer, as well as to the target hardware and software computing environment, and also the process of performing the installation, can therefore be problematic.
[0006] In recent decades, when the range of computing environments and the range of user skills was more constant, it was easier to target information on how software should be installed. Typically, installation manuals were written and distributed with the software. These manuals provided textual information on how to perform the installation of a particular software application. These manuals often had many pages of technical information, and were therefore difficult to use by those not having considerable technical skills. "User-friendliness" was often overlooked, with the description of the installation procedures focused solely on the technical information needed by the software and system.
[0007] With the increasing popularity of personal computers came a trend toward easier, more user-friendly software installation, as software vendors recognized that it was no longer reasonable to assume that a person with a high degree of technical skill would be performing every installation process. However, a number of problem areas remained because of the lack of a standard, consistent approach to software installation across product and vendor boundaries. These problems, which are addressed in the related inventions, will now be described.
[0008] The manner in which software packages are installed today, and the formats of the installation images, often varies widely depending on the target platform (i.e. the target hardware, operating system, etc.), the installation tool in use, and the underlying programming language of the software to be installed, as well as the natural language in which instructions are provided and in which input is expected. When differences of these types exist, the installation process often becomes more difficult, leading to confusion and frustration for users. For complex software packages to be installed in large computing systems, these problems are exacerbated. In addition, developing software installation packages that attempt to meet the needs of many varied target environments (and the skills of many different installers) requires a substantial amount of time and effort.
[0009] One area where consistency in the software installation process is advantageous is in knowing how to invoke the installation procedure. Advances in this area have been made in recent years, such that today, many software packages use some sort of automated, self-installing procedure. For example, a file (which, by convention, is typically named "setup.exe" or "install.exe") is often provided on an installation medium (such as a diskette or CD-ROM). When the installer issues a command to execute this file, an installation program begins. Issuance of the command may even be automated in some cases, whereby simply inserting the installation medium into a mechanism such as a CD-ROM reader automatically launches the installation program.
[0010] These automated techniques are quite beneficial in enabling the installer to get started with an installation. However, there are a number of other factors which may result in a complex installation process, especially for large-scale applications that are to be deployed in enterprise computing environments. For example, there may be a number of parameters that require input during installation of a particular software package. Arriving at the proper values to use for these parameters may be quite complicated, and the parameters may even vary from one target machine to another. There may also be a number of prerequisites and/or co-requisites, including both software and hardware specifications, that must be accounted for in the installation process. There may also be issues of version control to be addressed when software is being upgraded. An entire suite or package of software applications may be designed for simultaneous installation, leading to even more complications. In addition, installation procedures may vary widely from one installation experience to another, and the procedure used for complex enterprise software application packages may be quite different from those used for consumer-oriented applications.
[0011] Furthermore, these factors also affect the installation package developers, who must create installation packages which properly account for all of these variables. Today, installation packages are typically created using vendor-specific and product-specific installation software. Adding to or modifying an installation package can be quite complicated, as it requires determining which areas of the installation source code must be changed, correctly making the appropriate changes, and then recompiling and retesting the installation code. End-users may be prevented from adding to or modifying the installation packages in some cases, limiting the adaptability of the installation process. The lack of a standard, robust product installation interface therefore results in a labor-intensive and error-prone installation package development procedure.
[0012] Other practitioners in the art have recognized the need for improved software installation techniques. In one approach, generalized object descriptors have been adapted for this purpose. An example is the Common Information Model (CIM) standard promulgated by The Open Group™ and the Desktop Management Task Force (DTMF). The CIM standard uses object descriptors to define system resources for purposes of managing systems and networks according to an object-oriented paradigm. However, the object descriptors which are provided in this standard are very limited, and do not suffice to drive a complete installation process. In another approach, system management functions such as Tivoli� Software Distribution, Computer Associates Unicenter TNG�, Intel LANDesk� Management Suite, and Novell ZENWorks™ for Desktops have been used to provide a means for describing various packages for installation. Unfortunately, these descriptions lack cross-platform consistency, and are dependent on the specific installation tool and/or system management tool being used. In addition, the descriptions are not typically or consistently encapsulated with the install image, leading to problems in delivering bundle descriptions along with the corresponding software bundle, and to problems when it is necessary to update both the bundle and the description in a synchronized way. (The CIM standard is described in "Systems Management: Common Information Model (CIM)", Open Group Technical Standard, C804 ISBN 1-85912-255-8, August 1998. "Tivoli" is a registered trademark of Tivoli Systems Inc. "Unicenter TNG" is a registered trademark of Computer Associates International, Inc. "LANDesk" is a registered trademark of Intel Corporation. "ZENWorks" is a trademark of Novell, Inc.)
[0013] The related inventions teach use of an object model and framework for software installation packages and address many of these problems of the prior art, enabling the installation process to be simplified for software installers as well as for the software developers who must prepare their software for an efficient, trouble-free installation, and define several techniques for improving installation of software packages. While the techniques disclosed in the related inventions provide a number of advantages and are functionally sufficient, there may some situations in which the techniques disclosed therein may be improved upon.
[0014] In particular, while practitioners of the art have long bundled or grouped individual software products together into a common set of installable and configurable entities to create installation suites, a prior art installation suite only encompasses the individual products and their configurable data. For example, a suite may contain a number of IBM middleware products which are to be deployed across an enterprise, such as IBM WebSphere� Application Server, IBM HTTP Server, Lotus� Domino™, DB2 Universal Database™, and associated clients. In prior art approaches, installation suites wire these products and their configuration data together to enable the suite to deliver a fixed, static solution to a customer. ("WebSphere" is a registered trademark, and "DB2 Universal Database" is a trademark, of IBM. "Lotus" is a registered trademark, and "Domino" is a trademark, of Lotus Development Corporation.)
[0015] One prior art approach which deploys static solutions is the BackOffice product from Microsoft Corporation. Using BackOffice, a bundle of software and configuration data is provided, but the bundle comprises static information. Static solutions may, in some cases, provide a less-than-optimal approach to suite installation.
[0016] An object of the present invention is to provide an improved technique for installation of software packages.
[0017] It is another object of the present invention to provide this technique using a model and framework that provides for a consistent and efficient installation across a wide variety of target installation environments, where installation suites created according to that model and framework account for the dynamic run-time environment of a heterogeneous target environment.
[0018] Another object of the present invention is to provide a software installation technique that enables installation suites to be more flexible and efficient than prior art static installation suites, by including information pertaining to the dynamic run-time environments of intended receivers of the installation package or suite.
[0019] Still another object of the present invention is to provide an improved software installation technique wherein a solution builder or product developer can create an installation suite that efficiently enforces or recommends one or more topologies which are preferable for his end solution.
[0020] Yet another object of the present invention is to provide software installation suites which include one or more components that have been associated with one or more selected target topologies.
[0021] Other objects and advantages of the present invention will be set forth in part in the description and in the drawings which follow and, in part, will be obvious from the description or may be learned by practice of the invention.
[0022] To achieve the foregoing objects, and in accordance with the purpose of the invention as broadly described herein, the present invention provides methods, systems, and computer program products for improving installation of software packages using topology information. This technique comprises: defining an object model representing a plurality of components of a software installation package and one or more topology objects, wherein each component comprises a plurality of objects and wherein each topology object identifies one or more selected ones of the components; and populating the object model to describe a particular software installation package and one or more topologies for deployment of that particular software installation package.
[0023] The technique may further comprise instantiating a plurality of objects according to the defined object model, and wherein populating operation populates the instantiated objects. The instantiating may further comprise instantiating an object for the particular software installation package and one or more component objects for each software component included in the particular software installation package.
[0024] The technique may further comprise selecting at least one of the topologies for deployment; and using the populated object model to install the particular software installation package using the selected topology. Using the populated object model may further comprise: identifying one or more target machines on which the particular software installation package is to be installed; downloading the particular software installation package to the identified target machines; and performing an installation at each of the identified target machines using the downloaded particular software installation package. The technique may also further comprise authenticating a server on which the downloading operates prior to performing the installation.
[0025] Each topology object may provide a recommended configuration of the software installation package, or it may provide a required configuration of the software installation package. The instantiated objects may be JavaBeans.
[0026] The present invention will now be described with reference to the following drawings, in which like reference numbers denote the same element throughout.
[0027]FIG. 1 is a block diagram of a computer hardware environment in which the present invention may be practiced;
[0028]FIG. 2 is a diagram of a networked computing environment in which the present invention may be practiced;
[0029]FIG. 3 shows a sample graphical user interface ("GUI") that may be presented to a software installer during a software installation process when using the present invention;
[0030]FIG. 4 illustrates an object model that may be used for defining software components to be included in an installation suite, according to the related inventions;
[0031]FIG. 5 depicts an object model that may be used for defining a suite, or package, of software components to be installed, according to the related inventions, including improvements according to the present invention;
[0032]FIGS. 6 and 7 depict resource bundles that may be used for specifying various types of product and variable information to be used during an installation, according to an embodiment of the related inventions; and
[0033] FIGS. 8-11 depict flowcharts illustrating logic with which a software installation suite may be processed, according to preferred embodiments of the present invention.
[0034]FIG. 1 illustrates a representative computer hardware environment in which the present invention may be practiced. The device 10 illustrated therein may be a personal computer, a laptop computer, a server or mainframe, and so forth. The device 10 typically includes a microprocessor 12 and a bus 14 employed to connect and enable communication between the microprocessor 12 and the components of the device 10 in accordance with known techniques. The device 10 typically includes a user interface adapter 16, which connects the microprocessor 12 via the bus 14 to one or more interface devices, such as a keyboard 18, mouse 20, and/or other interface devices 22 (such as a touch sensitive screen, digitized entry pad, etc.). The bus 14 also connects a display device 24, such as an LCD screen or monitor, to the microprocessor 12 via a display adapter 26. The bus 14 also connects the microprocessor 12 to memory 28 and long-term storage 30 which can include a hard drive, diskette drive, tape drive, etc.
[0035] The device 10 may communicate with other computers or networks of computers, for example via a communications channel or modem 32. Alternatively, the device 10 may communicate using a wireless interface at 32, such as a CDPD (cellular digital packet data) card. The device 10 may be associated with such other computers in a local area network (LAN) or a wide area network (WAN), or the device 10 can be a client in a client/server arrangement with another computer, etc. All of these configurations, as well as the appropriate communications hardware and software which enable their use, are known in the art.
[0036]FIG. 2 illustrates a data processing network 40 in which the present invention may be practiced. The data processing network 40 may include a plurality of individual networks, such as wireless network 42 and network 44, each of which may include a plurality of devices 10. Additionally, as those skilled in the art will appreciate, one or more LANs may be included (not shown), where a LAN may comprise a plurality of intelligent workstations or similar devices coupled to a host processor.
[0037] Still referring to FIG. 2, the networks 42 and 44 may also include mainframe computers or servers, such as a gateway computer 46 or application server 47 (which may access a data repository 48). A gateway computer 46 serves as a point of entry into each network 44. The gateway 46 may be coupled to another network 42 by means of a communications link 50 a. The gateway 46 may also be directly coupled to one or more devices 10 using a communications link 50 b, 50 c. Further, the gateway 46 may be indirectly coupled to one or more devices 10. The gateway computer 46 may also be coupled 49 to a storage device (such as data repository 48). The gateway computer 46 may be implemented utilizing an Enterprise Systems Architecture/370™ computer available from IBM, an Enterprise Systems Architecture/390� computer, etc. Depending on the application, a midrange computer, such as an Application System/400� (also known as an AS/400�) may be employed. ("Enterprise Systems Architecture/370" is a trademark of IBM; "Enterprise Systems Architecture/390", "Application System/400", and "AS/400" are registered trademarks of IBM.)
[0038] Those skilled in the art will appreciate that the gateway computer 46 may be located a great geographic distance from the network 42, and similarly, the devices 10 may be located a substantial distance from the networks 42 and 44. For example, the network 42 may be located in California, while the gateway 46 may be located in Texas, and one or more of the devices 10 may be located in New York. The devices 10 may connect to the wireless network 42 using a networking protocol such as the Transmission Control Protocol/Internet Protocol ("TCP/IP") over a number of alternative connection media, such as cellular phone, radio frequency networks, satellite networks, etc. The wireless network 42 preferably connects to the gateway 46 using a network connection 50 a such as TCP or UDP (User Datagram Protocol) over IP, X.25, Frame Relay, ISDN (Integrated Services Digital Network), PSTN (Public Switched Telephone Network), etc. The devices 10 may alternatively connect directly to the gateway 46 using dial connections 50 b or 50 c. Further, the wireless network 42 and network 44 may connect to one or more other networks (not shown), in an analogous manner to that depicted in FIG. 2.
[0039] In preferred embodiments, the present invention is implemented in software. Software programming code which embodies the present invention is typically accessed by the microprocessor 12 (e.g. of device 10 and/or server 47) from long-term storage media 30 of some type, such as a CD-ROM drive or hard drive. The software programming code may be embodied on any of a variety of known media for use with a data processing system, such as a diskette, hard drive, or CD-ROM. The code may be distributed on such media, or may be distributed from the memory or storage of one computer system over a network of some type to other computer systems for use by such other systems. Alternatively, the programming code may be embodied in the memory 28, and accessed by the microprocessor 12 using the bus 14. The techniques and methods for embodying software programming code in memory, on physical media, and/or distributing software code via networks are well known and will not be further discussed herein.
[0040] A user of the present invention (e.g. a software installer or a software developer creating a software installation package or suite) may connect his computer to a server using a wireline connection, or a wireless connection. (Alternatively, the present invention may be used in a stand-alone mode without having a network connection.) Wireline connections are those that use physical media such as cables and telephone lines, whereas wireless connections use media such as satellite links, radio frequency waves, and infrared waves. Many connection techniques can be used with these various media, such as: using the computer's modem to establish a connection over a telephone line; using a LAN card such as Token Ring or Ethernet; using a cellular modem to establish a wireless connection; etc. The user's computer may be any type of computer processor, including laptop, handheld or mobile computers; vehicle-mounted devices; desktop computers; mainframe computers; etc., having processing capabilities (and communication capabilities, when the device is network-connected). The remote server, similarly, can be one of any number of different types of computer which have processing and communication capabilities. These techniques are well known in the art, and the hardware devices and software which enable their use are readily available. Hereinafter, the user's computer will be referred to equivalently as a "workstation", "device", or "computer", and use of any of these terms or the term "server" refers to any of the types of computing devices described above.
[0041] When implemented in software, the present invention may be implemented as one or more computer software programs. The software is preferably implemented using an object-oriented programming language, such as the Java™ programming language. The model which is used for describing the aspects of software installation packages is preferably designed using object-oriented modeling techniques of an object-oriented paradigm. In preferred embodiments, the objects which are based on this model, and which are created to describe the installation aspects of a particular installation package, may be specified using a number of approaches, including but not limited to: JavaBeans™ or objects having similar characteristics; structured markup language documents (such as Extensible Markup Language, or "XML", documents); object descriptors of an object modeling notation; or Object REXX or objects in an object scripting language having similar characteristics. ("Java" and "JavaBeans" are trademarks of Sun Microsystems, Inc.) For purposes of illustration and not of limitation, the following description of preferred embodiments refers to objects which are JavaBeans.
[0042] An implementation of the present invention may be executing in a Web environment, where software installation packages are downloaded using a protocol such as the HyperText Transfer Protocol ("HTTP") from a Web server to one or more target computers which are connected through the Internet. Alternatively, an implementation of the present invention may be executing in other non-Web networking environments (using the Internet, a corporate intranet or extranet, or any other network) where software packages are distributed for installation using techniques such as Remote Method Invocation ("RMI") or Common Object Request Broker Architecture ("CORBA"). Configurations for the environment include a client/server network, as well as a multi-tier environment. Or, as stated above, the present invention may be used in a stand-alone environment, such as by an installer who wishes to install a software package from a locally-available installation media rather than across a network connection. Furthermore, it may happen that the client and server of a particular installation both reside in the same physical device, in which case a network connection is not required. A software developer who prepares a software package for installation using the present invention may use a network-connected workstation, a stand-alone workstation, or any other similar computing device. These environments and configurations are well known in the art.
[0043] The target devices with which the present invention may be used advantageously include end-user workstations, mainframes or servers on which software is to be loaded, or any other type of device having computing or processing capabilities (including "smart" appliances in the home, cellular phones, personal digital assistants or "PDAs", dashboard devices in vehicles, etc.).
[0044] Preferred embodiments of the present invention will now be discussed in more detail with reference to FIGS. 3 through 11.
[0045] The present invention uses an object model for software package installation, in which a framework is defined for creating one or more objects which comprise each software installation package or suite. (The terms "software installation package" and "installation suite" are used synonymously herein.) The basis for this object model is disclosed in the related inventions, and various ones of the related inventions disclose variations to that object model. The present invention discloses a technique for extending the object model to include topology information, thereby enabling the preparer of the installation suite to enforce or recommend one or more preferred topologies for the component products included in the suite. These techniques will be described in more detail herein.
[0046] While preferred embodiments of the software object model and framework are described in the related inventions, extensions to the model are described herein within the context of the overall model. As disclosed in the related inventions, each installation object preferably comprises object attributes and methods for the following:
[0047] 1) A manifest, or list, of the files comprising the software package to be installed.
[0048] 2) Information on how to access the files comprising the software package. This may involve:
[0049] a) explicit encapsulation of the files within the object, or
[0050] b) links that direct the installation process to the location of the files (which may optionally include a specification of any required access protocol, and of any compression or unwrapping techniques which must be used to access the files).
[0051] 3) Default response values to be used as input for automatically responding to queries during customized installs, where the default values are preferably specified in a response file. The response file may specify information such as how the software package is to be subset when it is installed, where on the target computer it is to be installed, and other values to customize the behavior of the installation process.
[0052] 4) Methods, usable by a systems administrator or other software installation personnel, for setting various response values or for altering various ones of the default response values to tailor a customized install.
[0053] 5) Validation methods to ensure the correctness and internal consistency of a customization and/or of the response values otherwise provided during an installation.
[0054] 6) Optionally, localizable strings (i.e. textual string values that may be translated, if desired, in order to present information to the installer in his preferred natural language).
[0055] 7) Instructions (referred to herein as the "command line model") on how the installation program is to be invoked, and preferably, how return code information or other information related to the success or failure of the installation process may be obtained.
[0056] 8) The capabilities of the software package (e.g. the functions it provides).
[0057] 9) A specification of the dependencies, including prerequisite or co-requisites, of the software package (such as the required operating system, including a particular level thereof; other software functions that must be present if this package is to be installed; software functions that cannot be present if this package is installed; etc.).
[0058] The present invention extends this model to include topological information, whereby the dynamic topology information of one or more heterogeneous run-time environments may be described in order to adapt the suite for particular target environments, in addition to the static software and its configuration data which are included in prior art installation suites. Suppose, for example, that it is desirable to deploy a business-to-business solution throughout an enterprise by installation of a suite, where this solution includes the middleware products previously discussed (that is, IBM WebSphere Application Server, IBM HTTP Server, DB2 database software, and run-time clients for these products). An installation suite according to the present invention, which may also be referred to as a "topological suite", may then be created for this deployment. In particular, a topology suite using this example may specify: (1) a predetermined optimal topology of networked machines (that is, specific types of servers and/or clients to which the software products should be installed); (2) a set of software that, when combined, provides a customer solution; and (3) the specific wiring of the software configuration and network topology which assists in the deployment of the solution.
[0059] Continuing with the example, perhaps the installation suite contains software to install one or more of the following actual components: (1) WebSphere on AIX� servers and/or WebSphere on Linux� servers; (2) DB2� on AIX, Linux, and/or Sun Solaris™ machines; and (3) run-time clients for the above products on Windows� and/or Linux machines. ("Linux" is a registered trademark of Linus Torvalds. "AIX" and "DB2" are registered trademarks of IBM. "Windows" is a registered trademark of Microsoft Corporation. "Solaris" is a trademark of Sun Microsystems, Inc.) Suppose further that the software developer (or other person who creates the installation suite) has information suggesting that an optimal configuration for the deployment of these components is to install the WebSphere code on one or more Linux servers, if available; the DB2 database server software on one or more AIX servers, if available; and the clients onto computers having a Windows operating system. Using the present invention, the installation suite may be specially adapted to either recommend this configuration, or to enforce this configuration, as desired in a particular implementation. In addition to bundling together software and configuration information for the products in the installation suite, as in the related inventions, the predefined topology information may be included in the topological suite according to the present invention. In this manner, installation of the software becomes easier and more efficient for the customer/installer, thereby reducing the likelihood of errors and reducing the overall cost of the deployment.
[0060] With the example deployment scenario and the sample optimal configuration thereof, a topology may be identified (for example) with a name such as "Database topology", and may be preconfigured with a server group pertaining to the Linux computers, another server group pertaining to the AIX computers, and a client group pertaining to the Windows computers. (Use of groups within a suite is discussed in more detail below, with reference to FIGS. 5 and 8.) Then, to enable an installer to deploy the database software in this manner easily and efficiently, a predefined template may be provided with the installation suite and presented to the installer at installation time, into which the installer has only to supply (in this example) the IP addresses of the server and client machines. An example template 300 is shown in FIG. 3. As illustrated therein, the software installer provides one or more IP addresses for each group of machines in this topology. Preferably, this information is supplied during a suite customization process. (Refer to the discussion of FIG. 8, below, for more information on suite customization.) One or more such templates may be provided with a particular installation suite, depending on the content of the suite, how it is best installed in an enterprise, the wishes of the suite creator, and so forth. When multiple templates are provided with a suite, a GUI window (not shown) may be presented to the installer to display the available templates and to allow the installer to select one that suits his needs. (With reference to the example deployment scenario, one or more alternative topologies and templates might be supplied for use in environments where the preferred topology of Linux, AIX, and Windows machines is not available.)
[0061] A preferred embodiment of the object model used for defining installation packages as disclosed in the related inventions, and enhancements thereto which may be made for the topological suites of the present invention, is depicted in FIGS. 4 and 5. FIG. 4 illustrates a preferred object model to be used for describing each software component present in an installation package for a topological suite. A graphical containment relationship is illustrated, in which (for example) ProductModel 400 is preferably a parent of one or more instances of
[0062] CommandLineModel 410, Capabilities 420, etc. FIG. 5 illustrates a preferred object model that may be used for describing a topological suite comprising all the components present in a particular installation package. (It should be noted, however, that the model depicted in FIGS. 4 and 5 is merely illustrative of one structure that may be used to represent installation packages according to the present invention. Other subclasses may be used alternatively, and the hierarchical relationships among the subclasses may be altered, without deviating from the inventive concepts disclosed herein.) A version of the object model depicted by FIGS. 4 and 5 has been described in detail in the related inventions. This description is presented here as well in order to establish a context for the present invention. Modifications to this object model that may be used for supporting the topological suites of the present invention are also described herein in context of the overall model.
[0063] Note that each of the related inventions may differ slightly in the terms used to describe the object model and the manner in which it is processed. For example, the related invention pertaining to use of structured documents refers to elements and subelements, and storing information in document form, whereas the related invention pertaining to use of JavaBeans refers to classes and subclasses, and storing information in resource bundles. As another example, the related inventions disclose several alternative techniques for specifying information for installation objects, including: use of resource bundles when using JavaBeans; use of structured documents encoded in a notation such as the Managed Object Format ("MOF") or XML; and use of properties sheets. These differences will be well understood by one of skill in the art. For ease of reference when describing the present invention, the discussion herein is aligned with the terminology used in the JavaBeans-based disclosure; it will be obvious to those of skill in the art how this description may be adapted in terms of the other related inventions.
[0064] A ProductModel 400 object class is defined, according to the related inventions, which serves as a container for all information relevant to the installation of a particular software component. The contained information is shown generally at 410 through 480, and comprises the information for a particular component installation, as will now be described in more detail.
[0065] A CommandLineModel class 410 is used for specifying information about how to invoke an installation (i.e. the "command line" information, which includes the command name and any arguments). In preferred embodiments of the object model disclosed in the related inventions, CommandLineModel is an abstract class, and has subclasses for particular types of installation environments. These subclasses preferably understand, inter alia, how to install certain installation utilities or tools. For example, if an installation tool "ABC" is to be supported for a particular installation package, an ABCCommandLine subclass may be defined. Instances of this class then provide information specific to the needs of the ABC tool. A variety of installation tools may be supported for each installation package by defining and populating multiple such classes. Preferably, instances of these classes reference a resource or resource bundle which specifies the syntax of the command line invocation. (Alternatively, the information may be stored directly in the instance.)
[0066] Instances of the CommandLineModel class 410 preferably also specify the response file information (or a reference thereto), enabling automated access to default response values during the installation process. In addition, these instances preferably specify how to obtain information about the success or failure of an installation process. This information may comprise identification of particular success and/or failure return codes, or the location (e.g. name and path) of a log file where messages are logged during an installation. In the latter case, one or more textual strings or other values which are designed to be written into the log file to signify whether the installation succeeded or failed are preferably specified as well. These string or other values can then be compared to the actual log file contents to determine whether a successful installation has occurred. For example, when an installation package is designed to install a number of software components in succession, it may be necessary to terminate the installation if a failure is encountered for any particular component. The installation engine of the present invention may therefore automatically determine whether each component successfully installed before proceeding to the next component.
[0067] Additional information may be specified in instances of CommandLineModel, such as timer-related information to be used for monitoring the installation process. In particular, a timeout value may be deemed useful for determining when the installation process should be considered as having timed out, and should therefore be terminated. One or more timer values may also be specified that will be used to determine such things as when to check log files for success or failure of particular interim steps in the installation.
[0068] Instances of a Capabilities class 420 are used to specify the capabilities or functions a software component provides. Capabilities thus defined may be used to help the installer select among components provided in an installation package, and/or may be used to programmatically enforce install-time checking of variable dependencies. As an example of the former, suppose an installation package includes a number of printer driver software modules. The installer may be prompted to choose one of these printer drivers at installation time, where the capabilities can be interrogated to provide meaningful information to display to the installer on a selection panel. As an example of the latter, suppose Product A is being installed, and that Product A requires installation of Function X. The installation package may contain software for Product B and Product C, each of which provides Function X. Capabilities are preferably used to specify the functions provided by Product B and Product C (and Dependencies class 460, discussed below, is preferably used to specify the functions required by Product A). The installation engine can then use this information to ensure that either Product B or Product C will be installed along with Product A.
[0069] As disclosed in the related inventions, ProductDescription class 430 is preferably designed as a container for various types of product information. Examples of this product information include the software vendor, application name, and software version of the software component. Instances of this class are preferably operating-system specific. The locations of icons, sound and video files, and other media files to be used by the product (during the installation process, and/or at run-time) may be specified in instances of ProductDescription. For licensed software, instances of this class may include licensing information such as the licensing terms and the procedures to be followed for registering the license holder. When an installation package provides support for multiple natural languages, instances of ProductDescription may be used to externalize the translatable product content (that is, the translatable information used during the installation and/or at run-time). This information is preferably stored in a resource bundle (or other type of external file or document, referred to herein as a resource bundle for ease of reference) rather than in an object instance, and will be read from the resource bundle on an on-demand basis.
[0070] The InstallFileSets class 440 is used in preferred embodiments of the object model disclosed in the related inventions as a container for information that relates to the media image of a software component. Instances of this class are preferably used to specify the manifest for a particular component. Tens or even hundreds of file names may be included in the manifest for installation of a complex software component. Resource bundles are preferably used, rather than storing the information directly in the object instance.
[0071] The related inventions disclose use of the VariableModel class 450 as a container for attributes of variables used by the component being installed. For example, if a user identifier or password must be provided during the installation process, the syntactical requirements of that information (such as a default value, if appropriate; a minimum and maximum length; a specification of invalid characters or character strings; etc.) may be defined for the installation engine using an instance of VariableModel class. In addition, custom or product-specific validation methods may be used to perform more detailed syntactical and semantic checks on values that are supplied (for example, by the installer) during the installation process. As disclosed for preferred embodiments of the related inventions, this validation support may be provided by defining a CustomValidator abstract class as a subclass of VariableModel, where CustomValidator then has subclasses for particular types of installation variables. Examples of subclasses that may be useful include StringVariableModel, for use with strings; BooleanVariableModel, for use with Boolean input values; PasswordVariableModel, for handling particular password entry requirements; and so forth. Preferably, instances of these classes use a resource bundle that specifies the information (including labels, tooltip information, etc.) to be used on the user interface panel with which the installer will enter a value or values for the variable information.
[0072] Dependencies class 460 is used to specify prerequisites and co-requisites for the installation package, as disclosed in the related inventions. Information specified as instances of this class, along with instances of the Capabilities class 420, is used at install time to ensure that the proper software components or functions are available when the installation completes successfully.
[0073] The related inventions disclose providing a Conflicts class 470 as a mechanism to prevent conflicting software components from being installed on a target device. For example, an instance of Conflicts class for Product A may specify that Product Q conflicts with Product A. Thus, if Product A is being installed, the installation engine will determine whether Product Q is installed (or is selected to be installed), and generate an error if so.
[0074] VersionCheckerModel class 480 is provided to enable checking whether the versions of software components are proper, as disclosed in the related inventions. For example, a software component to be installed may require a particular version of another component.
[0075] Preferably, the resource bundles referenced by the software components of the present invention are structured as product resource bundles and variable resource bundles. Examples of the information that may be specified in product resource bundles (comprising values to be used by instances of CommandLineModel 410, etc.) and in variable resource bundles (with values to be used by instances of VariableModel 450, ProductDescription 430, etc.) are depicted in FIGS. 6 and 7, respectively. (Note that while 2 resource bundles are shown for the preferred embodiment, this is for purposes of illustration only. The information in the bundles may be organized in many different ways, including use of a separate bundle for each class. When information contained in the bundles is to be translated into multiple natural languages, however, it may be preferable to limit the number of such bundles.)
[0076] Referring now to FIG. 5, an object model as disclosed in the related inventions for representing an installation suite comprising all the components present in a particular installation package, and enhancements thereto which may be made for the topological suites of the present invention, will now be described. A Suite 500 object class serves as a container of containers, with each instance containing a number of suite-level specifications in subclasses shown generally at 510 through 580. Each suite object also contains one or more instances of ProductModel 400 class, one instance for each software component in the suite. The Suite class may be used to enforce consistency among software components (by handling the inter-component prerequisites and co-requisites), and to enable sharing of configuration variables among components. According to the present invention, Suite class also contains information about target topologies (see Topologies class 580) which have been specified for the suite.
[0077] SuiteDescription class 510 is defined in the related inventions as a descriptive object which may be used as a key when multiple suites are available for installation. Instances of SuiteDescription preferably contain all of the information about a suite that will be made available to the installer. These instances may also provide features to customize the user interface, such as build boards, sound files, and splash screens.
[0078] As disclosed in the related inventions, ProductCapabilities class 520 provides similar information as Capabilities class 420, and may be used to indicate required or provided capabilities of the installation suite.
[0079] ProductCategory class 530 is defined in the related inventions for organizing software components (e.g. by function, by marketing sector, etc.). Instances of ProductCategory are preferably descriptive, rather than functional, and are used to organize the display of information to an installer in a meaningful way. A component may belong to multiple categories at once (in the same or different installation suites).
[0080] As disclosed in the related inventions, instances of ProductGroup class 540 are preferably used to bundle software components together for installation. Like an instance of ProductCategory 530, an instance of ProductGroup groups products; unlike an instance of ProductCategory, it then forces the selection (that is, the retrieval and assembly from the directory) of all software components at installation time when one of the components in the group (or an icon representing the group) is selected. The components in a group are selected when the suite is defined, to ensure their consistency as an installation group. In the example scenario of deploying a business-to-business solution including various middleware products, the defined groups may include one or more server groups and one or more client groups, as stated earlier.
[0081] Instances of VariableModel class 550 provide similar information as VariableModel class 450, as discussed in the related inventions, and may be used to specify attributes of variables which pertain to the installation suite.
[0082] VariablePresentation class 560 is used, according to the related inventions, to control the user interface displayed to the installer when configuring or customizing an installation package. One instance of this class is preferably associated with each instance of VariableModel class 550. The rules in the VariableModel instance are used to validate the input responses, and these validated responses are then transmitted to each of the listening instances of VariableLinkage class 570.
[0083] As disclosed in the related inventions, instances of VariableLinkage class 570 hold values used by instances of VariableModel class 550, thereby enabling sharing of data values. VariableLinkage instances also preferably know how to translate information from a particular VariableModel such that it meets the requirements of a particular ProductModel 400 instance.
[0084] Instances of the Topologies class 580 of the present invention specify a predefined topology, the contents of which are preferably defined when the installation suite is being created, as has been discussed. Instances of Topologies class are preferably associated with a template into which run-time information can be specified by the installer, as needed, such as the sample template 300 shown in FIG. 3.
[0085] Each instance of ProductModel class 400 in a suite is preferably independently serializable, as discussed in the related inventions, and is merged with other serialized instances comprising an instance of Suite 500.
[0086] During the customization process, an installer may select a number of physical devices or machines on which software is to be installed from a particular installation package. Furthermore, he may select to install individual ones of the software components provided in the package. This is facilitated by defining a high-level object class (not shown in FIG. 4 or 5) which is referred to herein as "Groups", which is a container for one or more Group objects. A Group object may contain a number of Machine objects and a number of ProductModel objects (where the ProductModel objects describe the software to be installed on those machines, according to the description of FIGS. 4 and 5). Machine objects preferably contain information for each physical machine on which the software is to be installed, such as the machine's Internet Protocol (IP) address and optionally information (such as text for an icon label) that may be used to identify this machine on a user interface panel when displaying the installation package information to the installer.
[0087] When using JavaBeans of the Java programming language to implement installation objects according to the installation object model, the object attributes and methods to be used for installing a software package are preferably specified as properties and methods of the JavaBeans. A JavaBean is preferably created for each software component to be included in a particular software installation package, as well as another JavaBean for the overall installation suite. When using Object REXX, the object attributes and methods to be used for installing a software package are preferably specified as properties and methods in Object REXX. When using structured documents, the object attributes and methods are preferably specified as elements in the structured documents. (Refer to the related inventions for a detailed discussion of these approaches.)
[0088] The process of customizing a software installation package for use in a particular target environment, building the component (i.e. ProductModel) objects and Suite object, and then performing the installation according to the present invention will now be described with reference to the flowcharts in FIGS. 8 through 11. (These processes may be performed in succession during one invocation of the installation engine of the present invention, or may be separated in time by invoking individual ones of these functions in the installation engine.) It should be noted that the related inventions have disclosed a general software installation process using the model and framework of their respective FIGS. 4 and 5, and preferred embodiments of logic which may be used to implement this installation process have been described therein with reference to their respective flowcharts which correspond to FIGS. 8 through 11. The discussion of the logic underlying the installation process in FIGS. 8 through 11 is repeated herein to establish a context for describing the present invention. Alterations to this processing to support the present invention are also described within the overall context of these figures.
[0089] A software installer invokes the installation engine (Block 800), and then selects a particular software suite to be customized (Block 805). The installer also selects a particular topology for which installation information will be customized, according to the present invention. The corresponding Suite bean is retrieved from the directory and deserialized (Block 815), as required, creating a Suite object (Block 820). A bean corresponding to the selected topology is also retrieved and deserialized, if stored independently, creating a Topologies object. Using information previously stored in the Suite object, a user interface is generated (Block 825). One or more ProductModel beans which comprise the Suite bean may also be retrieved and deserialized at this time, if they are stored independently, and information from the resulting ProductModel objects and/or Topologies object may be used when generating the user interface. For example, a generated user interface may present a name and descriptive information about the suite (using the SuiteDescription 510 instance), and a name and descriptive information for each component in the suite (using ProductDescription 430 instances). Similarly, the generated user interface (or, alternatively, a topology-specific user interface display or template) preferably presents information about the selected topology and may request entry of data values for customizing this topology. (Refer to the discussion of FIG. 3, above, regarding a sample topology-specific display.)
[0090] The generated user interface is then displayed (Block 830) to the installer. Customization values are then accepted from the installer (Block 835). At Block 840, the input data is validated using the methods specified in instances of a CustomValidator abstract class. (Refer to the discussion of VariableModel class 450, above, for more information on CustomValidator.) An iterative approach is preferably used for accepting and validating the input data.
[0091] If more than one Topology object is to be customized during the processing of FIG. 8, the installer may be allowed to select more than one topology at Block 810, or alternatively, the processing of Block 810 may be repeated after obtaining and validating the input data for each selected topology.
[0092] When the data entry and validation is complete, control reaches Block 845, where the installer is allowed to define groups of target machines, and to select particular software components from the suite that are to be associated with an installation to that group of machines. This information is then stored in a Group object at Block 850. If the customized suite is not to be built or installed at this time, the object is preferably serialized (not shown in FIG. 8). The Groups object, which is a container for one or more Group objects, is preferably serialized in an initialization file (having the suffix ".ini"). Thus, customization of software and information to be presented on the user interface panel to the installer is preserved in a text file for later use during the installation process.
[0093] Note that while FIG. 8 describes customizing an installation package for an entire suite, an installer may also be allowed to individually customize the objects or components of the suite, and in particular may be allowed to individually customize a selected topology. Based on the description of FIG. 8, it will be obvious to one of ordinary skill in the art how this logic may be structured.
[0094] When the installer is ready to build an installation package reflecting the customized information, a build process is performed to assemble the objects for each ProductModel object and then for the Suite object. These processes are illustrated in FIGS. 9 and 10, respectively.
[0095] The build process for a ProductModel bean begins at Block 900, where ProductModel 400 is instantiated. At Block 905, ProductDescription is then instantiated, and the resulting object is assigned (Block 910) to a ProductDescription variable of the ProductModel object.
[0096] It should be noted that in an object-based embodiment of the present invention, the instantiations described with reference to FIG. 9 are preferably instantiations only of classes, and that internal variables are not being directly set. This is because, in preferred embodiments, the classes ProductDescription, VersionCheckerModel, CommandLineModel, and VariableModel get their variable information from a resource bundle rather than through variable settings within an object. In a structured document-based embodiment, the discussions of instantiations preferably represent parsing of documents that hold the values of properties or attributes of these elements.
[0097] Next, a size variable of ProductModel is set to the installed size of this software component (Block 915). VersionCheckerModel is then instantiated (Block 920), and the resulting object is assigned (Block 925) to ProductModel. Preferably, this assignment comprises issuing a "setVersionChecker (VersionCheckerModel)" call (or a call having similar syntax).
[0098] Block 930 instantiates CommandLineModel 410, or one of its subclasses for a particular installation environment (as discussed above), for the pre-install program and assigns the resulting object to ProductModel at Block 935. This assignment preferably comprises issuing a call having syntax such as "setPreInstall (CommandLineModel)". In preferred embodiments, custom programs may be invoked to perform integration of a suite in its target environment, and/or integration of individual ones of the components. The particular custom programs to be invoked are thus defined using instances of CommandLineModel, in the same manner that a CommandLineModel instance defines how to invoke the installation of each particular component. Issuing the "setPrelnstall" call establishes the custom program that is to be executed prior to installing this component (and may be omitted when there is no such program). Another instance of CommandLineModel (or a subclass) is then instantiated and assigned to ProductModel to specify invocation information for installation of the component itself (Blocks 940 and 945). The assignment may be performed using call syntax such as "setInstall (CommandLineModel)". If a custom post-installation integration program is to be executed, Blocks 950 and 955 instantiate the proper object and assign it to ProductModel using a call with syntax such as "setPostInstall (CommandLineModel)".
[0099] For each configuration variable of this component, a subclass of VariableModel is instantiated (Block 960) and added to ProductModel (Block 965). Finally, an invocation of ProductModel is performed (Block 970), which generates a serialized output ProductModel bean.
[0100] The build process for a Suite bean begins at Block 1000 of FIG. 10, where Suite 500 is instantiated. For each component in the suite, the ProductModel bean is deserialized (Block 1005) and the resulting ProductModel object is added (Block 1010) to a vector of suite products. Block 1015 determines whether any of the products in the suite conflict with one another, using the information stored in each Conflicts class 470. Assuming that all conflicts are resolved, Block 1020 serializes the Suite object to generate an output Suite bean.
[0101]FIG. 11 depicts a preferred embodiment of logic with which the installation time processing may be performed. This processing is described in terms of installation from a staging server on which the suite beans and component beans, as well as their objects, are stored (or are otherwise accessible), across a network to one or more target devices. It will obvious to one of ordinary skill in the art how the process of FIG. 11 may be altered for use in other installation scenarios, including installation on a stand-alone machine which is not connected to a network, or a local installation where the client and server are co-resident, or installation using a client/server "pull" model rather than the "push" model illustrated in FIG. 11. (Note that the staging server may optionally be a directory server, and the techniques of the related invention entitled "Object Model and Framework for Installation of Software Packages using a Distributed Directory" may also be embodied within an implementation of the present invention. Refer to this related patent for more information on suite installation using a directory server.)
[0102] The installation process of FIG. 11 begins with an installer initiating the installation process (Block 1100), for example by selecting a suite and a particular topology for that suite from a user interface display. The staging server then preferably initiates a handshaking protocol with each target device (Block 1105), where those target devices were preferably identified in the customization information for the selected topology. The staging server installation scenario of FIG. 11 requires each target machine to have "listener" software installed, where this software is adapted to receiving installation notifications from the staging server.
[0103] Referring again to the example scenario, if the installer selected a topology which includes WebSphere software for a Linux server, DB2 server software for several AIX servers, and client software for a number of Windows clients, then the installer may have used a template such as that shown in FIG. 3 during customization to identify the network addresses of the target devices. These network addresses are used by the staging server to contact each of these devices, via each device's listener software.
[0104] At Block 1110, the listener software on a client (target) device receives the handshaking request sent by the stating server. An authentication process is then preferably performed (Block 1115), to ensure that software is being downloaded from a trusted source. In preferred embodiments, this authentication process comprises sending a challenge to the staging server, which the staging server will then sign using the private key of a previously-created public/private key pair. When this signed challenge is received by the client device, the client validates the signature using the staging server's public key. (Techniques for performing authentication using signed messages in this manner are well known in the art, and will not be described further herein.)
[0105] If the authentication is successful, each target client then requests the staging server to send the necessary objects to perform the software installation on that device. In particular, the device requests delivery of a suite object (Block 1120), where the suite object will contain one or more component objects for installation on this client device, according to a topology which has been defined by the suite creator and for which the topological installation suite has been adapted. The staging server receives this request, and returns the appropriate Suite object (Block 1125). Upon receiving the Suite object, the client may then request (Block 1130) delivery of a Machine object. A Machine object contains one or more component objects which are appropriate to this particular type of client device, as previously described. After receiving this request, the staging server returns the requested object (Block 1135).
[0106] When the requested object is received, the client preferably sorts the component objects according to a priority value that may be specified in ProductModel, and/or dependencies on other components (Block 1140). Block 1145 then begins an iterative process that extends through Block 1175, and which is performed for each component that is to be installed. At Block 1145, the client sends a request to the staging server for the jar (i.e. the Java Archive, or serialized ProductModel) file for this component. The server receives this request (Block 1150), and returns the corresponding jar file.
[0107] Upon receiving the jar file, the client executes the pre-install program (Block 1155), if one has been defined. Block 1160 then executes the installation of the component itself, and Block 1165 executes the post-install program, if one has been defined for this component. (Refer to the description of Blocks 930 through 955, above, for more information on pre- and post-install programs.)
[0108] The status of the component installation is returned to the staging server (Block 1170). If a log file was defined for this purpose, as previously described, the log file is also preferably returned (Block 1175).
[0109] When all components have been installed, control reaches Block 1180. The client preferably sends a "Suite installation complete" message to the staging server. Upon receiving this message, the staging server issues a message to the client (Block 1185), telling it to close down the installation process. The client, upon receiving this message, performs termination logic such as removing the installation user interface (Block 1190). The client then resets and waits on its RMI port (Block 1195). (In preferred embodiments, HTTP message exchanges are used for transferring relatively large amounts of data; RMI is used for lightweight message exchange.) The installation processing then ends.
[0110] As has been demonstrated, the present invention defines an improved installation process using an object model and framework that provides a standard, consistent approach to software installation across many variable factors such as product and vendor boundaries, computing environment platforms, and the language of the underlying code as well as the preferred natural language of the installer. Use of the techniques disclosed herein enables more efficient and flexible software installation than is available in the prior art, by adapting the installation process for a particular topology of a destination run-time environment, as has been described. Using the disclosed techniques, a solution builder is able for the first time to enforce or recommend the topology which is most efficient for this end solution.
[0111] Note that the novel techniques of one or more of the related inventions may also be included in an embodiment of the present invention. By review of the teachings of those related inventions, it will be obvious to one of skill in the art how those teachings may be integrated with the novel techniques of the present invention.
[0112] While preferred embodiments of the present invention have been described, additional variations and modifications in that embodiment may occur to those skilled in the art once they learn of the basic inventive concepts. Therefore, it is intended that the appended claims shall be construed to include preferred embodiments as well as all such variations and modifications as fall within the spirit and scope of the invention.
|Cited Patent
|Filing date
|Publication date
|May 4, 1936
|Mar 28, 1939
|American Box Board Co
|Title not available
|Title not available
|Title not available
|Title not available
|Citing Patent
|Filing date
|Publication date
|Apr 1, 2002
|Mar 4, 2008
|Microsoft Corporation
|System and method to facilitate manageable and agile deployment of services in accordance with various topologies
|Aug 13, 2004
|Jun 24, 2008
|Microsoft Corporation
|Combined computer backup, disaster recovery and migration in a shared environment
|Mar 8, 2002
|Mar 10, 2009
|Microsoft Corporation
|Non-script based intelligent migration tool capable of migrating software selected by a user, including software for which said migration tool has had no previous knowledge or encounters
|Sep 30, 2003
|Jun 23, 2009
|Microsoft Corporation
|Systems and methods for enabling applications via an application programming interface (API) to interface with and configure digital media components
|Mar 2, 2006
|Nov 24, 2009
|Maxsp Corporation
|Pre-install compliance system
|Aug 13, 2004
|Dec 15, 2009
|Microsoft Corporation
|Remote computer disaster recovery and migration tool for effective disaster recovery and migration scheme
|Jan 4, 2008
|Dec 22, 2009
|Microsoft Corporation
|System and method to facilitate manageable and agile deployment of services in accordance with various topologies
|Jul 7, 2005
|Feb 16, 2010
|Maxsp Corporation
|Distributed operating system management
|Jul 6, 2005
|Aug 24, 2010
|Microsoft Corporation
|Application and method for transferring information between platforms
|Nov 17, 2004
|Sep 14, 2010
|International Business Machines Corporation
|Method and apparatus for dynamic middleware assembly
|Sep 22, 2006
|Nov 23, 2010
|Maxsp Corporation
|Secure virtual private network utilizing a diagnostics policy and diagnostics engine to establish a secure network connection
|Dec 21, 2006
|Nov 30, 2010
|Maxsp Corporation
|Warm standby appliance
|Sep 30, 2005
|Jan 18, 2011
|Microsoft Corporation
|System and methods for providing versioning of software components in a computer programming language
|Aug 4, 2004
|Jan 18, 2011
|Microsoft Corporation
|Generic packaging tool for packaging application and component therefor to be installed on computing device
|Jun 2, 2005
|Mar 15, 2011
|Maxsp Corporation
|Transaction based virtual file system optimized for high-latency network connections
|Jun 30, 2004
|Jul 5, 2011
|International Business Machines Corporation
|Optimizing application performance through data mining
|Jul 5, 2001
|Aug 16, 2011
|Microsoft Corporation
|System and methods for implementing an explicit interface member in a computer programming language
|Oct 29, 2010
|Jan 17, 2012
|Maxsp Corporation
|Secure virtual private network utilizing a diagnostics policy and diagnostics engine to establish a secure network connection
|Jul 5, 2007
|Mar 13, 2012
|Adobe Systems Incorporated
|Software installation and icon management support
|Aug 29, 2006
|May 1, 2012
|Adobe Systems Incorporated
|Software installation and support
|May 8, 2012
|Maxsp Corporation
|Method of and system for enhanced data storage
|Aug 29, 2006
|May 29, 2012
|Adobe Systems Incorporated
|Software installation using template executables
|Aug 13, 2004
|Jul 17, 2012
|Microsoft Corporation
|Combined computer disaster recovery and migration tool for effective disaster recovery as well as the backup and migration of user- and system-specific information
|Jun 8, 2007
|Jul 24, 2012
|Adobe Systems Incorporated
|Combined application and execution environment install
|May 24, 2006
|Jul 31, 2012
|Maxsp Corporation
|Computer hardware and software diagnostic and report system
|Nov 6, 2012
|Maxsp Corporation
|Disaster recovery appliance
|May 19, 2005
|Jan 8, 2013
|Novell, Inc.
|System for creating a customized software distribution based on user requirements
|Oct 19, 2007
|Feb 12, 2013
|Adobe Systems Incorporated
|Management user interface for application execution environment
|Apr 4, 2012
|Apr 16, 2013
|Maxsp Corporation
|Method of and system for enhanced data storage
|Dec 21, 2006
|Apr 16, 2013
|Maxsp Corporation
|Virtual recovery server
|Mar 4, 2010
|Apr 16, 2013
|Pfu Limited
|Delivery system, server device, terminal device, and delivery method
|Oct 19, 2007
|May 21, 2013
|Adobe Systems Incorporated
|Application tracking for application execution environment
|Sep 17, 2009
|Jun 11, 2013
|Adobe Systems Incorporated
|Software installation package with digital signatures
|Jun 30, 2005
|Sep 10, 2013
|Microsoft Corporation
|Strategies for configuring media processing functionality using a hierarchical ordering of control parameters
|Apr 4, 2011
|Oct 8, 2013
|Adobe Systems Incorporated
|Version management for application execution environment
|Mar 5, 2008
|Nov 19, 2013
|Maxsp Corporation
|Computer hardware and software diagnostic and report system incorporating an expert system and agents
|Oct 26, 2007
|Feb 4, 2014
|Maxsp Corporation
|Environment manager
|Aug 9, 2010
|Feb 4, 2014
|International Business Machines Corporation
|Method and apparatus for dynamic middleware assembly
|Oct 22, 2010
|Mar 25, 2014
|Adobe Systems Incorporated
|Handling calls to native code in a managed code environment
|Oct 22, 2010
|Apr 8, 2014
|Adobe Systems Incorporated
|Runtime extensions
|Nov 5, 2010
|Jun 3, 2014
|Maxsp Corporation
|Warm standby appliance
|May 24, 2006
|Aug 19, 2014
|Maxsp Corporation
|System for and method of securing a network utilizing credentials
|Jun 2, 2005
|Aug 19, 2014
|Maxsp Corporation
|Virtual application manager
|Jan 27, 2006
|Oct 21, 2014
|Microsoft Corporation
|Secure content publishing and distribution
|May 24, 2006
|Nov 25, 2014
|Maxsp Corporation
|Applications and services as a bundle
|Jun 2, 2014
|Jul 28, 2015
|Maxsp Corporation
|Method of and system for enhanced data storage
|Jun 21, 2012
|Aug 11, 2015
|Zte Corporation
|Wireless communication terminal and method for securely running industry software
|Mar 8, 2002
|Sep 11, 2003
|Henrickson David L.
|Non-script based intelligent migration tool capable of migrating software selected by a user, including software for which said migration tool has had no previous knowledge or encounters
|Jun 16, 2003
|Dec 16, 2004
|Microsoft Corporation
|Delivering multiple installation images and computer-readable installation keys on installation media
|May 7, 2004
|Nov 10, 2005
|International Business Machines Corporation
|System and method for dynamic software installation instructions
|Jun 30, 2005
|Dec 8, 2005
|Microsoft Corporation
|Strategies for configuring media processing functionality using a hierarchical ordering of control parameters
|Jun 30, 2004
|Jan 5, 2006
|International Business Machines Corp.
|Method, system and program product for optimizing java application performance through data mining
|Sep 30, 2005
|Feb 2, 2006
|Microsoft Corporation
|System and methods for providing versioning of software components in a computer programming language
|Aug 4, 2004
|Feb 9, 2006
|Microsoft Corporation
|Generic packaging tool for packaging application and component therefor to be installed on computing device
|Aug 13, 2004
|Feb 16, 2006
|Henrickson David L
|Combined computer disaster recovery and migration tool for effective disaster recovery as well as the backup and migration of user- and system-specific information
|Nov 17, 2004
|May 18, 2006
|Diament Judah M
|Method and apparatus for dynamic middleware assembly
|May 19, 2005
|Nov 23, 2006
|Isaacson Scott A
|System for creating a customized software distribution based on user requirements
|Jan 27, 2006
|Oct 4, 2007
|Microsoft Corporation
|Secure content publishing and distribution
|Mar 4, 2010
|Jan 13, 2011
|Pfu Limited
|Delivery system, server device, terminal device, and delivery method
|Nov 8, 2010
|May 10, 2012
|Microsoft Corporation
|Instantiating a Software Development Environment From an Environment Class
|Jun 4, 2013
|Jan 2, 2014
|International Business Machines Corporation
|Discovery and modeling of deployment actions for multiple deployment engine providers
|Jun 30, 2012
|Jan 2, 2014
|International Business Machines Corporation
|Discovery and Modeling of Deployment Actions for Multiple Deployment Engine Providers
|Jan 27, 2012
|Mar 6, 2014
|Amplifier Marketing Pty Limited
|Method and system for providing content
|Aug 28, 2007
|Mar 6, 2008
|Adobe Systems Inc
|Software installation using template executables
|U.S. Classification
|717/178, 717/170
|International Classification
|Cooperative Classification
|European Classification
|Aug 15, 2001
Owner name: INTERNATIONAL BUSINESS MACHINES CORPORATION, NEW Y
Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:CICCIARELLI, ULISES J.;GONZALEZ, FRANCISCO;LEAH, ROBERT C.;AND OTHERS;REEL/FRAME:012109/0128;SIGNING DATES FROM 20010730 TO 20010815


text:
|All market data carried by BBC News is provided by DigitalLook.com. The data is for your general information and enjoys indicative status only. Neither the BBC nor Digital Look accept any responsibility for its accuracy or for any use to which it may be put. All share prices and market indexes delayed at least 15 minutes. 52 week high and low values are calculated from close price data. Click here for terms and conditions
Top stories
Features & Analysis
By using the phrase 'Modi Toadies', writer Salman Rushdie prompts an online storm
Author Salman Rushdie calls out extreme Modi supporters and dubs them "Modi Toadies".
Has Charlie Hebdo legacy turned sour?
The shootings prompted an outpouring of sympathy and solidarity with Charlie Hebdo, but nine months on, has that legacy begun to sour, asks the BBC's Lucy Williamson.
More female-friendly online dating
Can Whitney Wolfe repeat the success of Tinder with her new dating app Bumble, where women take the lead?
The bird that's more valuable than ivory
The helmeted hornbill is under threat, hunted by poachers who want to sell its "ivory" on the black market.