Tuesday, March 23, 2010

The Core

(This post is an answer to several questions that we received about the Core - in this blog, in the GxNews or by email - after Anya's post about The Core)

First of all, let me say that we are excited about all of the interest that the Core generated. It was always our intention to share part of the Core, because we think it is something that can help customers to get started working with GeneXus projects, which strengthens our community. With the Basic Core and the WorkWith Pattern it is easy to get started in a real application quickly and we think this is a good way to get more people involved/excited about how easy it is to build applications with GeneXus.

With that said, we have two problems that somehow have prevented us from releasing this to the community:

1) The basic Core is not a "product". There are some things that are done today in a "quick & dirty" way - i.e. all the initialization of pages -. We intend to do in a better way, but the time did not present itself yet. There are some functionalities that should be there if this was to be considered as a product (i.e. a user interface to define rights for the different roles over the pages/menus) -, but they are not there because we didn’t need them yet, so they were not implemented yet. The Basic-Core is not “complete”.

2) The Basic Core is a subset of our Core. Our Core has additional modules - that we considered more specialized and that somehow capture some of our practices on how to handle certain functionality - but they are not as widespread as it can be security and navigation. For example we are working in adding a notification module that defines events, alerts and notifications and allows users to subscribe to notifications, etc. All our applications use some type of notifications and we thought this was a good addition to our Core. We also have in our Core error-codes (in order to allow end-users to customize the error messages that the system displays, and allow them to write up the solution of the error which works as a user-guide on line). Error codes could be associated with the notification module in order to raise alerts if an error code happens, etc. We did not plan to share - at least for free - the complete Core, just the basic one that contains the widespread functionality.

So, up to this point we were kind of stuck without making a decision... and then Anya wrote an article in the blog... and then it turns out that there are many people that would be interested in having the some type of Core. So we decided that implementation problems should not prevent us from our final goal that was to share this and help strengthening the community. So the idea is the following:

Basic Core
We will share this in the public GeneXus Server (under some open-source license to be defined). We used an extended version of the WW-Pattern to generate the objects so we have to decide if we will move them to the standard one or release the extended version of the WW Pattern with this. Regardless it will be there for free, but we will not maintain it. Everybody is welcome to participate and extend it and collaborate, we will not officially support or update it. We will answer support questions if asked in English and in a public site - preferably stackoverflow (under GXUSA-BasicCore tag).

Advanced Core
We will have the Advanced Core as a service that you can subscribe to. The Advanced Core will be distributed using the propagate option so you can customize and later on integrate our updates to it using the Change Defender.

Again, this is not a product but instead it is more like a service, in the sense that we do not have a "fits all needs security module" or "all scenarios covered notifications module". The Core grows as we need it to grow and you can subscribe to this. Under the subscription mode - the support mode will be the same as the basic Core - we will use a publish site that will be written in English (if you want to submit a question in another language email it and we can translate from Spanish or Portuguese, but we want to keep the public support in English only). In this case the tag should be GXUSA-Core.

We will have more information about this here soon.

Thanks for your interest!