http://www.perlmonks.org?node_id=947237

Project codename iengine

Designing web-sites can be difficult for anyone unless you have been at the craft for many years with experience. However, inherently web based content is text oriented for obvious reasons - like writing a book, HTML is designed for humans to author.

But the idea of an operating system designed to be a web site, under the control of Perl scripts seems to me a different approach as a platform for design and hosting web-based content.

Another point to make is the interface itself. Does it really need to be a WIMP environment, after all WIMP is useless as it does not really help in the end but make hard work. The mouse also is not that handy really unless you are testing pages that you are hosting and that is only because most people who use the net use a mouse.

I believe that the command line interface is a powerful tool, but there is no need for a shell like bash as all the components that make up websites can have a context related syntax in their own place. Fonts, symbols with their styles and colours can reflect this as well as the prompt itself.

As far as designing graphics, again is the mouse that necessary? Also, the interface can be partitioned so that the right hand margin can be used for graphics, spawned from the command line. These days it is easy to use a secondary monitor for this purpose.

Every key on the keyboard can be used, so having no restriction on key combinations it becomes easy to work between the command line and the graphic margin.

Also the help system should be context related and not simply a list of supported commands and their arguments. Help should be interactive and interpolate as you type in the command line, giving suggestions and warnings. The help could also follow paths or URL's indicating permissions and if they exist or not simply by using font colours.

The command line prompt can also indicate what mode you are switched in. In the outset when you first log on, the prompt will simply be set to

ready:

which means just what it means. Just think every time you see the same prompt you are paying Macroslug back their 3 penny's. Now say you want to create a draft document

ready: new html root_html

the prompt will change to

root_html:

ready for either the head and/or body declarations.

root_html: new head root_head inherit root_html root_head:

missing out the 'inherit root_html', or even just 'inherit' would assume any open html declaration provided it fits within the syntax. Then

root_head: new title root_title 'title of web page'

Although the string is complete and you may assume that it is enough you can add more text and close the declaration

root_title: done root_head: done root_html: new body root_body

Now that the body has been created you may have noticed that the html and head sections can be reused and so can the body be reused as a template. Now if we wish to create a table

root_body: new table root_table root_table: new tr tr_1 tr_1: new td td_1 td_1: width=50% td_1: align=center td_1: done tr_1: new td td_2 td_2: width=50% td_2: align=center td_2: done root_table root_body: done root_html ready:

The one line closes the second cell, row and table in one. The next line closes the document.

As the very basics stand out, the help system can offer information on all the attributes that accompany the elements allowing you to stay consistent with the syntax. Also any references within an element as a class or id to any CSS can be identified in the side margin - just because I suggest the side margin is for graphics means nothing as the command line itself is graphic anyway.

The target for the OS is Linux From Scratch as I don't wish to bolt binaries on top of each other. I also wish the libraries to primarily support Perl and Java and build a foundation library in Perl and essentially operate the command programming interface through the library.

A lot of interesting work and maybe some good Perl and Java developers and designers having some fun.

Andrew Sprott.

PS I appologise for using the code attributes for my examples, they are used to distinguish the main text and the iEngine.

Replies are listed 'Best First'.
Re: RFC iEngine
by Xiong (Hermit) on Jan 11, 2012 at 00:11 UTC

    I upvoted your post although I barely understand a word of it. You're turning over ideas in your head and you managed to get some words out, which is good. I'd like to see a clearer statement; perhaps this will come.

    I'm not the guy you kill, I'm the guy you buy. —Michael Clayton

      I appreciate your interest and yes I am indeed turning over ideas based on what I have been turning over in my head the last couple of months.

      However the content of my message isn't just rambling, there is basic logic in it and the simple example I have explained would to some of you open doors to how web design can be simplified, in particular when dealing with cascading style sheets.

      Also, now that the net has become a minefield I refuse to connect my working machines to it. But this project can also mean you can host your website and also use the station as an access to the Internet.

      Building a firewall into the system means there is no harm in connecting to your internal network as it would be impossible, or practically not possible for rogue sites to interfere after all who cares about social networking anyway.

      The system can read and present websites in alternative ways than the common browsers like advanced searching using rules and regular expression, leeching and collation of data for research would be straightforward, not time consuming with RSI due to the mouse.

      Rambling again eh, ramble on I say.

      Andrew
Re: RFC iEngine
by Anonymous Monk on Jan 11, 2012 at 00:10 UTC

    That doesn't look like an improvement over any exiting templating/publishing system, sorry :) iNoLike iPointless iBusyWork

      OK, name me something that is along the lines that I am suggesting.

      And as for your comments on the codename I am using, it is a joke as I wont decide on a name until I have a working system.

      You guys who always seem to pop up with so-called witty remarks never really make any valid point other than 'it has been done' but never manage to produce an example.

      Please indulge me, provide something that does just what I am suggesting otherwise why bother.

      Andrew

        OK, name me something that is along the lines that I am suggesting.

        You mean something other than: pick any operating system, any bash, any templating system ( from anywhere or cpan ttree / Template::Tutorial::Web ), and go ?

        Sure, here you go, http://mojolicious.org/

        :) Is that sufficiently witty?

        I can't really point to something already existing because so far , the only distinguishing feature has been, an interactive shell, with one command per line -- already available on every single computer platform

        Sure, creating templates on the command line, is not very context sensitive in the way you describe, but then its less verbose than your proposed context sensitive alternative

        Actually, what you're suggesting sounds more and more line a gVim Shell plugin, except without the editor features of gVim -- Oh great, we're back to bash and them :)

        Oh, but you say the problem, you don't want to bolt a bunch of binaries on top of each other, you want to create an operating system --- no thank, iNoLike iPointless iBusyWork

        It actually sounds like you might be satisfied with webkit kitsh / PhantomJS -- can't say I'd use either to create content

        You guys who always seem to pop up with so-called witty remarks never really make any valid point other than 'it has been done' but never manage to produce an example.

        That's quiet a bold generalization, care to provide some examples of this behavior you claim "always" occurs?

Re: RFC iEngine
by repellent (Priest) on Jan 13, 2012 at 06:02 UTC
    When you mentioned a prompt to traverse and modify HTML, it immediately reminded me of xsh. Have a look at XML::XSH2.

        No, not quite. Only the leaves you need, shove them in a CSS template along with attributes, cross link with branches. oh whatever I give up. The idea seems fun to me but I'm finding my MIDI show control sequencer more pressing. What with the main companies in this world controlled by computers and the rest of you under the influence of computers and mind altering drugs off course, you cannot simply be told. Sorry, do your worst, kick me off this forum I care not, I am content, I have a Girlfriend in Gwent, I am an accomplished programmer. I like the taste of food, no-one bothers me.

      Theres XML::XSH, and several other tools that do this.

Re: RFC iEngine
by jdrago999 (Pilgrim) on Jan 11, 2012 at 19:15 UTC

    Interesting - check out "HAML" also. It looks to be along similar lines.

      Your exactly right, this is the way I am suggesting, but the key with what I am trying to create is to make it even simpler than HAML, remember an old one that vanished a few years ago... KISS.

      Nevertheless, this is the right way to go, but the syntax to HAML is still a little more cryptic than what I am suggesting. There are less things to remember when keeping the building process reduced to one line entries.

      Also the interactive help can work easier that way by staying context sensitive when based on the mode of the module being developed. And because it is not simply a application compiling the content but an entire LFS operating system based around networking in general, it can be as simple as it can get.

      In other words you do not need to complete scripts entirely before you can see the results. Why not create a table along with graphics etc., and have a peek. Why not build sections of Perl that you can test and store wherever building the scripts like Lego.

      So thanks for your positive reply, I do get them a lot. What is important though is you do understand what I am suggesting. I did start compiling a LFS a few years back but got bored - this was about 12 years back. That was because I had no need for it, now I think it is ideal.

      Andrew
Re: RFC iEngine
by sapphirecat (Acolyte) on Jan 19, 2012 at 20:26 UTC
    Designing web-sites can be difficult for anyone .... However, inherently web based content is text oriented...

    "Web design" as I see it is expressing a design in a text-based framework. Design and the serialization of it are both non-trivial efforts. Content, with the rise of podcasting and YouTube, broke out of its historical text-orientation. Which existed because text is cheaper than audio is cheaper than video--in cost, and bandwidth. But the progression was driven by the desirability of the latter across people as a whole, and the expansion of broadband.

    Creation for me is a lot about seeing some result, then backtracking and editing. If I were to use iEngine, it would have to be through scripts rather than a shell, where I could try more than once to produce my desired result. It's just never going to be one-pass for me.

    "Basically, displaying invisible data is not maintainable."
      If I were to use iEngine, it would have to be through scripts rather than a shell, where I could try more than once to produce my desired result. It's just never going to be one-pass for me.

      In fact this is exactly what I have in mind. The shell as I imagine it, would behave as a script editor allowing you to build scripts using scripts that can link and interact with the shell.

      A dynamic shell that does not simply rely on what you want it to do, but interact. Use template scripts designed to work in a set way, for example cascading style sheets that allow you to build the look and feel of your HTML content output.

      I can't really recycle what I am trying to say, but it you look at the way I described a very basic example of interacting with iEngine in my original post you can see once the iEngine is set up, you build on it with your own styles, layouts and content for your pages.

      And yes content is important and iEngine can easily accommodate how you organise your content as basic information, images and whatever. Building scripts that collate the data and store it become a function/mode of the shell. Wherever the data is stored may not matter so much other than when you are dealing with your content, then the iEngine shell is in content mode, ie.

      ready content content search external year 1959 'andrew david sprott' content found 1 hits content show all hit1 born 16:12 high wycombe hit1 done content store hit1 birtdates 'Andrew Sprott' content done ready

      Not exactly what I am trying to say, but the point I make is why bother with filing systems when you can name everything that you use.

      Andrew

        Not exactly what I am trying to say, but the point I make is why bother with filing systems when you can name everything that you use.

        Um, isn't that the definition of a filing system?