Subject: The Notes Designer And Why It’s Rubbish.
I’m working on the code you are complaining about, and I can say that a lot of the things that bug you have also bothered me, and I would also like to see them fixed.
In many cases it’s a matter of having time to fix these bothersome little bugs, considering we must also add Designer support for the many exciting new features of 8.0, 8.0.1, and beyond.
There is also the problem that there are problems we don’t hear about from many (or any) customers because they fail to report them through the established support channels (of which this forum is not one).
Overall, our focus is on having a development platform that makes developers as productive as possible, and I think we stack up very well in this area compared to other tools that perhaps spend more time on UI, and less time on building in capabilities that let you check a box or add a line of code to activate functions that you would otherwise have to laboriously program.
As mentioned elsewhere in the thread, many of these problems will be addressed by the ongoing rewrite of much of the Designer code for the Eclipse platform. In particular, the code editors that we get automatically with Eclipse are easy to adapt and extend (for such features as the much-requested LotusScript class browser). Therefore, we’re not really trying to enhance the code editors or fix non-critical bugs in current versions, since that effort would be largely wasted.
We prioritize our bug fixing work based on customer need. This means, if there’s something that’s particularly bugging you, you can raise its priority by contacting our support organization and opening an incident. We can’t fix things we haven’t heard about, or where there’s insufficient detail for us to reproduce the issue. If there’s not already a report, they’ll create a new report, and if there’s already a report, they’ll note that someone else is having the same problem. An issue with two customer reports is more than twice as likely to get fixed as one with just one – and about a million times more likely than one that hasn’t been reported at all.
Mentioning it here does not count. Complaining here about things you don’t like may relieve your feelings, but it doesn’t really do much toward getting things fixed, unless someone in IBM happens to spot it and make a special mission of it – and speaking for myself, I have quite enough to do dealing with known issues and adding useful functions. We have people in support whose job it is to take customer reports and do something about them, but they don’t come looking here for them. Also, of course, we need to know who the customer is so that we can get back to them to request details.
As regards some specific points that have been raised:
- Can’t ALT-Tab back to Designer
Ben has discussed, but if there’s a specific situation where it’s working in a really irritating way, I haven’t seen it, would need an exact set of steps to reproduce. Not here, please – through support.
- Many prompts closing LotusScript debugger:
There are many things about the debugger that I would like to change, and this is certainly one. Possibly we need to look at a rewrite as part of the Eclipse work. We’re still deciding what to work on in what order.
- HideWhens… often fail to work … all manner of problems…
…don’t work on Richtext in tables unless the RTItem is preceded by a space.
As described in this Rich Text field hiding Technote, hide settings should not be used on a rich text field because rich text paragraphs have their own hide settings. Alternative techniques are described in the technote.
…a form with a single value that computes to either @True or @False. The hidewhen formula has the value of the Field as it’s Hidewhen. For example, the field called IsNotDebugMode, has a value of “[Debug]” = @UserRoles. All hidden fields have a hidewhen formula of IsNotDebugMode. This includes the line with the field itself. All lines work except that first line. I know a hidewhen can work if based on a field on that line but in this case it doesn’t.
Formulas are evaluated in a particular order. Apparently the hide formula on a paragraph, is evaluated before the formulas for the fields on that paragraph. This doesn’t seem like the wrong order to me – in fact, it makes sense, since there’s probably some work we can avoid doing during the processing of the fields, if we know they won’t be displayed – better performance. Developers need to learn what order things happen in – or at least, be sensitive that this is an issue and be prepared to figure out that’s what’s happening and find an alternative when it doesn’t accord with their expectations. In this case, it seems you could hide the field IsNotDebugMode always, and have a later paragraph to display the fact that the debug mode is enabled. It didn’t take me hours to come up with that.
I’ve had hidewhen where even @True didn’t trigger it to hide correctly!
This is not enough information to permit us to make a fix, without details on how to reproduce it. Supplied to support, not here.
- Document Items in the debugger are not in alphabetical order.
I can see how you would want this. There’s a hitch, though. The items are displayed in the debugger because there is a property of the class – “Items” – whose value is an array, and which contains the items in the order they were read from the document note. It is, of course, more efficient to access the items in that way when running your code normally – sorting them is extra work for the lazy CPU which would like to do as little work as possible to get you your results.
So you are suggesting what? We should show a value for the Items property which is not in fact its exact value? So that if there’s a loop in the code that refers to doc.Items(i), and i=5, then when you expand the items property and look at value 5, it’s a different item than the one the code is looking at? Or that we should always sort the Items array even though it’ll slow code even when you’re not debugging? Or that we should sort the Items property only if you’re debugging, so that the code doesn’t work the same way when you run it normally versus when you debug it? None of these sound like good choices to me.
I suppose we could have a debugger-only property, ItemsSorted, that displays the items in sorted order. I’m not too excited about this idea either because we don’t have any other occasions where we display something under an object which is not in fact a property of the item. People would start calling in to support to ask, what is this ItemsSorted property and why can’t I use it in my code?
It’s a dilemma.
- The Code Helper in Formula Language frequently vanishes if you mistype something and have to backspace.
This can be irritating, but Ctrl-Shift-Space will get it back. Meanwhile, this is moot once we get all the Eclipse code editors in place.
From Stephan Nold:
… it would be great, if things would finally work as described in the designer documentation …
There’s a Feedback link at the bottom of each help document. We have dedicated staff to read this feedback and take action based on it (either to correct the documentation, or enter a request to fix the function to match the documentation – please specify which you think would be better and why). I myself have entered many corrections in this way.
NotesDatabase.CreateReplica … doesn’t work
Well, it does work, with a couple of known issues, one of which affects only templates, and another that we can’t currently reproduce. Neither has any reports from customers, so apparently you have not been doing your part to get this issue that has been troubling you fixed. If you have a problem and can reproduce it, please call in to support. Thanks. Oh, and make sure you’ve read up about server trust lists and so forth, first.
From Rob Goudvis:
How about trying to recompile all scripts with some errors? How to find what script actually is wrong?
I haven’t had a problem determining where the problem is. The problem design element is shown in the results dialog, and you can open it from there. You make some little change and try to save it, and you’ll see what’s wrong. Can you call support and be more specific about what your problem is?
Why is there no Lotusscript function to determine whether or not you are in debug-mode?
Because as far as I know, you’re the first to request it. If you could explain the application and how this would help you, it would help us prioritize this request, which frankly doesn’t sound all that useful to me compared to lots of other things we could be doing.
…with DXL? Were you ever able to find the location of the error as reported by the errorlog?
DXL/XML is one of the areas that needs the most work, but one problem I haven’t had is locating errors – the Log property is quite precise as to line number and character position within the line it saw something it didn’t like. Can you provide a specific example with some indication of what additional information would be useful to you?
…export the standard mail-template and try to import it back. You will get ERRORS from the DXLImporter…
This is one of the things I’ve also complained about, and am trying to get corrected. I think all our DXL output should be valid importer input, and valid according to our own DTD also. It’s worth noting that sometimes the problem is only with the DTD, and if you turn off validation the import works OK.
Why is there no way, except by adding special code, to trace an agent (or lotusscript) that is invoked from the Web?
I haven’t tried this; doesn’t the remote debugger work? If not, perhaps this could be arranged. Can you make a business case for this new feature?
This is not really my area, but I suspect it’s largely a technology issue. The browser only waits so long for a response, so your agent output will be lost if you take the time to debug it. The browser itself is not a debugging client. The web server has its own processes, and having them and the agent manager both looking for messages from the Notes remote debugger client on the same port might cause problems. That sort of thing.
You know, I do a lot of debugging of C/C++ code. I can stop at any statement, or even any machine instruction, but I still often find it useful to insert temporary trace output statements. It’s not like this is something we can ever escape completely.
Why is the function “Send me a daily e-mail listing new responses that are posted to this thread” not working on this fourm?
This is not really about Domino Designer, and I don’t use this feature myself. It might get more attention from the people who run the forum if you posted the question as a separate main document.
Not being able to debug a dialog is a major deficiency because of the extra time and effort that is necessary when you need to find out exactly what is going on.
Agreed, this would be helpful. but it’s difficult to add this ability because of the architecture of the language and debugger. One of the reasons I would like to do a whole new debugger.
I have occasionally had recourse to creating a document with sample data in it and the Form field set to the name of the dialog form, so that I could open the dialog form as a regular document window and step through the code, This works rather well.
From Cesar Mugnatto:
Synopsis does not output JavaScript…
We haven’t really been keeping the design synopsis up to date with new stuff we’ve been adding. As Maureen noted, for a built-in option, we’d prefer you use Tools / DXL Utilities / Transformer… and create XSLT to transform the DXL data into whatever type of report works for you. And please share the XSLT with other developers via openntf or our Sandbox – we only provide one with the product by way of example.
Also, there are excellent third-party tools for this, at least one of them free.
I change the name of the template on a template … [Later] I check and the template no longer has the new template name.
This is a new one for me, unless perhaps you’re giving two templates the same template name, which I believe might fail silently if you do it on a server. Admittedly, an error message at this point would be helpful, so if that’s what’s happening, perhaps you should call support.
- Andre Guirard, IBM/Lotus Development
Useful blog: Best Practice Makes Perfect
For faster answers, be C R I S P Y