Tag Archives: single sourcing

Being a Judge for STC and Removing Flare Conditions

I’m using this morning to finish up my FTCC judging, so I will just make a plug for STC and give a quick Flare tip.

First; the plug: You should submit something to your local STC competition next year. Besides making your company look good if you win something (one reason why they should pay your entry fee), you will also get detailed, custom feedback on your delivarables (the biggest reason why your company should pay for it, I guess).

Judges benefit, too. They get driven to the awards ceremony in a limousine exposed to the work of tech communicators in their area, and incentive to learn how to articulate what works and what doesn’t. Ask your chapter leaders if you can get something else, too, like a nifty judge’s badge for your web site or a recommendation on LinkedIn.

If you already entered an STC competition, please let me know how you process that feedback. Last year our team got pretty systematic about the feedback we got on our entries. We categorized the feedback, then went through it as a team to determine next actions. Most of the time the next action was to add it to the list for future discussion. But every week we discuss something and come up with styles and guidelines out of those discussions. So we have a plan for using the feedback. Do you?

The Flare tip: I guess my blog comes up if you search for “Flare removing conditions.” Since I once had to remove unnecessary conditions from some of my Flare projects, I’ll tell you how I did it.

The biggest thing to remember is to remove the applications of the condition before you delete the condition from the set. You can see where you have applied a condition at the topic level if you have the indicator boxes set to display in the Content Explorer. However, as we know, things do not always happen cleanly in the code when you do it in the GUI. Additionally, there is no quick way to find all applications of a condition within a topic. (Something I recommend you minimize, anyway).

No problem; you can search for the code that indicates a condition is applied using the Find feature. Search for <MadCap:conditionalText MadCap:conditions=”YOURCONDITIONNAME”> and remove the applications, one by one. I don’t think this is something you can fix all at once using Find-and-replace, unless you are finding the condition tags are empty. You can find and replace empty condition tags: <MadCap:conditionalText MadCap:conditions=”"><MadCap:conditionalText>.

The nice thing about this is that it will keep empty condition tags from causing those indicator boxes to do funny things. For example, have you ever seen an indicator box half-colored when you applied a condition? Half of the box can have the color of your condition and half can be blank, which can seem pretty odd. It can happen if you removed or renamed the condition from your condition set but didn’t remove it where it was applied.

As a reminder, if you import topics from a source project into a master project, you should do the find-and-replace in the source project first, then reimport, then do it in the master project.

Guidelines for Linking Flare Projects

I’ve talked a bit here about my experiences linking projects Flare. Recently, we brought new writers on to the project where we use linking, and it became apparent that we needed some sort of written guideline.

In previous releases, we experimented and tested quite a bit to arrive at these guidelines, and the linked projects grew weedy with extra files, TOCs, and rogue condition sets. It can happen quicker than you might think. This did not facilitate a new writer jumping right on the project and feeling confident about not breaking something. Our department tries to focus on creating repeatable processes, as I imagine yours does, too. Be aware that the process of linking projects has proved to be a challenge to that general principle.

Why Link Projects?

The benefit of linking Flare projects is that you can maintain help topics that are used in more than one project in their own separate project. This lets you share those topics with multiple help projects at once. An example of when you might want to do that would be to document software program A, which is not a standalone product, but a source of common code used by programs B, C, and D.
There is another reason to break topics out into their own project—it lets multiple writers work on a project at once more easily than if they were working together in one project. Recently, on a project with an aggressive schedule, we have started to work collaboratively, which was new for us. We have traditionally done one writer to one release.

For this project, we identified some code that was shared between several projects. We then moved the help topics that document those windows to their own Flare project and imported them as needed into master projects. This lets multiple writers work on the same release, but in separate projects. Without source control, this was a way to avoid getting in each other’s way.

Definitions

  • Source project, or slave project – a project from which you are pulling help topics into your project. Its purpose is store help topics that are used in other projects. You do not build help systems from a source project, you only edit help topics. In the above example, the program A Flare project is the source project. It is the “source” for the help topics related to program A.
  • Master project – a project into which you pull help topics from source projects. Help systems are built in master projects, but you don’t edit help topics you have imported from source projects. In the above example, the projects with help topics for programs B, C, and D would be the master projects.

Source Project Guidelines

Remember, we developed these guidelines partly because we don’t have source control. I don’t know much about source control products, but I’m guessing it would be better practice to have source control rather than to rely on this honor system. We do still run into issues.

  • All files are named with a naming convention that starts with the initials of the project. For example, all html files in the program A source project start with “aa_.” This lets you identify them at a glance once they are in the master project. The link icon will also identify them, but what if you break the link?
  • The TOC in a source project is for reference only, and may or may not be maintained. It is not used to build a deliverable.
  • When you add a file to the source project, you must import it to the master project and add it to the TOC in the master project.
  • Any necessary conditions on the file must be marked here, in the source project. Conditions on folders are applied in the master project.
  • Do not rename file names in a source project. Otherwise, they will not properly overwrite themselves in the master project.
  • Do not rename folders in the source project, for the same reason. Folder levels in the source project must match folder levels in the master project.
  • Do not move files to other folders in the source project, for the same reason.
  • When you add a file to the source project, you must import it to the master project and add it to the TOC in the master project.

Master Project Guidelines

  • Conditions at the file level must be applied in to the topics in the source project.
  • Conditions at the folder level must be applied to the folders in the master project.
  • Any find-and-replace searches should first be done in the source projects, and the files should be reimported before doing the find-and-replace in the master project. This is important, as Flare will not respect linked file restrictions during a find-and-replace search.
  • When you add a file to the source project, you must import it to the master project and add it to the TOC in the master project.
  • Do not move imported files to new folders. Otherwise, they will not properly update when you import from the source projects, and there will be duplicate topics. Folder levels in the source project must match folder levels in the master project.
  • On the target files, disable auto-sync of linked files. This prevents the project from re-importing files from the source projects when you build.
  • To import update topics into the master project from the source projects, open the import file and reimport.

Working with Multiple Writers

  • While a writer is doing a find-and-replace search, it’s best not to work in the same project as that writer, or at least not in the same section of the project.
  • While a writer is building a document in the master project, no other writer should be working in the master project. If auto-syncing files is disabled for the target they are building, then other writers may work in the source projects.
  • While a writer is importing topics into the master project from a source project, no one else should work in either project.
  • Be careful not to work in the TOC file at the same time as another writer.
  • Multiple writers can work in the same project at the same time, but not on the same file at the same time.

Does your team collaborate on Flare projects? How do you stay out of each other’s way when you share files? For us, communicating about this is the biggest help, but it’s also one of the biggest challenges.

Condition Guidelines for Flare Projects: Part 2

In Part 1 of this post, I listed our department’s new guidelines on applying conditions in MadCap Flare. Conditions are one way you can include or exclude content when you are single-sourcing in Flare. After The Project, our crash course in project linking and conditioning, our manager drew up some guidelines that we’re adopting for the next few months and trying out on a test project. I think they’re pretty close to finished, though. This is Part 2 of those guidelines.

Defining Targets

I define a target for every deliverable: User Manual, WebHelp, .chm help, System Admin Manual. If you have a separate target for each deliverable, you can set the conditions (and other settings) and leave them. Here’s what to expect:

  • When a topic or paragraph has two conditions applied to it and the target is defined to include one of the conditions and exclude the other condition, the conditioned material will be included in the final output.
  • When a topic or paragraph has two conditions applied to it and the target is defined to exclude one of the conditions and nothing is defined for the second condition, the conditioned material will be excluded in the final output.
  • When a topic or paragraph has two conditions applied to it and the target is defined to include one of the conditions and nothing is defined for the second condition, the conditioned material will be included in the final output.
  • When a set of topics or paragraphs has two conditions—one applied to some files and the other applied to some other files—and the target is defined to include one of the conditions and nothing is defined for the second condition, the material with the second condition will be excluded.
  • This last one was discovered while testing in preparation for these guidelines. I wish we had known this when we linked all the files up for The Project. This lets each writer only pull what they know they need from a slave project, with minimal interference with the other writers sharing the project.

Another tip: If you don’t choose define any condition settings in your target, and you’re building a help system, all files will be included, even if they aren’t on the TOC. Users will be able to find them in search.

Managing Condition Sets

In a nutshell, condition sets became as controlled as our CSS. Which makes sense to me.

  • Do not rename the department condition set file or add any conditions to it.
  • A new condition set file should only be added to support different versioning information
  • Any new condition set file needs to be approved in advance by the Tech Comm Mgr or Team Lead.
  • In most cases, Not For Users conditions should only be used to add information to the base files. That is, use conditions to add information on an upcoming release while maintaining the integrity of the baseline files.
  • A new condition set file should follow the set naming convention. Within the condition set file, conditions should be added with the appropriate naming convention.

Version Conditions vs. Archiving

We determined that we don’t expect to use the version conditions much unless multiple development lines of a product are being maintained. We will archive a copy of our projects at each product release. We’ll use these archived copies to produce any deliverables we’ll need pertaining to that release. The working project will continue to be built upon those base files without conditioning for versions.

Tell Me Again Why I Like Conditions

Even though it took years off my life figuring out the conditions for The Project, I enjoyed it. I liked the challenge of knowing that when we found the right combination of conditions and linked projects, we would be sharing files where previously we had duplicated work. The moral is: conditions can do a lot, but they can’t do everything. And they’ll probably do something that you weren’t expecting, so leave plenty of time to QC.

Condition Guidelines for Flare Projects: Part 1

Applying Conditions

Conditions – how do I love them? Well, let me either count the ways, or count the duplicate, missing, unused, and capricious conditions that have made their way into our shared files. As soon as we began linking up our Flare projects and passing them around, it became apparent that someone was going to have to cut us off.

Some one had a condition for every reviewer: Joe, Mary, Tim. I had one for every status: To Edit, To Be Reviewed, Approved. I fought for that as a separate condition set, since it was convenient for seeing at a glance which files needed work. I was finally convinced to use a separate TOC for topics-in-progress. Like, duh.

And let’s not forget the conditions that were duplicated across multiple condition sets—some files had Print Only from applied from the Default set, others from the custom project set. I’m not looking forward to rooting those out.

After several combined hours of discussion, the some department guidelines were born. This first post covers our guidelines for applying conditions. In the second post, I’ll give our guidelines for defining target conditions and managing condition sets. These guidelines were written by our manager. The peanut gallery is all me. And if you’d like another good overview on Flare conditions, check out Paul Pehrson’s post about them. They seem to frazzle him less than they do me, though I don’t know if anyone can love conditions like I love conditions. That said; here are our guidelines:

Whenever possible, write around the need to use conditions.

  • For example, if your text refers to a “chapter” or another type of text that is appropriate for a user manual, do not condition it out for a Help system. Rewrite the text to be applicable in both.
    This might seem to defeat the purpose of having conditions, but the more conditions you use the more likely that somewhere the conditions are at odds with each other. Each place that you apply a condition is a place that you have to check whether the outcome is what you expected.

When conditioning an entire topic or group of topics, apply the condition in the Content Explorer pane (not in the TOC). Do not apply conditions in the TOC.

  • Talk of this rule started when we realized that applying conditions to the TOC did not remove them from a .chm or WebHelp build. That works to condition content out of a Word or PDF output, but in a help file, the topics will still turn up in a search.
  • Additionally, some folks were applying the conditions to the files in the Content Explorer, as they should, but then also applying the same conditions to the TOC, for good measure. This was an unnecessary step, and also misleading for someone coming into your project.
  • Actually, I would rather we took a stand on only having a single TOC, in which case we might have need for using conditions on the TOC. But since we are going with the rule for a few months, I will give linking TOCs another try.

Avoid applying conditions within a topic or to sections of a paragraph.

  • If applying a condition to a complete paragraph within a topic (preferred use), apply the condition using the paragraph indicators on the left side of the screen. Applying and removing conditions in this way will ensure the underlying code is managed correctly. Two main reasons for this one. First, sometimes you have to go into the code to completely remove a condition. Better not to condition at the sentence level if you can avoid it. Second, if you are linking projects, importing a file only executes your topic-level conditions. For example, if you import a topics from a slave project based on whether they have the X condition applied, great. All the files with the X condition are applied. If you have the Y condition applied to all the Y product names within those topics, you can’t filter those out until you build a target. Each target can only use one combination of conditions. So if you are combining X and Y files into one target, they must have the same condition requirements.

The “NOT for USERS” condition is only to be used at the topic or folder level. Do not use it at the paragraph level.

  • Inevitably, when trying to condition something as not for clients at the sentence level has come back to bite us.
    When a project has almost two thousand topics and a lot of conditions, some other condition is going to bring that content to the surface.

Okay, so once you have the perfect conditions applied with finesse and restraint, what next? Tomorrow I’ll post about defining how your targets use conditions, and about how to manage multiple condition sets in Part 2 of this post.

This Week in Flare Project Linking

You might know that Madcap introduced a project linking feature in Flare v.4. I’ve been itching to try it, and we got our chance when several of us were charged with providing a documentation set to a critical client that was receiving several of our products. The products had always shared functionality, but we previously documented those shared features in parallel. The time crunch of this project and the need to shine (it would be obvious and embarrassing if each of us presented our own takes on these features) pushed us to link up the Flare projects so that we could share that content and not make duplicate updates.

Some things I learned this week about linking up Flare projects:

You can move the linked files around without breaking things.

This might seem sort of basic, but it had me in a tizzy of concern before I finally just sat myself down and imported some topics. The topics come in at the same folder level they were at in the original project. For example, if the file path in the original project was “…Product/Menu/Option.htm,” when you import, the Project and Menu folders will be created in the receiving project, unless they already exist there. Then you can move the source files or the child files as much as you like. Flare will keep track.

You can pull in images, snippets, and condition sets by including linked files.

This feature just saves so much work. Flare uses linked images, and you can use a check box called “Include linked files” in the import file to import the images along with the topic. You can also bring in the condition sets and snippets that are used in the topics. If you want to make sure you don’t break links, and that you bring all the topics that are linked together, this is how to do it. I highly recommend bringing in your images this way instead of copying and pasting; otherwise you have to make sure you have the right folder levels in the Images folder of the receiving project, which is a silly pain. Plus, we created the original project from a Word import with embedded images, so many of the images were numbered rather than named. We would have had to hunt and peck for the images that were used in the shared files. Not fun for a large import.

By the way, you don’t have to accept all of the linked topics. Flare gives you a confirmation box to cherry pick files to include, plus you can filter by conditions. The conditions will override the linked topics feature, if you’re wondering.

If you create an import file but you don’t actually import anything, you could still overwrite files the next time you build a target.

We got burned with this yesterday. What happened was, I deleted a topic that I thought was redundant. Then I decided, well no, I would revise it instead. No problem, I thought, I’ll import that topic from a backup copy of the project. When you import, you can theoretically filter for such a topic by using a wildcard character (an asterisk) plus part of the file name, and I was curious to try that out. I had trouble getting the import file to find the topic, though, so I never did actually perform the import. I didn’t delete the import file because I thought I might use it later. I left it pointing at the backup copy, which was almost a week old. Gosh, that seems like a bad idea when I put it out there in black and white like that for all to see.

The next morning, when I attempted to build a rather small target from the project, Flare crashed repeatedly. I gave up and went to a meeting, and when I came back, my manager was in controlled panic, because for some reason the project had lost almost a week’s worth of work. “It’s kind of a big deal,” she said patiently to me on the phone from her desk, where the emails were flying between her and a network administrator. This was her way of saying that we were pretty screwed if we couldn’t figure out which wormhole the project had disappeared into. She’s such a nice person.

It took most of the day and a network restore to determine what had happened. It turns out that even though I never told Flare to import, since the import file existed, the files were updated anyway upon building. The lesson is this: either delete unused import files or don’t set the import file to automatically search for updates when you build targets. Oh yeah, and back up religiously, of course.

You can use a linked project to filter out unused files in a WebHelp.

We’ve got a WebHelp target that is significantly smaller than the primary target, yet all of the files that are in the project get included when we build the smaller WebHelp. This bloats the file size to the point that we can’t email the file. Since the WebHelp will be widely used by internal folk during implementation, that’s a problem. We tried a couple of the project hygiene tips that were listed on the Flare forum (clean the output folder, don’t build online targets to the same location), but they didn’t solve this issue. I think what we may end up doing is creating a new project for this deliverable and then importing the necessary files into that new project. We already have conditions set up for our various targets to supplement our TOCs, so theoretically we could use those to only pull the files for this internal deliverable.

Hurray, Project Linking

Overall, I am excited about the possibilities for reuse that this feature offers. Ours is a high volume shop, and we need all the help we can get in that area.

I’d love to know what you are doing with project linking in Flare. Do you have tips for me?