[yast-devel] Direction of YaST Architecture?
Hi, in a recent telco the question about the direction of the YaST architecture was raised. In the pase a lot of things have been tried. E.g. integrate different languages (Perl, Python, Ruby), try different build systems (cmake), automatic generation of bindings for C/C++ libraries (libstorage) or simply use common technologies (e.g. CIM). This is not necessarily bad but from my point of view quite a few ideas are stuck halfway (Python integration) or are simply of bad quality (generation of bindings). Even usage of Perl seems to be considered to be no improvement. But instead of removing failed approches we keep them and often do not even look at better ways. As a result the YaST architecture is on one hand more complex and confusing then required and on the other hand lacks quality and features. So now that we have minimal recourses to improve the YaST Architecture we should concentrate on a few improvements instead of dissipate our energies again. So what seems desirable and feasible? Some ideas: 1) Replace YCP with some common language? With more that 100 modules this looks impossible. 2) Allow a common language next to YCP? A good integration seems difficult. 3) Improve YCP (at least fix bugs)? Do we want that? 4) Better bindings of C/C++ libraries for YCP? Other suggestion? Of course we already have a list of ideas (only few about the architecture), see: http://old-en.opensuse.org/YaST/Development/Research Discussion is opened. ciao Arvin -- Arvin Schnell, <aschnell@suse.de> Senior Software Engineer, Research & Development 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
On 01/28/2011 10:50 AM, Arvin Schnell wrote:
Hi,
in a recent telco the question about the direction of the YaST architecture was raised.
In the pase a lot of things have been tried. E.g. integrate different languages (Perl, Python, Ruby), try different build systems (cmake), automatic generation of bindings for C/C++ libraries (libstorage) or simply use common technologies (e.g. CIM). This is not necessarily bad but from my point of view quite a few ideas are stuck halfway (Python integration) or are simply of bad quality (generation of bindings). Even usage of Perl seems to be considered to be no improvement.
But instead of removing failed approches we keep them and often do not even look at better ways. As a result the YaST architecture is on one hand more complex and confusing then required and on the other hand lacks quality and features.
So now that we have minimal recourses to improve the YaST Architecture we should concentrate on a few improvements instead of dissipate our energies again.
So what seems desirable and feasible? Some ideas:
1) Replace YCP with some common language? With more that 100 modules this looks impossible.
Difficult, nothing is impossible. On the other hand if you have a common language (Perl or Python) you can get more people involved to re-implement existing modules and add new ones.
2) Allow a common language next to YCP? A good integration seems difficult.
IMHO this would be a maintenance nightmare.
3) Improve YCP (at least fix bugs)?
This would be a god step. However, it still leaves the problem of having to maintain the engine. In addition if there is interest in adding a new module someone has to learn YCP. While there has been a great effort to get YCP document the existing documentation didn't really help me to get a module written. :( Having a language that is more popular would probably lower the barrier of entry. My $0.02 Robert -- Robert Schweikert MAY THE SOURCE BE WITH YOU Software Engineer Consultant LINUX rschweikert@novell.com 781-464-8147 Novell Making IT Work As One -- To unsubscribe, e-mail: yast-devel+unsubscribe@opensuse.org For additional commands, e-mail: yast-devel+help@opensuse.org
Hi! On piatok 28 Január 2011 16:50:10 Arvin Schnell wrote:
Hi,
in a recent telco the question about the direction of the YaST architecture was raised.
In the pase a lot of things have been tried. E.g. integrate different languages (Perl, Python, Ruby), try different build systems (cmake), automatic generation of bindings for C/C++ libraries (libstorage) or simply use common technologies (e.g. CIM). This is not necessarily bad but from my point of view quite a few ideas are stuck halfway (Python integration) or are simply of bad quality (generation of bindings). Even usage of Perl seems to be considered to be no improvement.
But instead of removing failed approches we keep them and often do not even look at better ways. As a result the YaST architecture is on one hand more complex and confusing then required and on the other hand lacks quality and features.
So now that we have minimal recourses to improve the YaST Architecture we should concentrate on a few improvements instead of dissipate our energies again.
So what seems desirable and feasible? Some ideas:
1) Replace YCP with some common language? With more that 100 modules this looks impossible.
I think this is a good and the only viable option if YaST code should survive in long run. The knowledge of YCP internals is slowly forgotten and the language is stalled for some time now.
2) Allow a common language next to YCP? A good integration seems difficult.
I see this as step towards goal 1).
3) Improve YCP (at least fix bugs)? Do we want that?
What kind of bugs do you see in YCP? There is only a couple of them I'm aware of and they can be easily workarounded. In this regard, I don't think it's worth trying to fix them.
4) Better bindings of C/C++ libraries for YCP?
What's the goal of this option? Stano -- To unsubscribe, e-mail: yast-devel+unsubscribe@opensuse.org For additional commands, e-mail: yast-devel+help@opensuse.org
On Sun, Jan 30, 2011 at 02:35:26PM +0100, Stanislav Visnovsky wrote:
3) Improve YCP (at least fix bugs)? Do we want that?
What kind of bugs do you see in YCP? There is only a couple of them I'm aware of and they can be easily workarounded. In this regard, I don't think it's worth trying to fix them.
Sure they can be workarounded otherwise YaST storage would not work anymore. But I remember bug reports concerning YCP that had several duplicated. At some point the cost of fixing a bug is less that the cost of people finding and workarounding the bug. It all depends on our long-term plans for YCP.
4) Better bindings of C/C++ libraries for YCP?
What's the goal of this option?
Easier integration of existing code/libraries in YaST, e.g. augeas or libxml. Ok, for augeas we can implement a module and for libxml we already have one. But then someone who knows the library will have to read the documentation for the YaST module to be able to use it. And surely we have to write that documentation first. The currently generated bindings for libstorage are so bad that almost every function has handwritten make-it-usable-code in YCP. This hinders moving code from YCP to C++. Apart from that we even need workarounds in libstorage to avoid seg. faults since the bindings cannot handle C++ strings (that internally have pointers) inside structs. And AFAIK the handwritten bindings for libzypp are always a bit outdated and lack features. ciao Arvin -- Arvin Schnell, <aschnell@suse.de> Senior Software Engineer, Research & Development 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
* Arvin Schnell <aschnell@suse.de> [Jan 31. 2011 10:54]:
The currently generated bindings for libstorage are so bad that almost every function has handwritten make-it-usable-code in YCP. This hinders moving code from YCP to C++. Apart from that we even need workarounds in libstorage to avoid seg. faults since the bindings cannot handle C++ strings (that internally have pointers) inside structs.
Fully agreed.
And AFAIK the handwritten bindings for libzypp are always a bit outdated and lack features.
Thats why the libzypp-bindings are currently moving away from being generated automatically to a clearly defined API. It is a bit more work upfront but provides a couple of advantages like - dramatically reducing the size of the generated bindings (because almost all C++ type conversions can be dropped) - hiding the libzypp internals (who cares for 'zypp.ZYppFactory_instance().getZYpp()' ?) - make the API fit natural into the target language - backwards compatibility (provide the same binding package across multiple versions of libzypp) This is work-in-progress, see zypp-devel for details. 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
Dne 31.1.2011 10:54, Arvin Schnell napsal(a): [...]
And AFAIK the handwritten bindings for libzypp are always a bit outdated and lack features.
Yes, pkg-bindings implement only the functionality which is really needed from YCP code. And of course, this is a small subset of what libzypp provides. On the other hand they hide the implementation details, e.g. when libzypp changed repository identification from ID (integer) to alias (string) I just added a mapping functionality to pkg-bindings without touching any YCP code. (Fixing this on YCP level would require huge amount of changes...) -- Best Regards Ladislav Slezák Yast Developer ------------------------------------------------------------------------ SUSE LINUX, s.r.o. e-mail: lslezak@suse.cz Lihovarská 1060/12 tel: +420 284 028 960 190 00 Prague 9 fax: +420 284 028 951 Czech Republic http://www.suse.cz/ -- To unsubscribe, e-mail: yast-devel+unsubscribe@opensuse.org For additional commands, e-mail: yast-devel+help@opensuse.org
On Jan 30, 2011, at 6:35 AM, Stanislav Visnovsky wrote:
1) Replace YCP with some common language? With more that 100 modules this looks impossible.
I think this is a good and the only viable option if YaST code should survive in long run.
+1. -- To unsubscribe, e-mail: yast-devel+unsubscribe@opensuse.org For additional commands, e-mail: yast-devel+help@opensuse.org
On Sun, Jan 30, 2011 at 02:35:26PM +0100, Stanislav Višňovský wrote:
So what seems desirable and feasible? Some ideas:
1) Replace YCP with some common language? With more that 100 modules this looks impossible.
I think this is a good and the only viable option if YaST code should survive in long run.
The knowledge of YCP internals is slowly forgotten and the language is stalled for some time now.
In short, I agree with Stano. YCP has many shortcomings, the elephant in the room being its lack of object orientation. Of course we will have to maintain YCP to keep the existing code in the existing products working. But for new development, *anything* is better than YCP, simply by virtue of being widespread. (Even Perl seems not to be write-only lately: http://www.onyxneon.com/books/modern_perl/ )
2) Allow a common language next to YCP? A good integration seems difficult.
I see this as step towards goal 1).
Yes. It may be difficult but I see no alternative.
3) Improve YCP (at least fix bugs)? Do we want that?
What kind of bugs do you see in YCP? There is only a couple of them I'm aware of and they can be easily workarounded. In this regard, I don't think it's worth trying to fix them.
Let me distinguish YCP as the language and YCP as the interpreter and data model. Even if we phase out the language, the interpreter needs improvements as it is the means through which the widespread-language bindings communicate with old code. In particular I mean the thing I mentioned in the call: Enabling to write real test suites, by allowing to mock other APIs than SCR agents. Otherwise we cannot refactor and risk that simple maintenance will mutate the project to an untouchable state. -- Martin Vidner, YaST developer http://en.opensuse.org/User:Mvidner Kuracke oddeleni v restauraci je jako fekalni oddeleni v bazenu
Hello, On Jan 30 14:35 Stanislav Visnovsky wrote (shortened):
On piatok 28 Január 2011 16:50:10 Arvin Schnell wrote: ...
1) Replace YCP with some common language? With more that 100 modules this looks impossible.
I think this is a good and the only viable option if YaST code should survive in long run.
For me this looks like a contradiction in itself because killing YCP would kill all code which is written in YCP. Stanislav, what did you actually mean? In general I think we should be very careful with exact wording. I.e. what exactly is menat with "YCP"? The language? The YCP runtime environment? The code which is written in YCP? I think before any discussion whether or not "YCP" can be replaced makes sense, there would have to be at least one single alternative which really actually works and which is already accepted by the free software developers "out there" who like to contribute to YaST. If and only if such an alternative exists, then it could make sense to set YCP "deprecated" so that no new YaST module would be created in YCP code. Then there would be a longer time of a "YCP fade out phase" where the YCP runtime environment must be maintained so that the old YCP modules can still run. During the "YCP fade out phase" the old YCP modules could be one by one and step by step re-written in whatever alternative language. Personally I don't care about alternative languages as long as the alternative really actually works. I trust that any decision of free software developers who actually contribute to YaST would be also o.k. for me. Kind Regards Johannes Meixner -- SUSE LINUX Products GmbH, Maxfeldstrasse 5, 90409 Nuernberg, Germany AG Nuernberg, HRB 16746, GF: Markus Rex
On utorok 01 Február 2011 11:31:40 Johannes Meixner wrote:
Hello,
On Jan 30 14:35 Stanislav Visnovsky wrote (shortened):
On piatok 28 Január 2011 16:50:10 Arvin Schnell wrote: ...
1) Replace YCP with some common language? With more that 100
modules this looks impossible.
I think this is a good and the only viable option if YaST code should survive in long run.
For me this looks like a contradiction in itself because killing YCP would kill all code which is written in YCP.
Stanislav, what did you actually mean?
I mean YCP as programming language here. The only viable alternative is to , as you write below, phase it out: 1) introduce single alternative common programming language as 1st class citizen 2) move the codebase from YCP to this language, doing easy refactoring tasks where applicable (keep YaST as whole working) 3) deprecate YCP as programming language 4) look at architecture from perspective of the new codebase and new language I'm fan of small steps, not grand plans for redoing everything from scratch. Actually, I'm willing to contribute as time permits. Stano -- To unsubscribe, e-mail: yast-devel+unsubscribe@opensuse.org For additional commands, e-mail: yast-devel+help@opensuse.org
Stanislav Visnovsky write:
On utorok 01 Február 2011 11:31:40 Johannes Meixner wrote:
Hello,
On Jan 30 14:35 Stanislav Visnovsky wrote (shortened):
On piatok 28 Január 2011 16:50:10 Arvin Schnell wrote: ...
1) Replace YCP with some common language? With more that 100
modules this looks impossible.
I think this is a good and the only viable option if YaST code should survive in long run.
For me this looks like a contradiction in itself because killing YCP would kill all code which is written in YCP.
Stanislav, what did you actually mean?
I mean YCP as programming language here. The only viable alternative is to , as you write below, phase it out:
I agree.
1) introduce single alternative common programming language as 1st class citizen
Maybe it could be interesting to define our requirements on language. from my POV it should: 1) be easy testable 2) high-level ( in general we don't care about programming language performance as we do many time consuming tasks and if we need good performance in some part then use bindings (see below)) 3) easy debugging (it is really annoying debug ycp via debugger) 4) easy profiling (it is hard to find bottle neck) 5) easy bind libraries, especially in C and C++ 6) object oriented with exception ( it is related to 2 as it would be great if we can easy share object ( now we share functions and global variables and it is sometime really pain. Exception is good for error handling. It e.g. allow easy decide if error is from user or programmer and allow proper error message) 7) have at least medium community and codebase so we are not alone to maintain it or be one of two maintainers 8) be enough mature, so we don't need to fight with language 9) allow easy sharing code like python eggs, ruby gem or perl cpan so we can share our work where it make sense and have more users ( or easy use same code also in other our products - just try remember if other our product use any code written in YCP)
2) move the codebase from YCP to this language, doing easy refactoring tasks where applicable (keep YaST as whole working)
Also for codebase have good test coverage and clear purpose of all methods. Also sometime clean public API could be good (try to keep it simple :).
3) deprecate YCP as programming language
Yes, make sense.
4) look at architecture from perspective of the new codebase and new language
Absolutely make sense, especially reconsider if we need SCR agents architecture. Also consider better MVC model then now. Especially if we want share model there should be no UI calls.
I'm fan of small steps, not grand plans for redoing everything from scratch.
agree, small steps which is finished is better then grand plan which is never finished completely
Actually, I'm willing to contribute as time permits.
I can help with codebase and do code review :) Pepa
Stano
-- Josef Reidinger Appliance Toolkit team maintainer of perl-Bootloader, yast2-bootloader and parts of webyast and SLMS -- To unsubscribe, e-mail: yast-devel+unsubscribe@opensuse.org For additional commands, e-mail: yast-devel+help@opensuse.org
On Tue, Feb 01, 2011 at 12:48:57PM +0100, Josef Reidinger wrote:
Maybe it could be interesting to define our requirements on language. from my POV it should: 1) be easy testable 2) high-level ( in general we don't care about programming language performance as we do many time consuming tasks and if we need good performance in some part then use bindings (see below)) 3) easy debugging (it is really annoying debug ycp via debugger) 4) easy profiling (it is hard to find bottle neck) 5) easy bind libraries, especially in C and C++ 6) object oriented with exception ( it is related to 2 as it would be great if we can easy share object ( now we share functions and global variables and it is sometime really pain. Exception is good for error handling. It e.g. allow easy decide if error is from user or programmer and allow proper error message) 7) have at least medium community and codebase so we are not alone to maintain it or be one of two maintainers 8) be enough mature, so we don't need to fight with language 9) allow easy sharing code like python eggs, ruby gem or perl cpan so we can share our work where it make sense and have more users ( or easy use same code also in other our products - just try remember if other our product use any code written in YCP)
10) Small runtime environment for installation medium. 11) "Good" licence. 12) Allow to reduce module dependencies. E.g. in YCP if an "import" fails the program terminates. In Python it is possible to use "try import" and simply reduce the functionality at runtime. ciao Arvin -- Arvin Schnell, <aschnell@suse.de> Senior Software Engineer, Research & Development 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
* Arvin Schnell <aschnell@suse.de> [Feb 01. 2011 13:03]:
10) Small runtime environment for installation medium.
The meaning of 'small' varies, depending on whom you ask ;-) 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
On 02/01/2011 07:44 AM, Klaus Kaempf wrote:
* Arvin Schnell <aschnell@suse.de> [Feb 01. 2011 13:03]:
10) Small runtime environment for installation medium.
The meaning of 'small' varies, depending on whom you ask ;-)
Should we setup a survey? Five questions come to mind: What is your preferred implementation language for YaST(3)? - Other ________ - Perl - Python - Ruby - YCP - I am happy with YCP, leave it alone Are you and openSUSE member? - No - Yes Would you contribute to the re-implementation effort? - No - Yes If you answered Yes to the previous question, what area do you intend to contribute in? - Code (module re-implementation, new module development, base infrastructure code) - Documentation (including openSUSE Wiki, examples, tutorials etc.) - Testing (automated test development, interactive testing where required) Any conditions (other than time constraints) to your commitment to contribute? - For example "Will only contribute if implemented in my favorite language" Comment: _______________________________ Other questions to be added. I am happy to get this setup on Survey Monkey. Robert -- Robert Schweikert MAY THE SOURCE BE WITH YOU Software Engineer Consultant LINUX rschweikert@novell.com 781-464-8147 Novell Making IT Work As One -- To unsubscribe, e-mail: yast-devel+unsubscribe@opensuse.org For additional commands, e-mail: yast-devel+help@opensuse.org
On Tue, Feb 01, 2011 at 12:48:57PM +0100, Josef Reidinger wrote:
1) introduce single alternative common programming language as 1st class citizen
Maybe it could be interesting to define our requirements on language. from my POV it should: 1) be easy testable 2) high-level ( in general we don't care about programming language performance as we do many time consuming tasks and if we need good performance in some part then use bindings (see below)) 3) easy debugging (it is really annoying debug ycp via debugger) 4) easy profiling (it is hard to find bottle neck) 5) easy bind libraries, especially in C and C++ 6) object oriented with exception ( it is related to 2 as it would be great if we can easy share object ( now we share functions and global variables and it is sometime really pain. Exception is good for error handling. It e.g. allow easy decide if error is from user or programmer and allow proper error message) 7) have at least medium community and codebase so we are not alone to maintain it or be one of two maintainers 8) be enough mature, so we don't need to fight with language 9) allow easy sharing code like python eggs, ruby gem or perl cpan so we can share our work where it make sense and have more users ( or easy use same code also in other our products - just try remember if other our product use any code written in YCP)
I agree with all of this, but the problem is that the only conclusion I can make of this list is that any of Python, Ruby, Perl is vastly superior to YCP. It does not help to choose among the 3. -- Martin Vidner, YaST developer http://en.opensuse.org/User:Mvidner Kuracke oddeleni v restauraci je jako fekalni oddeleni v bazenu
* Martin Vidner <mvidner@suse.cz> [Feb 02. 2011 10:48]:
I agree with all of this, but the problem is that the only conclusion I can make of this list is that any of Python, Ruby, Perl is vastly superior to YCP. It does not help to choose among the 3.
Actually, the underlying implementation language shouldn't matter too much to a developer using a future YaST infrastructure. I would strongly suggest to look into the concept of domain specific languages and focus on systems managemen functionality instead of language specifics. The key is to use concepts a systems administrator is familiar with. To give you an example, lets assume we want to add a new harddisk as /abuild. The code could look like this # create a new 'handle' to manage the disk disk = Disk.new "/dev/..." # defaults to use the whole disk with ext4 disk.create_partition # alternative # disk.create_partition :filesystem => :btrfs disk.label = "Abuild" # create a 'mountpoint' object # 'system' is a global object representing the target mountpoint = system.mkdir "/abuild" # mount first disk partition, associates mountpoint object with partition mountpoint.mount disk.partitions.first # create fstab entry, mountpoint has all required information system.fstab.add mountpoint Those of you with Ruby knowledge will see the similarities ;-) And thats for a reason since Ruby is ideally suited to implement domain specific languages. 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
Hello, On Feb 2 11:14 Klaus Kaempf wrote:
Actually, the underlying implementation language shouldn't matter too much to a developer using a future YaST infrastructure.
I would strongly suggest to look into the concept of domain specific languages and focus on systems managemen functionality instead of language specifics.
The key is to use concepts a systems administrator is familiar with.
To give you an example, lets assume we want to add a new harddisk as /abuild. The code could look like this
# create a new 'handle' to manage the disk disk = Disk.new "/dev/..."
# defaults to use the whole disk with ext4 disk.create_partition
# alternative # disk.create_partition :filesystem => :btrfs
disk.label = "Abuild"
# create a 'mountpoint' object # 'system' is a global object representing the target mountpoint = system.mkdir "/abuild"
# mount first disk partition, associates mountpoint object with partition mountpoint.mount disk.partitions.first
# create fstab entry, mountpoint has all required information system.fstab.add mountpoint
Those of you with Ruby knowledge will see the similarities ;-) And thats for a reason since Ruby is ideally suited to implement domain specific languages.
On first glance it seems you like to replace the YaST specific language YCP with another YaST specific language (which could be now implemented in Ruby). Klaus, could you describe in more detail what you actually mean? Perhaps you meant something like what I would like to have: I do not care about the language. I do care about the ready to use set of functions (or classes or whatever such stuff is called in the particular language) which are provided by the YaST development environment so that I could implement my particular YaST modules easily. When I learned YCP I was searching for its built-in functions to change the system (e.g. change config files and so on). But I found out that there are no such functions in YCP. On the one hand YCP is THE language to implement YaST modules but on the other hand YCP does not provide functions to change the system. Basically YCP is only about the user interface! Then I learned about this other stuff how to change the system. I do not care very much about how to implement the UI because I do not need sophisticated UI functionality. I would be more interested how to change the system. I would like an easy to use framework to change the system (and not an obscure ini agent which destroyed config files). Kind Regards Johannes Meixner -- SUSE LINUX Products GmbH, Maxfeldstrasse 5, 90409 Nuernberg, Germany AG Nuernberg, HRB 16746, GF: Markus Rex -- To unsubscribe, e-mail: yast-devel+unsubscribe@opensuse.org For additional commands, e-mail: yast-devel+help@opensuse.org
* Johannes Meixner <jsmeix@suse.de> [Feb 02. 2011 15:19]:
On first glance it seems you like to replace the YaST specific language YCP with another YaST specific language (which could be now implemented in Ruby).
Well, not quite. I want to use one well known, documented, and maintained language (e.g. Ruby) as a foundation and provide domain-specific functionality. Thats like LEGO with pre-assembled parts to construct larger stuff more easily. These parts make it easier to build (write code), understand (read code) and fix (debug code) your LEGO construct. And you still have the small LEGO blocks (underlying programming language) available for full flexibility. And there is a strong focus on 'understand' how something is constructed and what it does. Code is usually written once by one programmer but read many times by different developers.
Klaus, could you describe in more detail what you actually mean?
Perhaps you meant something like what I would like to have:
I do not care about the language.
Well, you do, sort of. You do care about the language to reflect your problem domain (YaST modules for systems management). You also do care about the language being flexible and well-documented to allow you to go low-level and code your own functions.
I do care about the ready to use set of functions (or classes or whatever such stuff is called in the particular language) which are provided by the YaST development environment so that I could implement my particular YaST modules easily.
When I learned YCP I was searching for its built-in functions to change the system (e.g. change config files and so on). But I found out that there are no such functions in YCP. On the one hand YCP is THE language to implement YaST modules but on the other hand YCP does not provide functions to change the system. Basically YCP is only about the user interface!
YCP evolved that way because the UI part had a full-time developer caring about the user interface. Originally, YCP was intended as the glue between the 'system' part (SCR) and the 'user interface' .
Then I learned about this other stuff how to change the system.
I do not care very much about how to implement the UI because I do not need sophisticated UI functionality.
I would be more interested how to change the system. I would like an easy to use framework to change the system (and not an obscure ini agent which destroyed config files).
And thats exactly the point. You don't want to have code like SCR:Execute("/bin/mkdir", ...) but system.mkdir ... because 'mkdir' is something easily understood. 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
1) introduce single alternative common programming language as 1st class citizen
Maybe it could be interesting to define our requirements on language. from my POV it should: 1) be easy testable 2) high-level ( in general we don't care about programming language performance as we do many time consuming tasks and if we need good performance in some part then use bindings (see below)) 3) easy debugging (it is really annoying debug ycp via debugger) 4) easy profiling (it is hard to find bottle neck) 5) easy bind libraries, especially in C and C++ 6) object oriented with exception ( it is related to 2 as it would be great if we can easy share object ( now we share functions and global variables and it is sometime really pain. Exception is good for error handling. It e.g. allow easy decide if error is from user or programmer and allow proper error message) 7) have at least medium community and codebase so we are not alone to maintain it or be one of two maintainers 8) be enough mature, so we don't need to fight with language 9) allow easy sharing code like python eggs, ruby gem or perl cpan so we can share our work where it make sense and have more users ( or easy use same code also in other our products - just try remember if other our product use any code written in YCP)
I agree with all of this, but the problem is that the only conclusion I can make of this list is that any of Python, Ruby, Perl is vastly superior to YCP. It does not help to choose among the 3.
Also something to consider is in which platforms it should be usable. Gnome, KDE, +++ and also which HW platforms. Server? Desktop? Netbooks, Pads, appliances, mobile phones? Only considering Gnome/KDE and Server/Desktop would limit the possible userbase tremendously. Kind regards / Birger -- To unsubscribe, e-mail: yast-devel+unsubscribe@opensuse.org For additional commands, e-mail: yast-devel+help@opensuse.org
* Birger Kollstrand <birger.kollstrand@googlemail.com> [02-02-11 13:20]: ...
Also something to consider is in which platforms it should be usable. Gnome, KDE, +++ and also which HW platforms. Server? Desktop? Netbooks, Pads, appliances, mobile phones?
I was of the opinion (?mistakenly?) that YaST# was an openSUSE tool, not a desktop specific application.
Only considering Gnome/KDE and Server/Desktop would limit the possible userbase tremendously.
definitely and would cause all sorts of difficulties! -- (paka)Patrick Shanahan Plainfield, Indiana, USA HOG # US1244711 http://wahoo.no-ip.org Photo Album: http://wahoo.no-ip.org/gallery2 Registered Linux User #207535 @ http://counter.li.org -- To unsubscribe, e-mail: yast-devel+unsubscribe@opensuse.org For additional commands, e-mail: yast-devel+help@opensuse.org
On 02/02/2011 09:33 PM, Patrick Shanahan wrote:
* Birger Kollstrand<birger.kollstrand@googlemail.com> [02-02-11 13:20]: ...
Also something to consider is in which platforms it should be usable. Gnome, KDE, +++ and also which HW platforms. Server? Desktop? Netbooks, Pads, appliances, mobile phones?
I was of the opinion (?mistakenly?) that YaST# was an openSUSE tool, not a desktop specific application.
Only considering Gnome/KDE and Server/Desktop would limit the possible userbase tremendously.
This is a very important part because as Linux evolved and YaST stayed the same, the needs for YaST are different. Look at the desktop: Who needs sound configuration? In 2003 it was pretty useful, but nowadays I only used the module to enable or disable pulseaudio, which is a thing the user should not care about as this switch exists only because pulseaudio was broken. Printer? I don't remember configuring a printer since long time. They just show up. Network. I only use yast2 lan when I break my factory system's networkmanager. Package Management? See how beautifully integrated package management is in the KDE-4 user-mode control center. No root, simple interface. For something more advanced you have zypper, for something more friendly there is an appstore coming. The only parts I see relevant in _my_ laptop to setup via YaST is fingerprint reader because they don't work out of the box (why?). I also create users because there is some extra magic in the way YaST does it. May be firewall. However all the above could be done directly from the desktop, because you need app integration: ie, install P2P program, it should be able to open a port from the application. So what is really YaST role in the desktop? -- Duncan Mac-Vicar P. - Novell® Making IT Work As One™ SUSE LINUX Products GmbH, GF: Markus Rex, HRB 16746 (AG Nuernberg) -- To unsubscribe, e-mail: yast-devel+unsubscribe@opensuse.org For additional commands, e-mail: yast-devel+help@opensuse.org
Am Thu 03 Feb 2011 08:57:35 AM CET schrieb "Duncan Mac-Vicar P." <dmacvicar@suse.de>:
On 02/02/2011 09:33 PM, Patrick Shanahan wrote:
* Birger Kollstrand<birger.kollstrand@googlemail.com> [02-02-11 13:20]: ...
Also something to consider is in which platforms it should be usable. Gnome, KDE, +++ and also which HW platforms. Server? Desktop? Netbooks, Pads, appliances, mobile phones?
I was of the opinion (?mistakenly?) that YaST# was an openSUSE tool, not a desktop specific application.
Only considering Gnome/KDE and Server/Desktop would limit the possible userbase tremendously.
This is a very important part because as Linux evolved and YaST stayed the same, the needs for YaST are different.
Look at the desktop:
Printer? I don't remember configuring a printer since long time. They just show up.
I tried the printer module and in handles printer sharing and behaviour. But not drivers.
Network. I only use yast2 lan when I break my factory system's networkmanager.
I use network to configure several tap interfaces and connect them by bridge. It's great for virtualbox and soooo easy to do in yast.
Package Management? See how beautifully integrated package management is in the KDE-4 user-mode control center. No root, simple interface. For something more advanced you have zypper, for something more friendly there is an appstore coming.
Cool! Are there similar tools for Gnome, console (ncurses), LXDE ?
The only parts I see relevant in _my_ laptop to setup via YaST is fingerprint reader because they don't work out of the box (why?). I also create users because there is some extra magic in the way YaST does it. May be firewall.
Yes, once you focus just on a Desktop, your arguments make sense. But openSUSE so far is "universal". Once there is a split to openSUSE Desktop and openSUSE Server, there are many ways to optimize. This can be just part of the installation - do you want typical Desktop, Server, Expert's system ? The package selection should reflect that. I understand your point - who needs Infrared device, Joystick attached to a sound card, DSL, ISDN, Modem these days? Many modules just display contents from some configuration file (fstab, hostname) without any higher abstraction. So the service they essentially provide is "syntax checking" (without a choice to override). To evolve to a more usable state I would suggest: for experts - syntax (& semantics) aware editor of config files for novices - a (much) higher abstraction (yes, it's hard)
So what is really YaST role in the desktop?
Yes, YaST is not that useful for novices on Desktop anymore. So let's make it a tool for experts. Cheers, Martin -- To unsubscribe, e-mail: yast-devel+unsubscribe@opensuse.org For additional commands, e-mail: yast-devel+help@opensuse.org
On 02/03/2011 11:28 AM, Martin Kudlvasr wrote:
I tried the printer module and in handles printer sharing and behaviour. But not drivers.
If you click on add, it allows you to select drivers.
I use network to configure several tap interfaces and connect them by bridge. It's great for virtualbox and soooo easy to do in yast.
Oh yes, this is true. I also did this. But this is a developer's usecase, not a desktop user one.
Package Management? See how beautifully integrated package management is in the KDE-4 user-mode control center. No root, simple interface. For something more advanced you have zypper, for something more friendly there is an appstore coming. Cool! Are there similar tools for Gnome, console (ncurses), LXDE ?
Who cares. Desktop is not about ncurses, and including LXDE means you need to care about GNUStep, Etoile, etc. The list is infinite. Console users have zypper. Other desktop should write their own stuff on top of PackageKit, just like KDE and Gnome did. (note: for console you have pkcon as non-root as well)
Yes, once you focus just on a Desktop, your arguments make sense. But openSUSE so far is "universal". Once there is a split to openSUSE Desktop and openSUSE Server, there are many ways to optimize. This can be just part of the installation - do you want typical Desktop, Server, Expert's system ? The package selection should reflect that.
This is why I see openSUSE as Debian, and not as Ubuntu. It is a collection of packages without much coherence, but not a "product".
I understand your point - who needs Infrared device, Joystick attached to a sound card, DSL, ISDN, Modem these days? Many modules just display contents from some configuration file (fstab, hostname) without any higher abstraction. So the service they essentially provide is "syntax checking" (without a choice to override).
Yes. The best configuration at all is the automatic/nonexistant one.
To evolve to a more usable state I would suggest: for experts - syntax (& semantics) aware editor of config files for novices - a (much) higher abstraction (yes, it's hard)
For novices, if you need any configuration at all, it should be based on his knowledge. I remember mysql configuration: "What will you use this MySQL server for?" (o) Development environment ( ) LAN server ( ) Heavy loaded server facing the internet Depending on the selection, all tunings, security decisions, etc were made for you. A colleague also showed me a backup tool he wrote. I was surprised by some UI decisions we usually fail when the target is a newbie: Excludes: instead of wildcards, there where checkboxes with "Music", "Documents" "Videos". Frequency and versions kept: just a slidebar between Paranoid and not paranoid.
Yes, YaST is not that useful for novices on Desktop anymore. So let's make it a tool for experts.
I agree. Everything that is not for experts should work out of the box or configured once by asking a few questions. -- Duncan Mac-Vicar P. - Novell® Making IT Work As One™ SUSE LINUX Products GmbH, GF: Markus Rex, HRB 16746 (AG Nuernberg) -- To unsubscribe, e-mail: yast-devel+unsubscribe@opensuse.org For additional commands, e-mail: yast-devel+help@opensuse.org
2011/2/3 Duncan Mac-Vicar P. <dmacvicar@suse.de>: : :
Yes, YaST is not that useful for novices on Desktop anymore. So let's make it a tool for experts.
I agree. Everything that is not for experts should work out of the box or configured once by asking a few questions.
So a set of defaults and then what if something needs tweeking? Suse has always been a power distro so it might be disapointing with no possibility to use advanced options? If this is the path forward: to fokus on autoconfig on all platforms but the server, would that change the base for the technology(s) to use? Kind regards / Birger -- To unsubscribe, e-mail: yast-devel+unsubscribe@opensuse.org For additional commands, e-mail: yast-devel+help@opensuse.org
On Thursday 03 February 2011 11:28:38 Martin Kudlvasr wrote:
I understand your point - who needs Infrared device, Joystick attached to a sound card, DSL, ISDN, Modem these days? Many modules just display contents from some configuration file (fstab, hostname) without any higher abstraction. So the service they essentially provide is "syntax checking" (without a choice to override).
There is one point about just dumb editors of configuration files: AutoYaST. Getting rid of these modules completly would also mean that we get rid of related AutoYaST functionality. And once we have the AutoYaST functionality, run-time functionality is, depending on particular case, mostly for free. However, I agree that there are modules which are not needed any more for none of YaST's use cases (e.g. ISDN module). Jiri -- Regards, Jiri Srain YaST Team Leader --------------------------------------------------------------------- SUSE LINUX, s.r.o. e-mail: jsrain@suse.cz Lihovarska 1060/12 tel: +420 284 084 659 190 00 Praha 9 fax: +420 284 084 001 Czech Republic http://www.suse.cz -- To unsubscribe, e-mail: yast-devel+unsubscribe@opensuse.org For additional commands, e-mail: yast-devel+help@opensuse.org
On 02/03/2011 02:57 AM, Duncan Mac-Vicar P. wrote:
On 02/02/2011 09:33 PM, Patrick Shanahan wrote:
* Birger Kollstrand<birger.kollstrand@googlemail.com> [02-02-11 13:20]: ...
Also something to consider is in which platforms it should be usable. Gnome, KDE, +++ and also which HW platforms. Server? Desktop? Netbooks, Pads, appliances, mobile phones?
I was of the opinion (?mistakenly?) that YaST# was an openSUSE tool, not a desktop specific application.
Only considering Gnome/KDE and Server/Desktop would limit the possible userbase tremendously.
This is a very important part because as Linux evolved and YaST stayed the same, the needs for YaST are different.
Look at the desktop:
Who needs sound configuration? In 2003 it was pretty useful, but nowadays I only used the module to enable or disable pulseaudio, which is a thing the user should not care about as this switch exists only because pulseaudio was broken.
Printer? I don't remember configuring a printer since long time. They just show up.
Network. I only use yast2 lan when I break my factory system's networkmanager.
Package Management? See how beautifully integrated package management is in the KDE-4 user-mode control center. No root, simple interface. For something more advanced you have zypper, for something more friendly there is an appstore coming.
The only parts I see relevant in _my_ laptop to setup via YaST is fingerprint reader because they don't work out of the box (why?). I also create users because there is some extra magic in the way YaST does it. May be firewall.
However all the above could be done directly from the desktop, because you need app integration: ie, install P2P program, it should be able to open a port from the application.
So what is really YaST role in the desktop?
This sounds like you are advocating for no YaST. However, not every system is a desktop, not every system uses Network manager, .... the list goes on. I find the printer module quite useful, as well as the network configuration.... Yes, I could configure printers via the cups web based UI, but now I loose the integration. Following this train of thought to it's logical conclusion leads to running 20 different tools for every configuration task, that sucks ! One of the strengths of YaST is the integration it provides. Robert -- Robert Schweikert MAY THE SOURCE BE WITH YOU Novell-IBM Software Integration Center LINUX Tech Lead rschweikert@novell.com rschweikert@ca.ibm.com 781-464-8147 Novell Making IT Work As One -- To unsubscribe, e-mail: yast-devel+unsubscribe@opensuse.org For additional commands, e-mail: yast-devel+help@opensuse.org
Hello, On Feb 3 08:21 Robert Schweikert wrote (shortened):
Yes, I could configure printers via the cups web based UI, but now I loose the integration.
What do you mean with "integration"? Do you perhaps mean that YaST provides the same kind of user interface for all its modules? Or do you perhaps mean that e.g. the YaST printer module "knows" the openSUSE printer driver package RPM names so that it can provide a dialog to install (or remove) them? Kind Regards Johannes Meixner -- SUSE LINUX Products GmbH, Maxfeldstrasse 5, 90409 Nuernberg, Germany AG Nuernberg, HRB 16746, GF: Markus Rex -- To unsubscribe, e-mail: yast-devel+unsubscribe@opensuse.org For additional commands, e-mail: yast-devel+help@opensuse.org
On 02/03/2011 10:22 AM, Johannes Meixner wrote:
Hello,
On Feb 3 08:21 Robert Schweikert wrote (shortened):
Yes, I could configure printers via the cups web based UI, but now I loose the integration.
What do you mean with "integration"?
YaST is an integrated tool, as a user I do not have to remember a gazzillion names for a gazillion configuration tools. All I need to do is start YaST, then either via point and click if in GUI mode or via keyboard in ncurses mode I can pretty much configure everything there is to configure. No need to remember that networking is really configured via the lan module, etc. If I have to remember different names and for different config tools I might as well remember where all the config files are and edit them by hand. Now I am at the same state we had way back when....
Do you perhaps mean that YaST provides the same kind of user interface for all its modules?
Or do you perhaps mean that e.g. the YaST printer module "knows" the openSUSE printer driver package RPM names so that it can provide a dialog to install (or remove) them?
Both Robert -- Robert Schweikert MAY THE SOURCE BE WITH YOU Novell-IBM Software Integration Center LINUX Tech Lead rschweikert@novell.com rschweikert@ca.ibm.com 781-464-8147 Novell Making IT Work As One -- To unsubscribe, e-mail: yast-devel+unsubscribe@opensuse.org For additional commands, e-mail: yast-devel+help@opensuse.org
On 02/03/2011 02:21 PM, Robert Schweikert wrote:
This sounds like you are advocating for no YaST. However, not every system is a desktop, not every system uses Network manager, .... the list goes on. I find the printer module quite useful, as well as the network configuration....
No. I am advocating for as less YaST as possible... _on the desktop_.
Yes, I could configure printers via the cups web based UI, but now I loose the integration. Following this train of thought to it's logical conclusion leads to running 20 different tools for every configuration task, that sucks ! One of the strengths of YaST is the integration it provides.
What do you what to "configure"? I print every day and I have never configured anything. -- Duncan Mac-Vicar P. - Novell® Making IT Work As One™ SUSE LINUX Products GmbH, GF: Markus Rex, HRB 16746 (AG Nuernberg) -- To unsubscribe, e-mail: yast-devel+unsubscribe@opensuse.org For additional commands, e-mail: yast-devel+help@opensuse.org
On Friday 04 February 2011 09:55:56 Duncan Mac-Vicar P. wrote:
Yes, I could configure printers via the cups web based UI, but now I loose the integration. Following this train of thought to it's logical conclusion leads to running 20 different tools for every configuration task, that sucks ! One of the strengths of YaST is the integration it provides.
What do you what to "configure"? I print every day and I have never configured anything.
Retry it with reinstalling you machine while the printer is disconnected or powered off. Or retry it within a LAN where you do not have any CUPS server offering printers. I doubt that there are many users out there willing to maintain their own CUPS server in order not to have to use a YaST printer module. I am very glad to have the printer configuration module as I do not want to configure CUPS manually. Ciao, Daniel -- J. Daniel Schmidt <jdsn@suse.de> SUSE Linux Products GmbH Research & Development Maxfeldstr. 5 GF: Markus Rex, HRB 16746 (AG Nürnberg) D-90409 Nürnberg -- To unsubscribe, e-mail: yast-devel+unsubscribe@opensuse.org For additional commands, e-mail: yast-devel+help@opensuse.org
I doubt that there are many users out there willing to maintain
On 02/04/2011 10:10 AM, J. Daniel Schmidt wrote: their own CUPS
server in order not to have to use a YaST printer module.
I am very glad to have the printer configuration module as I do not want to configure CUPS manually.
Yes you have a point there. OSX also uses CUPS, but the printer configuration is a small settings on the desktop and not a system wide configuration that you need first that it exists. I still wonder, if there is a printer database, why it is not possible to just plug the printer, have some rule match the id, pick the right ppd, adjust/restart cups, everything automatically (basically what Windows does if you throw the vendor CDs to the trash first). -- Duncan Mac-Vicar P. - Novell® Making IT Work As One™ SUSE LINUX Products GmbH, GF: Markus Rex, HRB 16746 (AG Nuernberg) -- To unsubscribe, e-mail: yast-devel+unsubscribe@opensuse.org For additional commands, e-mail: yast-devel+help@opensuse.org
On Friday 04 February 2011 11:00:00 Duncan Mac-Vicar P. wrote:
OSX also uses CUPS, but the printer configuration is a small settings on the desktop and not a system wide configuration that you need first that it exists.
It is only 'presented' as a setting on the desktop, but what they do is to configure the system wide CUPS configuration. OS X just shows this module next to the other custom desktop settings. So it seems to be a desktop setting - but it isn't. Btw. the OS X "Sharing" module also changes system wide configuration as it creates Samba, FTP and NFS shares. So would you say, that it would help to integrate the YaST modules into the desktop configuration docks of each desktop?
I still wonder, if there is a printer database, why it is not possible to just plug the printer, have some rule match the id, pick the right ppd, adjust/restart cups, everything automatically (basically what Windows does if you throw the vendor CDs to the trash first).
Because the world is not perfect. There is a bugzilla database but still no bug-free linux distribution, why? You can do a lot of autoconfiguration with printers - actually we do, as you experienced yourself :) So a CUPS server on the local LAN is just used by default. A connected (and supported) printer can be autoconfigured during installation - but note: its the YaST printer module that does this (it does exactly what you describe above: pick a ppd and restart cups). But there are printers and print server out there that are not that easy to configure. Speaking of my print server at home, I will always have to configure it manually, as it is just a dump (hardware) print server - no CUPS, just plain lpd via network. This device doesn't even tell what printer is connected to it. I already printed on my printer from various linux distributions, several Mac OS X versions and a small number of Windows systems. But none of them was able to detect the printer automatically, I always had to configure it manually. So there actually is a need for a manual configuration module. But of course lets autoconfigure as much as possible. Ciao, Daniel -- J. Daniel Schmidt <jdsn@suse.de> SUSE Linux Products GmbH Research & Development Maxfeldstr. 5 GF: Markus Rex, HRB 16746 (AG Nürnberg) D-90409 Nürnberg -- To unsubscribe, e-mail: yast-devel+unsubscribe@opensuse.org For additional commands, e-mail: yast-devel+help@opensuse.org
Off topic! Hello, On Feb 4 11:00 Duncan Mac-Vicar P. wrote (shortened):
I still wonder, if there is a printer database,
There is no such thing as a printer database where printer IDs of current USB printer models are mapped to printer driver descriptions (PPDs). As far as I know there is not any kind of database where something like SNMP printer IDs of network printes are mapped to printer driver descriptions. Lists of USB printer IDs and lists of SNMP printer stuff may exist and all what is missing is this tiny litte part to map them to printer driver descriptions. Of course nothing could be more easy.
From a theoretical point of view...
In practice this idea pops up every now and then but nothing had changed for many years - guess why! Kind Regards Johannes Meixner -- SUSE LINUX Products GmbH, Maxfeldstrasse 5, 90409 Nuernberg, Germany AG Nuernberg, HRB 16746, GF: Markus Rex -- To unsubscribe, e-mail: yast-devel+unsubscribe@opensuse.org For additional commands, e-mail: yast-devel+help@opensuse.org
On 02/04/2011 11:48 AM, Johannes Meixner wrote:
Off topic!
Hello,
On Feb 4 11:00 Duncan Mac-Vicar P. wrote (shortened):
I still wonder, if there is a printer database,
There is no such thing as a printer database where printer IDs of current USB printer models are mapped to printer driver descriptions (PPDs).
I think the OpenPrinting DB meets this need http://www.linuxfoundation.org/collaborate/workgroups/openprinting/databased... Robert -- Robert Schweikert MAY THE SOURCE BE WITH YOU Novell-IBM Software Integration Center LINUX Tech Lead rschweikert@novell.com rschweikert@ca.ibm.com 781-464-8147 Novell Making IT Work As One -- To unsubscribe, e-mail: yast-devel+unsubscribe@opensuse.org For additional commands, e-mail: yast-devel+help@opensuse.org
On 02/04/2011 06:46 PM, Robert Schweikert wrote:
I think the OpenPrinting DB meets this need
http://www.linuxfoundation.org/collaborate/workgroups/openprinting/databased...
Yes, with that you could even tell the user if the printer will work at all, and download the driver. However, as YaST runs as root, there has not been much integration with the web. Something to fix. -- Duncan Mac-Vicar P. - Novell® Making IT Work As One™ SUSE LINUX Products GmbH, GF: Markus Rex, HRB 16746 (AG Nuernberg) -- To unsubscribe, e-mail: yast-devel+unsubscribe@opensuse.org For additional commands, e-mail: yast-devel+help@opensuse.org
Hello Duncan, On Feb 7 11:51 Duncan Mac-Vicar P. wrote (shortened):
http://www.linuxfoundation.org/collaborate/workgroups/openprinting/databased...
... with that you could even tell the user if the printer will work at all, and download the driver.
However, as YaST runs as root, there has not been much integration with the web. Something to fix.
Don't only talk about wishes! Contribute something that helps to get it done! First of all check and solve the legal issues. Then check and solve the security issues. Finally one can add the code. This obviously needed feature is planned since a long time (since before openSUSE 11.1), see the "Add Driver" description at http://en.opensuse.org/Archive:YaST_Printer_redesign and see a first idea how a matching dialog may look like http://en.opensuse.org/images/e/ef/Printer_mschmidkunz_rc2_driverwizard_grey... My matching FATE request got no single comment since Sep 2009 https://fate.novell.com/307745 Obviously nobody is actually interested in such issues. My attempts to implement it on my own got stuck in the tar pit of legal issues or were trapped in the snake pit of security issues. I look forward to get those issues now solved by you so that I can finally implement what I like to have. Provide a secure and legal framework how to download and install third-party RPMs "as is" from within YaST and I will instantly implement printer driver download from OpenPrinting.org. Kind Regards Johannes Meixner -- SUSE LINUX Products GmbH, Maxfeldstrasse 5, 90409 Nuernberg, Germany AG Nuernberg, HRB 16746, GF: Markus Rex -- To unsubscribe, e-mail: yast-devel+unsubscribe@opensuse.org For additional commands, e-mail: yast-devel+help@opensuse.org
Hello, On Feb 4 12:46 Robert Schweikert wrote (shortened):
On 02/04/2011 11:48 AM, Johannes Meixner wrote:
Off topic!
Hello,
On Feb 4 11:00 Duncan Mac-Vicar P. wrote (shortened):
I still wonder, if there is a printer database,
There is no such thing as a printer database where printer IDs of current USB printer models are mapped to printer driver descriptions (PPDs).
I think the OpenPrinting DB meets this need
You think about your wishes - but you don't know about the reality. Any database and of course in particular the OpenPrinting database could do this - if someone added the data! Guess what: Even plain PPD files support this. Adobe wasn't stupid when the PPD spec. was made a long time ago. All what is missing is the actual data! There is no need for whatever additional databases to set up printers. Plain PPDs are perfectly sufficient. And in some cases it works already - what a surprise! But I a printer setup tool which only works in some cases is not what users really need. In those cases where automatic printer setup works there is obviously no need that a user runs a printer setup tool to set up his printer manually. Kind Regards Johannes Meixner -- SUSE LINUX Products GmbH, Maxfeldstrasse 5, 90409 Nuernberg, Germany AG Nuernberg, HRB 16746, GF: Markus Rex -- To unsubscribe, e-mail: yast-devel+unsubscribe@opensuse.org For additional commands, e-mail: yast-devel+help@opensuse.org
Hello, On Feb 3 08:57 Duncan Mac-Vicar P. wrote (shortened):
Look at the desktop: ... Printer? I don't remember configuring a printer since long time. They just show up.
The YaST printer module (like any setup tool) is not meant for those cases where the stuff works automatically, see http://en.opensuse.org/YaST_Printer#Manual_Printer_Configuration_with_the_Ya... Kind Regards Johannes Meixner -- SUSE LINUX Products GmbH, Maxfeldstrasse 5, 90409 Nuernberg, Germany AG Nuernberg, HRB 16746, GF: Markus Rex -- To unsubscribe, e-mail: yast-devel+unsubscribe@opensuse.org For additional commands, e-mail: yast-devel+help@opensuse.org
On Tuesday, February 01, 2011 12:01:22 pm Stanislav Visnovsky wrote: [...]
I'm fan of small steps, not grand plans for redoing everything from scratch.
I fully agree. There already exists a project that is a complete new YaST without legacy code like YCP and it uses a cool and object oriented script language. It's called webyast. :-) For YaST I think we shouldn't try to refactor everything for the sake of refatoring. We already have a robust framework, let's focus on how we can add benefits for the users to YaST, e.g. the snapper feature. If the implementation of this feature needs architectural changes I totally fine with it. Thomas -- Thomas Goettlicher SUSE LINUX Products GmbH, GF: Markus Rex, HRB 16746 (AG Nuernberg) -- To unsubscribe, e-mail: yast-devel+unsubscribe@opensuse.org For additional commands, e-mail: yast-devel+help@opensuse.org
On Tue, Feb 01, 2011 at 03:01:19PM +0100, Thomas Goettlicher wrote:
On Tuesday, February 01, 2011 12:01:22 pm Stanislav Visnovsky wrote: [...]
I'm fan of small steps, not grand plans for redoing everything from scratch.
I fully agree.
There already exists a project that is a complete new YaST without legacy code like YCP and it uses a cool and object oriented script language. It's called webyast. :-)
That is not true. Many (8?) WY modules use YaPI to call legacy YaST, for better or worse. ls YaST:Web/*/*.pm -- Martin Vidner, YaST developer http://en.opensuse.org/User:Mvidner Kuracke oddeleni v restauraci je jako fekalni oddeleni v bazenu
On Wednesday, February 02, 2011 10:03:19 am Martin Vidner wrote:
On Tue, Feb 01, 2011 at 03:01:19PM +0100, Thomas Goettlicher wrote:
On Tuesday, February 01, 2011 12:01:22 pm Stanislav Visnovsky wrote: [...]
I'm fan of small steps, not grand plans for redoing everything from scratch.
I fully agree.
There already exists a project that is a complete new YaST without legacy code like YCP and it uses a cool and object oriented script language. It's called webyast. :-)
That is not true. Many (8?) WY modules use YaPI to call legacy YaST, for better or worse. ls YaST:Web/*/*.pm Okay, let me rephrase my statement: There already is a yast-project that uses ruby and tried to get rid of YCP.
-- Thomas Goettlicher SUSE LINUX Products GmbH, GF: Markus Rex, HRB 16746 (AG Nuernberg) -- To unsubscribe, e-mail: yast-devel+unsubscribe@opensuse.org For additional commands, e-mail: yast-devel+help@opensuse.org
Arvin, thanks a lot for stepping forward and starting this dicussion ! * Arvin Schnell <aschnell@suse.de> [Jan 28. 2011 16:50]:
So what seems desirable and feasible? Some ideas:
Which goals would you achieve by implementing these ideas ?
1) Replace YCP with some common language? With more that 100 modules this looks impossible.
A lot of modules will have to be removed anyway as there are no resources to keep them all. Replacing YCP seems more feasible with a limited set of modules (implementing a limited set of features)
2) Allow a common language next to YCP? A good integration seems difficult.
I would assume this will add confusion.
3) Improve YCP (at least fix bugs)? Do we want that?
Can you name any specific areas in YCP urgently requiring fixes ?
4) Better bindings of C/C++ libraries for YCP?
Having good APIs is certainly a big plus, but investing into YCP does not seem appropriate.
Other suggestion?
Can we make existing YaST modules reusable, i.e. by providing well defined APIs (D-Bus, REST, Perl, Python, Ruby, whatever) ? 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
On Mon, Jan 31, 2011 at 10:53:51AM +0100, Klaus Kaempf wrote:
Arvin,
thanks a lot for stepping forward and starting this dicussion !
* Arvin Schnell <aschnell@suse.de> [Jan 28. 2011 16:50]:
So what seems desirable and feasible? Some ideas:
Which goals would you achieve by implementing these ideas ?
From the company point of view I see these goal: - Keep YaST maintainable with a few people, not necessarily those that developed it the last ten years. - Easier integration of existing libraries, e.g. augeas, since we still have to implement new features. Right now we start to implement btrfs based snapshots where we will have a C++ library for the basic funcionality. - Make it easier for external contributions. ciao Arvin -- Arvin Schnell, <aschnell@suse.de> Senior Software Engineer, Research & Development 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
* Arvin Schnell <aschnell@suse.de> [Jan 31. 2011 11:30]:
On Mon, Jan 31, 2011 at 10:53:51AM +0100, Klaus Kaempf wrote:
Which goals would you achieve by implementing these ideas ?
From the company point of view I see these goal:
- Keep YaST maintainable with a few people, not necessarily those that developed it the last ten years.
I see this as a case against YCP.
- Easier integration of existing libraries, e.g. augeas, since we still have to implement new features. Right now we start to implement btrfs based snapshots where we will have a C++ library for the basic funcionality.
Many libraries come with bindings nowadays. Augeas provides Python, Ruby, and Perl: http://augeas.net/download.html Again, a case against investing into YCP.
- Make it easier for external contributions.
Where do external contributors currently struggle ? Is it YCP ? Is it lack of documentation ? What else ? 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
Hi all, This is from someone that would like to contribute, but soon gave up when being faced with yet anoter language. 2011/1/31 Klaus Kaempf <kkaempf@suse.de>: >> > Which goals would you achieve by implementing these ideas ? >> >> From the company point of view I see these goal: For Novell as a company, to maintain the competance in YCP must be a loss. Using standard languages would make it possible to resue the competence in other projects. This would also of course make it much easier to get new employees up and running and to receive contributions fro a larger community. Also if the new language is selected according to what other distribution uses, then reuse between projects is a much better option. I love the way Yast works for me as a user, and I would hate to see it slowly go down the drain. I know RedHat/Fedora uses a lot of Python but have no clue what Debian/Ubuntu uses. My personal preferences would be to use Python/Qt for the most part :-) . Please consider the portability to smaller platforms when going forward, to only make it a server/desktop tool would be a pitty at this stage. > >> >> - Easier integration of existing libraries, e.g. augeas, since we >> still have to implement new features. Right now we start to >> implement btrfs based snapshots where we will have a C++ >> - Make it easier for external contributions. > > Where do external contributors currently struggle ? Is it YCP ? Is it > lack of documentation ? What else ? >From my point: - YCP is a no go - a consistent description of toolset, architecture and a getting started "guide" If a migration is decided, willit be possible to have a core set of modules in the new system and keep the rest in the old? Kind regards Birger -- To unsubscribe, e-mail: yast-devel+unsubscribe@opensuse.org For additional commands, e-mail: yast-devel+help@opensuse.org
On Friday, January 28, 2011 04:50:10 pm Arvin Schnell wrote:
So what seems desirable and feasible? Some ideas:
1) Replace YCP with some common language? With more that 100 modules this looks impossible.
2) Allow a common language next to YCP? A good integration seems difficult.
3) Improve YCP (at least fix bugs)? Do we want that?
4) Better bindings of C/C++ libraries for YCP?
Other suggestion?
Replacing all YCP code at once seems to be impossible. If we want to offer a new language for YaST we should choose _one_ and then stick to it. New modules can be written in this new language and old modules can be ported one by one if needed and when time permits. If we choose the way as described above, YCP will stay for a longer period and therefore it makes sense to fix major YCP bugs. -- Thomas Goettlicher SUSE LINUX Products GmbH, GF: Markus Rex, HRB 16746 (AG Nuernberg) -- To unsubscribe, e-mail: yast-devel+unsubscribe@opensuse.org For additional commands, e-mail: yast-devel+help@opensuse.org
On Monday 31 January 2011 11:10:55 Thomas Goettlicher wrote:
On Friday, January 28, 2011 04:50:10 pm Arvin Schnell wrote:
So what seems desirable and feasible? Some ideas:
1) Replace YCP with some common language? With more that 100
modules this looks impossible.
2) Allow a common language next to YCP? A good integration seems
difficult.
3) Improve YCP (at least fix bugs)? Do we want that?
4) Better bindings of C/C++ libraries for YCP?
Other suggestion?
Replacing all YCP code at once seems to be impossible. If we want to offer a new language for YaST we should choose _one_ and then stick to it. New modules can be written in this new language and old modules can be ported one by one if needed and when time permits.
In the past, we have made attempts with various languages. We have enhanced the infrastructure so that it should allow a python-only module (take Python as an example here), we have made some prototypes, but from some reason I cannot remember a single non-YCP module which was finished. Maybe we should collect the issues found during these experiments, there can be easy solutions of them. To be honest, I see one point which makes the transition hard: YCP was a single-purpose programming language and once you speak it fluently, you can write new modules very quickly and effectively. Many of those of us who tried Perl value YCP's strong typing system, for example. I don't want to start a flame regarding this. It is not universal reason valid for everyone but matches opinion of a group of developers based on a real-life experience. That's why I'd like to have an overview of issues with Python, Ruby, etc., from a real experience, ideally based on a prototype YaST module, and see how to tackle them. Jiri
If we choose the way as described above, YCP will stay for a longer period and therefore it makes sense to fix major YCP bugs.
-- Regards, Jiri Srain YaST Team Leader --------------------------------------------------------------------- SUSE LINUX, s.r.o. e-mail: jsrain@suse.cz Lihovarska 1060/12 tel: +420 284 084 659 190 00 Praha 9 fax: +420 284 084 001 Czech Republic http://www.suse.cz -- To unsubscribe, e-mail: yast-devel+unsubscribe@opensuse.org For additional commands, e-mail: yast-devel+help@opensuse.org
On 01/31/2011 03:56 PM, Jiri Srain wrote:
In the past, we have made attempts with various languages. We have enhanced the infrastructure so that it should allow a python-only module (take Python as an example here), we have made some prototypes, but from some reason I cannot remember a single non-YCP module which was finished. Maybe we should collect the issues found during these experiments, there can be easy solutions of them.
You mean the attempts using the ycp language bindings? I think if you want to provide a real replacement a module needs to be done and iterated until the framework below matures to a point where it is more useful. e.g.: ruby bindings never supported UI except for a very weird way: there was no support for UI terms in ruby, and the real way to do it, using blocks and DSLs was never finished. There was no support for translations, etc etc etc (the rest of the 20%). Also, YaST has strong conventions due to having lot of developers in the same room coding ycp for years. If a new way of doing a module exists, it needs to get conventions and good practices, as a language like python or ruby allow for more creativity when it comes to do weird things, which is cool in the exception case, but not as the default. -- Duncan Mac-Vicar P. - Novell® Making IT Work As One™ SUSE LINUX Products GmbH, GF: Markus Rex, HRB 16746 (AG Nuernberg) -- To unsubscribe, e-mail: yast-devel+unsubscribe@opensuse.org For additional commands, e-mail: yast-devel+help@opensuse.org
On Jan 31, 2011, at 3:10 AM, Thomas Goettlicher wrote:
If we want to offer a new language for YaST we should choose _one_ and then stick to it.
+1. -- To unsubscribe, e-mail: yast-devel+unsubscribe@opensuse.org For additional commands, e-mail: yast-devel+help@opensuse.org
On Mon, Jan 31, 2011 at 10:08:00AM -0700, Bart Whiteley wrote:
On Jan 31, 2011, at 3:10 AM, Thomas Goettlicher wrote:
If we want to offer a new language for YaST we should choose _one_ and then stick to it.
+1.
Yes. It will be difficult, because each of the obvious suspects has arguments in favor for it: Perl is most used in existing YaST modules after YCP. Python is most popular with other distros for managing the system. (as Birger mentioned) Ruby is most used for new development in our department. But we need to choose one: - it will be good to send out a clear message to potential contributors - our time is limited. Other bindings need not be dropped right now, but we cannot develop and promote them all. -- Martin Vidner, YaST developer http://en.opensuse.org/User:Mvidner Kuracke oddeleni v restauraci je jako fekalni oddeleni v bazenu
* Martin Vidner <mvidner@suse.cz> [Jan 31. 2011 18:22]:
On Mon, Jan 31, 2011 at 10:08:00AM -0700, Bart Whiteley wrote:
On Jan 31, 2011, at 3:10 AM, Thomas Goettlicher wrote:
If we want to offer a new language for YaST we should choose _one_ and then stick to it.
+1.
Yes. It will be difficult, because each of the obvious suspects has arguments in favor for it:
Perl is most used in existing YaST modules after YCP. Python is most popular with other distros for managing the system. (as Birger mentioned) Ruby is most used for new development in our department.
This decision should be left to the people who will actually work on YaST going forward. 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
Dne pondělí 31 Leden 2011 18:22:14 Martin Vidner napsal(a):
Perl is most used in existing YaST modules after YCP.
Yes. And it is also used in YaPI, which was at some time considered as a future public API to YaST functionality. This did not really happen, but parts of YaPI is currently used by webYaST. (It does not have to be limiting, we may want to rewrite webYaST backend anyway). One of the Perl issues was mentioned by Jiri Srain - it's a pain in cooperation with YCP e.g. when sharing boolean values.
Python is most popular with other distros for managing the system.
As one of my past hackweek project, I tried to write pure python yast module. There were some problems (bnc #422072,bnc#422073) that are not fixed yet, but my overall impression was relatively good, AFAIR. Jiri -- Jiri Suchomel SUSE LINUX, s.r.o. e-mail: jsuchome@suse.cz Lihovarská 1060/12 tel: +420 284 028 960 190 00 Praha 9, Czech Republic http://www.suse.cz -- To unsubscribe, e-mail: yast-devel+unsubscribe@opensuse.org For additional commands, e-mail: yast-devel+help@opensuse.org
I would suggest a step by step "reborn" instead of a "replace by something we will write from scratch someday but does not exist yet". Taking the bests parts of it (libyui) plus support for a couple of more popular languages, and rethinking some parts like SCR, or how to access native system libraries or more radical approaches how a developer could implement a configuration dialog/wizard would allow for a step to step move to a YaST3 without throwing everything out (just like YaST to YaST2 happened). Forget about deciding if you build on top of CIM, augeas, libsilverbullet, etc. They are all projects with different layers of maturity, different levels of usability and solving very different use cases: ie CIM is high level but it is not very useful, and augeas is very useful but is is very lowlevel. Why not going for more flexibility to make a Linux expert experience when writing a module something that does not require for him to learn too much specifics: e.g: if he knows CIM, make easy for him to get a CIM property, but that he can easily use a augeas expression to get a config value, etc. So "taking what we know already" feels to me a good strategy: - Use a couple of languages people know and like - Allow to write dialogs and forms without learning extra stuff (after joe's request I did a prototype to show forms written in html5 using libyui :-), as they have metadata for validation and other stuff) - Make easy to get data and to write data. Duncan -- To unsubscribe, e-mail: yast-devel+unsubscribe@opensuse.org For additional commands, e-mail: yast-devel+help@opensuse.org
Duncan Mac-Vicar P. write:
I would suggest a step by step "reborn" instead of a "replace by something we will write from scratch someday but does not exist yet".
Taking the bests parts of it (libyui) plus support for a couple of more popular languages, and rethinking some parts like SCR, or how to access native system libraries or more radical approaches how a developer could implement a configuration dialog/wizard would allow for a step to step move to a YaST3 without throwing everything out (just like YaST to YaST2 happened).
Forget about deciding if you build on top of CIM, augeas, libsilverbullet, etc. They are all projects with different layers of maturity, different levels of usability and solving very different use cases: ie CIM is high level but it is not very useful, and augeas is very useful but is is very lowlevel.
Why not going for more flexibility to make a Linux expert experience when writing a module something that does not require for him to learn too much specifics: e.g: if he knows CIM, make easy for him to get a CIM property, but that he can easily use a augeas expression to get a config value, etc.
So "taking what we know already" feels to me a good strategy:
- Use a couple of languages people know and like
Maintenance nightmare.... E.g. I don't have problem to maintain projects in different languages ( now RoR, perl and YCP), but if I am maintaner and someone leave or move to another team and need to start maintaining new module which is in new language I spend some time to learn it and it is not good idea to have weak knowleadge of many languages. I think we should choose one language ( it is not important if it is python, ruby, perl whatever), but we should stay with it as then it is easy to learn just how module work and not need to know how language work. And because many people in team work aslo on RoR then I think ruby is good choice as we have good knowledge for this language. Of course we can create bindings and allow community to write own parts, but we should keep one language so we can easily maintain many years after people leave company.
- Allow to write dialogs and forms without learning extra stuff (after joe's request I did a prototype to show forms written in html5 using libyui :-), as they have metadata for validation and other stuff)
Yes, I agree. For me the best way should be to told what type of data I have and then let UI library to decide it like RoR auto forms
- Make easy to get data and to write data.
Absolutely agree. For me concept of models from MVC is fine as it loads and store models in well defined place and if we use object language we can benefit from inheritance for similar data ( it is not important if public or private inheritance). Pepa -- Josef Reidinger Appliance Toolkit team maintainer of perl-Bootloader, yast2-bootloader and parts of webyast and SLMS -- To unsubscribe, e-mail: yast-devel+unsubscribe@opensuse.org For additional commands, e-mail: yast-devel+help@opensuse.org
On Jan 31, 2011, at 5:03 AM, Josef Reidinger wrote:
- Use a couple of languages people know and like
Maintenance nightmare.... E.g. I don't have problem to maintain projects in different languages ( now RoR, perl and YCP), but if I am maintaner and someone leave or move to another team and need to start maintaining new module which is in new language I spend some time to learn it and it is not good idea to have weak knowleadge of many languages. I think we should choose one language ( it is not important if it is python, ruby, perl whatever), but we should stay with it as then it is easy to learn just how module work and not need to know how language work.
+1. -- To unsubscribe, e-mail: yast-devel+unsubscribe@opensuse.org For additional commands, e-mail: yast-devel+help@opensuse.org
On 01/31/2011 06:10 PM, Bart Whiteley wrote:
On Jan 31, 2011, at 5:03 AM, Josef Reidinger wrote:
- Use a couple of languages people know and like
Maintenance nightmare.... E.g. I don't have problem to maintain projects in different languages ( now RoR, perl and YCP), but if I am maintaner and someone leave or move to another team and need to start maintaining new module which is in new language I spend some time to learn it and it is not good idea to have weak knowleadge of many languages. I think we should choose one language ( it is not important if it is python, ruby, perl whatever), but we should stay with it as then it is easy to learn just how module work and not need to know how language work.
I agree, I meant more the ability to reuse stuff in other languages, or to allow someone to use your infrastructure from another languages without much pain. -- Duncan Mac-Vicar P. - Novell® Making IT Work As One™ SUSE LINUX Products GmbH, GF: Markus Rex, HRB 16746 (AG Nuernberg) -- To unsubscribe, e-mail: yast-devel+unsubscribe@opensuse.org For additional commands, e-mail: yast-devel+help@opensuse.org
On 01/28/2011 04:50 PM, Arvin Schnell wrote:
Hi,
in a recent telco the question about the direction of the YaST architecture was raised.
After seeing this long discussion I think the only way to move forward is that people presents some proposal ie: one group/pair/individual could present a "prototype" module done with lang X, tools Y, and show how a module would look like, what possibilities this bring etc. Another group/pair/individual could do the same using a different approach. -- Duncan Mac-Vicar P. - Novell® Making IT Work As One™ SUSE LINUX Products GmbH, GF: Markus Rex, HRB 16746 (AG Nuernberg) -- To unsubscribe, e-mail: yast-devel+unsubscribe@opensuse.org For additional commands, e-mail: yast-devel+help@opensuse.org
On 02/04/2011 04:00 AM, Duncan Mac-Vicar P. wrote:
On 01/28/2011 04:50 PM, Arvin Schnell wrote:
Hi,
in a recent telco the question about the direction of the YaST architecture was raised.
After seeing this long discussion I think the only way to move forward is that people presents some proposal
OK, here is one proposal. Uses Python with the idea that individual modules are implemented as Python packages. This would allow us to package each module separately in a straight forward fashion. Nice granularity which would also benefit integration with WebYaST. This also follows the idea Klaus had about being domain specific (which I like). The domain specific functions are implemented in __init__.py and the details are hidden from the user. In this case (only rudimentary implementation) the storage of the information for an NFS share is hidden in the nfsShare object, while the user setting up a share via createShare() does not need to worry about these details. import yast3.nfs_client yast3.nfs_client.createShare(.....) Advantages: - Everything is in Python thus this meets the common language criteria that appears to be emerging in the discussion - Implementation via Python packages provides granularity and easy packaging, facilitates small "footprint" for integration with WebYaST - Domain specific interface allows us to be very expressive - Easy to use in setup scripts - It should be relatively easy to put a GUI on top of this while maintaining MVC paradigm
ie: one group/pair/individual could present a "prototype" module done with lang X, tools Y, and show how a module would look like, what possibilities this bring etc. Another group/pair/individual could do the same using a different approach.
Sorry, just a rudimentary implementation, not a complete prototype module, to demonstrate my basic ideas. Later, Robert -- Robert Schweikert MAY THE SOURCE BE WITH YOU Novell-IBM Software Integration Center LINUX Tech Lead rschweikert@novell.com rschweikert@ca.ibm.com 781-464-8147 Novell Making IT Work As One
2011/2/9 Robert Schweikert <rschweikert@novell.com>:
OK, here is one proposal.
Uses Python with the idea that individual modules are implemented as Python packages. This would allow us to package each module separately in a straight forward fashion. Nice granularity which would also benefit integration with WebYaST.
This also follows the idea Klaus had about being domain specific (which I like). The domain specific functions are implemented in __init__.py and the details are hidden from the user. In this case (only rudimentary implementation) the storage of the information for an NFS share is hidden in the nfsShare object, while the user setting up a share via createShare() does not need to worry about these details.
import yast3.nfs_client yast3.nfs_client.createShare(.....)
Advantages: - Everything is in Python thus this meets the common language criteria that appears to be emerging in the discussion - Implementation via Python packages provides granularity and easy packaging, facilitates small "footprint" for integration with WebYaST - Domain specific interface allows us to be very expressive - Easy to use in setup scripts - It should be relatively easy to put a GUI on top of this while maintaining MVC paradigm
ie: one group/pair/individual could present a "prototype" module done with lang X, tools Y, and show how a module would look like, what possibilities this bring etc. Another group/pair/individual could do the same using a different approach.
Or take it even further. Adopt either Ubuntu or Fedoras base and continue to work with other distros to maximize the effect of the open-source effort. Why reinvent when it can be built on an existing stable base? Also the openSUSE contributions would then benefit a larger audience. (This is by NO means meant as a flame bait!) The only reason for not adopting an existing base would be branding. I can see that openSUSE might get to similar in regards to marketing. But for open-source I think it would be beneficial. The linux platforms that are progressing well today are the platforms where the platform i standardized. Kind regards Birger -- To unsubscribe, e-mail: yast-devel+unsubscribe@opensuse.org For additional commands, e-mail: yast-devel+help@opensuse.org
Robert, * Robert Schweikert <rschweikert@novell.com> [Feb 09. 2011 16:42]:
OK, here is one proposal.
Uses Python with the idea that individual modules are implemented as Python packages. This would allow us to package each module separately in a straight forward fashion. Nice granularity which would also benefit integration with WebYaST.
I fully agree on the goal and architecture of a dynamic, plug-in implementation. There exists various examples of such an implementation, most notably 'yum' and 'git'. There you can easily extend the function set by installing an additional package. The main binary will pick it up at runtime and make it available to use user. This is most easily implemented in a dynamic language, Ruby and Python being the most prominent. 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
Am 28.01.2011 16:50, schrieb Arvin Schnell:
Hi,
in a recent telco the question about the direction of the YaST architecture was raised.
I miss an important fact when reading the discussion here. For me it's not clearly pointed out how WebYaST and YaST will work together nicely in future. I think they should share as much code as possible, e.g. an interface which provides the logic for system access (something like Klaus has proposed?). I think it's a very important goal to bring WebYaST and YaST together and this aspect should be more respected in the discussion. -- Gabriele Mohr SUSE LINUX Products GmbH, GF: Markus Rex, HRB 16746 (AG Nürnberg) Maxfeldstr. 5 Tel: +49 911 740 53 362 90409 Nürnberg Email: gs@suse.de ----------------------------------------------------------------- -- To unsubscribe, e-mail: yast-devel+unsubscribe@opensuse.org For additional commands, e-mail: yast-devel+help@opensuse.org
On Wednesday 09 February 2011 10:22:15 Gabriele Mohr wrote:
I miss an important fact when reading the discussion here. For me it's not clearly pointed out how WebYaST and YaST will work together nicely in future.
IMHO this is the most important point that needs to be discussed before any further decisions could be made. But it needs to be discussed with both teams, YaST and WebYaST. Thank you Gabi for raising this. YaST and WebYaST share very big and important goals: - both do system configuration and management - both currently rely on YCP and want to get rid of it - both need an alternative way to do system configuration It does not make sense to develop two separate solutions for this as the problems to solve with both tools are basically the same. So what we need is _one_ generic (standadized) interface/library to do system configuration that does not rely on YCP. The new tool needs to be easy to use for a web application as well as the current YaST. It could also allow easy commandline access so scripted configuration tasks would not rely on any YaST part or any UI (think of JeOS). At best such a tool is also platform independant and could run on various linux distributions. This will also attract others to jump in and help - note, they will get our UIs (WebYaST and the three YaST UIs) for free. With such an approach YaST could really turn into a community project. Ciao, Daniel -- J. Daniel Schmidt <jdsn@suse.de> SUSE Linux Products GmbH Research & Development Maxfeldstr. 5 GF: Markus Rex, HRB 16746 (AG Nürnberg) D-90409 Nürnberg -- To unsubscribe, e-mail: yast-devel+unsubscribe@opensuse.org For additional commands, e-mail: yast-devel+help@opensuse.org
On 02/09/2011 10:22 AM, Gabriele Mohr wrote:
Am 28.01.2011 16:50, schrieb Arvin Schnell:
Hi,
in a recent telco the question about the direction of the YaST architecture was raised.
I miss an important fact when reading the discussion here. For me it's not clearly pointed out how WebYaST and YaST will work together nicely in future. I think they should share as much code as possible, e.g. an interface which provides the logic for system access (something like Klaus has proposed?). I think it's a very important goal to bring WebYaST and YaST together and this aspect should be more respected in the discussion.
Yes. Agreed. I posted the information about technologies like COMAR exactly because that. -- Duncan Mac-Vicar P. - Novell® Making IT Work As One™ SUSE LINUX Products GmbH, GF: Markus Rex, HRB 16746 (AG Nuernberg) -- To unsubscribe, e-mail: yast-devel+unsubscribe@opensuse.org For additional commands, e-mail: yast-devel+help@opensuse.org
Dne středa 09 Únor 2011 10:22:15 Gabriele Mohr napsal(a):
Am 28.01.2011 16:50, schrieb Arvin Schnell:
Hi,
in a recent telco the question about the direction of the YaST architecture was raised.
I miss an important fact when reading the discussion here. For me it's not clearly pointed out how WebYaST and YaST will work together nicely in future. I think they should share as much code as possible, e.g. an interface which provides the logic for system access (something like Klaus has proposed?). I think it's a very important goal to bring WebYaST and YaST together and this aspect should be more respected in the discussion.
I agree that long term goals for YaST and WebYaST are not specified, which does not help the discussions: various proposals came from various points of view and with different goal in mind. So, it may even be different than you write - for example I have an idea that YaST is manage-everything tool, while webYaST provides limited set of simplified tasks. In this scope, YaST brings many dependencies and big size, while webYaST ephasizes speed and small size. Thus, it may have sense to develop specialized single-purposed backend parts for each webYaST plugin (e.g. using ruby-augeas, as most of the tasks are ini file modifications anyway) instead of depending on big YaST. Jiri -- Jiri Suchomel SUSE LINUX, s.r.o. e-mail: jsuchome@suse.cz Lihovarská 1060/12 tel: +420 284 028 960 190 00 Praha 9, Czech Republic http://www.suse.cz -- To unsubscribe, e-mail: yast-devel+unsubscribe@opensuse.org For additional commands, e-mail: yast-devel+help@opensuse.org
* Gabriele Mohr <gs@suse.de> [Feb 09. 2011 10:22]:
Am 28.01.2011 16:50, schrieb Arvin Schnell:
Hi,
in a recent telco the question about the direction of the YaST architecture was raised.
I miss an important fact when reading the discussion here. For me it's not clearly pointed out how WebYaST and YaST will work together nicely in future.
Thanks for bringing this up.
I think they should share as much code as possible, e.g. an interface which provides the logic for system access (something like Klaus has proposed?). I think it's a very important goal to bring WebYaST and YaST together and this aspect should be more respected in the discussion.
This reveals a key problem in the current discussion - treating YaST and WebYaST as separate projects. I believe this is wrong. What's needed is a common infrastructure/backend resp. API to do management tasks on a Linux system. This forms the low-level development API for the various user interfaces. What we currently know/discuss as 'YaST' would be the (rich) Qt user interface. What we currently know/discuss as 'WebYaST' would be the (limited) Web user interface. Additionally, a CLI interface for scripting is needed. All those user interfaces are using the common backend, exposing different details and functionality. 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
On Thursday, February 10, 2011 10:13:10 am Klaus Kaempf wrote:
* Gabriele Mohr <gs@suse.de> [Feb 09. 2011 10:22]:
Am 28.01.2011 16:50, schrieb Arvin Schnell:
Hi,
in a recent telco the question about the direction of the YaST architecture was raised.
I miss an important fact when reading the discussion here. For me it's not clearly pointed out how WebYaST and YaST will work together nicely in future.
Thanks for bringing this up.
I think they should share as much code as possible, e.g. an interface which provides the logic for system access (something like Klaus has proposed?). I think it's a very important goal to bring WebYaST and YaST together and this aspect should be more respected in the discussion.
This reveals a key problem in the current discussion - treating YaST and WebYaST as separate projects.
I believe this is wrong.
What's needed is a common infrastructure/backend resp. API to do management tasks on a Linux system. I fully agree, especially because you wrote 'Linux system' instead of 'SuSE system'. If we invent a solution which runs on (almost) all distros YaST's community will grow.
This forms the low-level development API for the various user interfaces.
What we currently know/discuss as 'YaST' would be the (rich) Qt user interface. What we currently know/discuss as 'WebYaST' would be the (limited) Web user interface. Additionally, a CLI interface for scripting is needed.
All those user interfaces are using the common backend, exposing different details and functionality.
Klaus --- SUSE LINUX Products GmbH, GF: Markus Rex, HRB 16746 (AG Nürnberg)
-- Thomas Goettlicher SUSE LINUX Products GmbH, GF: Markus Rex, HRB 16746 (AG Nuernberg) -- To unsubscribe, e-mail: yast-devel+unsubscribe@opensuse.org For additional commands, e-mail: yast-devel+help@opensuse.org
* Thomas Goettlicher <thomas.goettlicher@suse.de> [Feb 10. 2011 11:11]:
On Thursday, February 10, 2011 10:13:10 am Klaus Kaempf wrote:
What's needed is a common infrastructure/backend resp. API to do management tasks on a Linux system.
I fully agree, especially because you wrote 'Linux system' instead of 'SuSE system'.
I did that on purpose ;-) 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
On štvrtok 10 Február 2011 10:13:10 Klaus Kaempf wrote:
* Gabriele Mohr <gs@suse.de> [Feb 09. 2011 10:22]:
Am 28.01.2011 16:50, schrieb Arvin Schnell:
Hi,
in a recent telco the question about the direction of the YaST architecture was raised.
I miss an important fact when reading the discussion here. For me it's not clearly pointed out how WebYaST and YaST will work together nicely in future.
Thanks for bringing this up.
I think they should share as much code as possible, e.g. an interface which provides the logic for system access (something like Klaus has proposed?). I think it's a very important goal to bring WebYaST and YaST together and this aspect should be more respected in the discussion.
This reveals a key problem in the current discussion - treating YaST and WebYaST as separate projects.
I believe this is wrong.
What's needed is a common infrastructure/backend resp. API to do management tasks on a Linux system.
This forms the low-level development API for the various user interfaces.
What we currently know/discuss as 'YaST' would be the (rich) Qt user interface. What we currently know/discuss as 'WebYaST' would be the (limited) Web user interface. Additionally, a CLI interface for scripting is needed.
All those user interfaces are using the common backend, exposing different details and functionality.
I'm loosing the sense of small steps, we are discussing grand unification plans again. Stano -- To unsubscribe, e-mail: yast-devel+unsubscribe@opensuse.org For additional commands, e-mail: yast-devel+help@opensuse.org
* Stanislav Visnovsky <visnov@suse.cz> [Feb 10. 2011 12:56]:
I'm loosing the sense of small steps, we are discussing grand unification plans again.
Even for small steps, you need a direction. 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
On štvrtok 10 Február 2011 13:05:06 Klaus Kaempf wrote:
* Stanislav Visnovsky <visnov@suse.cz> [Feb 10. 2011 12:56]:
I'm loosing the sense of small steps, we are discussing grand unification plans again.
Even for small steps, you need a direction.
Yes, it helps. Still, tackling smaller steps is usually more feasible. One might argue though if 'dropping YCP' is a smaller step :-) Stano -- To unsubscribe, e-mail: yast-devel+unsubscribe@opensuse.org For additional commands, e-mail: yast-devel+help@opensuse.org
On Thu, Feb 10, 2011 at 01:10:37PM +0100, Stanislav Višňovský wrote:
On štvrtok 10 Február 2011 13:05:06 Klaus Kaempf wrote:
* Stanislav Visnovsky <visnov@suse.cz> [Feb 10. 2011 12:56]:
I'm loosing the sense of small steps, we are discussing grand unification plans again.
Even for small steps, you need a direction.
Yes, it helps.
Still, tackling smaller steps is usually more feasible. One might argue though if 'dropping YCP' is a smaller step :-)
It's a leap :-) I intentionally limited my proposal just to the language switch, trying to postpone the architectural debate that ensued anyway. It will be tough enough to execute the switch as it is, without redesigning the framework along the way. -- Martin Vidner, YaST developer http://en.opensuse.org/User:Mvidner Kuracke oddeleni v restauraci je jako fekalni oddeleni v bazenu
On 02/10/2011 06:52 AM, Stanislav Visnovsky wrote:
On štvrtok 10 Február 2011 10:13:10 Klaus Kaempf wrote:
* Gabriele Mohr <gs@suse.de> [Feb 09. 2011 10:22]:
Am 28.01.2011 16:50, schrieb Arvin Schnell:
Hi,
in a recent telco the question about the direction of the YaST architecture was raised.
I miss an important fact when reading the discussion here. For me it's not clearly pointed out how WebYaST and YaST will work together nicely in future.
Thanks for bringing this up.
I think they should share as much code as possible, e.g. an interface which provides the logic for system access (something like Klaus has proposed?). I think it's a very important goal to bring WebYaST and YaST together and this aspect should be more respected in the discussion.
This reveals a key problem in the current discussion - treating YaST and WebYaST as separate projects.
I believe this is wrong.
What's needed is a common infrastructure/backend resp. API to do management tasks on a Linux system.
This forms the low-level development API for the various user interfaces.
What we currently know/discuss as 'YaST' would be the (rich) Qt user interface. What we currently know/discuss as 'WebYaST' would be the (limited) Web user interface. Additionally, a CLI interface for scripting is needed.
All those user interfaces are using the common backend, exposing different details and functionality.
I'm loosing the sense of small steps, we are discussing grand unification plans again.
Without a clear picture of the architecture that everyone can work from you end up with something that is cobbled together and the pieces never fit properly. The implementation steps should be on the smallish side, no question. But there ought to be a big picture showing the "macro architecture" if you will, maybe something like the attached diagram. The everyone can work on their own little piece of the world but with the big picture in mind. That way things will fit together. Having something like this ought to make it easier to make decisions about the moving parts. Robert -- Robert Schweikert MAY THE SOURCE BE WITH YOU Novell-IBM Software Integration Center LINUX Tech Lead rschweikert@novell.com rschweikert@ca.ibm.com 781-464-8147 Novell Making IT Work As One
Robert, * Robert Schweikert <rschweikert@novell.com> [Feb 10. 2011 14:50]:
Without a clear picture of the architecture that everyone can work from you end up with something that is cobbled together and the pieces never fit properly.
thanks for the picture. If you replace "WebYaST" by "Web", then you will have me fully aligned ;-) 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
On 02/10/2011 09:19 AM, Klaus Kaempf wrote:
Robert,
* Robert Schweikert <rschweikert@novell.com> [Feb 10. 2011 14:50]:
Without a clear picture of the architecture that everyone can work from you end up with something that is cobbled together and the pieces never fit properly.
thanks for the picture. If you replace "WebYaST" by "Web",
done
then you will have me fully aligned ;-)
That was easy. Robert -- Robert Schweikert MAY THE SOURCE BE WITH YOU Novell-IBM Software Integration Center LINUX Tech Lead rschweikert@novell.com rschweikert@ca.ibm.com 781-464-8147 Novell Making IT Work As One
On Thursday, February 10, 2011 02:50:46 pm Robert Schweikert wrote:
Without a clear picture of the architecture that everyone can work from you end up with something that is cobbled together and the pieces never fit properly.
The implementation steps should be on the smallish side, no question. But there ought to be a big picture showing the "macro architecture" if you will, maybe something like the attached diagram.
The everyone can work on their own little piece of the world but with the big picture in mind. That way things will fit together. Having something like this ought to make it easier to make decisions about the moving parts.
Robert
Your attached diagram looks similar to the overview designed by jdsn and me: +---+---+---+---+ +--------------+ | Q | N | g | c | |webyast client| | t | C | t | m | +------+-------+ | | | k | d | | +---+---+---+ | http | libyui | | | +-----------+ +-----------+---+ +------+-------+ | lib shell | | yast modules | | rest service | +-----------+--------+---------------+----------+--------------+ | common lib: reads/writes config files, starts/stops services | | integration of polkit and zypp | +--------------------------------------------------------------+ | SYSTEM | +--------------------------------------------------------------+ Perhaps rest service should sit on top of yast modules. Thomas -- Thomas Goettlicher SUSE LINUX Products GmbH, GF: Markus Rex, HRB 16746 (AG Nuernberg) -- To unsubscribe, e-mail: yast-devel+unsubscribe@opensuse.org For additional commands, e-mail: yast-devel+help@opensuse.org
* Thomas Goettlicher <thomas.goettlicher@suse.de> [Feb 10. 2011 15:22]:
Your attached diagram looks similar to the overview designed by jdsn and me:
Not quite.
+---+---+---+---+ +--------------+ | Q | N | g | c | |webyast client| | t | C | t | m | +------+-------+ | | | k | d | | +---+---+---+ | http | libyui | | | +-----------+ +-----------+---+ +------+-------+ | lib shell | | yast modules | | rest service | +-----------+--------+---------------+----------+--------------+ | common lib: reads/writes config files, starts/stops services | | integration of polkit and zypp | +--------------------------------------------------------------+ | SYSTEM | +--------------------------------------------------------------+
Perhaps rest service should sit on top of yast modules.
Yes. And what is 'lib shell' ? A CLI interface should also sit on top of 'yast modules'. The 'common lib' is too low level. I would expect it to be like Augeas for config file editing. Whats the value of such an API over 'vi' ? 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
Dne čtvrtek 10 Únor 2011 15:29:47 Klaus Kaempf napsal(a):
* Thomas Goettlicher <thomas.goettlicher@suse.de> [Feb 10. 2011 15:22]:
Your attached diagram looks similar to the overview designed by jdsn and me: Not quite.
+---+---+---+---+ +--------------+
| Q | N | g | c | |webyast client| | t | C | t | m | +------+-------+ | | | | k | d | |
+---+---+---+ | http
| libyui | | |
+-----------+ +-----------+---+ +------+-------+
| lib shell | | yast modules | | rest service |
+-----------+--------+---------------+----------+--------------+
| common lib: reads/writes config files, starts/stops services | | | integration of polkit and zypp |
+--------------------------------------------------------------+
| SYSTEM |
+--------------------------------------------------------------+
Perhaps rest service should sit on top of yast modules.
Yes.
But it is there now. And the result is, webYaST brings huge amount of packages because of YaST. Jiri -- Jiri Suchomel SUSE LINUX, s.r.o. e-mail: jsuchome@suse.cz Lihovarská 1060/12 tel: +420 284 028 960 190 00 Praha 9, Czech Republic http://www.suse.cz -- To unsubscribe, e-mail: yast-devel+unsubscribe@opensuse.org For additional commands, e-mail: yast-devel+help@opensuse.org
* Jiri Suchomel <jsuchome@suse.cz> [Feb 10. 2011 15:37]:
But it is there now. And the result is, webYaST brings huge amount of packages because of YaST.
Yes :-( Thats why we have to move away from static languages like YCP to dynamic ones like Python or Ruby. Then a failing 'import' can be handled gracefully and package dependencies are drastically reduced. 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
Klaus Kaempf write:
* Jiri Suchomel <jsuchome@suse.cz> [Feb 10. 2011 15:37]:
But it is there now. And the result is, webYaST brings huge amount of packages because of YaST.
Yes :-( Thats why we have to move away from static languages like YCP to dynamic ones like Python or Ruby. Then a failing 'import' can be handled gracefully and package dependencies are drastically reduced.
It looks like new mantra called "dynamic languages". I am not sure if you ever try to handle such situations. Of course it is possible, but then code become really messy and also horrible to maintain and test it.... consider module A which depends on module B,C,D,E ( e.g. storage, language, time, bootloader and software management) then consider that A has if B,D is installed and C,E missing....and consider all combination. It is nice theory, but maintenance looks horrible for me. Benefit of dynamic languages is that you can change behavior based on runtime information, but changing behavior due to miss of completely modules is really bad idea....I don't see much ruby project which expects X different modules and acts different (if it is not abstract layer over it ). Pepa -- Josef Reidinger Appliance Toolkit team maintainer of perl-Bootloader, yast2-bootloader and parts of webyast and SLMS -- To unsubscribe, e-mail: yast-devel+unsubscribe@opensuse.org For additional commands, e-mail: yast-devel+help@opensuse.org
On 02/10/2011 09:55 AM, Josef Reidinger wrote:
Klaus Kaempf write:
* Jiri Suchomel <jsuchome@suse.cz> [Feb 10. 2011 15:37]:
But it is there now. And the result is, webYaST brings huge amount of packages because of YaST.
Yes :-( Thats why we have to move away from static languages like YCP to dynamic ones like Python or Ruby. Then a failing 'import' can be handled gracefully and package dependencies are drastically reduced.
It looks like new mantra called "dynamic languages". I am not sure if you ever try to handle such situations. Of course it is possible, but then code become really messy and also horrible to maintain and test it.... consider module A which depends on module B,C,D,E ( e.g. storage, language, time, bootloader and software management)
then consider that A has if B,D is installed and C,E missing....and consider all combination. It is nice theory, but maintenance looks horrible for me.
Yes, it can be. But each maintainer/implementer of a module can decide how to handle this. Some module may have hard dependencies, i.e. I can either import what I depend on or I fail. Other modules might be more modular and might be able to handle a missing module by disabling some functionality. An example of this is a browser, if you don't have the flash plugin you just cannot see flash thingies on the web, but the browser still works. For configuration modules this could apply to things that are network related. I could imagine the ssh configuration module doing something like this: try: import yast3.firewall_config except: hasFirewall = false Now the following domain specific interface yast3.ssh.openFirewallPort checks whether the firewall modules was loaded, and if not it does nothing and returns an appropriate value. In this case I do not see it as a maintenance nightmare, but rather as a nice feature we can take advantage of by using a dynamic language. Robert -- Robert Schweikert MAY THE SOURCE BE WITH YOU Novell-IBM Software Integration Center LINUX Tech Lead rschweikert@novell.com rschweikert@ca.ibm.com 781-464-8147 Novell Making IT Work As One -- To unsubscribe, e-mail: yast-devel+unsubscribe@opensuse.org For additional commands, e-mail: yast-devel+help@opensuse.org
It looks like new mantra called "dynamic languages". I am not sure if you ever try to handle such situations. Of course it is possible, but
On 02/10/2011 03:55 PM, Josef Reidinger wrote: then code become really messy and also horrible to maintain and test it....
consider module A which depends on module B,C,D,E ( e.g. storage, language, time, bootloader and software management)
It is not about the language, it is about the design. In YaST, every module uses functionality of another module and links to it, instead of every module providing an implementation of a service. So a module needs to install a package, in YaST, it imports packager, which makes every module depend on libzypp. yast2 package is the kitchensync where all the rest goes. Draw it and you get a spaghetti. YaST should request "give a package installation implementation" and handle gracefully the fact that there is none. Which is a much higher level than catching a import error. -- Duncan Mac-Vicar P. - Novell® Making IT Work As One™ SUSE LINUX Products GmbH, GF: Markus Rex, HRB 16746 (AG Nuernberg) -- To unsubscribe, e-mail: yast-devel+unsubscribe@opensuse.org For additional commands, e-mail: yast-devel+help@opensuse.org
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Dne 11.2.2011 09:00, Duncan Mac-Vicar P. napsal(a):
It looks like new mantra called "dynamic languages". I am not sure if you ever try to handle such situations. Of course it is possible, but
On 02/10/2011 03:55 PM, Josef Reidinger wrote: then code become really messy and also horrible to maintain and test it....
consider module A which depends on module B,C,D,E ( e.g. storage, language, time, bootloader and software management)
It is not about the language, it is about the design.
In YaST, every module uses functionality of another module and links to it, instead of every module providing an implementation of a service.
So a module needs to install a package, in YaST, it imports packager, which makes every module depend on libzypp. yast2 package is the kitchensync where all the rest goes. Draw it and you get a spaghetti.
YaST should request "give a package installation implementation" and handle gracefully the fact that there is none. Which is a much higher level than catching a import error.
This might have a simple solution: The current YaST solution is package-based because we still stick a bit to a package-owner model. Each developer is responsible for a list of YaST modules. To solve the spaghetti in a more elegant way, we would need 1.) Move functionality to one package 2.) Move UI to another package 3.) Have more task-specific functionality packages (such as studio_api* used by SLMS - well done Pepo! ;)) ... this applies to 'whatever the programming language is' Lukas * studio_api used to be part of SLMS in 1.0 and 1.1 but Pepa has rewritten and moved it to https://github.com/jreidinger/studio_api Since then, everyone can use it for their projects very easily. - -- Lukas Ocilka, Appliances Department, Novell Inc. -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.12 (GNU/Linux) Comment: Using GnuPG with SUSE - http://enigmail.mozdev.org/ iD8DBQFNVP/AVSqMdRCqTiwRAkddAJ97NO+xFYSSIDqWc3TgV0G2cSTv1QCff9KM 9LH5JXfmgTBBPoSt6SEUQvk= =6hpx -----END PGP SIGNATURE----- -- To unsubscribe, e-mail: yast-devel+unsubscribe@opensuse.org For additional commands, e-mail: yast-devel+help@opensuse.org
Am Thu 10 Feb 2011 03:47:56 PM CET schrieb Klaus Kaempf <kkaempf@suse.de>:
* Jiri Suchomel <jsuchome@suse.cz> [Feb 10. 2011 15:37]:
But it is there now. And the result is, webYaST brings huge amount of packages because of YaST.
Yes :-( Thats why we have to move away from static languages like YCP to dynamic ones like Python or Ruby. Then a failing 'import' can be handled gracefully and package dependencies are drastically reduced.
Using 'dlopen' and 'dlsym' as the killer feature of dynamic languages is really not fair. Please be honest in promoting Ruby. There is IMO only 1 argument supporting usage of dynamic languages: Program can be inspected and changed while running in production. And this ^^^ is only useful for always running services. Erlang excels in this. But it is really not the use case of YaST. Garbage collection, simple syntax, working with collections or ability to express ideas clearly is not just domain of Duck Typed languages. OTOH good luck with establishing a stable interface in a Duck Typed language. This can only be done with lots of documentation, convention and tests. But it cannot be enforced or verified. Python solved interfaces with zope-interface, which allows the programmer to specify "how do the data look like". Duck Typing by itself doesn't need to be bad. Going all the way and being unable to describe data structures definitely is. Most importantly because data structure description is an important communication channel for programmers. Martin
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
-- To unsubscribe, e-mail: yast-devel+unsubscribe@opensuse.org For additional commands, e-mail: yast-devel+help@opensuse.org
On Thursday, February 10, 2011 03:29:47 pm Klaus Kaempf wrote:
* Thomas Goettlicher <thomas.goettlicher@suse.de> [Feb 10. 2011 15:22]:
Your attached diagram looks similar to the overview designed by jdsn and me: Not quite.
+---+---+---+---+ +--------------+
| Q | N | g | c | |webyast client| | t | C | t | m | +------+-------+ | | | | k | d | |
+---+---+---+ | http
| libyui | | |
+-----------+ +-----------+---+ +------+-------+
| lib shell | | yast modules | | rest service |
+-----------+--------+---------------+----------+--------------+
| common lib: reads/writes config files, starts/stops services | | | integration of polkit and zypp |
+--------------------------------------------------------------+
| SYSTEM |
+--------------------------------------------------------------+
Perhaps rest service should sit on top of yast modules.
Yes.
And what is 'lib shell' ? A CLI interface should also sit on top of 'yast modules'. Yes, "cmd" is available besides qt, ncurses and gtk.
The 'common lib' is too low level. I would expect it to be like Augeas for config file editing. Whats the value of such an API over 'vi' ? For example the common lib takes care of policies.
Klaus --- SUSE LINUX Products GmbH, GF: Markus Rex, HRB 16746 (AG Nürnberg)
-- Thomas Goettlicher SUSE LINUX Products GmbH, GF: Markus Rex, HRB 16746 (AG Nuernberg) -- To unsubscribe, e-mail: yast-devel+unsubscribe@opensuse.org For additional commands, e-mail: yast-devel+help@opensuse.org
On 02/10/2011 09:25 AM, Thomas Goettlicher wrote:
On Thursday, February 10, 2011 02:50:46 pm Robert Schweikert wrote:
Without a clear picture of the architecture that everyone can work from you end up with something that is cobbled together and the pieces never fit properly.
The implementation steps should be on the smallish side, no question. But there ought to be a big picture showing the "macro architecture" if you will, maybe something like the attached diagram.
The everyone can work on their own little piece of the world but with the big picture in mind. That way things will fit together. Having something like this ought to make it easier to make decisions about the moving parts.
Robert
Your attached diagram looks similar to the overview designed by jdsn and me:
+---+---+---+---+ +--------------+ | Q | N | g | c | |webyast client| | t | C | t | m | +------+-------+ | | | k | d | | +---+---+---+ | http | libyui | | | +-----------+ +-----------+---+ +------+-------+ | lib shell | | yast modules | | rest service | +-----------+--------+---------------+----------+--------------+ | common lib: reads/writes config files, starts/stops services | | integration of polkit and zypp | +--------------------------------------------------------------+ | SYSTEM | +--------------------------------------------------------------+
Perhaps rest service should sit on top of yast modules.
I am not sure what to make of the common lib and whether the additional indirection is needed. Why would a YaST module not write the configuration files it is responsible for directly? I suppose "lib shell" is the API for scripting? If yes, that would appear to be too close to the point where the rubber meets the road. IMHO we want scripting to occur on top of the YaST modules and ideally have the YaST modules setup such that they can be imported into whatever language we end up with. As shown in my implementation proposal in Python import yast3.NAME_THE_CONFIG_MODULE and then have the domain specific interfaces available as in yast3.ntp.setNtpServer(....) In short I see the introduction of the "common lib" as a very big difference in the architecture diagrams. Note that I am not saying that there is no code that may be shared between some or all YaST configuration modules. All I am saying is that there is probably no need for another level of indirection. Code common to some or all YaST modules (such as the modified file detection for example) can be shared if this common code is simply implemented as a module at the same level as all the other YaST configuration modules. Robert -- Robert Schweikert MAY THE SOURCE BE WITH YOU Novell-IBM Software Integration Center LINUX Tech Lead rschweikert@novell.com rschweikert@ca.ibm.com 781-464-8147 Novell Making IT Work As One -- To unsubscribe, e-mail: yast-devel+unsubscribe@opensuse.org For additional commands, e-mail: yast-devel+help@opensuse.org
On Thursday, February 10, 2011 04:16:53 pm Robert Schweikert wrote: [...]
+---+---+---+---+ +--------------+
| Q | N | g | c | |webyast client| | t | C | t | m | +------+-------+ | | | | k | d | |
+---+---+---+ | http
| libyui | | |
+-----------+ +-----------+---+ +------+-------+
| lib shell | | yast modules | | rest service |
+-----------+--------+---------------+----------+--------------+
| common lib: reads/writes config files, starts/stops services | | | integration of polkit and zypp |
+--------------------------------------------------------------+
| SYSTEM |
+--------------------------------------------------------------+
Perhaps rest service should sit on top of yast modules.
I am not sure what to make of the common lib and whether the additional indirection is needed. Why would a YaST module not write the configuration files it is responsible for directly? In this diagram the yast module tell the common lib e.g. to create a samba share called "foo". The common lib checks whether the user is permitted and changes the config files and restarts the samba service. The yast module is responsible for the visual presentation and has not to care of technical details.
I suppose "lib shell" is the API for scripting? If yes, that would appear to be too close to the point where the rubber meets the road. There are two scripting interfaces. The first is called "cmd", it's the same as the current YaST scripting interface. The second is "lib shell". it allows to do all system config without YaST (UI) modules. Other distros might use.
IMHO we want scripting to occur on top of the YaST modules and ideally have the YaST modules setup such that they can be imported into whatever language we end up with. As shown in my implementation proposal in Python
import yast3.NAME_THE_CONFIG_MODULE
and then have the domain specific interfaces available as in
yast3.ntp.setNtpServer(....)
In short I see the introduction of the "common lib" as a very big difference in the architecture diagrams.
Note that I am not saying that there is no code that may be shared between some or all YaST configuration modules. All I am saying is that there is probably no need for another level of indirection. Code common to some or all YaST modules (such as the modified file detection for example) can be shared if this common code is simply implemented as a module at the same level as all the other YaST configuration modules.
Robert
-- Thomas Goettlicher SUSE LINUX Products GmbH, GF: Markus Rex, HRB 16746 (AG Nuernberg) -- To unsubscribe, e-mail: yast-devel+unsubscribe@opensuse.org For additional commands, e-mail: yast-devel+help@opensuse.org
On 02/10/2011 11:28 AM, Thomas Goettlicher wrote:
On Thursday, February 10, 2011 04:16:53 pm Robert Schweikert wrote: [...]
+---+---+---+---+ +--------------+
| Q | N | g | c | |webyast client| | t | C | t | m | +------+-------+ | | | | k | d | |
+---+---+---+ | http
| libyui | | |
+-----------+ +-----------+---+ +------+-------+
| lib shell | | yast modules | | rest service |
+-----------+--------+---------------+----------+--------------+
| common lib: reads/writes config files, starts/stops services | | | integration of polkit and zypp |
+--------------------------------------------------------------+
| SYSTEM |
+--------------------------------------------------------------+
Perhaps rest service should sit on top of yast modules.
I am not sure what to make of the common lib and whether the additional indirection is needed. Why would a YaST module not write the configuration files it is responsible for directly?
In this diagram the yast module tell the common lib e.g. to create a samba share called "foo". The common lib checks whether the user is permitted and changes the config files and restarts the samba service. The yast module is responsible for the visual presentation and has not to care of technical details.
This is probably the heart of the difference in the design approach. In the system with the common lib, I as an implementer of a YaST module depend on someone else to provide the functionality I need in libyastcommon (to give the child a name) or I have to implement stuff in this common lib. Therefore, my implementation attempt requires me to first know that I have to implement stuff in multiple places (more than I would expect) and from a maintenance point of view I have to remember 6 month or more down the road that my implementation is splattered about. Not having the indirection of the common lib allows the module implementer to nicely contain everything in one directory (2 if a GUI is implemented). I can still use policy modules (implemented at the same level as my YaST module) by simply importing them and using the API, but I do not have to change any code outside of my directory that implements the module I am willing to implement and maintain. Thus from a "casual" contributor and maintainer point of view I think a design without common lib is more approachable. So why do I care, or why should we as SUSE community care about the more "casual" contributor/maintainer. Let me use myself as an example. I was looking at opportunities to simplify and automate some steps of a cloud install process. Thus, it was more or less natural that I'd look to YaST and I figured I could add a module that would collect the information needed for the cloud during first boot and then installing other nodes in the cloud could be fully automated. After all, how hard could it possibly be, right? Well, beside the fact that I'd have to pick up YCP (the language) my head was spinning after reading the tutorial for a few minutes because of all the moving parts I had to consider for the module I wanted to implement. My idea of doing this myself quickly deflated and I screamed for help. Lucky me, someone was willing to answer the call for help. A scenario like this shouldn't really be this difficult. In the new model I should just be able to implement my module without having to consider a number of different places and moving parts. I could see a tutorial (and now I am going of on a tangent, I realize that) structured something like this. - Your GUI code goes here: SOME_YaST-DIRECTORY ~ import yast3.gui_elements ~ use commonly known elements such as text area, buttons etc. - Your backend code (code that touches configuration files) goes here: SOME_OTHER_YaST-DIRECTORY inside a directory with a name to your liking. ~ Take a look at the API documents found here: SOME-LINK and try to reuse existing modules as much as possible ~ implement away and "Have a lot of Fun" :) There you go, MVC paradigm, 2 moving parts, 2 locations to implement code. Robert -- Robert Schweikert MAY THE SOURCE BE WITH YOU Novell-IBM Software Integration Center LINUX Tech Lead rschweikert@novell.com rschweikert@ca.ibm.com 781-464-8147 Novell Making IT Work As One -- To unsubscribe, e-mail: yast-devel+unsubscribe@opensuse.org For additional commands, e-mail: yast-devel+help@opensuse.org
On Thursday 10 February 2011 18:44:48 Robert Schweikert wrote:
This is probably the heart of the difference in the design approach. In the system with the common lib, I as an implementer of a YaST module depend on someone else to provide the functionality I need in libyastcommon
Nope. Its you, the developer of the configuration task. With the current model of YaST modules we all have to do implement it already. So we just rely on ourselves ... nothing to worry. What used to be the "YaST module" is just the presentation of all this. (see my other eMail a few minutes ago)
Therefore, my implementation attempt requires me to first know that I have to implement stuff in multiple places (more than I would expect) and from a maintenance point of view I have to remember 6 month or more down the road that my implementation is splattered about.
This is how what we do currently as well. To solve one problem might require to implement functions within several modules. You might not even notice it but most current YaST modules are using parts of other modules - some just query data, some even change.
Not having the indirection of the common lib allows the module implementer to nicely contain everything in one directory (2 if a GUI is implemented).
... and would mean to lose the possiblity to offer a generic interface to both YaST and WebYaST. Both of them share the same common goals: - both do system configuration and management - both currently rely on YCP and want to get rid of it - both need an alternative way to do system configuration So why inventing something new in a way that only YaST can use it. And _if_ an interface would be added to the modules then WebYaST would rely on the YaST module directly - something we suffer from currently. Lets ratger depend on something that is light-weight, standardized and fast, and which can be used by the higher-level tools as they want. (WebYaST may only present a subset of the configuration options that YaST coult offer.)
Thus from a "casual" contributor and maintainer point of view I think a design without common lib is more approachable.
I disagree here. This approach seems to lead to a new SUSE-only solution again. Is this really something that we want? Then why doing such big changes in the first place? If its only us writing and maintaining modules we could stay with YCP. Maybe somebody likes to add some new functionlatity and call it YCP++. But this would not solve any of our real problems.
Well, beside the fact that I'd have to pick up YCP (the language) my head was spinning after reading the tutorial for a few minutes because of all the moving parts I had to consider for the module I wanted to implement. My idea of doing this myself quickly deflated and I screamed for help. Lucky me, someone was willing to answer the call for help. A scenario like this shouldn't really be this difficult.
Right, and it wont with the new system. You implement all you need to to in the CL layer. Everything you need to read, write and execute on the system to solve the problem - in one standardized language. You don't even need to think about the UI presentation as this is something that the "new kind of YaST" module does. Once the CL functions are implemented you can design a nice UI to configure all options/steps. From my point of view this is more easy than the current mixture of UI elements and system calls within the same YCP file. IMHO this is something that needs to be separated. We just learned about all the benefits of this approach when writing WebYaST in Rails.
- Your GUI code goes here: SOME_YaST-DIRECTORY ~ import yast3.gui_elements ~ use commonly known elements such as text area, buttons etc. - Your backend code (code that touches configuration files) goes here: SOME_OTHER_YaST-DIRECTORY inside a directory with a name to your liking. ~ Take a look at the API documents found here: SOME-LINK and try to reuse existing modules as much as possible ~ implement away and "Have a lot of Fun" :)
There you go, MVC paradigm, 2 moving parts, 2 locations to implement code.
When I look at my Rails apps I see all my Models collected in _ONE_ directory, in another I have all my Controllers collected in _ONE_ directory and I have all my Views collected in _ONE_ directory. With your approach we would have all models, all views all controllers spread around in mixed up in the modules directory. Is this really MVC like and is this easy to maintain and learn about? Thinking of models depending on other models, controllers using other controllers my head starts to spin around if I have to go and look them up on different places, maybe even search for them because its name does not indicate where it belongs (this is what we currently have with the YCP modules). I'd vote to bring the models together and offer a common lib. Ciao, Daniel -- J. Daniel Schmidt <jdsn@suse.de> SUSE Linux Products GmbH Research & Development Maxfeldstr. 5 GF: Markus Rex, HRB 16746 (AG Nürnberg) D-90409 Nürnberg -- To unsubscribe, e-mail: yast-devel+unsubscribe@opensuse.org For additional commands, e-mail: yast-devel+help@opensuse.org
On 02/10/2011 01:14 PM, J. Daniel Schmidt wrote:
On Thursday 10 February 2011 18:44:48 Robert Schweikert wrote:
This is probably the heart of the difference in the design approach. In the system with the common lib, I as an implementer of a YaST module depend on someone else to provide the functionality I need in libyastcommon
Nope. Its you, the developer of the configuration task.
Exactly my point, as the implementer for the configuration module I am willing to write and maintain, I have to stick my stuff into the common lib. The ASCII art diagram does not allow me to interact with the system without going through common lib. If I have something that needs a config file but doesn't fit in with common lib I am screwed and have to find my own solution for a bunch of things that I shouldn't have to. Or I have to argue with a bunch of folks to accept my stuff into common lib. Neither is very appealing to me.
With the current model of YaST modules we all have to do implement it already. So we just rely on ourselves ... nothing to worry.
What used to be the "YaST module" is just the presentation of all this. (see my other eMail a few minutes ago)
Therefore, my implementation attempt requires me to first know that I have to implement stuff in multiple places (more than I would expect) and from a maintenance point of view I have to remember 6 month or more down the road that my implementation is splattered about.
This is how what we do currently as well. To solve one problem might require to implement functions within several modules. You might not even notice it but most current YaST modules are using parts of other modules - some just query data, some even change.
Not having the indirection of the common lib allows the module implementer to nicely contain everything in one directory (2 if a GUI is implemented).
... and would mean to lose the possiblity to offer a generic interface to both
The implemented module provides the domain specific interface used by all clients, YaST (in QT, Gtk+, or whatever toolkit), WebYaST (or other Web UI), a CLI tool..... Nothing is lost. The module (notice the box in my diagram says "Configuration modules" not "YaST modules") hides the specifics of individual or multiple config files behind a domain specific generic interface network.setDomainname(....) network.setDefaultGateway(...) for example.
YaST and WebYaST. Both of them share the same common goals: - both do system configuration and management - both currently rely on YCP and want to get rid of it - both need an alternative way to do system configuration
These goals are met.
So why inventing something new in a way that only YaST can use it. And _if_ an interface would be added to the modules then WebYaST would rely on the YaST module directly - something we suffer from currently. Lets ratger depend on something that is light-weight, standardized and fast, and which can be used by the higher-level tools as they want.
I agree with "use something that is light weight" and "people can use as they see fit". That is exactly why I think a common lib is not the approach we want to take. I have not yet seen a common lib that tries to span a very large set of requirements be light weight, see my STL example below.
(WebYaST may only present a subset of the configuration options that YaST coult offer.)
Yes, but yet in the ACSI art diagram WebYaST still would depend on the glob of the common library. Thus it would pick up the implementation of a ton of interfaces that WebYaST does not provide any access to through the web based interface. In the other proposal WebYaST or any other client can pick and choose from any modules in the "Configuration Modules" box. Only pulling in those interfaces and the given modules dependencies.
Thus from a "casual" contributor and maintainer point of view I think a design without common lib is more approachable.
I disagree here. This approach seems to lead to a new SUSE-only solution again. Is this really something that we want?
No, I do not think we want a SUSE only solution, thus the importance of the language discussion in the other thread. As shown below my proposed architecture is not a SUSE only solution. Each module is distribution independent and can easily be picked up by any distribution that is interested.
Then why doing such big changes in the first place? If its only us writing and maintaining modules we could stay with YCP. Maybe somebody likes to add some new functionlatity and call it YCP++. But this would not solve any of our real problems.
Well, beside the fact that I'd have to pick up YCP (the language) my head was spinning after reading the tutorial for a few minutes because of all the moving parts I had to consider for the module I wanted to implement. My idea of doing this myself quickly deflated and I screamed for help. Lucky me, someone was willing to answer the call for help. A scenario like this shouldn't really be this difficult.
Right, and it wont with the new system. You implement all you need to to in the CL layer. Everything you need to read, write and execute on the system to solve the problem - in one standardized language. You don't even need to think about the UI presentation as this is something that the "new kind of YaST" module does. Once the CL functions are implemented you can design a nice UI to configure all options/steps.
This just sounds to me as if the CL is one big blob (and it is drawn that way as well) where everyone just throws their stuff in. This would according to my understanding look something like this import commonconfig So now I just picked up the interfaces for fiddling with a disk as well as the network, nfs, ntp, users, runlevel, you name it. Or in other words, I just loaded a bunch of stuff I don't want. And since everything is one glob my API documentation is a mile long, a pretty good way to make me not read it. I guess an example of a common library would be the STL. <sarcasm>Well, because the common implementation works so well there's also libboost to cover all the stuff that the divine inventors of the STL either didn't think of or couldn't be bothered to implement. But wait, maybe it will be implemented in the future and then something will move from libboost to STL.</sarcasm> How pleasant is it to work with that? In contrast the dynamic languages, with a modular design. You get a set of base modules "for free" when you install the core implementation and you can pick up a gazillion modules on an as needed basis.
From my point of view this is more easy than the current mixture of UI elements and system calls within the same YCP file.
I am not proposing to keep YCP or the current arrangement. I am trying to highlight the differences in the ASCII art architecture proposal and the one I had sent prior to that. The heart of the difference appears to be a unified common library (ASCII art proposal) vs. a more modular approach.
IMHO this is something that needs to be separated. We just learned about all the benefits of this approach when writing WebYaST in Rails.
- Your GUI code goes here: SOME_YaST-DIRECTORY ~ import yast3.gui_elements ~ use commonly known elements such as text area, buttons etc. - Your backend code (code that touches configuration files) goes here: SOME_OTHER_YaST-DIRECTORY inside a directory with a name to your liking. ~ Take a look at the API documents found here: SOME-LINK and try to reuse existing modules as much as possible ~ implement away and "Have a lot of Fun" :)
There you go, MVC paradigm, 2 moving parts, 2 locations to implement code.
When I look at my Rails apps I see all my Models collected in _ONE_ directory, in another I have all my Controllers collected in _ONE_ directory and I have all my Views collected in _ONE_ directory. With your approach we would have all models, all views all controllers spread around in mixed up in the modules directory.
Nope, sorry I don't think you understand what I am advocating. The module I implement (backend that fiddles with the config files I want to control) is implemented in 1 and only 1 directory. The location of the parent directory and what else is in the parent directory is rather immaterial to my implementation. Should I decide that I want a UI (Toolkit based, Web, or CL) frontend for my module I once again implement this in a directory that is "controlled" by me, and again the parent directory and it's location is rather immaterial. Preferably there would be some sort of module I can import to provide common GUI elements and this module should know how to display in ncurses etc. so I as a module developer do not have to worry about this, but that's convenience infrastructure, and any given distribution can decide to implement and brand this or not.
Is this really MVC like and is this easy to maintain and learn about? Thinking of models depending on other models, controllers using other controllers my head starts to spin around if I have to go and look them up on different places, maybe even search for them because its name does not indicate where it belongs (this is what we currently have with the YCP modules).
Again, I don't think you follow what I am trying to express. The architecture I propose is nothing else, and again borrowing from python, than import yast3.firewall As a developer wanting to use the module I don't really care whether the module I just imported lives in site-packages, some YaST directory, or other. I don't even care if what I just imported is implemented in C/C++, Python, or whatever (although I think pretty much everyone is in agreement that we want to stick to one language here). All I worry about is the documented interface of the module I just imported. And if I choose to, I can even decide to disable functionality if the import failed (see my earlier post, other thread I think). In this use case I can be a developer that works on a Web based UI, a toolkit based UI, or a command line frontend. In either case I get a hold of the configuration functionality in the same way. Now if I look at it from the other side of the coin, i.e. as the developer of the firewall module, I can stick my implementation in a directory called firewall in the parent directory of choice. This is completely distribution independent. In SUSE the module (directory containing the implementation) might live inside a directory named yast3 and on Fedora it might live in a directory named fedora-config. All fedora-config has to have is an empty __init__.py (and there is probably something similar for Ruby, or whatever language we end up with). The configuration module I just implemented is distribution independent. As a module developer I can control distribution dependence in my module by looking for config files in the expected places per distro and I am not dependent on the devine intuition by someone implementing a grand unified common configuration library.
I'd vote to bring the models together and offer a common lib.
I guess the bottom line is that I do not believe a common lib can be all encompassing and will cover every configuration I might possibly come up with in the future. Once I hit something that the implementer of the common lib has not thought off I am screwed. Now I have to figure out how to get something into the common lib. You just lost me as a contributor. Robert -- Robert Schweikert MAY THE SOURCE BE WITH YOU Novell-IBM Software Integration Center LINUX Tech Lead rschweikert@novell.com rschweikert@ca.ibm.com 781-464-8147 Novell Making IT Work As One -- To unsubscribe, e-mail: yast-devel+unsubscribe@opensuse.org For additional commands, e-mail: yast-devel+help@opensuse.org
On Thursday, February 10, 2011 09:17:03 pm Robert Schweikert wrote: [...]
Exactly my point, as the implementer for the configuration module I am willing to write and maintain, I have to stick my stuff into the common lib. The ASCII art diagram does not allow me to interact with the system without going through common lib. If I have something that needs a config file but doesn't fit in with common lib I am screwed and have to find my own solution for a bunch of things that I shouldn't have to. Or I have to argue with a bunch of folks to accept my stuff into common lib. Neither is very appealing to me.
Yes, you don't want to bypass the common lib. If you want add support for let's say a flux capacitor you extend the common lib by a plugin for flux capacitors. The yast module uses the functions provided by common lib and takes care of the user interface and workflows. Adding a webyast module which configures flux capacitors is easy as is can use the common lib. [...]
The implemented module provides the domain specific interface used by all clients, YaST (in QT, Gtk+, or whatever toolkit), WebYaST (or other Web UI), a CLI tool..... Well, that sounds like the same approach we wanted to describe with the ascii art image. It seems we have the same ideas and intentions and just drew them is a slightly different way.
Nothing is lost. The module (notice the box in my diagram says "Configuration modules" not "YaST modules") hides the specifics of individual or multiple config files behind a domain specific generic interface alias "Configuration Modules" "common lib" :-)
Summarizing it up I cannot see much difference between the colored picture and the ascii art image. The layers just have different names but have the same purpose. Thomas -- Thomas Goettlicher SUSE LINUX Products GmbH, GF: Markus Rex, HRB 16746 (AG Nuernberg) -- To unsubscribe, e-mail: yast-devel+unsubscribe@opensuse.org For additional commands, e-mail: yast-devel+help@opensuse.org
On Thursday 10 February 2011 21:17:03 Robert Schweikert wrote:
Nope. Its you, the developer of the configuration task.
Exactly my point, as the implementer for the configuration module I am willing to write and maintain, I have to stick my stuff into the common lib. The ASCII art diagram does not allow me to interact with the system without going through common lib.
The thing we called "common lib" _IS_ directly interacting with the system. Put everything that you need to interact with the system together in a (lets call it) plugin that gets part of the "common lib". Don't thinkt of "common lib" as a thing that someone else is maintaining and you should rely on him. It's us, YaST developers, who extend the "common lib" with new functions (yes, sure, they should be stable and persistent in order not to brake existing configuration modules). The only reason why we separated the CL and the thing we called "YaST modules" in the ASCII art was, to show the separation of the model and the view. This would allow to run the view with user privileges and better desktop integration if a desktop-specific tool decides to use the CL directly.
If I have something that needs a config file but doesn't fit in with common lib I am screwed
I don't see why any such thing should not fit in CL? The CL is _the_ place to put it.
The implemented module provides the domain specific interface used by all clients, YaST (in QT, Gtk+, or whatever toolkit), WebYaST (or other Web UI), a CLI tool.....
Nothing is lost. The module (notice the box in my diagram says "Configuration modules" not "YaST modules") hides the specifics of individual or multiple config files behind a domain specific generic interface
network.setDomainname(....) network.setDefaultGateway(...)
for example.
Ok, then I guess I misunderstood your initial description and just miss the separation of model and view in your original picture.
Yes, but yet in the ACSI art diagram WebYaST still would depend on the glob of the common library. Thus it would pick up the implementation of a ton of interfaces that WebYaST does not provide any access to through the web based interface.
We didn't say anything about how this is implemented.
In the other proposal WebYaST or any other client can pick and choose from any modules in the "Configuration Modules" box. Only pulling in those interfaces and the given modules dependencies.
That is exactly what Thomas and I meant. We just didn't draw many small boxes in the "common lib" box (it already took long enough to get the ASCII art formatted nicely ;) ).
This just sounds to me as if the CL is one big blob
No, we never said and never meant that. After all I think in this discussion we too much interpret the drawings of each other, seeing, expecting something that is not there. Sure, we even left out some parts in our pictures (because for us they were too much detail). For me the pictures are just a help to visualize something that I describe in words. The description for me is more important. So please lets rather focus on what we write next to the images and graphs than to compare them. And I can only repeat myself: I think we really want the same thing, we just call it differently. That's why it's good to have descriptions next to the pictures. Ciao, Daniel -- J. Daniel Schmidt <jdsn@suse.de> SUSE Linux Products GmbH Research & Development Maxfeldstr. 5 GF: Markus Rex, HRB 16746 (AG Nürnberg) D-90409 Nürnberg -- To unsubscribe, e-mail: yast-devel+unsubscribe@opensuse.org For additional commands, e-mail: yast-devel+help@opensuse.org
<snip>
This just sounds to me as if the CL is one big blob
No, we never said and never meant that.
After all I think in this discussion we too much interpret the drawings of each other, seeing, expecting something that is not there. Sure, we even left out some parts in our pictures (because for us they were too much detail).
For me the pictures are just a help to visualize something that I describe in words. The description for me is more important. So please lets rather focus on what we write next to the images and graphs than to compare them.
Well, a picture is worth a thousand words. With a good architecture diagram we should be able to enable a developer to grasp the concepts of the architecture and understand most of the moving parts within 30 seconds. With no more than 2 or 3 sentences of explanation. If we can achieve this, then it will be easy for contributors to get started. I rather spend an extra hour to get the pictorial representation "right" than write a page of explanation. Plus if we have to write a page to explain the picture we missed the boat somewhere. ;) Robert -- Robert Schweikert MAY THE SOURCE BE WITH YOU Novell-IBM Software Integration Center LINUX Tech Lead rschweikert@novell.com rschweikert@ca.ibm.com 781-464-8147 Novell Making IT Work As One -- To unsubscribe, e-mail: yast-devel+unsubscribe@opensuse.org For additional commands, e-mail: yast-devel+help@opensuse.org
On Friday 11 February 2011 15:52:32 Robert Schweikert wrote:
With a good architecture diagram we should be able to [...] ^^^^ That's the point. Our ASCII art was just a plain copy of our offices white board (with a little cleaning up). The "common lib" was on the board called "SMC" in the first diagram and "SCM" in the second - but we knew what we were talking about. It was never meant to be perfect, just to have something to discuss about.
If we can achieve this, then it will be easy for contributors to get started.
Sure. In our current discussion its about what and how we want to change something, so we are in a much earlier phase here. I think that's why we did not invest too much for a perfect diagram that is just a base for a discussion and not developer documentation. Ciao, Daniel -- J. Daniel Schmidt <jdsn@suse.de> SUSE Linux Products GmbH Research & Development Maxfeldstr. 5 GF: Markus Rex, HRB 16746 (AG Nürnberg) D-90409 Nürnberg -- To unsubscribe, e-mail: yast-devel+unsubscribe@opensuse.org For additional commands, e-mail: yast-devel+help@opensuse.org
Hello, first a basic comment regarding "focus of mind": Perhaps there is a misunderstanding about what the focus of mind is of an individual contributor who likes to make a YaST module for his specific setup task. At least for me this is my focus of mind: My interst and my focus of mind is only my specific setup task. I am afraid but I am not at all intersted in YaST. The programming environment which I use to implement a tool which does the specific setup task is basically only an obstacle between me and my goal to make the tool. I have to overcome this obstacle to get the tool. The easier it is to overcome this obstacle the higher the likelihood that I actually implement the tool with a particular programming environment. Later - very much later - probably never - at the earliest _after_ I had implemented my first usable version of the tool, I may pay some attention to whatever brilliant design ideas of the particular programming environment which I had already chosen to make the tool. What does this mean: This does not mean that a brilliant design is useless. Actually a brilliant design is required (see at the bottom). But it does mean that first and foremost it must be easy for an individual contributor to make his first usable version of a setup tool for his specific setup task. Later when he likes to enhace it, it is the right time for the brilliant design which should make it again easy for him to enhace his setup tool in whatever way he likes. On Feb 10 12:44 Robert Schweikert wrote (excerpt):
This is probably the heart of the difference in the design approach. In the system with the common lib, I as an implementer of a YaST module depend on someone else to provide the functionality I need
I do not want this. I want to implement what belongs to my setup task on my own. I WANT TO BE FREE to implement whatever my specific setup task needs.
Well, beside the fact that I'd have to pick up YCP (the language) my head was spinning after reading the tutorial for a few minutes because of all the moving parts I had to consider for the module I wanted to implement. My idea of doing this myself quickly deflated ...
I had exactly the same experience. If I was not an employee of the same company which makes YaST, I would for sure have given up to implement something for YaST.
I could see a tutorial (and now I am going of on a tangent, I realize that) structured something like this.
- Your GUI code goes here: SOME_YaST-DIRECTORY ~ import yast3.gui_elements ~ use commonly known elements such as text area, buttons etc. - Your backend code (code that touches configuration files) goes here: SOME_OTHER_YaST-DIRECTORY inside a directory with a name to your liking. ~ Take a look at the API documents found here: SOME-LINK and try to reuse existing modules as much as possible ~ implement away and "Have a lot of Fun" :)
Hooray! I understand this! I want to have it simplified this way! Why not have it simplified even more? Why must the GUI code be separated from the "backend code"? Why is it forbidden to implement a simple setup tool in a single source code file like this: - Your source code file your_module_name.yast3 goes here: SOME_YaST-DIRECTORY ~ import yast3.gui_elements ~ use commonly known elements such as text area, buttons etc. ~ Take a look at the API documents found here: SOME-LINK and try to reuse existing modules as much as possible ~ implement away and "Have a lot of Fun" :) If the GUI is shown on another machine than where my code runs, why do I have to care? All I have in mind is that my code "obviously" runs on the same machine where the setup task actually happens. Anything else is out of my focus of mind. Why cannot a brilliant design how yast3.gui_elements is implemented do what is needed so that I do not have to care? Kind Regards Johannes Meixner -- SUSE LINUX Products GmbH, Maxfeldstrasse 5, 90409 Nuernberg, Germany AG Nuernberg, HRB 16746, GF: Markus Rex -- To unsubscribe, e-mail: yast-devel+unsubscribe@opensuse.org For additional commands, e-mail: yast-devel+help@opensuse.org
<snip>
I could see a tutorial (and now I am going of on a tangent, I realize that) structured something like this.
- Your GUI code goes here: SOME_YaST-DIRECTORY ~ import yast3.gui_elements ~ use commonly known elements such as text area, buttons etc. - Your backend code (code that touches configuration files) goes here: SOME_OTHER_YaST-DIRECTORY inside a directory with a name to your liking. ~ Take a look at the API documents found here: SOME-LINK and try to reuse existing modules as much as possible ~ implement away and "Have a lot of Fun" :)
Hooray! I understand this! I want to have it simplified this way!
Why not have it simplified even more?
Why must the GUI code be separated from the "backend code"?
Because it is not good programming practice. - You want the GUI to be an observer only and represent data in a way that makes it easy on the user - Writing GUI code is sufficiently difficult/cumbersome w.r.t. layout interaction of widgets etc. that in the GUI code one should focus only on the presentation to the user and not about parsing or data model etc. - Mixing GUI code and backend code makes it much more difficult to use a module in a scripting environment - Mixing GUI code and backend code leads to unnecessary bloat in a non GUI environment - Separation of concerns, the backend is concerned with the data model, file parsing, API and more, while the GUI is concerned about making things look pretty. These are often conflicting in some ways. ..... Robert -- Robert Schweikert MAY THE SOURCE BE WITH YOU Novell-IBM Software Integration Center LINUX Tech Lead rschweikert@novell.com rschweikert@ca.ibm.com 781-464-8147 Novell Making IT Work As One -- To unsubscribe, e-mail: yast-devel+unsubscribe@opensuse.org For additional commands, e-mail: yast-devel+help@opensuse.org
Hello, On Feb 11 09:21 Robert Schweikert wrote (excerpt):
Why must the GUI code be separated from the "backend code"?
Because it is not good programming practice.
This is a reason why it _should_ be spilt but it does not justify to exclude potential contributors from the very beginning who may only want to implement a quick-and-dirty first usable test-version to check if the YaST programming environment seems to provide what they are looking for. Remember what I wrote: ----------------------------------------------------------------- ... first and foremost it must be easy for an individual contributor to make his first usable version of a setup tool for his specific setup task. Later when he likes to enhace it, it is the right time for the brilliant design ... ----------------------------------------------------------------- Kind Regards Johannes Meixner -- SUSE LINUX Products GmbH, Maxfeldstrasse 5, 90409 Nuernberg, Germany AG Nuernberg, HRB 16746, GF: Markus Rex -- To unsubscribe, e-mail: yast-devel+unsubscribe@opensuse.org For additional commands, e-mail: yast-devel+help@opensuse.org
Johannes Meixner write:
Hello,
On Feb 11 09:21 Robert Schweikert wrote (excerpt):
Why must the GUI code be separated from the "backend code"?
Because it is not good programming practice.
This is a reason why it _should_ be spilt but it does not justify to exclude potential contributors from the very beginning who may only want to implement a quick-and-dirty first usable test-version to check if the YaST programming environment seems to provide what they are looking for.
Remember what I wrote: ----------------------------------------------------------------- ... first and foremost it must be easy for an individual contributor to make his first usable version of a setup tool for his specific setup task.
Later when he likes to enhace it, it is the right time for the brilliant design ... -----------------------------------------------------------------
I think that separation UI from backend is quite common unix way ( usually backend is represented by command line tool, which of course has it disadvantages, so now it is more common to move backend to library). For me this separation is something like must-have as backend need root, but frontend should not need it. For me as individual contributor is more important well defined and well documented API to use. ( no I don't agree that code is the best documentation ) With good API contributor know what he can use in his own UI module or if he want contribute alternative backend part ( like for different distribution or as porting to different platform ). Josef
Kind Regards Johannes Meixner
-- Josef Reidinger Appliance Toolkit team maintainer of perl-Bootloader, yast2-bootloader and parts of webyast and SLMS -- To unsubscribe, e-mail: yast-devel+unsubscribe@opensuse.org For additional commands, e-mail: yast-devel+help@opensuse.org
Hello, On Feb 10 15:25 Thomas Goettlicher wrote (excerpt):
Your attached diagram looks similar to the overview designed by jdsn and me:
+---+---+---+---+ +--------------+ | Q | N | g | c | |webyast client| | t | C | t | m | +------+-------+ | | | k | d | | +---+---+---+ | http | libyui | | | +-----------+ +-----------+---+ +------+-------+ | lib shell | | yast modules | | rest service | +-----------+--------+---------------+----------+--------------+ | common lib: reads/writes config files, starts/stops services | | integration of polkit and zypp | +--------------------------------------------------------------+ | SYSTEM | +--------------------------------------------------------------+
I think I understand Robert's attached diagram but I know that I do not understand your overview. All what I pick from your overview is that when I want to make a yast module for my specific config task, it would be insufficient. I see that additionally I have to care about stuff like "rest service" and "lib shell" (whatever this is) and I fear that I have to implement at least parts of my code up to tree times - I won't do this - I would simply give up. Furthermore I would be hit by whatever shortcoming of the "common lib" which seems to sit in between my code and the actual SYSTEM that I want to change. The "common lib" may not exactly provide what I need for my specific config task so that I would have to implement whatever workarounds... Conclusion: This YaST thingy is both insufficient and too complicated for me. I will write my own setup tool in my own preferred language. I know how to do it so that the tool does what I want. If you like you could use me as some kind of "test case" whether or not an individual contributor would like to join the project. What I mean: The more the whole stuff is complicated (or oversophisticated), the less likelihood that someone gets sufficiently interested to actually contribute something. Or in other words: If the first attempt to make a simple setup tool fails because the whole stuff is too complicated, it was probably the last attempt. Kind Regards Johannes Meixner -- SUSE LINUX Products GmbH, Maxfeldstrasse 5, 90409 Nuernberg, Germany AG Nuernberg, HRB 16746, GF: Markus Rex -- To unsubscribe, e-mail: yast-devel+unsubscribe@opensuse.org For additional commands, e-mail: yast-devel+help@opensuse.org
On Thursday, February 10, 2011 05:36:00 pm Johannes Meixner wrote:
Hello,
On Feb 10 15:25 Thomas Goettlicher wrote (excerpt):
Your attached diagram looks similar to the overview designed by jdsn and me: +---+---+---+---+ +--------------+
| Q | N | g | c | |webyast client| | t | C | t | m | +------+-------+ | | | | k | d | |
+---+---+---+ | http
| libyui | | |
+-----------+ +-----------+---+ +------+-------+
| lib shell | | yast modules | | rest service |
+-----------+--------+---------------+----------+--------------+
| common lib: reads/writes config files, starts/stops services | | | integration of polkit and zypp |
+--------------------------------------------------------------+
| SYSTEM |
+--------------------------------------------------------------+
I think I understand Robert's attached diagram but I know that I do not understand your overview.
Thank you for giving me the opportunity to explain the diagram. The common lib provides an api for system configuration. E.g. it allows to add a new print queue, it knows which files to touch and checks user's permissions. It doesn't know anything about the presentation to the user. That's the yast module's task. It assigns the common lib's methods to input widgets shown by libyui (qt,ncurses,gtk). The positive aspect is that other frontends like webyast also can use the common lib for system configuration. Even other distros might use the common lib and build their own config frontends on top of it.
All what I pick from your overview is that when I want to make a yast module for my specific config task, it would be insufficient.
I see that additionally I have to care about stuff like "rest service" and "lib shell" (whatever this is) and I fear that I have to implement at least parts of my code up to tree times - I won't do this - I would simply give up.
Furthermore I would be hit by whatever shortcoming of the "common lib" which seems to sit in between my code and the actual SYSTEM that I want to change. The "common lib" may not exactly provide what I need for my specific config task so that I would have to implement whatever workarounds...
Conclusion: This YaST thingy is both insufficient and too complicated for me. I will write my own setup tool in my own preferred language. I know how to do it so that the tool does what I want.
If you like you could use me as some kind of "test case" whether or not an individual contributor would like to join the project.
Great! Thank you for your support. It makes sense to design a framework that can be used in the end.
What I mean: The more the whole stuff is complicated (or oversophisticated), the less likelihood that someone gets sufficiently interested to actually contribute something.
Or in other words: If the first attempt to make a simple setup tool fails because the whole stuff is too complicated, it was probably the last attempt.
Kind Regards Johannes Meixner
-- Thomas Goettlicher SUSE LINUX Products GmbH, GF: Markus Rex, HRB 16746 (AG Nuernberg) -- To unsubscribe, e-mail: yast-devel+unsubscribe@opensuse.org For additional commands, e-mail: yast-devel+help@opensuse.org
On Thursday 10 February 2011 17:36:00 Johannes Meixner wrote: On Feb 10 15:25 Thomas Goettlicher wrote (excerpt):
Your attached diagram looks similar to the overview designed by jdsn and me:
+---+---+---+---+ +--------------+ | Q | N | g | c | |webyast client| | t | C | t | m | +------+-------+ | | | k | d | | +---+---+---+ | http | libyui | | | +-----------+ +-----------+---+ +------+-------+ | lib shell | | yast modules | | rest service | +-----------+--------+---------------+----------+--------------+ | common lib: reads/writes config files, starts/stops services | | integration of polkit and zypp | +--------------------------------------------------------------+ | SYSTEM | +--------------------------------------------------------------+
I think I understand Robert's attached diagram but I know that I do not understand your overview.
This diagram was the result of a discussion Thomas and I had yesterday. Without some additional explanation it is just some nice Ascii-Art :) So let me explain what we discussed: The "Common Lib" can be seen as the new SCR. The CL knows how to do configuration tasks in the system. Here is the intelligence that knows how to parse all kinds of cryptic config files, start, stop, insert, remove services... aso. We wanted to solve these goals with this approach: Better desktop integration of the modules ------------------------------------------- The module can be integrated into different desktops more easily by running all modules with user privileges (without exception). All configuration calls are done via the CL that integrates polkit to check if this specific user is allowed to do the change. Attract external developers and distros ----------------------------------------- We want to attract other in our community to help and from other distros to also use the CL. Thus it needs to be able to run on _all_ kinds of linux systems. So the implementation of the config tasks might differ from distro to distro, but the calls from the modules above do not change. See it as a standardized API to to do configurations. Tranparently offer all CL tasks to WebYaST -------------------------------------------------- The CL could run a tight attached webservice to offer all tasks as REST service. No developer of a CL task should need to do anything for the integration in the web service, as all tasks of the CL are available via the REST interface as well (automagically). Offer simple scripting interface ---------------------------------- The CL offers a shell or scripting interface to easily allow any third party tool to configure what it likes without the need to rely on any YaST module. All configuration tasks could be done directly by using the CL API. YaST modules are just one abstraction layer that intelligently combine several configuration steps (tasks) into a workflow to solve a problem. Example: A user wants to add a samba share. The "Shares" module finds that samba is not installed, offers to install it, opens the port in the firewall, and then does the remaining samba configuration. This is an abstraction to ease the single tasks for the user. Experts (or scripts) who know what to do can use the shell directly. Btw. LibShell is not a replacement of the current commandLine interface. This interface still relies on the module and can use all its magic and dependent configuration tasks. Make the new YaST available for other distros ---------------------------------------------- We can offer the system to any other distro. They only need to implement the distro-specific differences into the CL tasks and they would get 6 UIs for free (shell, cmdline, Qt, gtk, ncurses, web). This also means that the YaST modules shoud never do system calls directly, as each task may be different on another distro. Thus "zypp" integration as mentionend above maybe misleading. We meant a generic interface to the package management - this may be packagekit talking to zypp, on other distros this might be something completely different. So the new kind of YaST modules are very similar to the current webyast web- client modules - they just care about the proper presentation of depending tasks to solve a problem. The CL can be seen as the data model that is to be queried and changed. All these goals are goals for the long run. They are not the reason why we discuss about this change. But if we are in the discussion of a change anyway and even think about radical changes (like dumping a language and consolidating to a new one), then lets think big and see how perfect we can be and how we could attract others as well. When we do only very little changes to the existing system and create the new one in a way that it cooperates perfectly with the current YCP based one we would inherit all burden of the current system. We would not gain a lot besides just to have a new language. My dream of a new YaST is a system that does not remind anybody of YCP once we dropped YCP support/bindings. So lets design the system as good and clean as we can, using best practices of the new language, and without "thinking in YCP", and then lets see how it could be connected for the time of the transition. Ciao, Daniel -- J. Daniel Schmidt <jdsn@suse.de> SUSE Linux Products GmbH Research & Development Maxfeldstr. 5 GF: Markus Rex, HRB 16746 (AG Nürnberg) D-90409 Nürnberg -- To unsubscribe, e-mail: yast-devel+unsubscribe@opensuse.org For additional commands, e-mail: yast-devel+help@opensuse.org
+---+---+---+---+ +--------------+ | Q | N | g | c | |webyast client| | t | C | t | m | +------+-------+ | | | k | d | | +---+---+---+ | http | libyui | | | +-----------+ +-----------+---+ +------+-------+ | lib shell | | yast modules | | rest service | +-----------+--------+---------------+----------+--------------+ | common lib: reads/writes config files, starts/stops services | | integration of polkit and zypp | +--------------------------------------------------------------+ | SYSTEM | +--------------------------------------------------------------+
OK, one more for today, because I just cannot help myself ;) Attached is a revision of my original diagram incorporating some of the design style of the ASCII art above. Differences: - There is no lib common, the lib common layer of the ASCII art diagram is implemented by a modularized layer called "Configuration Modules". - There is no lib-shell. In the modularized approach a power user can import/use any module implemented in the "Configuration Modules" layer directly, no need for additional indirection. - No "yast modules" as in the ASCII art, I believe these are superfluous. Additional notes: - Policykit integration would just be another module in the "Configuration Modules" layer - Zypper integration could be a SUSE specific module in the "Configuration Modules" layer, other distros would implement their own package manager integration module (although the API of this module would have to specified and be consistent across distributions) - If asynchronous communication between the GUI elements and the "Configuration Modules" layer is needed some kind of IPC mechanism could sit between the GUI modules and the "Configuration Modules" layer. I do not believe this to be necessary and think the GUI modules can directly import/use modules from the "Configuration Modules" layer. Robert -- Robert Schweikert MAY THE SOURCE BE WITH YOU Novell-IBM Software Integration Center LINUX Tech Lead rschweikert@novell.com rschweikert@ca.ibm.com 781-464-8147 Novell Making IT Work As One
Hello, On Feb 10 17:21 Robert Schweikert wrote (excerpt):
Attached is a revision of my original diagram incorporating some of the design style of the ASCII art above.
You lost me. I do no longer understand it. I would not even try to use such an overcomplicated framework. By the way: Of course as an epmloyee of the same company who makes such stuff, I would have to use those stuff - but I would not try to use it if I was a free software contributor. Kind Regards Johannes Meixner -- SUSE LINUX Products GmbH, Maxfeldstrasse 5, 90409 Nuernberg, Germany AG Nuernberg, HRB 16746, GF: Markus Rex -- To unsubscribe, e-mail: yast-devel+unsubscribe@opensuse.org For additional commands, e-mail: yast-devel+help@opensuse.org
On Friday, February 11, 2011 11:07:37 am Johannes Meixner wrote:
Hello,
On Feb 10 17:21 Robert Schweikert wrote (excerpt):
Attached is a revision of my original diagram incorporating some of the design style of the ASCII art above.
You lost me. I do no longer understand it. I would not even try to use such an overcomplicated framework. As a module developer you don't need to understand the whole framework.
If you want to replace a car's headlamp bulb you don't have read the whole circuit diagram. Yes, the design of the car is complex but maintenance is easy. We should design YaST in a similar way. Adding a new module e.g. flux capacitor configuration _must_ be easy! It's very important that you remind not to lose focus on an easy extendable yast. Thank you.
By the way: Of course as an epmloyee of the same company who makes such stuff, I would have to use those stuff - but I would not try to use it if I was a free software contributor.
Kind Regards Johannes Meixner
-- Thomas Goettlicher SUSE LINUX Products GmbH, GF: Markus Rex, HRB 16746 (AG Nuernberg) -- To unsubscribe, e-mail: yast-devel+unsubscribe@opensuse.org For additional commands, e-mail: yast-devel+help@opensuse.org
Hello, On Feb 11 11:39 Thomas Goettlicher wrote (excerpt):
We should design YaST in a similar way. Adding a new module e.g. flux capacitor configuration _must_ be easy!
As an example assume there is a software which provides a horrible stack of any kind of scripts to install it plus any kind of GUI programs to configure it. Aassume that for this software plain "rpm" is insufficient to install it (e.g. assume this software needs a special kind of activation or authentication by its end-user). Now a single user of this software (not the developer team of this software - but perhaps an user who provides this software "as is" via the openSUSE build service) likes to contribute a YaST module to install and configure this software. What he wants to implement is a YaST module which provides a frontend that asks for particular installation parameters and calls each of the scripts one by one to get it installed and then the YaST module runs the software's GUI programs which configure the software. Would it be easy to implement such a YaST module? Basically such a YaST module would have a simple straightfoward workflow where YaST GUI dialogs which ask for particular installation parameters run intermixed with code which changes the system (the scripts and the software's GUI programs). I would be more than happy if it was possible to implement such a YaST module in a single YaST source code file like: ------------------------------------------------------------------ import basic yast stuff import yast gui elements import run external non-gui programs import run external gui programs repeat { show dialog which asks for parameters for first script } until check of parameters for first script is o.k. run first script if first script results failure then show error popup and exit 1 ... repeat { show dialog which asks for parameters for last script } until check of parameters for last script is o.k. run last script if last script results failure then show error popup and exit 1 show popup that installation is completed show feedback that first GUI program is launched run first GUI program close feedback that first GUI program is launched if first GUI program results failure then show error popup and exit 1 ... show feedback that last GUI program is launched run last GUI program close feedback that last GUI program is launched if last GUI program results failure then show error popup and exit 1 show popup that configuration is completed exit 0 ------------------------------------------------------------------ Kind Regards Johannes Meixner -- SUSE LINUX Products GmbH, Maxfeldstrasse 5, 90409 Nuernberg, Germany AG Nuernberg, HRB 16746, GF: Markus Rex -- To unsubscribe, e-mail: yast-devel+unsubscribe@opensuse.org For additional commands, e-mail: yast-devel+help@opensuse.org
On Friday, February 11, 2011 12:18:12 pm Johannes Meixner wrote:
Hello,
On Feb 11 11:39 Thomas Goettlicher wrote (excerpt):
We should design YaST in a similar way. Adding a new module e.g. flux capacitor configuration _must_ be easy!
As an example assume there is a software which provides a horrible stack of any kind of scripts to install it plus any kind of GUI programs to configure it.
Aassume that for this software plain "rpm" is insufficient to install it (e.g. assume this software needs a special kind of activation or authentication by its end-user).
Now a single user of this software (not the developer team of this software - but perhaps an user who provides this software "as is" via the openSUSE build service) likes to contribute a YaST module to install and configure this software.
What he wants to implement is a YaST module which provides a frontend that asks for particular installation parameters and calls each of the scripts one by one to get it installed and then the YaST module runs the software's GUI programs which configure the software.
Would it be easy to implement such a YaST module?
I hope I understood your use case correctly. Please correct me if I'm wrong. You have some shell scripts that need be be called with parameters and the return code indicates if everything went fine. You create a plugin for the commonlib or in Robert's notation a "configuration module" that abstracts these shell scripts. Let's say this module provides an api function bool flux::first_time_installation(parameter) it calls your shell script and returns its exit value. The whole business logic is implemented now. If you don't add anything else your yast offers automatically a configuration module for flux that shows an input field for first_time_installation(). You can test whether your business logic works. That's a poor ui and you want to improve it. Your next step is to polish the ui and replace the automatically generated ui module with your code that represents your workflow.
Basically such a YaST module would have a simple straightfoward workflow where YaST GUI dialogs which ask for particular installation parameters run intermixed with code which changes the system (the scripts and the software's GUI programs).
I would be more than happy if it was possible to implement such a YaST module in a single YaST source code file like: ------------------------------------------------------------------ import basic yast stuff import yast gui elements import run external non-gui programs import run external gui programs
repeat { show dialog which asks for parameters for first script } until check of parameters for first script is o.k.
run first script
if first script results failure then show error popup and exit 1
...
repeat { show dialog which asks for parameters for last script } until check of parameters for last script is o.k.
run last script
if last script results failure then show error popup and exit 1
show popup that installation is completed
show feedback that first GUI program is launched
run first GUI program
close feedback that first GUI program is launched
if first GUI program results failure then show error popup and exit 1
...
show feedback that last GUI program is launched
run last GUI program
close feedback that last GUI program is launched
if last GUI program results failure then show error popup and exit 1
show popup that configuration is completed
exit 0 ------------------------------------------------------------------
Kind Regards Johannes Meixner
-- Thomas Goettlicher SUSE LINUX Products GmbH, GF: Markus Rex, HRB 16746 (AG Nuernberg) -- To unsubscribe, e-mail: yast-devel+unsubscribe@opensuse.org For additional commands, e-mail: yast-devel+help@opensuse.org
Hello, On Feb 11 13:12 Thomas Goettlicher wrote (excerpt):
On Friday, February 11, 2011 12:18:12 pm Johannes Meixner wrote: ...
As an example assume there is a software which provides a horrible stack of any kind of scripts to install it plus any kind of GUI programs to configure it. ... What he wants to implement is a YaST module which provides a frontend that asks for particular installation parameters and calls each of the scripts one by one to get it installed and then the YaST module runs the software's GUI programs which configure the software.
Would it be easy to implement such a YaST module?
I hope I understood your use case correctly. Please correct me if I'm wrong.
What about when a software's graphical GUI programs have to be called from within a YaST module? For a real-world example: In the YaST printer and scanner modules I provide that the user can run HP's own graphical GUI setup program "hp-setup". HP's own tool "hp-setup" provides the only way to set up HP all-in-one devices which require a proprietary plugin downloaded from HP and installed on the end-user's machine after the end-user confirmed a particular license agreement. Additionally "hp-setup" provides the best available support to set up HP all-in-one network devices. I have neither the knowledge to deal with special cases for HP devices nor do I have the time to re-implement in YCP what "hp-setup" already provides "out-of-the-box" nor am I legally allowed to implement something on my own which deals with HP's proprietary stuff.
You have some shell scripts that need be be called with parameters and the return code indicates if everything went fine. You create a plugin for the commonlib or in Robert's notation a "configuration module" that abstracts these shell scripts. Let's say this module provides an api function bool flux::first_time_installation(parameter) it calls your shell script and returns its exit value.
Why do I need to implement a wrapper function? Does the commonlib not provide a ready-to-use module which I could import and use like in my example code:
------------------------------------------------------------------ ... import run external non-gui programs ... run first script
or does the commonlib not provide a ready-to-use function like in YCP "SCR::Execute(.target.bash_output, bash_commandline)"? Kind Regards Johannes Meixner -- SUSE LINUX Products GmbH, Maxfeldstrasse 5, 90409 Nuernberg, Germany AG Nuernberg, HRB 16746, GF: Markus Rex -- To unsubscribe, e-mail: yast-devel+unsubscribe@opensuse.org For additional commands, e-mail: yast-devel+help@opensuse.org
On Friday, February 11, 2011 03:06:00 pm Johannes Meixner wrote:
Hello,
On Feb 11 13:12 Thomas Goettlicher wrote (excerpt):
On Friday, February 11, 2011 12:18:12 pm Johannes Meixner wrote: ...
As an example assume there is a software which provides a horrible stack of any kind of scripts to install it plus any kind of GUI programs to configure it.
...
What he wants to implement is a YaST module which provides a frontend that asks for particular installation parameters and calls each of the scripts one by one to get it installed and then the YaST module runs the software's GUI programs which configure the software.
Would it be easy to implement such a YaST module?
I hope I understood your use case correctly. Please correct me if I'm wrong.
What about when a software's graphical GUI programs have to be called from within a YaST module? That's where design clashes with reality. In this scenario you need to run the yast ui as user root. But more important: How to tunnel a gui program to a webyast module? From the design point you don't want this. Your example shows that reality looks different. :-(
For a real-world example:
In the YaST printer and scanner modules I provide that the user can run HP's own graphical GUI setup program "hp-setup".
HP's own tool "hp-setup" provides the only way to set up HP all-in-one devices which require a proprietary plugin downloaded from HP and installed on the end-user's machine after the end-user confirmed a particular license agreement.
Additionally "hp-setup" provides the best available support to set up HP all-in-one network devices.
I have neither the knowledge to deal with special cases for HP devices nor do I have the time to re-implement in YCP what "hp-setup" already provides "out-of-the-box" nor am I legally allowed to implement something on my own which deals with HP's proprietary stuff.
You have some shell scripts that need be be called with parameters and the return code indicates if everything went fine. You create a plugin for the commonlib or in Robert's notation a "configuration module" that abstracts these shell scripts. Let's say this module provides an api function bool flux::first_time_installation(parameter) it calls your shell script and returns its exit value.
Why do I need to implement a wrapper function? Does the commonlib not provide a ready-to-use module You split your code into two parts: business logic and user interface. In your specific case business logic is pretty simple as it just calls shell scripts. The ui doesn't even know that shell scripts are called it just the api's high level functions.
which I could import and use like in my example code:
------------------------------------------------------------------
...
import run external non-gui programs
...
run first script
or does the commonlib not provide a ready-to-use function like in YCP "SCR::Execute(.target.bash_output, bash_commandline)"?
The commonlib provides such a function but it's not directly used by ui modules, because running shell scripts isn't an abstract task.
Kind Regards Johannes Meixner
-- Thomas Goettlicher SUSE LINUX Products GmbH, GF: Markus Rex, HRB 16746 (AG Nuernberg) -- To unsubscribe, e-mail: yast-devel+unsubscribe@opensuse.org For additional commands, e-mail: yast-devel+help@opensuse.org
Hello, On Feb 11 15:37 Thomas Goettlicher wrote (excerpt):
But more important: How to tunnel a gui program to a webyast module?
More general: How to tunnel the I/O of an arbitrary program which was launched by YaST to any kind of YaST user frontend? It would be something for an "brilliant design" of the underlying YaST environment that neither the developer of the YaST module which calls the arbitrary program nor the end-user who runs the YaST module would have to care about what goes on behind the scenes. Off the top of my head: What about something like VNC?
From the design point you don't want this. Your example shows that reality looks different. :-(
In the end reality is what matters. In my case I added a tiny C program to the YaST printer and scanner modules which tests if a X window can be opened. If yes the YaST printer and scanner modules launch "hp-setup" otherwise a user information is shown. Furthermore I added special RPM spec file hacks so that the YaST printer and scanner modules have no RPM requirements for X libraries. This is my current best-effort attempt to work around the shortcoming that YaST does not fully support to run any external program in any end-user environment. I implement any dirty hack and I ignore any YaST guidelines if I don't see a better way how I could implement some special setup support. This is the result that my focus of mind is basically only to somehow make a setup tool for my specific setup task ;-) Kind Regards Johannes Meixner -- SUSE LINUX Products GmbH, Maxfeldstrasse 5, 90409 Nuernberg, Germany AG Nuernberg, HRB 16746, GF: Markus Rex -- To unsubscribe, e-mail: yast-devel+unsubscribe@opensuse.org For additional commands, e-mail: yast-devel+help@opensuse.org
On 02/11/2011 05:39 AM, Thomas Goettlicher wrote:
On Friday, February 11, 2011 11:07:37 am Johannes Meixner wrote:
Hello,
On Feb 10 17:21 Robert Schweikert wrote (excerpt):
Attached is a revision of my original diagram incorporating some of the design style of the ASCII art above.
You lost me. I do no longer understand it. I would not even try to use such an overcomplicated framework. As a module developer you don't need to understand the whole framework.
I somewhat disagree with this. As a module developer you must understand the basic concepts and the big picture of the framework. If you don't you develop in a vacuum. One does necessarily need to understand every intricate detail of the framework, that is correct. Robert -- Robert Schweikert MAY THE SOURCE BE WITH YOU Novell-IBM Software Integration Center LINUX Tech Lead rschweikert@novell.com rschweikert@ca.ibm.com 781-464-8147 Novell Making IT Work As One -- To unsubscribe, e-mail: yast-devel+unsubscribe@opensuse.org For additional commands, e-mail: yast-devel+help@opensuse.org
On Friday 11 February 2011 16:22:30 Robert Schweikert wrote:
As a module developer you don't need to understand the whole framework.
^^^^^ ^^^^^^^^^^^^^^^
I somewhat disagree with this.
Really?
As a module developer you must understand the basic concepts and [...] ^^^^^^^^^^^^^^ Good to see that you agree with each other.
SCNR :) Ciao, Daniel -- J. Daniel Schmidt <jdsn@suse.de> SUSE Linux Products GmbH Research & Development Maxfeldstr. 5 GF: Markus Rex, HRB 16746 (AG Nürnberg) D-90409 Nürnberg -- To unsubscribe, e-mail: yast-devel+unsubscribe@opensuse.org For additional commands, e-mail: yast-devel+help@opensuse.org
On 02/11/2011 05:07 AM, Johannes Meixner wrote:
Hello,
On Feb 10 17:21 Robert Schweikert wrote (excerpt):
Attached is a revision of my original diagram incorporating some of the design style of the ASCII art above.
You lost me.
Sorry, why? Please explain what elements of the revised diagram throw you for a loop. rev2 is in principle the same as the original.
I do no longer understand it. I would not even try to use such an overcomplicated framework.
What part do you see as overcomplicated? If we want to have an architecture everyone can work to and with the pictorial representation needs to be easy to grasp for pretty much everyone. How about the attached diagram? Thanks, Robert -- Robert Schweikert MAY THE SOURCE BE WITH YOU Novell-IBM Software Integration Center LINUX Tech Lead rschweikert@novell.com rschweikert@ca.ibm.com 781-464-8147 Novell Making IT Work As One
* Robert Schweikert <rschweikert@novell.com> [Feb 11. 2011 16:17]:
How about the attached diagram?
Ok from the general concept, but problematic in two details - REST is separate from the API of other UIs - Maintaining a distinct UI-lib plus Qt and Ncurses besides the Web UI will need a lot of resources. Not alone coding but esp. from a design point of view. 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
On 02/11/2011 10:24 AM, Klaus Kaempf wrote:
* Robert Schweikert <rschweikert@novell.com> [Feb 11. 2011 16:17]:
How about the attached diagram?
Ok from the general concept, but problematic in two details
- REST is separate from the API of other UIs
Not really, I am trying to express that we need to have some service that makes the API of the modules in the "Configuration Modules" layer available. The API itself should still be the same, issue GET or POST GET (network.getHostname) POST (network.setDomainname) vs. the other user interfaces import yast3.network yast3.network.getHostname() yast3.network.setHostname() But it may not be this simple, not a web developer ;)
- Maintaining a distinct UI-lib plus Qt and Ncurses besides the Web UI will need a lot of resources. Not alone coding but esp. from a design point of view.
Well I think UI-lib should really be responsible rendering to GNOME, KDE, ncurses. The pictorial representation is not good, will think about how to improve it. I think we should target something like the following pseudo code: myConfigGui.extension import yast3.myConfigBackend import yast3.gui_elements text = yast3.gui_elements.text_box() The gui_elements module takes care of QT vs. Gtk+ vs. ncurses, of course that is not cheap as far as effort is concerned. Robert -- Robert Schweikert MAY THE SOURCE BE WITH YOU Novell-IBM Software Integration Center LINUX Tech Lead rschweikert@novell.com rschweikert@ca.ibm.com 781-464-8147 Novell Making IT Work As One -- To unsubscribe, e-mail: yast-devel+unsubscribe@opensuse.org For additional commands, e-mail: yast-devel+help@opensuse.org
Hello, On Feb 11 10:17 Robert Schweikert wrote (excerpt):
On 02/11/2011 05:07 AM, Johannes Meixner wrote:
You lost me.
Sorry, why? Please explain what elements of the revised diagram throw you for a loop. rev2 is in principle the same as the original.
I cannot because to explain something, one has to understand it.
How about the attached diagram?
Much better. What I think what it means is that I need only to care about the green part (i.e. make a configuration module). The rest seems to only show me the environment and I don't need to care about the various kind of user frontends. They are there and all of them "just work". Of course if I may find out later that I would have to care about the various user frontends, I would be no longer interested because this would become too complicated. Kind Regards Johannes Meixner -- SUSE LINUX Products GmbH, Maxfeldstrasse 5, 90409 Nuernberg, Germany AG Nuernberg, HRB 16746, GF: Markus Rex -- To unsubscribe, e-mail: yast-devel+unsubscribe@opensuse.org For additional commands, e-mail: yast-devel+help@opensuse.org
On 02/11/2011 10:43 AM, Johannes Meixner wrote:
Hello,
On Feb 11 10:17 Robert Schweikert wrote (excerpt):
On 02/11/2011 05:07 AM, Johannes Meixner wrote:
You lost me.
Sorry, why? Please explain what elements of the revised diagram throw you for a loop. rev2 is in principle the same as the original.
I cannot because to explain something, one has to understand it.
I asked you to explain what you didn't understand ;)
How about the attached diagram?
Much better.
What I think what it means is that I need only to care about the green part (i.e. make a configuration module).
Yes.
The rest seems to only show me the environment and I don't need to care about the various kind of user frontends. They are there and all of them "just work".
Yes, but if you want to have a module that others can interact with via the command line or a GUI you will have to implement that behavior. There is no "automagic generate my UI code" engine.
Of course if I may find out later that I would have to care about the various user frontends,
Only the user front ends you deem important to support. However, since things are nicely separated someone else who really likes to implement GUIs can easily put a frontend on top of you module. Robert -- Robert Schweikert MAY THE SOURCE BE WITH YOU Novell-IBM Software Integration Center LINUX Tech Lead rschweikert@novell.com rschweikert@ca.ibm.com 781-464-8147 Novell Making IT Work As One -- To unsubscribe, e-mail: yast-devel+unsubscribe@opensuse.org For additional commands, e-mail: yast-devel+help@opensuse.org
On Thursday 10 February 2011 23:21:17 Robert Schweikert wrote:
Attached is a revision of my original diagram incorporating some of the design style of the ASCII art above.
Differences:
- There is no lib common, the lib common layer of the ASCII art diagram is implemented by a modularized layer called "Configuration Modules".
You only gave it another name. I never said that the thing Thomas an I called "common lib" should be one blob, that any module has to load even if does not need it. We didn't even say anything about how such stuff could be implmented or organized. Your attached image basicall shows what we meant. Thank you for colorizing it :)
- There is no lib-shell. In the modularized approach a power user can import/use any module implemented in the "Configuration Modules" layer directly, no need for additional indirection.
These was just a name as well - an idea we had during the brainstorming. Please see all of this as such. If your "configuration modules" can be used by other tools this is perfectly fine. Thanks for giving it a better name.
- No "yast modules" as in the ASCII art, I believe these are superfluous.
Again, this was just to show that we wanted to separate the view from the model. I guess that you also agree that this this should be possible with the collection of the "Configuration Modules" as well. I mean specifically that a third party tool can import one single "YaST3 configuration module" and should not rely on any (Y)UI related stuff by doing this.
Additional notes:
- Policykit integration would just be another module in the "Configuration Modules" layer
This already was in our ASCII art :)
- Zypper integration could be a SUSE specific module in the "Configuration Modules" layer, other distros would implement their own package manager integration module (although the API of this module would have to specified and be consistent across distributions)
The thing in brackets was the only reason why we called it "common lib". Reading your comments I really think that we basically meant the same, but just called it differently. Your yast3Arch_rev2.png is pretty much the same as our ASCII art, just with other names and more details. Ciao, Daniel -- J. Daniel Schmidt <jdsn@suse.de> SUSE Linux Products GmbH Research & Development Maxfeldstr. 5 GF: Markus Rex, HRB 16746 (AG Nürnberg) D-90409 Nürnberg -- To unsubscribe, e-mail: yast-devel+unsubscribe@opensuse.org For additional commands, e-mail: yast-devel+help@opensuse.org
Hi, On 02/11/2011 05:24 AM, J. Daniel Schmidt wrote:
On Thursday 10 February 2011 23:21:17 Robert Schweikert wrote:
Attached is a revision of my original diagram incorporating some of the design style of the ASCII art above.
Differences:
- There is no lib common, the lib common layer of the ASCII art diagram is implemented by a modularized layer called "Configuration Modules".
You only gave it another name. I never said that the thing Thomas an I called "common lib" should be one blob, that any module has to load even if does not need it.
Correct, but using "lib" as a name implies that this is one piece. A library on the system is in one piece, you cannot load half of libc. <snip>
Reading your comments I really think that we basically meant the same,
Yes, I think we are pretty much on the same page. That's why I attempted to somewhat merge the two presentations of the architecture diagram. And it appears that I have succeeded. Robert -- Robert Schweikert MAY THE SOURCE BE WITH YOU Novell-IBM Software Integration Center LINUX Tech Lead rschweikert@novell.com rschweikert@ca.ibm.com 781-464-8147 Novell Making IT Work As One -- To unsubscribe, e-mail: yast-devel+unsubscribe@opensuse.org For additional commands, e-mail: yast-devel+help@opensuse.org
On Friday, February 11, 2011 03:43:11 pm Robert Schweikert wrote:
Hi,
On 02/11/2011 05:24 AM, J. Daniel Schmidt wrote:
On Thursday 10 February 2011 23:21:17 Robert Schweikert wrote:
Attached is a revision of my original diagram incorporating some of the design style of the ASCII art above.
Differences:
- There is no lib common, the lib common layer of the ASCII art diagram is implemented by a modularized layer called "Configuration Modules".
You only gave it another name. I never said that the thing Thomas an I called "common lib" should be one blob, that any module has to load even if does not need it.
Correct, but using "lib" as a name implies that this is one piece. A library on the system is in one piece, you cannot load half of libc. I agree lib isn't a prefect name for it. Feel free to propose a better name. "Configuration module layer" or what ever.
<snip>
Reading your comments I really think that we basically meant the same,
Yes, I think we are pretty much on the same page. That's why I attempted to somewhat merge the two presentations of the architecture diagram.
And it appears that I have succeeded.
Robert
-- Thomas Goettlicher SUSE LINUX Products GmbH, GF: Markus Rex, HRB 16746 (AG Nuernberg) -- To unsubscribe, e-mail: yast-devel+unsubscribe@opensuse.org For additional commands, e-mail: yast-devel+help@opensuse.org
On 02/10/2011 06:34 PM, J. Daniel Schmidt wrote:
My dream of a new YaST is a system that does not remind anybody of YCP once we dropped YCP support/bindings. So lets design the system as good and clean as we can, using best practices of the new language, and without "thinking in YCP", and then lets see how it could be connected for the time of the transition.
This is fine, but to design a good API you need to start with the module/client itself, and iterate the APIs as you go. There is no such thing as a useful API designed on paper. -- Duncan Mac-Vicar P. - Novell® Making IT Work As One™ SUSE LINUX Products GmbH, GF: Markus Rex, HRB 16746 (AG Nuernberg) -- To unsubscribe, e-mail: yast-devel+unsubscribe@opensuse.org For additional commands, e-mail: yast-devel+help@opensuse.org
participants (19)
-
Arvin Schnell
-
Bart Whiteley
-
Birger Kollstrand
-
Duncan Mac-Vicar P.
-
Gabriele Mohr
-
J. Daniel Schmidt
-
Jiri Srain
-
Jiri Suchomel
-
Johannes Meixner
-
Josef Reidinger
-
Klaus Kaempf
-
Ladislav Slezak
-
Lukas Ocilka
-
Martin Kudlvasr
-
Martin Vidner
-
Patrick Shanahan
-
Robert Schweikert
-
Stanislav Visnovsky
-
Thomas Goettlicher