Scribes: Roadmap to 0.4
I got burnt out working on Scribes. So I took a break from it to work on another project. I'll blog on the project some other time. This entry is a boring exposition on what to expect for version 0.3.3 of Scribes and the roadmap leading to 0.4.
Open source development has a mantra I thought I understood until recently. The mantra is also esteemed by Agile methodologist. It goes.
There's a key point implied by the philosophy, but absent in the wordings. The point is that releasing early and often means releasing increasingly less features at a constant rate. In other words, it is better to make a release with one stable new feature than one with ten new mediocre features. Unfortunately, one new feature does not make for an exciting release note. But I digress. Many Free Software projects are moving to this development style or have been using it for a while with success. Linux, Ubuntu and GNOME come to mind.
Focussing exclusively on a few features per release not only allows developers to devote more time to testing them, but it also does not overwhelm users with too many features to test and provide feedback on. My experience with Scribes shows that overwhelming users with features usually means they don't test all of them effectively enough. This is no fault of users. After all, users have better things to do with their time. It is the responsibility of developers to package features in a manner that can be effectively tested by users and that does not overwhelm them.
My unproven theory is that the fewer features I make per release, the more users will provide feedback and suggestions on the features. Thus I'm revamping the way I develop and release Scribes in the hopes that I get more feedback from users. This means I'll focus on:
Hopefully, more releases and less features per release will get more users involved in the process. It will also allow them to stress test the fewer new features exhaustively. This is good news for translators too. It means they have less strings to translate and test per release.
So do not be alarmed if future releases of Scribes just have one new feature with other enhancements devoted to bug fixes and polish. It is intentional. Without further ado, here are my plans for the next version of Scribes.
Here is my roadmap for version 0.4. I will discuss each of these features in detail immediately before or after they are implemented. For now, I'll just list them.
I will start working on Scribes after I've made an initial release of the other project I'm working on and when free time permits.
The Case of Acute Featuritis
Open source development has a mantra I thought I understood until recently. The mantra is also esteemed by Agile methodologist. It goes.
Release early. Release often.
There's a key point implied by the philosophy, but absent in the wordings. The point is that releasing early and often means releasing increasingly less features at a constant rate. In other words, it is better to make a release with one stable new feature than one with ten new mediocre features. Unfortunately, one new feature does not make for an exciting release note. But I digress. Many Free Software projects are moving to this development style or have been using it for a while with success. Linux, Ubuntu and GNOME come to mind.
Focussing exclusively on a few features per release not only allows developers to devote more time to testing them, but it also does not overwhelm users with too many features to test and provide feedback on. My experience with Scribes shows that overwhelming users with features usually means they don't test all of them effectively enough. This is no fault of users. After all, users have better things to do with their time. It is the responsibility of developers to package features in a manner that can be effectively tested by users and that does not overwhelm them.
My unproven theory is that the fewer features I make per release, the more users will provide feedback and suggestions on the features. Thus I'm revamping the way I develop and release Scribes in the hopes that I get more feedback from users. This means I'll focus on:
- releasing few, stable, well-tested features per release, not more than 3 new features per release, if any.
- releasing often;
- and getting rid of the development releases, as nobody seriously tests them.
Hopefully, more releases and less features per release will get more users involved in the process. It will also allow them to stress test the fewer new features exhaustively. This is good news for translators too. It means they have less strings to translate and test per release.
Bugs For Version 0.3.3
So do not be alarmed if future releases of Scribes just have one new feature with other enhancements devoted to bug fixes and polish. It is intentional. Without further ado, here are my plans for the next version of Scribes.
Revamping the saving system
Scribes most underrated feature is its automatic saving system. The fact that I never have to worry or think about saving documents is the greatest psychological and productivity gain I have using Scribes. I wish other applications follow suit.
In software engineering, Input/Output operations such as saving files are traditionally expensive and slow. So expensive that in many poorly designed applications such operations make graphic user interfaces freeze or unresponsive. In user interface design, having interfaces freezing or not responding is a taboo. Fortunately, Scribes does not suffer seriously from this problem.
However, there are times during editing when Scribes hangs for a few milliseconds during saving. Most users won't notice this, but this minor peeve bothers me. The problem usually becomes apparent when your computer is under very heavy load. For me this problem tarnishes Scribes' otherwise smooth text editing experience. Under no circumstance should the text editor hang while editing even for a few milliseconds. It's annoying.
So, I have decided to take a drastic approach to solving the problem. An approach that worked well for the word completion system. The completion system too had a similar but nastier trait. The problem was fixed by outsourcing the system to an external process and having all Scribes instances share the same process.
The same approach will be used for the saving system. Benefits to this include, improved design, robustness, efficiency and performance. Most importantly, it'll get rid of the hiccups that may occur while editing during saving and some other queer design issues.
File Modification Detection
A user requested this feature for version 0.3.1 of Scribes. He had valid reasons for the feature with compelling use cases, so I implemented it. However, it exposed design limitations in the saving system. And I feel the current implementation is somewhat hacky. Under very heavy load, it is possible to trigger the file modification alert dialog, even when the application that is modifying the file is Scribes. The file modification alert dialog is also ugly. These problems will be addressed in the next release.
Document Statistics
Perhaps the only user visible new feature. This will be a dialog that shows metadata information about a file, such as its location, size, type, last modification time, last creation time, number of characters in the file and so on. Perhaps a future enhancement of this plugin will let users append notes to the dialog to serve as annotations (this is speculative). Or perhaps that is better left to another plugin entirely. The document stats dialog will be activated by pressing (alt - enter).
Squash Bugs
Close all, or most, bugs in the database.
Vaporware For Version 0.4
Here is my roadmap for version 0.4. I will discuss each of these features in detail immediately before or after they are implemented. For now, I'll just list them.
- Refactor and cleanup the trigger system for plugin system.
- Refactor and cleanup the generic plugin system.
- Implement the language plugin system.
- Opening files with user defined encoding via the terminal.
- Symbol browser for Python (language plugin).
- Smart indentation for Python (language plugin).
- Class, function, block selection for Python (language plugin).
- Class, function, block navigation for Python (language plugin).
- Line operations for Python (language plugin).
- (Un)comment plugin for several languages (language plugin).
- Selectable locale/language spell checking (new dep, pyenchant).
- Documentation for extending Scribes and writing plugins.
- User interface for managing plugins.
Longhorn-Style Release Date
I will start working on Scribes after I've made an initial release of the other project I'm working on and when free time permits.

24 Comments:
this sounds great. Most text editing i do is on python files, so i will be much looking forward to 4.0.
great work on this fun editor
I agree with “release early, release often”. It assures people that the project is alive, that they can be interested in it. Out of curiosity, are you now open for source code contribution? (Not that I could ever do it.)
Your blog is high quality as is the software you produce. I really like Scribes and your ideas.
Hi!
Nice to hear that you intent to carry on.
The most welcomed feature for me is the
"(Un)comment plugin for several languages
(language plugin)."
Wow. So far, I've only seen this well implemented in Quanta++ (http://quanta.kdewebdev.org)!
Can't wait for it. Very useful when testing html/css docs.
I'll be able to remove Qunata (not a bad program though) from my Gnome desktop.
When redesigning the save behaviour please look at my points with the config files at:
https://sourceforge.net/forum/forum.php?thread_id=1710491&forum_id=481790
Thanks for your nice work. I wish you nuff energy to carry on!
Three features per version still sounds like a lot to me. When are you going to start removing features? (for example, the "new file" and "save as" icons seem to be totally useless -- you could just "open" a non-existing file instead).
>>>Out of curiosity, are
>>>you now open for source
>>>code contribution?
Hello Leo,
If a good Samaritan sends me a kick arse plugin, I'll accept it. But I'm not officially open for code contribution. At least, not until 0.4 when the plugin API is stable and there's documentation on how to write plugins and extend Scribes in general.
However, I'll gladly accept code for people interested in fixing architectural or design flaws in Scribes' core system.
Hello timmie,
I'll have a look at how Quanta++ implements this and see what good idea I can steal from it. ;-)
I already responded to your discussion on the forums. I think the tool you are looking for is a good revision control system. I don't believe it is the duty of the text editor to keep track of changes, be they mistakes or not, you make to a document outside a text editing session.
Alternatively, you can toggle readonly-mode by pressing F3 to prevent accidental editing.
However, investing in a revision control system is the most wise thing a computer user can do.
I highly recommend bazaar-ng or darcs, if you are interested in a good revision control system.
Hello the sheep,
I partially agree with your sentiment. I too think adding a feature per release, if any at all, is ideal.
You say I should remove the new file icon and save as icon from the toolbar.
How do you propose users rename documents and create new documents?
Nikos and Nephish,
Thanks for your comments.
Cheers
I just noticed that 0.3.2 is out. I like the new website look and Scribes icon. Any chance there will be a .deb release for ubuntu users?
Thanks again, Scribes is a great editor.
@Phoenix:
Scribes will be in ubuntu in the near future:
http://revu.tauware.de/details.py?upid=4822
@Mystilleef
What about the regex-search (and replace)?
Hello phoenyx,
0.3.2.1 is the latest release. With regards to Ubuntu debs, file a bug report with Ubuntu. The more pressure users put on the devs, the more likely Scribes will be in Ubuntu. Once in a while users post debs on the mailing list and forums, so check these places too.
I've become overwhelmed with having to deal with packages for Linux' one million distros. I'm just not doing it again. I'll provide the source code, and third parties can provide and maintain distro packages.
Cheers
Hello moh,
I want to rewrite the search system after 0.4. There are a few bugs in the current search system. I think the 0.4 series should focus on search (especially re) and perhaps language plugins.
For Ubuntu guys, there's a DEB at GetDeb. It has all the packages not in the official repos.
Can we have an "About" box, please? I had to look at the GetDeb page to find out which version I downloaded.
There's an about dialog.
Right click in the edit area to show the popup menu. Click on the last menu item titled "About".
I think there should be a way to add file types (languages) because it is not possible to create templates for files with extensions other then the ones built in. For example I made some Drupal templates which are now in general templates :(
There's a way to add new languages. It's in the FAQs.
http://scribes.sourceforge.net/syntax-color.html
Drupal,
Adding New Languages
O yeah, it worked, thank you very much and sorry for missing the already written explanation:) Maybe you should think of easing this procedure for the users by making it a single click? Anyway can you say what font is used in the demo presentation, it looks fantastic alltogether!
duca,
The font in the flash demo in Scribes' editing area is Consolas. It's one of the new fonts for Windows Vista
Would it be possible for the indent/unindent operations to be faster in the terms of responsiveness?
Currently when I mark a screenful of lines and indent them, scribes happens to hang for a second or two.
There's a tradeoff between responsiveness and performance in GUI development. If you want it to be more responsive, then you can forget about performance. If you want it to be fast, then the GUI is going to freeze for some seconds.
But most importantly, I need to be able to reproduce the problem to see exactly what's going on. Try filing a bug report. Provide the file and detailed steps as to how to reproduce the problem.
Feature Request/Plugin Idea: folder search/replace
I'm seriously digging Scribes so far. It's a friendly and efficient interface. I'm a web designer and most of my work is done in BBEdit on a Mac. BBEdit (and the free version, Text Wrangler) allows you to drag/drop a folder in order to do a search and replace on every file in that folder. It's a killer feature that doesn't exist in any editor available for Linux, that I'm aware of. I'd donate money to any project that had that feature.
On *nix we use the shell terminal for that. Or for those who have a phobia for the terminal, the file manager (e.g nautilus) serves that purpose.
I don't think that feature has a place in a text editor.
Post a Comment
Subscribe to Post Comments [Atom]
Links to this post:
Create a Link
<< Home