HTTP Werkzeug’s future
HTTP Werkzeug development is presently dormant; one day I may get around to continuing it. The development road map, however, is conjectured to possibly be as follows:
Progressing the code
1.3:
This is the version presently under development, with the intention to (mostly) complete the basic feature set before taking the application further. This means support for Basic authentication, cookies, and a persistent history. This version also sees various useful feature additions, such as the drop-down autocomplete menu, and many bug fixes, some quite significant. 1.3 includes further valuable adjustments for Mac OS X, but will not support HTTPS.
1.4:
After I have completed the base feature set and cleared up the bugs, the next goal is to decide on its future. Assuming I simply migrate to the current REALbasic version, version 1.4 will be the process of rebuilding the program for up-to-date REALbasic, and then working around all the new bugs provided courtesy of REAL. I will need a new computer before proceeding with this step, since even with 384 MB of RAM, Brunnhild is still not powerful enough for the bloat of REALbasic.
The bugs in the new version disturb me almost as much as those in the old version I run now and thus I foresee more months of pain trying to work around REALbasic’s continuing inadequacy and flaws. However, one major feature to come out of it would be the introduction of HTTPS at long last, and it should clear up some of the abominable interface problems in Windows.
2.0:
Alternatively I could skip the 1.4 stage and rewrite the program from scratch in C++ and wxWidgets. However, this would be astonishingly painful for me as I can barely manage with BASIC, let alone C. wxWidgets is a system of similar concept to REALbasic but with a far more impressive feature set in the areas that it concentrates on, although being focused mostly on Windows, seems to lack advanced Mac OS X support.
The irony that HTTP Werkzeug is nothing more than a very poor graphical cURL is not lost on me, and one thing a rewrite in C++ would allow is to simply wrap cURL in a graphical shell. This would result in a far more featured and capable program than we have now, with comparatively very little effort, and still cross-platform to more platforms than are presently supported.
That said, support for Mac OS prior to 10 would be terminated, since I don’t have a C++ compiler for it and I do not believe cURL supports that operating system either. As it happens, I do have at least one devoted user under classic Mac OS, so there may be many more out there who are simply silent.
Another cross-platform development system is Free Pascal, and the Lazarus IDE, a cross-platform clone of Borland Delphi. But using Delphi would be just as painful as C, since I am already very familiar with C syntax, and trying to use Object Pascal in addition to PHP and REALbasic would be most confusing. I am also dismayed by the quality of Lazarus and the automatic window layout system.
Redesigning the application
ibnn’s suggestions for my program pose interesting questions about the application. I am myself unhappy with the design, particularly how in Windows it uses several windows (request, transcript and cookies) that cannot be shown and hidden simultaneously.
At some point, and certainly before a rewrite of the application, I will have to decide where the program is destined to go. With close to zero useful feedback (and very little feedback to begin with) I don’t really know how many users I have, or what they do with the program or would like to see it do. Despite the ubiquitous nature of cURL and wget, the fact that HTTP Werkzeug has been available since 2003, and the evidence that people love graphical tools, HTTP Werkzeug is very much disregarded or unknown to people. My assumption can only be that the idea is simply undesirable, since there seem to be no rival applications out there. I have enquired on the cURL e-mail list though.
Something I was thinking about was a more useful content viewer, as follows:
Plain-text viewing mode
Binary viewing mode
Hexadecimal viewing mode
Development builds
Although development is presently stalled, there are development versions of the program in my development builds folder, built for Mac OS 8-9 and X and Windows; there are also older builds in the older builds folder. Nothing in any build is guaranteed to work and there are still plenty of bugs; these are NOT beta builds. There will not be an official beta until I am satisfied that everything works well.
Return to the HTTP Werkzeug pageAnti-changelog
The following represents the feature wishlist for future versions, but generally not including ideas posted to Versiontracker by ibnn, because I don’t understand all of what he wrote yet (I am not clued up on modern Web technology). Hollow bullets indicate changes that had already been made in the old 1.3; solid bullets indicate new ideas. Crossed-out entries are implemented in the 1.2.4 development versions; other features added to 1.2.4 but not originally listed below have not been added.
Questions
- Should the Reset button in custom settings revert to the settings held in the Preferences or (as it does at present) revert to the factory defaults? What does anyone use this button for? (I never use it at all :-)
Features
- HTTP Basic authentication
- Cookies (manual and automatic storage (per-session/persistent) and retrieval; cookie editing; indication of invalid cookies)
- Find (for the Header/Content fields)
- The ability to include line breaks and regular expressions in searches
- Persistent history
- Toolbar (for Refresh/Follow Redirect/View and Accept Cookies/Authenticate)
- Back and Forwards links; the precise functionality of these is not however implicit and presently open to debate before being implemented.
- Save to disc with or without bypassing the output window
- Secure Socket Layer support [REALbasic 2006]
- Auto-complete drop-down menu for the address bar
- Possibly configure, activate and deactivate the Web proxy settings in Internet Config for capture requests (under user control)
- Support for Web proxies (read from Internet Config) for normal Web access
- Support file sends using HTTP POST
- Support more HTTP commands such as PUT
Support talking to Web services via HTTP with XML payload as POST
(whatever this means)- Unicode text support [REALbasic 2006]
- Management of saved, named POST field collections and custom settings
Bug fixes
- Fix the myriad of issues under Windows, for example:
- Name resolution is synchronous in Windows and most toolbar controls disappear during this period;
- Only the first window gets a menu bar;
- Dialog boxes can end up with the transcript window as their parent if it is open;
- Keyboard shortcuts relating to requests don’t activate until the menu bar is visited;
- The transcript window refuses to support styled text or even show the correct font and size sometimes
- DNS lookup failure messages show as connection failure under Windows
Improvements
- Undo for the address bar etc. (Annoyingly, REALbasic 2006 does not support text undo!)
- Proper event hooking for the resource retrieve feature for clean code extension (e.g. for hooking the cookies/auth/toolbar)
- Persistent logging?
- Kill the status bar update flicker using a canvas?
- Memorise (persistently?) dialog box size for resizable dialogs
- Unique window number for new, untitled windows?
- URL encode/decode on POST dialog copy/paste
- Consider how to allow characters like line breaks into HTTP POST, given that the POST dialog does not permit direct entry of
%nncodes - Have a menu (menu bar or BevelButton pop-up) in the custom settings (née Extended Settings) dialog for adding extra header fields. Selecting a menu item would insert a new line in the extra HTTP box for that header.
- When selecting history items, allow a modifier key to restore not only the address but the custom settings in use. Not sure whether thus the custom settings need to be committed to disc as part of the new persistent history.
- Maybe a graphical editor for User-Agent lines?
- Direct capture of HTTP requests through something like Winpcap or the Mac equivalent that comes with Interarchy; might be hard to do this from REALbasic ;)