[yast-devel] Fwd: discussion about YaST infrastructure and foundation
I am forwarding an extract of a discussion we had internally but we would like to open it so everyone can express their feedback and opinions. ---------- Forwarded Message ---------- Date: Wednesday 07 November 2007 From: Duncan Mac-Vicar Prett <dmacvicar@suse.de> To: Klaus Kaempf <kkaempf@suse.de> In YaST we have a problem. We don't have a multi-language/API foundation strategy. Which languages we support, and which we write our infrastructure in. Right now we have the YCP layer as a hub between languages, which gives us a nice component framework where we could write clients in any language and modules in any language. If we stay with this strategy, we need to fix two big issues: a) market YCP as a component model, and not as a language b) provide a easy way to glue natve code to ycp components. Last time I looked how pkg-bindings is implemented, it is _sick_ and you have to deal with symbol tables etc. The most sane way is generating perl bindings and then using it as a component. Why not auto-generating direct ycp glue? Once you follow the dependencies outside of YaST core, YaST is not that "light". The other possible strategy is to choose a platform, say Python, Ruby whatever, and that mean rewriting, which is what we will not do. The other possible strategy is to migrate our existing code to some standard infrastructure. The most known are jvm and CLR. LLVM probably won't qualify because it is too low level and Parrot seems to be still vaporware in respect of language support. If we are able to migrate (recompile) our code to one, it means we gain all target language compilers and that we can make use of the code writen in any of those plus all the code which is already written out there. Also we would gain nice IDEs, debuggers, profilers, standard tools and others. Only when I write Java in Eclipse I realize how much C++ tools suck. (no CDT is not good enough). I don't know more strategies. If anyone knows another one, speak up!. I don't know also which one is the best. I want all lines of research open, and if it possible, try them. Duncan ------------------------------------------------------- Date: Wednesday 07 November 2007 From: Klaus Kaempf <kkaempf@suse.de> To: Duncan Mac-Vicar Prett <dmacvicar@suse.de> I'd recommend to take this thread on yast-devel ! * Duncan Mac-Vicar Prett <dmacvicar@suse.de> [Nov 07. 2007 13:03]:
In YaST we have a problem. We don't have a multi-language/API foundation strategy.
Which languages we support, and which we write our infrastructure in. Right now we have the YCP layer as a hub between languages, which gives us a nice component framework where we could write clients in any language and modules in any language.
If we stay with this strategy, we need to fix two big issues: a) market YCP as a component model, and not as a language
That was the original intention: YCP as a low-level, abstract, non-binary protocol / model to glue different components, namely the backend (scr) and the frontend (UI) together. However, nowadays there are standardized, open-source means available for both the backend (hal/dbus for local, cim for remote) and frontend (html/css being the most prominent) available. We'd rather deprecate ycp going forward and look for migration strategies away from it.
b) provide a easy way to glue natve code to ycp components. Last time I looked how pkg-bindings is implemented, it is _sick_ and you have to deal with symbol tables etc. The most sane way is generating perl bindings and then using it as a component. Why not auto-generating direct ycp glue?
Sure, why not ? I think the ycp layer still gives us a lot of unexplored capabilities and I hope the 'language independence' workgroup will look into them.
Once you follow the dependencies outside of YaST core, YaST is not that "light".
Right. And following customers requests, we'd rather fix this too.
The other possible strategy is to choose a platform, say Python, Ruby whatever, and that mean rewriting, which is what we will not do.
Rewrite from scratch ? Certainly not. Migrating from YCP to another language platform ? Why not ?
The other possible strategy is to migrate our existing code to some standard infrastructure. The most known are jvm and CLR. LLVM probably won't qualify because it is too low level and Parrot seems to be still vaporware in
respect
of language support. If we are able to migrate (recompile) our code to one, it means we gain all target language compilers and that we can make use of the code writen in any of those plus all the code which is already written out there.
This includes a high risk of 'language chaos' with every component written in a different language, all glued together by a VM. A scenario we better stay away from. The current situation (bad support for popular/useful languages) is as bad as having no limits at all. We have to define requirements and limits and, based on them, make a platform/strategy decision.
Also we would gain nice IDEs, debuggers, profilers, standard tools and others. Only when I write Java in Eclipse I realize how much C++ tools suck. (no CDT is not good enough).
Availability of tools is a very important decision factor.
I don't know more strategies. If anyone knows another one, speak up!. I
don't
know also which one is the best. I want all lines of research open, and if it possible, try them.
Research looks at technical possibilities, then market/budget requirements will limit them to a reasonable number. Klaus ------------------------------------------------------- ------------------------------------------------------- ---------- Forwarded Message ---------- Date: Wednesday 07 November 2007 From: Stanislav Visnovsky <visnov@suse.cz> Dňa Wednesday 07 November 2007 13:02:54 Duncan Mac-Vicar Prett ste napísal:
In YaST we have a problem. We don't have a multi-language/API foundation strategy.
Which languages we support, and which we write our infrastructure in. Right now we have the YCP layer as a hub between languages, which gives us a nice component framework where we could write clients in any language and modules in any language.
If we stay with this strategy, we need to fix two big issues: a) market YCP as a component model, and not as a language b) provide a easy way to glue natve code to ycp components. Last time I looked how pkg-bindings is implemented, it is _sick_ and you have to deal with symbol tables etc. The most sane way is generating perl bindings and then using it as a component. Why not auto-generating direct ycp glue? Once you follow the dependencies outside of YaST core, YaST is not that "light".
The other possible strategy is to choose a platform, say Python, Ruby whatever, and that mean rewriting, which is what we will not do.
In the end, we will have to decide the preferred language, just to be able to maintain the stuff, having backup maintainers etc. From that point, I don't see many arguments why not move slowly toward that, on case-by-case basis.
The other possible strategy is to migrate our existing code to some standard infrastructure. The most known are jvm and CLR. LLVM probably won't qualify because it is too low level and Parrot seems to be still vaporware in respect of language support. If we are able to migrate (recompile) our code to one, it means we gain all target language compilers and that we can make use of the code writen in any of those plus all the code which is already written out there. Also we would gain nice IDEs, debuggers, profilers, standard tools and others. Only when I write Java in Eclipse I realize how much C++ tools suck. (no CDT is not good enough).
We would also get all the politics and myths attached to those technologies. Unfortuantelly, they will only add, not replace ones we already have attached to YaST ;-)
I don't know more strategies. If anyone knows another one, speak up!. I don't know also which one is the best. I want all lines of research open, and if it possible, try them.
I believe the overall impression for those technologies are going against us, and you cannot do much about it. Java will be the slow virtual machine and great development platform for next 10 years. Mono will be patent-ridden and Microsoft for the next 10 years. I'm afraid we cannot afford at this point to get into that game as it will just worsen the YaST image. I'd hope to be proven wrong! Stano -- To unsubscribe, e-mail: yast-devel+unsubscribe@opensuse.org For additional commands, e-mail: yast-devel+help@opensuse.org
Hi, Interesting discussion. IMO multiple language support is probably one of the least significant of problems with the YaST platform from a developer point of view, in fact it might be part of the problem. The main things YaST platform does offer developers at the moment are perhaps * Library for toolkit independent UIs using native widgets on each. * Library for reading and writing system configuration. And the main disadvantages are perhaps * Difficult to use other non-yast libraries - end up either calling random SCR agents, hacking things together using perl libraries, pkg-bindings style things etc. * You can't easily re-use functionality in YaST from other apps. * YCP not object oriented - also means that APIs consumable from YCP have to be non-OO which is quite limiting. * UI still too tightly coupled to management - UI has to run as root too etc. * Slow. And lots more. I see the problem as less people wanting to develop in their favourite language, - language syntax & semantics aren't very hard to learn if there's an incentive. However, people are now used to developing on a platform with very extensive libraries like java, .net, even python etc. YaST does not make it easy to utilise anything that's not YaST. Whereas on most platforms one would simply pick a library to do something - say parse an XML config file, in YaST one has to mess around working out how to do it, and deal with the mess of lists of maps of lists that ensues. It's not very productive. All of these problems are really down to YaST being its own platform, rather than specialised libraries as part of a larger platform. This probably made sense and was an advantage 8 years ago when there was no Free java, and no mono. I think the third strategy of migrating things to JVM/CLR is the bset out of those suggested. If you were developing YaST today instead of a decade ago would you really not choose to make it part of a platform like java which is * GPL * very fast * extensive libraries * largest developer base * has hundreds of languages targeting it. -- Benjamin Weber -- To unsubscribe, e-mail: yast-devel+unsubscribe@opensuse.org For additional commands, e-mail: yast-devel+help@opensuse.org
* Benji Weber <b.weber@warwick.ac.uk> [Nov 08. 2007 16:43]: Benji, thanks for your long reply and we're in total agreement in all of your points.
All of these problems are really down to YaST being its own platform, rather than specialised libraries as part of a larger platform. This probably made sense and was an advantage 8 years ago when there was no Free java, and no mono.
When we started YaST, the license was the main reason to develop our own platform. Remember that YaST wasn't GPL until 3 years ago.
If you were developing YaST today instead of a decade ago would you really not choose to make it part of a platform like java which is
I guess today, we would focus on as many reusable, freely available, highly portable, open-source components as possible. Klaus --- SUSE LINUX Products GmbH, GF: Markus Rex, HRB 16746 (AG Nürnberg) -- To unsubscribe, e-mail: yast-devel+unsubscribe@opensuse.org For additional commands, e-mail: yast-devel+help@opensuse.org
participants (3)
-
Benji Weber
-
Duncan Mac-Vicar Prett
-
Klaus Kaempf