Linden Labs has indicated that they will not create a LSL function that will allow the fully automated creation of Notecards because each notecard is stored separately in the asset server.
Thus providing a fully automated way of creating notecards opens the potential for a scripting mistake (not to mention deliberate attacks) to at the least congest and slow down the asset servers, or at the worst crash it (along with the grid.)
Kelly Linden, in response to a Second Life Answers question indicated that "an open webpage to be saved as an asset (be it 'notecard' or something else) by the viewer of the notecard may be a possibility" -- which I took to mean, that as long as a human had to be involved clicking a "save" button for example, that the creation of notecards by LSL would be considered.
There are many reasons why LSL programmers have wanted the ability to create notecards. Some of these include the ability to save configurations, or the ability to save data in one object then be able to load that data into another object. I do not believe an automated method of creating notecards should be used for these activities, and support Linden Labs choice to instead implement an object data store and better object to object communication.
However other uses include providing data export for human consumption, just a few examples include:
* CSV data to be used in external spread sheet applications
* Reports (Sales, Employee timesheets, Greeter Logs, etc)
* Mail merge type applications where your providing, for example, licenses or rental agreements
Linden Labs has suggested that "HTML on a Prim" or the ability to open HTML pages inside the SL client will solve this. Rather, I think this is offloading the problem to somewhere else rather then dealing with it directly. If SL is to be a viable platform for business, it needs the ability to generate text content programmatically, and allow users to store that data in a manner that it can be accessed within SL without requiring an external server, separate from Second Life.
My suggestion therefore is two fold:
1. Allow LSL to serialize a string to a temporary notecard, that is not stored as an asset, but rather displayed by the Second Life client locally to the user. The LSL function that creates it will also include a target UUID for either a object or agent. The temporary notecard as viewed by the user will have three buttons on the bottom of the viewer for
"Save to Inventory", "Save to [x]", "Discard." The save to [X] option would list the name of the object or agent provided to the function.
llCreateTempNotecard( string title, list contents, key target );
2. Optionally add a forth button or perhaps replace the two "save" buttons suggested in #1, with a "Save Locally" button. This would allow the temporary notecard to be saved to your local machine and not stored on the asset server at all. In your inventory, you will be provided with a third root option for "Local Inventory." The user could then optionally drag that into their normal inventory or into an object in world, at which point a SL Asset would be created for it.
