The goals of the project are as follows:
Version 1 ~ Simple pages.
- Create a simple rendering layer to hold pure text content.
- Provide information systems features; supporting SEO, information retrieval.
- To support all widely used formats (CSS, JS, PDF, PNG, etc)
- To be accessible and standards supporting (I believe in standards a lot more than corporations do).
- Targeting PHP5.1 (my host at the time)
Version 2 ~ Current media.
- The file format2, which increases the number of degrees of freedom for resources.
- To allow complex “pages” as applications do (with AJAX and similar technologies, this term is ambiguous).
- Fill in many missing application features like a metadata, branding.
- DONE infrastructure support for AJAX.
- Proper integration with FB, linkedin, ebay, paypal, instagram etc. Please watch for specifications first.
- DONE Must get my columniser imported.
- Permissions structures.
- Impl minify in this framework, so all JS is one “iceline” HTTP request, rather than a batch of plain HTTP requests, likewise for CSS.
Version 2.5 ~ IO rewrite.
The current underlying structure isn't very pretty, but was very quick to assemble. I wish to move to a better abstraction like BSD sockets. If I restructure to have a IO baseclass, this will lead to less messy code, and better use of types. As this codebase is quite small it shouldn't be expensive. This will make it alot easier to add the later features.
- Targeting PHP5.4
- I will hopefully be in position to abandon PHP 5.1 and PHP 5.2 as supported platforms before first quarter 2014. This means I can support current classloaders, PSR-01 and namespaces. When this happens I will move things around about, so code may be linked into Zend or Symfony without effort. I will add alot of interfaces, to allow a broader range of technology implementations;
Version 3 ~ Enterprise edition.
To carry this project further, this is whats necessary. Again please wait for specifications.
- Page cache.
- Investigate HTTP manipulation, to reduce HTTP overheads.
- Reduce use of Harddisk.
- Add a few db libraries.
- Investigate SHM, memcache, or similar.
- Investigate current PHP optimiser technologies, apc etc.
- Investigate streaming support (coupling to web-server).
- Targeting at least PHP5.4, maybe later editions.
Discussion for v2
The current document model supports lots of wiki-encoded content inside a PHP created template. The template may hold more active features such as search, but the content is for non-interactive publishing. To build web-applications I will need to start a new page format. This list is development focused notes for future works. There notes on existing features.
- DONE Build a show-source widget (see footer);
- DONE Build forms (example search, created for JDI); Done again as f2, in a more useful fashion;
- DONE test POST support;
- Complete the JDI demo;
- DONE Add optional chunks for more CSS, JS or other extra content;
- DONE Improve the footer - fix layout abit, add linkedin & FB - need to make the account;
- DONE Add support for HTML inserts for things the underlying wiki format doesn't support;
- DONE Add support for static visuals like pullout boxes (example risk, will be improved in v2). Deprecated in favour of v2 chunks;
- DONE Play with columnisation, improve the readability by re-flowing the words. The goal is to have dynamic multiple columns according to content, not just make you scroll more;
- tagcloud - I did some research, all the libraries just seem to be a jumped-up unordered lists. The important bit is the tag tree, not the rasterisation;
- Think about adding jQuery accordion() to the longer pages;
- Implement Search against keywords. After the tag cloud, I will have the meta cache. Ideally I would like content keyword extraction, but on this scale may not be useful;
- Add some sample content as jQuery toys. My initial idea of re-branding the existing words will clearly not work now I have written many non-interactive words;
- Create the login functionality, and custom settings. At the moment logging-in would give you the same level of information. There is no customer data or ordering capacity in the site. Potentially a content edit feature may be useful, but it is easier to use text editing tools, rather than a webbrowser for editing;
- See if I can setup a spellcheck renderer;
- Create “theme” style sheet selection;
- Use jQuery and AJAX to make the search autocomplete/ word guesser;
- Build a password strength widget;
- Build a widget to pull dictionary meanings, and set the meaning as tooltips on hoover. Useful for documents containing lots of TLA. I will need to add a new content section “awkward words”, which with jQuery will add descriptions after page load, similar to deviantArt tooltips;
- SIMPLE VERSION DONE Create the larger scale classloader (JDI?). Must support additional library directories. Actual dynamic loading, a la LISP takes very variable execution time; Will be redone against PHP 5.3
- DONE Write the index page as an object, so its more portable; May extend this point;
- DONE Config system;
- DONE Entity tidyup on output;
- Proper data cleaning. At present any text rendered must come in via FTP or GIT. If you have access to my own PC, you can tamper my website or code;
- DONE Ability to add extra HTML headers (via the frames maybe?) ~ extracontent;
- Add the framework for the linking to net-based APIs;
- Compression streams, maybe just via Apache config;
- Complete build for MultiResource->_grab_extract;
- DONE in reach reskin Pull the menublock out of the source and make it a template ;
- DONE BUG: Investigate NoEscape as the first line of a block;
- DONE BUG: Cleanup parsing mismatch chunk delimiters;
- BUG: under some situations PageResource::_request_mapper doesn't have a valid session. Suspect race condition.
- Typehints, like this was a real programming language. Will need to come after the IO rewrite.
- This list is likely to be revised;
- BUG IOLayer.
The functional use of the is website is transfer of information. The use-case is reading lots of words. As such all “fancy toys” are limited to tech demo subpages.
The column reflow, spell check and tooltip injection are widgets aimed at blog/article style sites, like what you are reading. I have been trying to organise these features into webpages since noonshadow, but now may have enough infrastructure that they are achievable in a sensible budget.
They could be re-used for ms style “keyword” adverts, but this is not my intent;
As a further release (available now, 2.1, summer 2013), I wish I add enough framework to make partial pages a practical reality. That is structures so AJAX or AJAJ can be returned to clients. All the mechanisms/ data transforms that iceline does (aside from the wiki texts) are text transforms, and maybe applied to any text. A good AJAX and AJAJ infrastructure makes this alot more useful.
With the v2 responses being entirely controlled by the resources files themselves, this should be a trivial matter. I will add a JSON type, to tell iceline to compile the section into JSON, with a variety of mechanisms to build the initial array.