Tuesday, February 10, 2009
Hey everyone. I realize that we've been silent for quite some time now. Distractions at Zoundry (read "other projects") have pulled our attention away from Raven. The bad news is that we haven't been able to devote much of our development time to that project. We still try to handle support email and the forums as much as possible, but even on these fronts we don't do as good a job as we would like. This is unfortunate because we think that Raven is a good product and it could be so much better if only it had some constant attention being paid to it.
The good news is that, to this end, we have decided to release Raven as an open-source project. We're trying to bring on developers from the Raven community to help push Raven development forward. We (Zoundry) will continue to serve the following functions:
Your takeaway from this should be that we are actively seeking developers to help usher in a new era of active Zoundry Raven development. If you are a developer interested in getting involved, please let us know via email (email@example.com) or the Zoundry Raven Forum. Now is your chance to help make Raven even better than it already is!
Update: sadly I forgot to include the link to the Zoundry Raven Open Source project site.
Powered by Zoundry Raven
Friday, May 16, 2008
A forum user recently suggested that a nice feature to add to Raven would be a slick screenshot tool akin to what can be found in OneNote. Apparently they have a cool feature where you can take a screen capture of only a specific part of the screen (by specifying a rectangle using a screen capture tool). Once taken, the screen capture is then injected into OneNote.
This made me realize that, while we could implement such a feature, we should be able to come up with a decent workflow to take screen captures with the current Raven build. Raven has the ability to paste an image that is on the clipboard directly into the blog post. For example, you can do the following:
I'll try this now, and insert the resulting screen capture...
Of course, after I pasted the image into my blog post, I then created a thumbnail of it. But you get the idea.
The part we're still missing is the ability to capture only certain parts of the screen by specifying a rectangle. To enable that behavior, I think another tool is required. On the forum, it was suggested that Snagit could fulfill this role, although I have not used it myself. Suffice it to say, there must be a handful of utilities out there that one could use to take partial screen captures. Once the capture is taken, and the image is on the clipboard, Raven will let you paste it right into the Editor. Done and done.
Tuesday, April 8, 2008
A question that we recently had asked on the forums was "How do I backup my Raven profile data?" This particular user was interested in doing this due to a needed re-install of Windows. I think it's a good question in general, so here's how you do it.
Raven stores all user data in your profile. You may have as many profiles as you want, but most users will likely have only one. You use the Zoundry Profile Manager to add, import, create new profiles. For backup purposes, simply backup the entire profile directory (or directories). By default, the profiles are located in your Application Data directory, for example:
C:\Documents and Settings\ZoundryMan\Application Data\Zoundry\Zoundry Raven
Of course, unless you log in as "ZoundryMan", that part of the path will be different (your username). For the record, I don't mind if you use "ZoundryMan" as the username for your computer. :)
If you are using Raven2Go, then your profiles will be in a "profiles" directory within the Zoundry Raven installation directory, for example:
E:\Portable Apps\Zoundry Raven\profiles
When restoring from your backup, all you need to do is copy those profile directories back to your computer. Feel free to put them wherever you want, although in most cases putting them back where they were before is best. Once you have done that (and presumably re-installed Raven) it is a simple matter to add them back in. Run Raven, and choose New in the Profile Manager. You will see the Create New Profile dialog. In that dialog, name your profile whatever you want, and point the path to one of your newly restored profiles.
That's all there is to it.
Wednesday, March 19, 2008
The next beta release of Zoundry Raven will support the ability to install as a portable application (e.g. onto a flash or other portable drive). This is a feature that was requested by many users, and I'm happy to say that we have finally finished the initial support for it. In fact, I am composing this post using Raven2Go installed on a Memorex TravelDrive. It's a bit slow when compared to running off a hard drive (obviously) but it works pretty darn well!
The changes to Raven to support Raven2Go are, for the most part, hidden from users. There are a couple of things that I should mention, however. First, there is a new page in the Raven Installer. This custom installer page simply has a checkbox that can be checked if the user wants to install Raven as a portable application. If the checkbox is checked, then no application information will be saved to the registry. In addition, when Raven is run after being installed in this way, it will run in "Portable" mode.
The other relevant change for users when Raven is in "Portable" mode is where profiles are stored by default (and where the profiles.xml registry file is located). When in portable mode, Raven looks for a "profiles" directory in the install location. For instance, if you install Raven2Go to E:\TravelApps\Raven, then the profiles.xml file and the default location for newly created profiles will be E:\TravelApps\Raven\profiles.
Everything else that's different between Raven2Go and Raven is under the covers, so users shouldn't have to worry about it. For the most part, it simply means that where we used to refer to files in your profile using absolute paths, we will now use relative paths. This should allow you to take your portable drive to different machines (where the drive letter might be different) and everything should still work.
One thing to note for existing users - I would recommend doing a clean uninstall/install of Raven2Go if you have previously been using Raven on a portable device. The uninstall step will remove all of the stuff from the registry that Raven put in there (not much, but you clearly don't want it in there). Then the re-install will be clean (little/no registry entries).
Tuesday, February 26, 2008
Well, it's been almost three weeks since we did our first public beta release of Raven. We've been getting a lot of feedback from our users (thanks!) and so far it has been overwhelmingly positive. We have some bugs, and we have a lot of work to do before we can release a 1.0 version, but I think we're off to a good start. I think we're closing in on 1000 users of Raven - we should probably hit that number today or tomorrow, actually. A big thanks to everyone that has downloaded and tried the beta.
Stick with us, Raven will only get better with age!
Thursday, November 29, 2007
Alpha version 0.8.154 is ready!
Monday, November 19, 2007
Alpha version 0.8.143 is ready!
Friday, November 2, 2007
Alpha version 0.8.134 is ready!
Friday, October 26, 2007
Alpha version 0.8.128 is ready!
Thursday, October 4, 2007
Alpha version 0.8.113 is ready!
Monday, August 27, 2007
Zoundry Raven Alpha version 0.8.88 is now ready:
Give it a try and let us know what you think. Any and all feedback is welcome.
Thursday, July 19, 2007
Well, this post finally represents the first time I've updated this blog using the new Zoundry Raven product. It's been a long road, but I'm hopeful that it is worth it. Shortly we will be releasing an alpha version of the product to our forums. My hope is that we can get some good feedback from a small set of users so that we can better tailor the product to the needs of our users.
Thanks to everyone for being patient. I know it's hard waiting, but we're really trying to create something that can act as a foundation for a really solid, advanced blog editor/manager.
This is by no means the end of this blog. We still have a lot of neat ideas that I want to share. And even though I don't update the blog as often as I should, it is still a good avenue for getting out information about the product.
And it's a good way to eat our own dog food.
Tuesday, March 13, 2007
Today I have a couple of screenshots that I would like to show. My intention was to write up just a quick post about a new UI feature that is minor but often requested. Just to show you that we really do value our user feedback, the screenshot to the right shows off two things. First of all, it shows a still early capture of the new blog post editor. We're not done with it yet, but hopefully you will agree that it's looking good. Secondly, two more screenshots below show how the toolbars in Raven can be easily customized. Many of our users have complained that our toolbars are too small, particularly in the editor. To address this, we have made it so the user can easily change the size of the toolbars. To do this, simply right-click on the toolbar and choose from the handy context menu. Note that this also reinforces something I talked about in an earlier post: simplifying the UI by relying more on context. In this case, rather than clutter the UI with a variety of menu items in the main menu or user preferences, the user's toolbar size preference is decided via a context menu on the toolbar itself.
Screenshot of the toolbar menu:
How the toolbar looks after choosing "32x32" and "Show Text":
Monday, March 5, 2007
One of the limitations in the Blog Writer is that only one Media Repository can be configured. The application does allow the user to associated a new Account with either the configured Media Repository or the built-in uploading capabilities of the given Account (if supported by the blog platform). However, it was always our intention to provide a way to configure multiple instance of media repositories (of different types) and allow the user to associate different media repositories with different blogs and/or blog accounts. In Zoundry Raven, we have done exactly that, and it is the topic of today's post.
Zoundry Raven allows the user to create and manage multiple media repositories (media stores) using the Media Store Manager. This manager is simply a dialog that allows the user to add, edit, and remove media stores. There will be a variety of types of media stores, such as FTP, Flickr, ImageShack, etc... (more on that later) Once a media store is created, it can be associated with a Blog Account or a Blog. A media store can be associated with a Blog Account during creation of a Blog Account, or later when editing the account's settings. In addition, for more granular control, a media store can be associated with an individual Blog. This way, different blogs, even if they are within the same Account, can use different media stores.
When creating a new media store, the New Media Store Wizard is used. This wizard walks the user through the process of creating a new store. It first asks the user to choose a type of media store (and store name). After that, the wizard asks the user to fill in the information needed by the store, such as username/password. This information is type specific, so page two of the wizard will be different depending on the store type chosen. The media store type might be Custom FTP, or it might be a more specific value, such as Ripway FTP. The more specific types are simply there to pre-populate the necessary fields when creating the store. For instance, Ripway FTP and Custom FTP are the essentially the same, except that page two of the wizard will have some values already filled in, such as 'host' and 'url'.
Finally, I want to explain a little bit about the store types and where the application gets that list from. As I mentioned, we are using the extensibility features of Raven in order to make the media stores highly pluggable. Here's how it works. There are two extension points exposed by Raven that plugins can contribute to. The first is the 'zoundry.blogapp.mediastore.type' extension point. This extension point allows plugins to contribute new media store types to the application. Media store types would be things like FTP, WebDAV, Flickr, etc. For the most part, there would be a single media store type contributed for each protocol/API that might be used to upload images to a remote site. Here is an example of the FTP media store type that will ship with Raven.
<zoundry-extension point="zoundry.blogapp.mediastore.type"> <id>zoundry.blogapp.mediastore.type.ftp</id> <class>zoundry.blogapp.services.mediastore.providers.ftpprovider.ZFTPMediaStoreProvider</class> <extension-data> <media-store-type> <icon>icons/types/ftp.png</icon> <properties> <property name="host"> <display-name>Host</display-name> <tooltip>The FTP host. (Example: ftp.myftphost.com)</tooltip> <validation-regexp>.+</validation-regexp> <validation-error-message>A value for 'host' is required.</validation-error-message> </property> <property name="port"> <display-name>Port</display-name> <default-value>21</default-value> <tooltip>The FTP Port (Example: 21)</tooltip> <validation-regexp>\d+</validation-regexp> <validation-error-message>A value for 'port' is required (and must be a number).</validation-error-message> </property> <property name="username"> <display-name>Username</display-name> <tooltip>Your FTP username.</tooltip> <validation-regexp>.+</validation-regexp> <validation-error-message>A value for 'username' is required.</validation-error-message> </property> <property name="password"> <display-name>Password</display-name> <tooltip>Your FTP password.</tooltip> <type>password</type> </property> <property name="path"> <display-name>FTP Path</display-name> <tooltip>Path on the remote FTP server. (Example: /mypix)</tooltip> <default-value>/</default-value> </property> <property name="url"> <display-name>URL</display-name> <tooltip>URL used to retrieve uploaded files. (Example: http://www.myftphost.com/myusername/mypix/)</tooltip> <validation-regexp>(.+):.+</validation-regexp> <validation-error-message>A valid 'url' is required.</validation-error-message> </property> <property name="passive"> <display-name>Use 'passive' FTP</display-name> <tooltip>Active/Passive FTP mode. (If your settings do not work, try changing the value of 'passive')</tooltip> <type>checkbox</type> <default-value>false</default-value> </property> </properties> <capabilities> <capability enabled="true" id="zoundry.raven.capability.mediastore.supports-delete"/> <capability enabled="true" id="zoundry.raven.capability.mediastore.supports-file-list"/> </capabilities> </media-store-type> </extension-data> </zoundry-extension>
<zoundry-extension point="zoundry.blogapp.mediastore.site"> <id>zoundry.blogapp.mediastore.site.ripway</id> <class/> <extension-data> <media-site> <media-store-type-id>zoundry.blogapp.mediastore.type.ftp</media-store-type-id> <display-name>Ripway FTP</display-name> <icon>icons/sites/ripway.png</icon> <properties> <property name="host"> <default-value>ftphost.ripway.com</default-value> </property> <property name="url"> <default-value>http://h1.ripway.com/USERNAME/</default-value> </property> <property name="passive"> <default-value>true</default-value> <hidden>true</hidden> </property> </properties> </media-site> </extension-data> </zoundry-extension>
The result of all of this complexity is that it is very easy to add new store types and new sites. In fact, third parties could very easily contribute new media store sites without doing any actual coding, as long as those third parties support an API that is already contributed (via a media store type). So if an image host wanted to show up in the list of choices in the New Media Store Wizard, and that image host supports FTP, then they could create a plugin that simply contributed a new media site to the application, much like the Ripway example above.
Friday, February 9, 2007
One of the challenges we face when designing Raven is how we satisfactorily handle posting to multiple blogs. One of the features of Raven (and Zoundry Blog Writer as well) is the ability to publish the same blog entry to multiple blogs. Our internal data model supports this, but we have struggled to come up with a user interface design that really works. At the same time, we recognize that most of our users will never use this feature. So the challenge becomes designing a user interface that elegantly allows the user to publish to multiple blogs, but doesn't clutter up the interface when not being used.
With Zoundry Raven I think we have started to make some good strides in this direction. When a blog post is being composed, Raven allows the user to configure the publishing settings. The idea is to treat the publishing settings as more tightly coupled with the blog post than it was in Zoundry Blog Writer 1.0. The internal data model hasn't really changed much, only the user interface. I think some screen shots are in order.
First, the user must choose a blog. The combo box that pops up makes it easy to find the blog in question. It even includes filtering capabilities for those users with a lot of blogs/accounts (again, we are trying to build a UI that works for light users and power users). Once the blog is selected, the user can configure the publishing meta data by clicking on the associated "Configure..." drop-down. What this screen shot does not show, but I think you can easily imagine, is what happens when the user wants to publish to multiple blogs. We will be adding some sort of little + or "more" button that will add an additional blog drop down. The user will be able to add as many blogs as necessary.
For each blog selected, the user must configure the publishing information. As mentioned, this is done by clicking the "Configure..." drop-down associated with each Blog drop-down. The "Configure..." drop-down will let the user configure various publishing meta information, such as the post date, draft, categories, trackbacks, etc. It's still a bit unclear exactly what data will go in here, but I think it gives you a pretty good idea of where we are headed. Publishing meta information can actually get pretty complex, but I think this is a pretty decent way of getting all of that information out of the way. The idea being that, when editing a blog post, the user is primarily concerned with editing the actual content. To that end, we have tried to minimize the vertical space take up by the blog post's meta data (blogs, title, tagwords, etc).
There are a couple other things to note. First, when authoring a new post, the default settings for the publishing information will be inherited based on account and/or blog specific settings. For instance, the user will be able to set a default value for the "Upload only thumbnail images" option which can be configured at the Blog level or at the Account level. That way, frequent publishing options can be configured once rather than having to specify them for each new post.
Second, any changes made to publishing options will be saved with the blog post even if the post is not yet published. It would really be a pain if that information was lost just because the user wanted to work on the post later.
If anyone has any thoughts on what other ways we could improve the UI, we are more than happy to hear from you. Just comment here on the blog or post to the forum.
Monday, January 8, 2007
For my first few posts, I want to focus on some of the goals that we have for Raven. One of those goals is for the application to be as extensible as possible. For us, extensibility means easily adding new functionality to the application via the creation of plugins. In this post, I will talk a bit about our plugin system and what sorts of benefits we get from it.
<zoundry-plugin xmlns="http://www.zoundry.com/schemas/2006/03/zplugin.rng" version="1.0" name="Zoundry Common User Preferences" id="zoundry.raven.appframework.prefs"> <dependencies> <depends on="zoundry.raven.appframework.services" version="1.0"/> </dependencies> <!-- My Contributed Preference Page --> <zoundry-extension point="zoundry.appframework.ui.preferences.prefpage"> <id>zoundry.appframework.ui.preferences.prefpage.myprefpage</id> <class>foo.bar.ui.prefs.prefpages.MyFirstPreferencePage</class> <extension-data> <prefpage> <parent/> <name>My First Pref Page</name> <description>This is an example preference page.</description> <header-image>images/prefpages/foobar/header.png</header-image> <icon>icons/prefpages/foobar.png</icon> </prefpage> </extension-data> </zoundry-extension> </zoundry-plugin>
The above sample zplugin.xml file defines a new Preference Page that would appear in the User Preferences dialog. In short, new functionality is contributed to the application via extension points declared within the zplugin.xml file found in each Zoundry Raven plugin. In the above example, the plugin is contributing a new User Preference page via the
Extensions Without Python Coding
Ok, so now you know a little bit about how our plugin system works. In my next post, I will hopefully talk a little bit about the main application UI and provide a screen shot of how it looks at the moment (still in progress).
Tuesday, January 2, 2007
Welcome to the Zoundry 2.0 Development Blog. This has been a long time in coming and I apologize for the delay. Although it's not a great excuse, we've been pretty busy trying to get Zoundry 2.0 into an alpha state so we can get it out to early testers.
Please note that the code name for this product is "Raven", so from now on I will most likely refer to version 2.0 of our Blog Writer product as Zoundry Raven. I think this is a lot easier to manage than "Zoundry Blog Writer x.x".
The reason for this blog is for us to keep our community informed of our progress and, more importantly, to solicit early feedback on the features we are implementing. My hope is that we will post updates here frequently (and with screen shots!) so that everyone can keep appraised of our progress.
My first post (to be written soon) will simply describe the architecture of Zoundry Raven and hopefully give you an idea of why it is taking us so long.
Good night, and good blogging.