Sunday, October 25, 2015

jcW3CLOUD Development Restarted

2015 is seemingly becoming the year I revist projects of years past. Resurrecting an older project, jcW3CLOUD back in June as a C++/MOTIF project, over the last 2 weeks in between work and my masters classes have gotten fairly far in writing a Windows Universal C# version for use on Windows 10 (both desktop and mobile platforms). In case anyone was curious, as with all of my projects, it is open source and available on GitHub. As of right now the infrastructure for handling various file types is in place as well as the overall user interface. The bulk of the work remaining is in the actual handling of non-text requests, the bulk of the complexity in web browser :)

Where as my original goal for the browser and my goal back in June of this year was to provide an extremely lightweight browser that ran on "every" platform has changed some what, the over arching goal has not: deliver a no-frills browsing experience with the added benefit of absolutely no tracking of the user by the browser. With the internet becoming even more commercial in the selling of user data and biggest gateway into that is the browser utilized, I feel it is my duty as a software developer to right that wrong so to speak. At the first release I will not be supporting JavaScript nor will the browser record anything (outside of the browsing history which can be turned off via the settings and if enabled is encrypted in the applications local storage).

In addition the one thing I still do not get is with all of the horsepower machines have today compared to what I had when I first browsed the internet (see my computers specs from 1996), why it takes what appears to be a quad core 2ghz+ machine to render web sites in Chrome/Edge/Firefox/Safari. I understand we have CSS and JavaScript playing into websites heavily where as back then the most complex elements were the JavaScript based mouseOver image effects you had todo pre-CSS, but it seems like the browsers are doing far more than just rendering pages, they have plugin systems, various pingbacks to providers, auto-update services and a slew of other features. While these features are helpful, I wish there was a way to turn it all off, much like the original goals of the Phoenix project that would eventually become Firefox.

My overall approach is to have Native Controls (TextBox, ComboBox, Button, Label etc.) added to a dynamic canvas. These controls (in the case of Button in particular) would then be mapped like a traditional XAML button with a Click action to do the form post back (which in my case would be the textbox, combobox etc. controls in the canvas). Writing this with the intention of eventually making a Linux/Mono and MacOSX/Mono port, Im abstracting all of the code that is Platform specific like I do in every other project.

As far as overall features planned for the first release:

  1. Basic HTML Rendering (without CSS support)
  2. New Window handling
  3. Mobile Optimized View for Windows 10 Mobile
  4. Synchronized Browsers across devices
  5. Bookmark Support
At first glance these features in it self are fairly big, but very doable over the next month or two. I am hoping to have release 1 out sometime in December with the above functionality and anything else that comes up that I can throw in.

Again, you can keep up with the progress on GitHub and maybe even contribute to it.
No Tags were attached to this Post