I was recently hired by a Montreal-based company that merged with other offices located all around the globe. In their request, I have to look at the way things are being organized, especially with regards to naming conventions and its ability to define all language and environment combinations.
So here’s a revisited edition of my “Naming Convention Part 2 of 2”, originally posted on January 26th 2014. If you’ve read it before, please move on to 3rd and 4th token which correspond to Languages and Environments.
– – – – – – – – – – – – –
Now that we have our “application part” out of the way (see Naming Convention Part 1 of 2), it’s time to tackle the rest which contains all other product and package details, such as: software architecture, language, package format, targeted platform, targeted department or service, …etc. Again, since this should be equivalent to how your AppModel in SCCM2012 will look: this part should reflect your Deployment Types section.
This part is a bit trickier: some of the package details are constantly required and some subject to exceptions, while others are rarely used particularly when it comes to targeted platform and targeted department.
2nd Folder Level:
Let’s start this off by covering the three main details that are always required and in order of importance (according to us): package format, software architecture and language. Keep in mind: we want to keep this consistent with the way SCCM2012 handles the different types of packages.
1st token – Package Formats:
- _Src: Keep a copy of your original software sources as they were provided to you
- MSI: Anything Windows Installer, should it be MSIs, MSTs, MSPs and all associated cab files and external files that is triggered by a Windows Installer mechanic
- AppV45: Anything concerning AppV 4.5. You want to keep a close eye to these packages, particularly knowing that you’ll have to eventually convert them to AppV 4.6 or AppV5 because of compatibility / co-habitation existing only with Appv 4.6sp2 and 5.x clients
- AppV46: AppV 4.6 sp2
- AppV5: AppV5 (surprised?)
- MISC: Everything else. Could be a batch file, a vb script, a command-line, a setup.exe followed with arguments …etc.
*exceptions: We did amend these by adding “-64” a few times during our last 18 months or work. This was mainly to differentiate between an x86 software installed on an x86 platform and that same x86 software installed on an x64 where some differences existed. Many of the Adobe products part of the CS5 / CS5.5 got in that category, although that corresponded to less than 1% of the lot (approx. yield: 2,000 packages).
2nd token – Software Architecture:
- 16bit: Yes, they still exist and you are sometimes doomed to make do with them. We also labelled as 16bit all products that even had as little as one 16bit component in them, such as a driver for instance. They’re often the result of a lazy developer (did I dare say that?) that didn’t look for finding / developing the equivalent x86 component. Again, try to have your customer upgrade this to an updated version of the software, and if not keep in mind that a Global Condition might have to be set as this product will most likely fail to install on a x64 box.
- x86: Most of the programs we use today are still in this architecture, and will most likely work on a x64 platform – except if they have a 16bit component in them. You might want to consider labeling them as “16bit” if they are not compatible with your x64 targeted platform. Note: Some customers prefer to label this as “x32” instead of “x86” – which is absolutely fine as long as you are consistent using always the same identifier.
- x64: Any x64 software. *Exceptions: We came across a couple of products (ie: McAfee) where the main launcher was a setup.exe which contained both x86 and x64 sources in them. The resulted category ended up being “x86x64”. You could also choose to “duplicate” the source in this case and treat them as separate packages to avoid amending your naming convention, but then you’ll have to support the evolution (patches, upgrades and removal / replacement) of 2 packages instead of just 1.
3rd token – Languages:
This is the less understood category and brings constant discussions within an IT group. The use of this label should be adapted to your customer’s culture. Do you list ALL languages available for a given software, or just the default language in which it is installed with? Do you want to let the users know if they can change the software language themselves by manually changing a setting in a menu, or if the software language changes automatically according to the OS UI (preferred UI language)? Nonetheless, this demands to sit with your customer and come up with the best strategy for this. Also keep in mind that very few IT dept. keep a high level of language details when it comes to software and, as perfect you would like this to be, it will be a hard thing to keep up with. After going through the entire list of software of this new client with offices throughout the globe, this is what we came up with.
Each language is to be referred to a 1-character code, all available languages at user-level are listed in this token and the first letter of the token should identify the default language at installation. Please notice ‘Multilingual’ (‘M’) that identifies a software that detects and switches to the System’s language automatically, and ‘Undefined’ (‘0’) where no language exists in a given packaged product (most likely an engine or set or libraries).
- Multilingual M
- Undefined 0
- English E
- French F
- Spanish S
- Arabic A
- Chinese C
- Dutch D
- German G
- Italian I
- … .
4th token – environment:
This is another tricky one: We think a package should be meant for the masses, regardless of the working platform, office location, department …etc. With this in mind, we use the term ‘ALL’ in most cases, unless someone identifies the need for a specific setting requiring a different package for a smaller number of people in the organization. Should this case happen, the term ‘ALL’ should be replaced with whatever identifier best describes the special feature or targeted clients.
(Examples)
- ALL: Used most of the time as this package should serve the vast majority
- WinXP: specific to be deployed on a Windows XP machine
- MetricSystem: specificies that this edition was configured with settings for the Metric system (implies that the ‘ALL’ package edition is configured with settings for the Imperial system)
- HR: specific to be deployed to people of the HR department
- London: specific to the people of the London office
- …etc.
As long as you get a short identifier that is explicit to what it’s meant for.
- Avoid accents or special characters
- Remove spaces and change every first letter of every word with an upper case
- Use the underscore solely to differentiate Package Format, Software Architecture and Language (and the “optional token” when present)
- As for the language, you might want to refer to a 2-character language standard to keep this tight
Now put them all together, and these are examples of the folder names you could see, if you were to look at what’s contained in the, say, WinZip_16.5_Corel top level folder:
(examples)
- _Src_x86x64_Mefs: in which we have a big self-extracting EXE file provided by the manufacturer which in turn has the x86, x64 and many language sources for WinZip v16. The leading underscore (“_”) character make this folder show up at the top in alphabetic order.
- AppV5_x64_Mefs_ALL: AppV5 package in x64 software architecture, containing English, French and Spanish languages available at user-level but installed by default in the language of the OS.
- AppV5_x64_F_Finance: AppV5 package in x64 software architecture and French UI language only, specific for the Finance department which is installed in a way that WinZip encrypts solely in 128bit. Instead of putting “Finance” as the optional 4th token, we could have identified this as “128bitEncryption” instead.
- AppV5_x64_E_Finance: AppV5 package in x86 software architecture and English UI language only with that same 128bit encryption support described here above.
- AppV5_x86_F_ALL: AppV5 package in 32bit software architecture and French UI language only.
- AppV5_x86_E_ALL: AppV5 package in 32bit software architecture and English UI language only.
Now that we got the Folders and Files part of the way, see my other Post: How you should name your actual Collections and Deployments in SCCM2012.
Patrick@softomatic.ca
514-992-6442
the Montreal Zombie walk: http://montrealzombiewalk.com/en/