AgileWiki Community

Building Web 3.0

A "Getting Started" thread should prove to be helpful in short order. A good place for hints and questions. And it gives a nice focus for newbies--which is essential!

You will first need to download the latest element model zip file from here as well as installing JDK1.6 if you don't already have it on your system. Then you are ready do do the configuration.

Configuration means updating the smtp.cft file to work with your own gmail account. Details can be found in the Installation Guide. (You will also need to configure the gmail account for POP3 access.)

Now you are ready to run. I suggest starting with Com11105.bat or Com11105.sh. This will bring up a [jetty] web server which has been integrated with the element model database and which is included in the download (which is why the download is so big). Two ports are used: 11105 is used as the server socket port for access by other instances of element model. And port 8080 is the default jetty port for the web server.

With Com11105 running, you can now point your web browser to localhost:8080 and take a look at the user interfaces as they have been developed to date.

Another program, Browse, is also included. This is a database console and can be run using the Browse11102.bat or Browse11102.sh scripts. It uses 11102 as its socket server port. Scripts Browse11104.bat and Browse11104.sh can also be used to run the console with server port 11104. The Browse console is very powerful, but not at all user friendly--it is only a thin layer over the database. So it is good for learning about the database but not at all good for demonstrating applications.

Share

Reply to This

Replies to This Discussion

OK, you've run Com11105 and want to dig into the code a bit. Where to begin? There is a lot of code here!

I suggest looking first at the AgileWiki webapp. You will find this in the download at jetty/webapps/agilewiki. This contains mostly jsp files, but don't overlook the web.xml file in WEB-INF.

You will find the servlet code and helper classes used by the webapp in the sf-aw/rServlets directory. ControllerServlet.java in directory sf-aw/rServlets/org/agilewiki/servlets is a good starting point--it is the MVC controller.

Reply to This

Ouch! Com11105.sh went missing from releases 15.8.0 and 15.9.0. It has now been restored, but meanwhile here's the missing script:

#!/bin/sh
# See http://agilewiki.wiki.sourceforge.net/Com11105.plugin
sh ConfigurationManager.sh Com11105 "serverPort=11105"
sh JettyMain Com11105.cfg "jetty/etc/jetty.xml" "jetty/etc/agilewiki-jaas.xml"

Reply to This

Why use Rolons?

At some point (I'm not ready yet) we need to redo the material on rolons. Reminds me of how they teach the metric system in the US. First they teach the (rather complex) English system, and then they teach how to convert it to metric. Everyone then is left with the impression that the metric system is very complex, while it is really much simpler than the English system.

Rolons are complex only because they need to be implemented using objects, and because of the way they are mapped onto disk blocks. Most rolons are mapped to a single block of memory, but when an element has more than 4 sub-elements, the sub-elements are, b-tree like, written to 2 separate blocks which can split further and even form trees of blocks as the number of elements grows without limits.

But implementation aside, rolons are simple. Easy to use and extend. And as they have a fluid/extensible structure, they are easier to develop to. Especially as you do not need to worry about writting special code to handle large tables, persistence, robustness or caches--the hard things are already done for you. You can just focus on the business logic of your application.

1. What the purpose / benefits of using rolons over objects?

I just answered this in part in the above paragraph, but that is from just one technical perspective. I think a stronger argument is that every single rolon is a user-accessible object. So in a sense, they are all mbeans. They give you a dynamic architecture which can be reconfigured on the fly and easy to manage.

Now we've previously touched on the fact that rolons can be used to implement services. But these service rolons are still rolons, and as such can be operated on by privileged users and other rolons. Inverting that perspective, every application can operate on the rolons of every other application--they ALL conform to a well known structure. One big advantage here is that the data structures are generic enough that you can take a program which uses rolons and implements something like twitter.com and extend it to implement something like ning.com, and extend it to implement something like Google Wave and just keep extending it and still have every feature integrate nicely with all the other features. This is how programming should work!

Finally, rolons are light-weight enough and yet rich enough to also support complex knowledge structures, which can then be used to drive any number of applications. This opens the door for very flexible applications.

2. Is rolons xml being used as a database? But i thought xml database does not seens to handle heavy load very well?

No, this is not an xml database. There is no xml in the database. Only the rolons are constrained so that they can be expressed fully in XML... as needed. Currently when migrating a database from one release to another we create a stream of XML documents. Later we can speed this up by using an alternative representation--parsing those documents is too slow.

Note that when using the Browse console, the admin user can view the persistent data used by any rolon with the express command. Very helpful for debugging.

3. Base on the demo, what can we achieve with rolons that normal objects can't do? I was thinking maybe we can improve on the interface and also the type of application we are doing

Anything we can do with rolons we can do with objects, only it may not be practical to do so. :-) It is the old turing machine argument.

Now if you look at the ning site, or rather if you were to set up your own ning community site, you would find that there is a lot of flexibility in the configuration of the pages and the selection of the features. OK, you can get the idea perhaps by just browsing other ning sites. The problem with the ning site is that the data structures behind it are a bit complex and this precludes them from doing other things. But with rolons we don't have this problem.

The first application implemented on the web was file sharing. The next will be twits. And then we will rework the UI to be driven by rolons, making it even more configurable than ning. See http://agilewiki.ning.com/forum/topics/work-in-progress?page=3&...

4. I find the console for looking at the database quite complex.

The web UI tries to organize things from the perspective of the user, to maximize utility. Conversly, the browse console provides you access to the full capability of the underlying database. Each has its place.

The console is good for learning more about the database. As I mentioned above, the express command lets you access all the persistent data of a rolon. The console is also the back door for any user wanting to look inside the web site. If you use the same email address for accessing both the web and the console, they you will have the same privileges.

(As the admin of your console, you can open a peer ark proxy connection to the agilewiki.org site. From there you can navigate to the console of other users who are doing the same thing. And yes, this is why access control is so important.)

Reply to This

Thanks Bill, this post helps a lot for newbies. I still wonder where did this Rolonic theory originated? Was it a research paper? Or you just named a concept in your mind as Rolon?

Bill la Forge said:
Why use Rolons?

At some point (I'm not ready yet) we need to redo the material on rolons. Reminds me of how they teach the metric system in the US. First they teach the (rather complex) English system, and then they teach how to convert it to metric. Everyone then is left with the impression that the metric system is very complex, while it is really much simpler than the English system.

Rolons are complex only because they need to be implemented using objects, and because of the way they are mapped onto disk blocks. Most rolons are mapped to a single block of memory, but when an element has more than 4 sub-elements, the sub-elements are, b-tree like, written to 2 separate blocks which can split further and even form trees of blocks as the number of elements grows without limits.

But implementation aside, rolons are simple. Easy to use and extend. And as they have a fluid/extensible structure, they are easier to develop to. Especially as you do not need to worry about writting special code to handle large tables, persistence, robustness or caches--the hard things are already done for you. You can just focus on the business logic of your application.

1. What the purpose / benefits of using rolons over objects?

I just answered this in part in the above paragraph, but that is from just one technical perspective. I think a stronger argument is that every single rolon is a user-accessible object. So in a sense, they are all mbeans. They give you a dynamic architecture which can be reconfigured on the fly and easy to manage.

Now we've previously touched on the fact that rolons can be used to implement services. But these service rolons are still rolons, and as such can be operated on by privileged users and other rolons. Inverting that perspective, every application can operate on the rolons of every other application--they ALL conform to a well known structure. One big advantage here is that the data structures are generic enough that you can take a program which uses rolons and implements something like twitter.com and extend it to implement something like ning.com, and extend it to implement something like Google Wave and just keep extending it and still have every feature integrate nicely with all the other features. This is how programming should work!

Finally, rolons are light-weight enough and yet rich enough to also support complex knowledge structures, which can then be used to drive any number of applications. This opens the door for very flexible applications.

2. Is rolons xml being used as a database? But i thought xml database does not seens to handle heavy load very well?

No, this is not an xml database. There is no xml in the database. Only the rolons are constrained so that they can be expressed fully in XML... as needed. Currently when migrating a database from one release to another we create a stream of XML documents. Later we can speed this up by using an alternative representation--parsing those documents is too slow.

Note that when using the Browse console, the admin user can view the persistent data used by any rolon with the express command. Very helpful for debugging.

3. Base on the demo, what can we achieve with rolons that normal objects can't do? I was thinking maybe we can improve on the interface and also the type of application we are doing

Anything we can do with rolons we can do with objects, only it may not be practical to do so. :-) It is the old turing machine argument.

Now if you look at the ning site, or rather if you were to set up your own ning community site, you would find that there is a lot of flexibility in the configuration of the pages and the selection of the features. OK, you can get the idea perhaps by just browsing other ning sites. The problem with the ning site is that the data structures behind it are a bit complex and this precludes them from doing other things. But with rolons we don't have this problem.

The first application implemented on the web was file sharing. The next will be twits. And then we will rework the UI to be driven by rolons, making it even more configurable than ning. See http://agilewiki.ning.com/forum/topics/work-in-progress?page=3&...

4. I find the console for looking at the database quite complex.

The web UI tries to organize things from the perspective of the user, to maximize utility. Conversly, the browse console provides you access to the full capability of the underlying database. Each has its place.

The console is good for learning more about the database. As I mentioned above, the express command lets you access all the persistent data of a rolon. The console is also the back door for any user wanting to look inside the web site. If you use the same email address for accessing both the web and the console, they you will have the same privileges.

(As the admin of your console, you can open a peer ark proxy connection to the agilewiki.org site. From there you can navigate to the console of other users who are doing the same thing. And yes, this is why access control is so important.)

Reply to This

Venkata,

Rolonics is a theory developed by my friend, Norman Kashdan over a period of almost 20 years. It is an unpublished theory, as Norm finds himself too close to be able to write about it.

I call my own work Rolonic Software Engineering, as it is based on only the smallest part of his theory. Rolonic theory is largely intentional and covers other topic such as 2-time. Rolonic theory is best for describing organic systems, while Rolonic Software Engineering focuses simply on advancing software engineering practice.

See rolonics.org for where the name came from.

Bill

Reply to This

Starting with release 16.1.0, AgileWiki works with either JDK1.5 or JDK1.6.

Reply to This

Unable to support JDK 1.5 due to a dependency on a JDK 1.6 class: java.util.zip.InflaterOutputStream.

Bill la Forge said:
Starting with release 16.1.0, AgileWiki works with either JDK1.5 or JDK1.6.

Reply to This

Hi, I have just joined the web 3.0 project. My first name is Khanh. I have a background in Computer Science and have been working in the software field for fourteen years. As a generalist, I am comfortable doing analysis, design, and/or programming (Java, C#, some PHP, some Javascript). I look forward to contribute to the project which sounds to be interesting.

Khanh

Reply to This

Khanh,

I do hope you manage to come up to speed on this project, as too many folk never quite make it. Naji and I are currently working full time and yet we still have way too much that needs to be done.

Naji just finished a small project which allows the database to span multiple files. Still the total size will be limited to 2**63, as we use a long for offsets.

I was working on restabalizing the database. The demo site had gotten large enough that some additional code was being exercised and fixing that destabalized things for a while. Now I'm back refactoring the web ui, moving all the html out of the java classes and into jsp where a web developer can access it.

Barrie had started on writting up pom files (maven). this is an important project as it will simplify the ide setup for this project. He just joined and I need to get back to him to see what is happening.

Naji's next project is to convert the xml used in migrating db content from one version (or configuration) to another. We'll be using json, which parses more quickly. This is important as, for example, the demo database already requires about 10,000 xml files when migrating its data.

Naji and I are also discussing a rework of command processing, first creating a journal entry and then evaluating it. Then we can write journal entries (again, in json) to a file and use them to recover from data corruption (or even from bad logic, as we will be reprocessing the journal entries, not just loading them). We will also then be able to stream journal entries to a hot backup for rapid failover.

I'll note that this project spans just about everything, from low-level db internals to css, as well as introducing a new comprehensive approach to programming (rolonic software engineering). It calls for a generalist, but also for an army of specialists.

So I hope you like digging in and asking a lot of questions. Naji and I are having a lot of fun and we would be delighted to work with you.

Bill

Khanh Luu said:
Hi, I have just joined the web 3.0 project. My first name is Khanh. I have a background in Computer Science and have been working in the software field for fourteen years. As a generalist, I am comfortable doing analysis, design, and/or programming (Java, C#, some PHP, some Javascript). I look forward to contribute to the project which sounds to be interesting.

Khanh

Reply to This

I just checked out the demo site? Is this our current version of agilewiki?

Reply to This

Yes, the demo site is current as of the last release. And the work since then has been mostly converting the build process to use Maven.

A lot of things are currently broken in the web UI, as I'm in the middle of refactoring the HTML out of the Java code, moving it into the .jsp files. In the process, I'm also reorganizing what goes in the rolon page and what goes in a view, adding the sidebar navigation links and including anchor links in the sidebar to the contents of the rolon page. So you can sorta get a feel from the demo site as to where I'm headed, but currently it is not too useable or friendly.

Converting the build to use Maven also took priority, as it was just too difficult to set up an IDE. Hopefully with the next release that will change. This is most important as we really can use a lot more help, only it has been very difficult for folk to come on board. Anything that can help folk come up to speed on this project gets priority.

Bill

Minh Nhat Dong said:
I just checked out the demo site? Is this our current version of agilewiki?

Reply to This

Minh,

I just learned that the web pages do not display at all well on IE, though they work with Opera and Chrome just fine. This obviously needs fixing.

Bill

Minh Nhat Dong said:
I just checked out the demo site? Is this our current version of agilewiki?

Reply to This

Reply to This

RSS

© 2009   Created by Bill la Forge on Ning.   Create a Ning Network!

Badges  |  Report an Issue  |  Privacy  |  Terms of Service

Sign in to chat!

 
 
 
 
  Get AgileWiki at SourceForge.net. Fast, secure and Free Open Source software downloads