Sunday, January 17, 2010

what the ... is siberfiber?

I am often exposed to this question and usually my attempt to tell people what siberfiber is ends with failure, and finally I decided to write it down.

siberfiber is an a computer-aided management software developed by intimatek, and supported by TUBITAK. it is aiming to create an environment for business analysts to make them capable of producing industry and company specific enterprise resource planning (ERP) and bussiness process management (BPM) solutions, without any need for a programmer.

what makes siberfiber a R & D project is it's original approach to some ancient problems. a major problem in an ERP software is reflecting changes in a resource, to the other resources that are affected by this change. programmers are the ones who analyses resources and designs the data model and they create necessary tables on database according to this design. but the general problem of classical database systems is to keep relationship between data models one-sided.

well what does that mean? assume that we have two resources 'teacher' and 'student', if there is a 1 to n relationship between these two resources (1 teacher can have multiple student, 1 student can have only 1 teacher), on conventional database systems, general method is adding a column to 'student' table to hold the ID of the teacher. in this case, by looking at the schema of 'student' table, it's possible to see realationship between 'teacher' and 'student' resources, but the 'teacher' table's schema won't have any information about this relationship. if you need the 'x teacher's students' knowledge, you have to hire a programmer to write a new sql query for you.

siberfiber is developed based on declarative programming rather than procedural programming, all the relations between resources on siberfiber is two-sided. this two approach solves basical problems from the root even without they born.

on siberfiber, the relationship between teacher and student can be seen on both 'student' and 'teacher' types' schemas, because all relations are established at definition level.

let's make our sample a little more complex, for example, we need 'x teacher's successful students' information, we need to add a new column with name 'grade' for 'student' table. and then give our programmer the definition of 'successful student' as 'students with a grade higher than 50'. in this case, our programmer will write the following sql for us:
select * from student, teacher where and student.grade => 50;
and on siberfiber this logic will be expressed by this sfs [1], at the time when 'teacher' and 'student' types are created:
createsifter "teacher" "successful students" n "student" "succeeded teacher" 1 filtervaluesgreaterthan student.grade 50
(i'll not do any explanation about sfs now, unfortunately it's impossible to explain it by 3 words, I think at this stage it would be an unnecessary detail, but if I hadn't given this example it would be too abstract)

sfs script at above is creating a property (at classical database system, properties can be considered as columns in the table) both at 'student' type and 'teacher' type.

even though no one had asked us 'which teachers did this student passed from?' question, siberfiber's two-sided relations made this answer ready automatically and unavoidably. in fact, what we do here is binding two types with a rope, and there is a sign by this rope at student side on which 'goes to teachers whose lessons are passed' is written. and in the other side, teacher side, on the sign what's written is 'goes to students who are passed the lesson' text. it's possible to travel in both directions on this rope.

usually in conventional databases you can only go down by a rope, you can not go up. to get the 'teachers who are passed' knowledge you have to pull another rope, which means programmers have to write some more sql for you.

by two-way relationship, at siberfiber space it's possible to update all types that are affected by changes occured at any type instantly and automatically (in fact i mean 'thing' which means instance of types at siberfiber terminology by saying 'type' here).

at ERP software world, normally business analysts are the ones who identify process and resources, then they would tell programmers what to do, they would expect programmers to know what they are talking about as much as they are, then programmers began to code in the light of what they understood, and there becomes a software. or the programmer had done same kind of jobs for that sector too much, and (s)he'd turned into a bussiness analyst-programmer, and (s)he was thinking that (s)he is the god of that bussiness, (s)he doesn't need anyone in the world.

in siberfiber, definitions are given directly to the system, not to the programmer. of course, we don't expect business analysts to write sfs code, for this, an analyst designer interface is being written, siberfiber definitions can be expressed with a notation smilar to BPMN [2]. business analysts, by using this design interface, will be able to create these definitions, sfs codes created by these definitions will update system at real-time.

and of course, a CAM[3] sofware as siberfiber will need a user interface for it's users, well, who will create this interface then? answer is business analysts again, they will create this user interface by siberfiber definitions called masks. masks determine how and which part of a type will be shown in the interface. for example, grade property of 'student' will be shown as a read-only field at student interface, and it will be shown as an editable textbox on teacher interface. mask definitions are also done via analyst designer interface graphically, as it's done in type definitions.

I hope, I could succeed to give an idea about siberfiber. as you can estimate, this is the only visible part of the iceberg. if I'd tried to tell more, it would be unnecessarily confusing, and maybe it became so even for now.

[1] Siberfiber Script
[2] Bussiness Process Modeling Notation
[3] Computer Aided Management

need to patch qooxdoo selenium plugin

qooxdoo consumed from end of my life once again. I tried to write a simple selenium test, and I got lost in a hopeless struggle to click on a button.

first of all, in order to write a selenium test for your qooxdoo application you need this plug-in. and also you need to use an old version of firefox and qooxdoo framework in order to use this plug-in.

as a conclusion, my struggle resulted with this patch, in this way it became possible to work with firefox 3 and qooxdoo 0.8.3.

but tests are not applicable to a built (. / generate build) qooxdoo application, and it's not nice to be have to put test specific setUserData method calls into your application.

I don't know how long my struggle with qooxdoo will go on.

married and changed my job

since my last entry, a number of important changes happened in my life. finally esra and I succeeded to get married (we're still paying its debts) and I started to work at mynet.

i'm at mynet for 3 months, if we consider that the trial period was 2 months, either they forgot to fire me or i've become an official mynet employee.

this is my transfer story to mynet:

zeitin had to move to a new bussiness model in which employees need to do sacrifice to keep company exist. because of my marriage I was unable to make any sacrifice at that time, so I had to abandon the ship at a time that I wouldn't prefer much.

I couldn't return back to parkyeri, because I didn't want to ruin motivation of people at zeitin. and i had a desire to learn what's going at the world beyond parkyeri, as a person who opened his eyes at parkyeri. also i couldn't go on at intimatek, because in this way it would be a shame against mavci.

during my job search, i was specially looking for network engineering and test engineering positions. but for the salary level I need, employers were asking for experience on sector. and my marriage again forced me to keep hurry, i began to apply positions for which my background is suitable, and I found myself at mynet. it'd been nearly 4 months at mynet, as a software developer on adklik project.

in addition to the adklik project at mynet, I'm trying to continue with siberfiber at my spare time, as a hobby. siberfiber is a nice project supported by tubitak and devoloped by intimatek co. which is founded by giray (one of co-founders of parkyeri) and his siblings, it's impossible to explain siberfiber with 3 words, I want to make a separate entry for it, later.

to summarize, i left vidi and gokada projects devoloped by zeitin, and I've been continuing my life with adklik and siberfiber projects.

that's it.