Minutes:LISA04 BOF

From Cfwiki

Jump to: navigation, search

The BoF finished --pearcec 20:06, 16 Nov 2004 (EST)

  • Mark asked for feedback about what we could be doing with Cfengine. (The bells and whistles)
    • What features would people like to see and how would you like to develop it or go about doing it.
    • Mark noted one of the problems is people say they will develop but never do.


  • Mark talked about what has happened recently with Cfengine. Mark needs to maintain the infrastructure of Cfengine. Because of the fragile properties of Cfengine, Ad-Hoc changes might upset the principles. Mark works to make changes without damaging these principles. He noted changes are slow.
    • Mark is focusing on Methods -- Local or RPC methods, but with in the framework of cfengine. Both pull based and convergent.
      • This is important because it leads to recursion. Which will lead to lead to iteration in a declaritive language.
      • Mark notes that iterating over lists exists currently. Loops are not going to be added as iterative. Defining loops in a declarative language allows for infinite loops or inconsistent loops which goes against the grain of cfengine being convergent.
      • Doesn't know how to add loops in declarative sense, but he is working on it.
    • Anomaly detection -- Working on it.
    • cfshow -- Dumps berkeley db files


  • Mark feels he is now up to date with 2.1.11 which is going to lead us into solving new problems like loops. And is now going to take questions for improvements from the crowd.
    • Can we take documentation patches. Mark said documentation is very valuable. He tries to document as he updates the code.
    • Doxygen or NaturalDocs was brought up about a possibility for documenting the internals. He felt that the code should be expressive in the logic and through good variable definitions. And JavaDoc asks too much of the developer.


  • Mark asked if he thinks the code is easy to read? Mentioned Kent and Luke felt it bad because of curly braces. We got side tracked about indentation and how Mark's emacs settings made it look bad. Luke thinks that when people submit pages coding style is important. Everything was changed from C to ANSI C. All CONSTANTS were changed to all CAP. Anything with CF_ is a macro and anything (that) isn't is a global variable which is also all capitalized.


  • Comment was made about methods reducing the amount of redundant code. Mark agrees methods are valuable and said it might take some time to learn about them.


  • Kent Skaar comments that implementing methods by forking a cfagent conflicts with what he wrote in Login: about perl vs shell. Considering perl to be better since it doesn't fork. Mark agreed we are forking but not nearly the same. And the only way to pass the parameters in a portable way was to fork. Instead of using shared method which might be less portable.
    • Luke asks why methods are not implemented like other languages. Since the syntax is the same. Forking is easier in terms of private variables and locking. Mark said he gave careful thought to his decisions. Comment made that forks are not nearly as expensive because of a fork on write. And the only way to know is to implement a non forking way and test.
    • If you let people do everything in Cfengine you might as well give them perl.
    • Cfengine has been grown organically ... based on several different types (and) examples of languages.
    • There is a problem with striking a balance between providing too much in the language -- Do people find that Cfengine strikes the balance between too much and not enough?


  • Question was asked about methods, but I missed it. I think this question was mine (Joe Moore): "Do you see methods as the generalization of "Contexts". i.e where update.conf runs in the "Update" context, some variables exist in the Global context, etc. The answer was: more or less. The code can't really merge, but it's a similar concept.


  • Can you speak about ordering and methods? Methods are not run in parallel, they are run sequentially.


  • Do you have any views about scalability with 1000's of hosts? Is it appropriate, is it not? The important thing about scalabilty is say what you mean. Cfengine is a tool that lets you deploy models of different types. You can deploy it as a file server or as a distributed peer to peer model. Scalability is all about the model you choose. What we know about centralized server it is 1/N. In peer to peer there is no penality.
    • Discussion about peer to peer. Configurations can be spread by every peer by a flooding mechanism. Mark talks about decentralization.
    • Luke comments about using a Load Balancer.
    • Marks listed out the following possiblility for scaling
      • Failover as a method of scaling
      • Strategies like Load Balancing
      • SplayTime is the classic method (Rule of Thumb: people with big sites should set a SplayTime as a 10th of the number of hosts, i.e., 300 hosts should set the SplayTime to 30 minutes) Biggest site Mark knows of is 11,000 machines, but doesn't know the model. There are several with thousands of hosts, but again Mark doesn't know the model.
    • Kent said the reason it is expensive is because of the copy method used. It is very noisy. Mark asked compared to what? Any Kent said anything would be better than what we are using now. Say secure copy.
      • Mark said he agrees but there is no way around this because we need to keep consistent with the approach of keeping it secure. We have discussed this and have found methods to improve the efficency. Because of the principles of Cfengine it is going to be slower. That is the price to pay.
      • Missed further comment from Kent Skaar. More talk about copying and (?)


  • Luke asks about Community development, example is case sensitivity.
    • Mark said this is a mess based on the organic growth. Maybe we should start over with some of it.
    • Mark is willing to accept patches, but is worried about taking patches that might upset the principles core to the language. But likes to discuss it first.
    • Comments were made about the syntax. And Luke said we need ways to update the syntax.


  • Mark does do refactoring, but if he didn't accept a change it was because he was worried it would effect someone.


  • Question about actionsequences were made. Can I do shellcommands.classname without having it execute all the not-specified shellcommands first.
    • Mark admits this is a tough beast. He would like to remove this actionsequence and have it figure it out for you automatically.


  • Wrap up. The next thing should be fiddly, but careful changes that would get research. Updating the declarative syntax. Make it flexible without relinquishing control and possibly breaking the cfengine principles.
    • Is the documentation in the CVS tree? (A group of us got together afterwards to figure out what to do about the documentation. We have a mailing list now: doc-cfengine at casa.cavewallarts.com. Email minimalist at casa.cavewallarts.com with the subject line: subscribe doc-cfengine. (Note: the doc-cfengine list has been shut down - because some of the folks who were interested in working on this couldn't get email from non-US sources.-Kevin) We also talked to Mark about the prospect of using docbook.)
    • There is no cfengine tree. Mark is willing to do it, but he feels it gets in the way for now. Mark thinks we won't get the patches. But there is a good Open Source model, and it is sucessful. Mark thinks he scared people into providing patches. (?)
    • Comments about Cfengine are made.
    • Is anyone using anomaly detection? No one really is.
Personal tools