Development
HighWire
Site
Welcome
to the future
There have been rumours, there have been noticeboard postings and there has been far too little coding on my part (Sorry Everyone!) but I would like to welcome everyone to Project HighWire.
Background
Past and Present
For those of you who have not heard, HighWire is a new web-browser. It has been in 'development' for over a year but I must confess that I have probably only put in about 1 month of coding in that time due to finishing a degree and starting a Phd at the University of Birmingham (UK). Excuses aside, I started HighWire in what I considered a feeble attempt to discourage me from moaning about Cab. I figured that when I proved my code was vastly slower than Cab at parsing and rendering a page I would give up and accept that browsing on my Falcon would always be slow. Things did not turn out how I expected...
I think the big problem with my plan was that, unbeknownst to me at the time, I had had a couple of rather good ideas (Credit given where credit is due, I am quite sure the ideas came from one of my degree lectures but as I slept through most of them I would not be able to tell you which one!). The result is HighWire.
Ok, so can I download it? You cannot write a web-browser in a month. I know, I tried :) HighWire is still very much in development. In fact, it is so unfit for general release that there is not even a demo version available. Currently HighWire can do the following:
- Load in an html3.2 page hard coded into the source
- Display this page multiple times in hard coded frames
- Redraw and scroll the frames and resize the window
- Quit
It is currently missing:
- user interface
- online module
- html forms and tables
- graphics
- colour
- a working implementation of hyperlinks
- lots more...
So why all the fuss? Well, HighWire can load in, parse and render an html page in full 16bit fonts (for all the 'strange' characters such as þ) in about half the time of Cab. Furthermore, once a page is pre-rendered (before the first time it is displayed) it does not need further processing, making redraws and window resizes much much faster. On a Hades machine the code was tested on, the page render including font sizes, centering and lists redrew correctly in realtime (with a slight flicker...) as the window was resized.
Looking Ahead
HighWire goes Open Source
As I have explained, HighWire is seriously in need of a lot more development but I simply don't have the time to tackle such a huge task. For this reason I have decided to make the project Open Source. What exactly does this mean? Well, for a start all you developers out there get a chance to play with and hopefully add to the HighWire source. This will allow much faster progress and a larger wealth of experience than I could ever have put in myself. Second, anyone who wants to use bits of the code for other reasons is welcome to, as long as they specifically state that their work is based, in part, on the Project HighWire source release. For those of you who know about these things, the release licence is identical to the ZLib licence. Third I hope this will make HighWire a real Atari community project. Even if you are not a developer, please feel free to get involved if you can. In the future we will need testers and even now, in the design stages ideas are always welcome. Of course, encouragement is also gratefully received :)
Development
Getting Involved
So who do we need and how can you get involved in the development of HighWire? This project is at such an early stage that just about every aspect of the browser still needs major work. Whether you think of yourself as an ASM hacker, a gui designer or simply someone who uses the www a lot and has ideas, please at least register your interest by becoming part of the development email-group. I have put a lot of thought into how HighWire should work and I would like to share these ideas and receive ideas, comments and advice back. Also, as I have never been very good at documenting anything, I suppose I will have to explain much of the sources as well :) This is what the development list is for.
For those of you brave enough to want to help with the coding, you can download the sourcefiles below. The sources are in Lattice C but the code has been compiled in the past on GCC so should not cause too many problems on any C compiler. There is no ASM currently. Which development environments should be supported and the problems of inter-compiler compatibility are all things that need to be discussed.
Email-Group
Communicate and Prosper
The email-group has been setup at coollist.com. The site is easy to use, does not require loads of registration information and only stores 1 cookie so it gained my approval :) How well it can support email groups is still to be seen. To register on the Highwire-developers email group simply:
- go to www.coollist.com
- Choose 'Join a new list'
- enter highwire-developers (case sensitive) as the list name and your email address where it asks.
Alternativly, some web browsers will allow you to sign up directly using the form below:
Registering with this email-list is a must if you wish to develop the sourcecode but if you simply want news of what is happening you may find the list is not for you. I am sure sites such as Magic Online and Atari.org will report anything of interest and I hope that, as the project progresses, further email-lists can be setup with news and general discussion of issues.
Source Code
...Where Angels fear to tread
I would first like to say a big sorry to anyone and everyone who has to try and work with my sourcecode! I have never really got the hang of documenting or commenting (like many hackers) and this is rather a big project to get your head round. This does not mean the source code is huge, more that the code is sometimes a little strange and my methods often obscure, with code written a certain way for reasons even I have most likely forgotten :) That is the life of a coder.
Below you will find two zip files. The first is the real code, project HighWire. In this archive you will find lots of Lattice C files, a few example html files and the Lattice project file. There is no executable because the fonts are currently hard-coded into the header files (change them to appropriate fonts so things look correct on your system). The second archive (called newHW) is a few ideas I have been playing with to multithread HighWire. THIS IS NOT THE DEVELOPMENT CODE and neither is it the direction I actually wish to take HighWire in. In fact, you may wish to ignore it completely. So, why give it out? It contains a few ideas that do work and that i do wish to keep. We'll talk it over on the email-list :)
In giving you this code I simply ask two things:
- Please stick to the licence when using this code. Put simply, if you use this code for anything other than for HighWire please state clearly I am the author and Project HighWire is where you got the code fragments from.
- Before re-writing the entire source, talk about what your plans are on the developers email-list. I have ideas, as does everyone and I want (almost) everyone to agree on directions to take the project before people run off and do things. It may sound tedious but it is the only way to make sure everyone knows what's going on.
The Code:
- HighWire source code is found HERE
- Ideas on threads source code can be found HERE
- I made some additions to the Lattice standard included (based on the definitions from the Atari Compendium). The enhanced include files (to put in the Lattice C include directory) can be found HERE
- The latest version of all the source files can be found unzipped HERE. Select Save-As to download them.
Conclusions
A last word
I would like to take this last moment to thank all of you who have helped me with this project so far and all of you that take up the task of helping me continue into the future. I cannot say how much I appreciate your help and encouragement, advice and odd snippets of code. Thankyou
In the near future I will not be able to actively participate in code development as I do not have good access to a usable Atari machine (my Falcon is packed away due to lack of space). However, I am hoping to solve this problem by developing on my mac using some form of emulation or even MagicMac in the near future. Please be patient and don't worry, I have not deserted the scene :)
Finally, if there are problems with the website or you wish a private word, please email me at nevyn@the-asylum.zetnet.co.uk. Please use the email-list for code enquiries so everyone can benefit from the question and answer.
Good Luck