Slashdot Mirror


'Reactive' Development Turns 2.0

electronic convict writes First there was "agile" development. Now there's a new software movement—called 'reactive' development—that sets out principles for building resilient and failure-tolerant applications for cloud, mobile, multicore and Web-scale systems. ReadWrite's Matt Asay sat down with Jonas Bonér, the author of the Reactive Manifesto (just released in version 2.0), for a discussion of what, exactly, the reactive movement aims to fix in software development and how we get there from here.

101 comments

  1. Failure tolerance is a mortal sin by Anonymous Coward · · Score: 1

    Building a safety net into your code is a massive security risk. Programs are supposed to break or we wouldn't know something is wrong with them.

    1. Re:Failure tolerance is a mortal sin by pijokela · · Score: 4, Interesting

      I don't think it means what you think it means. Obviously the manifesto is so short on details that it can be interpreted in many ways. I think the failure tolerance is more about e.g. tolerance of losing machines or tolerance of overloading - and that seems to be working.

      I have previous experience about J2EE/JEE application servers and they always seemed to have the problem that when overloaded with traffic they might do anything. And after being severely overloaded they often do not recover back to normal. Also people often did not use J2EE session replication, because it was considered a pain.

      Now I'm building an app with Scala/Play framework and we don't have user sesssions or the web servers so scaling and server failures are not a problem. Also we just ran some performance / load tests and the servers work fine up to 100% load and then just start to lose some requests. This is much preferrable to the "all bets are off" that I have seen on Tomcat or other servlet containers. Another reactive benefit from the Play server is that it is super easy to use many threads for building a single http reply and this really helps in giving users timely replys.

      So while the manifesto is of course marketing, there are some good things in the new ways of doing things.

    2. Re:Failure tolerance is a mortal sin by Anonymous Coward · · Score: 1

      STOP ERROR
      mouse has moved
      Reboot To Continue

    3. Re:Failure tolerance is a mortal sin by cowwoc2001 · · Score: 2

      Take a look at Jetty. Running out of memory is still a problem where "all bets are off" [1] but being overloaded is not. Incoming requests are queued. If there are too many requests, they are rejected (HTTP 503). The server is very solid and much lighter than other JavaEE implementations (runs like a library instead of a container).

      [1] But this is mostly under your control. You shouldn't allow unbounded allocations or unvalidated user requests.

    4. Re:Failure tolerance is a mortal sin by phantomfive · · Score: 5, Insightful

      Obviously the manifesto is so short on details that it can be interpreted in many ways.

      Short on detail but long on words. Compare it to the Agile manifesto which has few words, but communicates the ideas very clearly. When you read that, you understand the underlying principles of agile. This manifesto has more words, but still manages to clearly get its idea across.

      When it comes to the manifesto linked in the article, as you mention it is short on detail. Specifically, who doesn't want to have a responsive system? Have you ever met anyone who said, "I think I will build a website. I want it to take 15 seconds for the pages to load." Saying you want your site to be responsive is so generic as to be meaningless.

      The part that really makes me laugh is the part where they say it will have no bottlenecks. That has been the goal of designers since the day of Von Neumann. He was certain he would design his computer without bottlenecks. Once again, it's something that everyone wants.

      The biggest thing they have that isn't generic there is that they require message passing. That seems like a weird requirement to me, but I'm sure they have a reason.

      --
      "First they came for the slanderers and i said nothing."
    5. Re:Failure tolerance is a mortal sin by Anonymous Coward · · Score: 0

      >>Obviously the manifesto is so short on details that it can be interpreted in many ways.
      >Short on detail but long on words.

      Exactly. And that seems the exact opposite of what one would expect in software development! Incomplete, vague descriptions.

    6. Re:Failure tolerance is a mortal sin by Anonymous Coward · · Score: 0

      http://i.imgur.com/vNkt49J.jpg

    7. Re:Failure tolerance is a mortal sin by dkf · · Score: 1

      Now I'm building an app with Scala/Play framework and we don't have user sesssions or the web servers so scaling and server failures are not a problem.

      If you don't have user state or session state, scaling is no problem. You just throw more hardware at it so you can have replicated servers with a simple load balancer in front. Job done.

      It's scaling in the presence of (mutable) state that is hard. It's also what a lot of use cases need. Sometimes you even have to give up on scaling (boo!) in order to achieve other objectives, or think very hard to come up with an alternative approach such as spinning out processing to cloud-based slaves, which also doesn't truly scale, but can often go pretty large despite that (if you get the finances/business-model right).

      --
      "Little does he know, but there is no 'I' in 'Idiot'!"
    8. Re:Failure tolerance is a mortal sin by pijokela · · Score: 2

      On the Play webserver the user "session" is a signed cookie. So if you have very little data, you can store it there and you always have it regardless of the server rendering the response. If you need more user specific data you can store keys in the cookie and get the session from a backend mongodb or memcached or akka cluster or something else that scales easier then an RDBMS. With the Plays ability to easily fetch data concurrently from multiple backend systems, this is actually a good way to go. Or you can just have all the user specific stuff fetched with ajax from some other servers to distribute the load.

    9. Re:Failure tolerance is a mortal sin by Anonymous Coward · · Score: 0

      It's only logical:

      First start with something simple that just gets things done: procedural languages
      Then aim for the stars with: object oriented languages (but falling way too short)
      Go on overdrive with event-driven: Visual Basic and VBA (puke)
      Then when that gets you into trouble, let's do asynchronous messaging: MQ to the rescue!

      I'm not sure what they're trying to solve, but shoehorning ANYTHING into architecture and design without serious considerations for all the alternatives, are just begging for pain and problems further on.

      Hint: Asynchronous messaging is FAR from "responsive" or carry any guarantees of time of delivery at all. So what happens to all the messages if they bottle up, the user tries again and then the bottleneck is lifted? Congratulations, you've just unlocked N times more complexity by misuse of powerful concepts!

      100% agree on manifesto text. It's just too much a standard wishlist to be of any help at all. If it is anything at all, it's more like a gun being pointed toward the feet. Not saying using powerful tools can be both cool and helpful in the right circumstances, but this just smacks of poorly thought out design-choices by someone who doesn't know enough alternatives, and just learned something new and cool.

      I actually feel sorry for coders nowadays. Sometimes the best choice is to choose simple, but it seems, the art of keeping things simple is getting lost into today's hardware and software abundance.

    10. Re:Failure tolerance is a mortal sin by Anonymous Coward · · Score: 0

      Yes, and the reason is explicitly stated in the fucking manifesto:

      Reactive Systems rely on asynchronous message-passing to establish a boundary between components that ensures loose coupling, isolation, location transparency, and provides the means to delegate errors as messages. Employing explicit message-passing enables load management, elasticity, and flow control by shaping and monitoring the message queues in the system and applying back-pressure when necessary. Location transparent messaging as a means of communication makes it possible for the management of failure to work with the same constructs and semantics across a cluster or within a single host. Non-blocking communication allows recipients to only consume resources while active, leading to less system overhead.

      I guess if you just read the bolded headings in the document, it really DOES seem to be lacking detail!

    11. Re:Failure tolerance is a mortal sin by Daniel+Hoffmann · · Score: 1

      "Also people often did not use J2EE session replication, because it was considered a pain."
      Yeah, I looked into that once, the tutorials alone made me run screaming.

  2. Stopped reading right there. by Anonymous Coward · · Score: 2, Insightful

    Organisations working in disparate domains are independently discovering patterns for building software that look the same.[citation needed]
    These systems are more robust, more resilient, more flexible and better positioned to meet modern demands.[citation needed]

    1. Re:Stopped reading right there. by Anonymous Coward · · Score: 1

      The height of marketing-speak, lots of vague, fact-free statements.

  3. Methodologies are like religion by heldal · · Score: 4, Insightful

    You have some core principles which make sense in a specific context. You have a book based on these principles but with a good dose of word salad to make it look more powerful. You have preachers hammering it into your head. And you have common people getting brainwashed by something that originally was a good idea, but has been perverted into something that hopefully doesn't damage more than it does good.

    Oh, and then there's the Enterprise.

    1. Re:Methodologies are like religion by phantomfive · · Score: 1

      I've been thinking about reactive programming a lot recently because it's used a lot in Angular.js. Probably in other javascript frameworks, too. My guess is it'll become more popular in the next few years, then recede into the past (and future, for those who don't remember) if it turns out to be a bad idea.

      On the surface it seems easier, because things happen automatically, without having to be explicitely defined. The part I'm struggling with is how to keep the code clean and readable with all this stuff happening automatically. There's probably a way to do it, but I haven't found it yet.

      --
      "First they came for the slanderers and i said nothing."
    2. Re:Methodologies are like religion by jbolden · · Score: 1

      On the surface it seems easier, because things happen automatically, without having to be explicitely defined. The part I'm struggling with is how to keep the code clean and readable with all this stuff happening automatically.

      Design your code so that order of execution isn't assumed. This is a functional programming idea, and while functional may not be right for your applications this is an easier concept to see in its native environment. I.E. learn Haskell even if you use something else for your code.

    3. Re:Methodologies are like religion by Jane+Q.+Public · · Score: 5, Insightful

      Methodologies are like religion

      But this isn't a "methodology" at all. It's a statement of goals.

      This isn't an "alternative to Agile", because it isn't a methodology. You can use Agile to achieve this "reactive system".

      Frankly, it looks like a bunch of BS buzzwords to me. I write software to meet my customer's needs. "Reactive" attempts to define those needs... but NO, that's what the customer does.

      This might be something good to show a client who wants a web site built, which you then proceed to build using Agile or some other methodology. But it isn't a methodology itself, and calling that thing a "Manifesto" is a joke.

      "We want a machine that makes things cold. We don't care how it's built. We'll call this... The Refrigerator Manifesto".

      Give me a frigging break. In fact I have to think this is actually somebody's idea of a joke.

    4. Re:Methodologies are like religion by znrt · · Score: 1

      you're doing it wrong, you forgot the catchy t-shirt.

    5. Re:Methodologies are like religion by znrt · · Score: 1

      a two-way databinging model like angular's is a specific mvc use case where the good old observer pattern makes a lot of sense. it indeed allows for much cleaner code given that you know the context.

      "reactive" is basically the same thing, with a cooler name and applied indiscriminately to everything else. go figure, but it's all the rage.

    6. Re:Methodologies are like religion by znrt · · Score: 1

      databinging

      this wasn't intentional but i like it :D

    7. Re:Methodologies are like religion by RabidReindeer · · Score: 1

      For 20-something years, they've been telling me to be "PRO"-active. Because just plain "active" wasn't good enough anymore. Or at least didn't sound pompous enough.

      NOW you want RE-active???

    8. Re:Methodologies are like religion by JaredOfEuropa · · Score: 1

      Context, exactly. This makes sense in certain environments only. Take meetings and context switching. In my own environment the problem is not too many meetings, but not enough of them (or not the right kind of meetings). Good meetings are where new ideas get brainstormed, differences worked out, and hasty assumptions get identified and resolved. Just the kind of stuff that often is allowed to linger to detrimental effect in async environments. Context switching? In my environment this happens a lot, but it's not the result of meetings (where you'll still be dealing with the usual projects), but with being assigned to too many projects at once.

      --
      If construction was anything like programming, an incorrectly fitted lock would bring down the entire building...
    9. Re:Methodologies are like religion by Shados · · Score: 1

      At the end of the day, these methodologies are only there to give a framework for more predictable results.

      As long as they're followed, it doesn't matter (much) which one you pick. The problem is when people deviate from them nilly willy...then their only benefit (predictability) is tossed out of the window.

    10. Re:Methodologies are like religion by phantomfive · · Score: 1

      The problem isn't writing it the first time, that's easy enough. The problem is keeping it manageable and understandable; keeping like things together, so when the code needs to be changed, it isn't hard to change. It's a bit harder when the variable is spread randomly throughout the code, which reactive programming makes easy to do

      --
      "First they came for the slanderers and i said nothing."
    11. Re:Methodologies are like religion by phantomfive · · Score: 1

      a two-way databinging model like angular's is a specific mvc use case where the good old observer pattern makes a lot of sense.

      I'm not sure that's true.....

      "reactive" is basically the same thing, with a cooler name and applied indiscriminately to everything else.

      That's definitely true

      --
      "First they came for the slanderers and i said nothing."
    12. Re:Methodologies are like religion by Anonymous Coward · · Score: 0

      pro-re-active!

    13. Re:Methodologies are like religion by jbolden · · Score: 2

      That's one of the things you get rid of. You don't have variables in a global sense, there is no mutable global data. Functions have arguments and those are local variables but that's more like a definition there are no state changes permitted in the bulk of your code.

      If you need to change the variable type you create a monad. The key to a Monad is it lifts a variable. So for example if you want to have error code as a return type on function that before couldn't error you use the Either Monad.

      So say for example f takes 2 Integers and a string and returns a float.
      The Mf (the monad version) takes either 2 integers and a string or it takes a error code. It returns either a float or an error code. The lift from f to Mf happens automagically there is only a few lines of code.

    14. Re:Methodologies are like religion by Livius · · Score: 1

      You'd expect being "PRO"-creative would be a goal too.

    15. Re:Methodologies are like religion by styrotech · · Score: 2

      Yuck - two way databinging sounds like there's a purging phase involved!

    16. Re:Methodologies are like religion by grcumb · · Score: 2

      For 20-something years, they've been telling me to be "PRO"-active. Because just plain "active" wasn't good enough anymore. Or at least didn't sound pompous enough.

      NOW you want RE-active???

      Count your blessings. My boss always wants all my fixes to be retroactive.

      --
      Crumb's Corollary: Never bring a knife to a bun fight.
    17. Re:Methodologies are like religion by SpeedBump0619 · · Score: 1

      Well, software development is about many stakeholders. You, as the developer, are one of those stakeholders. Yes, the customer has a set of requirements, but you have a set of requirements as well. You make technical decisions every day based on those requirements whether you have explicitly enumerated them or not.

      My read on this is that it's a set of governing principles for making implementation decisions about how you write code. As such any one of these guiding principles can be set aside to accomplish specific requirements they might conflict with, but where they don't conflict they should guide decision making.

      From that perspective I guess they are helpful, if kind of obvious, guidelines. They seem kind of asymmetric though..."use message passing" is a pretty specific choice, where "elastic" is vague to the point of uselessness. On the whole I guess this seems like someone who really likes message passing and is tired of trying to justify the extra overhead every single time it comes up.

  4. Can't wait... by underqualified · · Score: 5, Funny

    ...to get certified!

    1. Re:Can't wait... by narcc · · Score: 4, Funny

      I'm in the wrong business!

      Okay, staring now, you can get certified in Fad Oriented Programming for just $500! It's always the hottest trend!

    2. Re:Can't wait... by Anonymous Coward · · Score: 0

      That should be "Fad Logical Oriented Programming".... aka FLOP. :)

    3. Re:Can't wait... by RabidReindeer · · Score: 1

      I'm in the wrong business!

      Okay, staring now, you can get certified in Fad Oriented Programming for just $500! It's always the hottest trend!

      FOP isn't something that any dweeb with $500 can get into. First you have to order the FOP toolkit, which is going to cost you at least 10 times that. Then, of course, there's the FOP Official Specifications. Add another zero after that.

    4. Re:Can't wait... by armanox · · Score: 1

      You forgot that they have to take an official class to take the cert exam....

      --
      I'm starting to think GNU is the problem with "GNU/Linux" these days.
    5. Re:Can't wait... by Anonymous+Brave+Guy · · Score: 1

      This seems more specialised, so maybe it should be "fanatically loose Internet programming". That would make the abbreviation "FLIP-FLOP", which conveniently also describes the views of anyone who "signed" this "manifesto" when the next buzzword comes along next week.

      --
      If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
    6. Re:Can't wait... by Anonymous Coward · · Score: 0

      The FOP boot camp I'm running will help out a lot. A snip at $495 a day for a week long course.

  5. agile != reactive by andyverbunt · · Score: 3, Interesting

    I don't think reactive is the evolution of agile, as the author in the author implies.

    1. Re:agile != reactive by andyverbunt · · Score: 1

      or rather "the author in the article" :)

    2. Re:agile != reactive by phantomfive · · Score: 3, Insightful

      I don't think it was the author's intention to imply that. At first I thought that too, but after reading it two or three times, I think he was trying to draw a parallel to agile methodology, as in "reactive will evolve the same way agile did." I don't think he's right, but whatever.

      --
      "First they came for the slanderers and i said nothing."
    3. Re:agile != reactive by eulernet · · Score: 1

      Agreed.

      Agile manifesto is about organizing work.
      Reactive manifesto is about designing the architecture.

      With agile, architecture is not the priority since the point of view is from the project manager's side.

      By the way, the blog is blocked by NoScript. Does an article needs Javascript to be displayed ? WTF ?

    4. Re:agile != reactive by umghhh · · Score: 1

      agile is not about organizing work or else it would statements about working software and some such. It helps to read it BEFORE you start talking. Perhaps this still would not be enough. Reading comprehension is low among humans. In fact one should be happy humans can read and count at all. BTW: There is nothing that stops a project following any sensible ruleset being great success or massive fuck-up and this independent of following any given fad on paradigms and some such crap. Sometimes when I am in a good mood I like to challenge evangelists and gurus that come over to our company and ask them simple questions like: how is our scrum of scrum (or even simple one) going to make decisions if a simple moderation of a meeting is usually out of the question because it is not 'whatever current fad is called'. Sometimes it is even more entertaining to sit tight and watch them mismanage their own presentations.

    5. Re:agile != reactive by phantomfive · · Score: 2

      You spent all those words criticizing but still didn't point out where his error was

      --
      "First they came for the slanderers and i said nothing."
    6. Re:agile != reactive by frank_adrian314159 · · Score: 1

      Fine, the reactive document is a manifesto describing a set of architectural principles that supposedly has benefits in the current world. The agile document is a manifesto describing a set of project management principles that supposedly has benefit in the current world (although, in reality, it's twenty years old now and the people who are now promoting it are becoming just as rigid and annoying as the UML/SEI/PDP/heavy doc assholes they replaced). Conflating the two as related (other than in name) was incorrect. Not only was the agile manifesto, short, pithy, and to the point, the reactive manifesto is just another TL;DR page that looks like it hasn't had enough work by actual smart (as opposed to successful) people to be short. Does this help?

      Frankly, we need more manifestos released more often. The good ones will be followed; the stupid ones will evaporate in time.

      --
      That is all.
    7. Re:agile != reactive by nschubach · · Score: 1

      I will never understand the point of blocking script on the page you are visiting. Sure... block third party and tracking scripts/assets, but blocking scripts on the site is like opening Excel and expecting it to calculate cells with the formulas disabled.

      --
      Every time I start to have faith in humanity, I ruin it by driving to work between 7 and 8 am.
    8. Re:agile != reactive by phantomfive · · Score: 1

      Fine, the reactive document is a manifesto describing a set of architectural principles that supposedly has benefits in the current world.

      Agreed.

      The agile document is a manifesto describing a set of project management principles that supposedly has benefit in the current world

      "project management principles" sounds a lot like "organizing work" to me, which is what the ggp said.

      --
      "First they came for the slanderers and i said nothing."
  6. hehe... by Anonymous Coward · · Score: 0

    Boner.

    1. Re:hehe... by Anonymous Coward · · Score: 0

      The surname of real men.

  7. Successor to Agile/Scrum by Kethinov · · Score: 5, Interesting

    If anyone's really looking for a 21st century successor to Agile/Scrum, I would recommend checking out the "async" manifesto which was written in a manner deliberately parodying the agile manifesto: http://asyncmanifesto.org/

    --
    You're right, I wouldn't steal a car. But if it were possible, I sure as hell would download one!
    1. Re:Successor to Agile/Scrum by behrooz0az · · Score: 1

      Wow, That was like the best thing I've read this entire month.

      --
      Moderating "-1, Disagree" is simple censorship. Have the guts to post your opinion. -- Spazmania (174582)
    2. Re:Successor to Agile/Scrum by Anonymous Coward · · Score: 0

      Honestly these are good ideas, but it kind of misses the point of stand-ups and product ownership:
      "Product owners should own the issue queue and frequently reassess priority on their own. They should loop in other people on an as-needed basis for advice."

      Stand ups exist because product owners are stakeholders and have a different type of workload than developers: a few tasks across many projects, as opposed to lots of tasks in a few projects. They don't have time to "frequently reassess priority on their own", that's why timeboxed sprints and sprint planning meetings exist.

      It guarantees that necessary step of priority reassessment occurs before it becomes an impediment when the product owner can't "frequently reassess priority on their own". It keeps micromanagement to a minimum as well, which most managers simply don't have the time or insight to do correctly.

      And in order to make that frequent reassessment of priority possible, the author suggests "they should loop in other people on an as-needed basis for advice", which sounds an awful lot like the tribal knowledge shoulder-tap he's seeking to avoid with "async forms of communication" like better documentation (which requires more resources, simply because it takes time to do good documentation).

      I like the vast majority of the ideas on that page but its more "here's some ideas on how to use modern tooling to make Agile work better" than anything else. You can see a lot of these ideas like these in books pitching tools like TFS: http://www.amazon.com/Visual-Studio-Team-Foundation-Server/dp/0321864875

    3. Re:Successor to Agile/Scrum by Kethinov · · Score: 1

      It's a bit of a circular argument to say that sprint planning meetings exist because product owners don't have time to frequently reassess priority on their own. Before Scrum really took off, I recall product owners having no trouble finding the time to own the issue tracker in this manner on a regular or even daily basis.

      It seems to me everyone would have significantly more time for such things if there was less process in the way like unnecessarily verbose scrum meetings which can be replaced by less invasive forms of communication.

      --
      You're right, I wouldn't steal a car. But if it were possible, I sure as hell would download one!
  8. This week, it's all loosely coupled by smittyoneeach · · Score: 1

    Next week, doubled over in pain, the lack of determinism is going to look like a big kick in the crotch.

    --
    Get thee glass eyes, and, like a scurvy politician, seem to see things thou dost not.--King Lear
    1. Re:This week, it's all loosely coupled by Cryacin · · Score: 1

      I'm just waiting until the over reaction to reactive programming leads to developers being over reactive programming.

      --
      Science advances one funeral at a time- Max Planck
    2. Re:This week, it's all loosely coupled by Anonymous+Brave+Guy · · Score: 1

      Also, all programming is now back-ends for web sites. If you write old-timer stuff like desktop applications, mobile apps, system software, embedded software, or front-ends for web sites, please turn in your credentials on your way out.

      --
      If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
    3. Re:This week, it's all loosely coupled by smittyoneeach · · Score: 1

      And then the big reveal that "reactive programming" was really a cover name for "Macho Grande programming".
      All those coders who swore on pain of death that they'd never be over Macho Grande then get together for a bit of Agile Pair Scrum seppuku.

      --
      Get thee glass eyes, and, like a scurvy politician, seem to see things thou dost not.--King Lear
    4. Re:This week, it's all loosely coupled by Anonymous Coward · · Score: 0

      Do you really want your car running off the cloud?

    5. Re:This week, it's all loosely coupled by Anonymous Coward · · Score: 0

      As my son would say "Is that a joke?"

      Many large financial system still run on OS/400 or AIX with COBOL. Old old school stuff. Still a lot of demand for VB6, .net and Java and other LOB apps. Web browser can't and shouldn't do everything. Frankly I don't want my payroll running on a javascript system.

      I think its you who needs to turn in his creds on the way out.

    6. Re:This week, it's all loosely coupled by Anonymous+Brave+Guy · · Score: 1

      As my son would say "Is that a joke?"

      Obviously. I'm a little disturbed that apparently at least two people thought otherwise...

      --
      If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
  9. I can see the ads now... by Kazoo+the+Clown · · Score: 5, Funny

    Software developers wanted for programming project, must have 10 years experience with Reactive development methodologies.

    1. Re:I can see the ads now... by Anonymous Coward · · Score: 1

      Software developers wanted for programming project, must have 10 years experience with Reactive development methodologies.

      If you can't figure out how to manipulate space-time, why should I hire you?

    2. Re:I can see the ads now... by Anonymous Coward · · Score: 0

      Thankfully I'm trained in Agile, so if you want me to have 10 years of experience in Reactive I can just add that on to my resume for ya.

    3. Re:I can see the ads now... by mysidia · · Score: 1

      Good news, everyone... just like with Agile I have 10 years experience with reactive methodologies.... we just called them something else back then, now that we have a name for reactive methodology, we can claim it :)

    4. Re:I can see the ads now... by Anonymous Coward · · Score: 2, Funny

      Thankfully I'm trained in Fragile development...

    5. Re:I can see the ads now... by StripedCow · · Score: 1

      If you could (in the way you wanted), you wouldn't need to hire anybody.

      --
      If Pandora's box is destined to be opened, *I* want to be the one to open it.
    6. Re:I can see the ads now... by ProzacPatient · · Score: 1

      If you can't figure out how to manipulate space-time, why should I hire you?

      Bring your own weapons. Safety not guaranteed. I've only done this once before.

    7. Re:I can see the ads now... by RabidReindeer · · Score: 1

      This isn't funny.

      It is, nonetheless true.

  10. Waste En El Grande Nacho by Anonymous Coward · · Score: 0

    There is one, and only one, proven method to success. What? Is? It? It is called The Silver Bullet. Learn. It. And. Be. One. With. God.

  11. póngame mil by znrt · · Score: 1

    just had a look at the manifesto: it's about software architecture and design. i can't see how it should compare to agile, which is about software development metodologies. anyway i'm okay with those 4 principles but don't quite understand what's new here (apart from reading "responsive" in its correct meaning for once!)

    but one thing i can say for sure: this one aint gonna fix what's broken in software developement industry either, which is: industry! industry! industry!

  12. Reactive will meet its goal. by 140Mandak262Jamuna · · Score: 3, Insightful

    The goal is to promise heaven and earth to the management. Sell bunch of tools to the management, collect handsome consulting fees sell some books etc. By the timethecon job is realized, these guys would be on to their next scam, clueless management would have awarded itself another round of boni, (because everything done by the management deserves a bonus).

    --
    sed -e 's/Chuck Norris/Rajnikant/g' joke > fact
  13. BS Naming by Anonymous Coward · · Score: 2, Insightful

    Reactive programing already exists. Think of it as observer patterns for every variable and operation or as cell programming like you do with spreadsheets. When you update a spreadsheet cell all the formulas that rely on that cell have their values recalculated.

    What they describe is more cell processing where each operation has it's own mini CPU and they all send messages to each other. There were theoretical papers about this structure of design long, long ago during the early days of computers. I'm sure it already has a name and was considerably more thought out than what these guys are saying. Actually, scratch that. I finished reading the article and they at least reference some early designs. I'll give them a point for that.

    Please stop picking names that already mean something in the same field.
    Please stop picking names that already mean something in the same field.
    And don't pick names that can't be searched for online.

    1. Re:BS Naming by Bengie · · Score: 2

      If you look for "Reactive" and .Net, you'll get something like "we implemented Reactive through the Observer pattern" and a bunch of IObserver stuff. MSDN Chan9 had an interview many years back before they even had a beta for Reactive extensions and they covered a lot of this stuff. Reactive is a more specific implementation of the general concept of the Observer pattern.

      "Reactive" lends itself well to an async datapipeline message passing design. Highly scalable and relatively easy to understand.

    2. Re:BS Naming by frank_adrian314159 · · Score: 1

      They were called actor-based programming systems. They came about in the mid-to-late 1960's and incorporated into languages in the early 1970's (look up Hewitt's work on Actors). Pros: Decentralized computational agents connected by message-passing can increase resilience in a system. Cons: Non-local flow of control and unknown state/functionality within remote computational agents (which always inadvertently leaks out) makes understanding what is actually happening in the system overall difficult, leading to problems in debugging; lack of state within systems (monads, which are a difficult concept for most programmers to fit their head around, notwithstanding) leads to extraneous message passing load, potentially killing performance.

      So, TL;DR (OK, so I did read it, sue me...) and tells us stuff we knew fifty years ago. About par for the course.

      --
      That is all.
  14. Stop with the SLASHVERTISEMENTS! by scorp1us · · Score: 3, Insightful

    I've been following this reactive programming "movement" and it's all traced back to one guy who has a consultancy in "reactive programming" This is the 4th such reactive programming post that I am aware of on /.. No where else have I seen "reactive programming" and this is the only guy I know of who is pushing it.

    In addition, the /. comments are highly ciritical of this "movement"

    I call on slashdot to identify what articles are slashvertisements and or are carried on special grounds.

    --
    Slashdot's rate-of-post filter: Preventing you from posting too many great ideas at once.
    1. Re:Stop with the SLASHVERTISEMENTS! by Anonymous Coward · · Score: 0

      A lot of 'web 3.0' types on Hacker News talk about it, too. Not that that means that it's not bullshit. Perhaps the opposite, indeed..

    2. Re:Stop with the SLASHVERTISEMENTS! by Anonymous Coward · · Score: 0
    3. Re:Stop with the SLASHVERTISEMENTS! by Anonymous Coward · · Score: 0

      Considering that both Java and Microsoft have some forays into the landscape with Rx (Reactive Extensions) and Java 8 (CompletableFuture), perhaps you are speaking out of classical ignorance. It's either something substantive and/or more than just 1 guy trying to promote his business.

      http://rx.codeplex.com/
      http://www.nurkiewicz.com/2013/05/java-8-definitive-guide-to.html

    4. Re:Stop with the SLASHVERTISEMENTS! by Anonymous Coward · · Score: 0

      Don't forget RxJava by Netflix: a Java clone of Rx.Net.

  15. The Twelve Factor App... by SavvyPlayer · · Score: 2

    The Twelve Factor App provides a more thorough treatment of elastic systems design, but generally agrees with the thesis of this document. Perhaps if that document were interactive in some way (open to signature, modification, comment, DVCS citation, etc.), we might have a better measure of its influence in the real world.

  16. Wrong by Anonymous Coward · · Score: 0

    If you care about fault-tolerance use Erlang or Elixir languages specifically designed for it. Instead of wasting your time.

  17. A Manifesto... by Anonymous Coward · · Score: 0

    ...is just someone on a soapbox. That word is enough to make most people turn and walk away.

  18. Resilient by Anonymous Coward · · Score: 0

    Too bad readwrite is not reactively resilient.

    ARTICLE IS DOWN

  19. 12 Factor by FabioAkita1615 · · Score: 1

    This is "ok" at best, but I'd prefer a more practical guideline, and for that Adam Wiggins' 12 Factors are a much better place to start for scalable web systems: http://12factor.net/

  20. Let's rewrite history by Ronin+Developer · · Score: 1

    and give it a new name. That seems to be the pattern these days, isn't it. The techniques and concepts described in this "Manifesto" are really nothing more than the tenet of systems design since the dawn of the computer age. Yet, he touts it like its some sort of new idea. Same goes for programming languages, frameworks and paradigms - most are rehashes of what came before.

    I have been a proponent of using message queues to build asynchronous and distributed system that make building such "responsive" system. We developed a location based system that leveraged ApacheMQ with JMS to facilitate the processing of millions of messages while keeping the response time predictable. That was seven (7) years ago.

    Bandwidth and computing resources are finite. We can move processing off to the cloud or to other dedicated processors. But, ultimately, you will have a bottleneck of one or more of the two, bandwidth and computing resources (cores, processors, nodes, whatever). To make a response, large scale system, you need to understand the limitations and, more specifically, queuing theory so that you can build a system that meets the goals of the "manifesto".

    If one is looking at programming "responsive" systems in terms of languages (which is not the intent, I think, of the manifesto), you can easily go back to the 1980's and 1990's. There were probably other such environments before then. However, around 1992/3, there was a language for the Macintosh called Prograph (and, Progragh CPX). It was a visual language that was based on "cases" with inputs and outputs. Outputs became available when all the inputs were satisfied - it was very asynchronous. Yes, you still had procedural elements. But, it was designed for parallel processing. Another, so called, "responsive" system is the spreadsheet where cells change based on the values in other cells in a very asynchronous fashion.

    I won't state that some of today's "modern" languages don't solve specific problem of earlier languages or have something to offer. But, much of what that is claimed to be modern constructs have been around for years - maybe not as eloquently expressed, but were there nevertheless. This is where a CS degree comes in hand and why people pursue CS at colleges. Wish some people would get that through their heads. The other day, there was a story about how older IT professionals seem to have lost their fire while the "younger" generation is full of it and it's learning something new that makes them better than the old guard. No, older professionals simply say "ho-hum" to the "new" views as it's just a rehash of what they already know. When something revolutionary comes along, the wake up long enough to figure it out and whether it's something that's worth considering vs what HR thinks is the hopping buzzword of the day.

     

  21. What About Jobs Developement Style by LifesABeach · · Score: 1

    Step 1. Basically have a childish snit in front of Engineers, insult and threaten them with their jobs and reputation. Step 2. Go to a special room to smoke pot. Step 3. Repeat till product is finished. Step 4. Out source project. Step 5. Make good on statements generated in Step 1. Step 6. Profit! Step 7. Go To Step 1.

  22. If it's anything like.. by Anonymous Coward · · Score: 0

    If reactive programming is anything like reactive armor, I'm all for it.

    "Incoming change request!" *BOOM* "Threat neutralized!"

    (RTFA? Surely you jest. Programming fads are for kids, certification peddlers, and con-artists^H^H^H^H^H^H^Hsultants.)

  23. There's another name for this kind of developmen by Anonymous Coward · · Score: 2, Interesting

    Maybe I'm missing something here, but this "reactive" nonsense keeps popping up every few months and I still don't see what's new.

    As far as I can tell, this person (or persons) has discovered something that has a name already: Event-driven programming. It's been around for a very long time. It has many of the benefits of naive multi-threaded coding without the warts. But it introduces warts of its own, with event orderings being the big one.

  24. PHB interpretation by Anonymous Coward · · Score: 0

    Sadly, most [PHB] managers will interpret it as "be reactive", and thus further lower the quality of substandard content they produce.

  25. Reactive is an extension of event driven by benjymouse · · Score: 3, Informative

    As far as I can tell, this person (or persons) has discovered something that has a name already: Event-driven programming. It's been around for a very long time. It has many of the benefits of naive multi-threaded coding without the warts. But it introduces warts of its own, with event orderings being the big one.

    What Erik Meijer discovered was that an event can be viewed as a sequence. Each occurrence of the event is an "item" of the sequence. What's why he wrote an article called "Your mouse is a database": The mouse is a sequence of multiple event types such as moves, buttons etc.

    Once you start to view (and represent) events as "push" sequences interesting things start to happen: Suddenly you can *compose* events in the same way you compose collections/sequences.

    Erik Meijer wrote the Active Extensions for .NET which does exactly that. Using LINQ you can transform, aggregate, group, partition, project/map, filter etc events.

    Consider, for instance, stock market ticker values: Clearly you can see those as events: When a deal/offer it is an event. Multiple events is a stream/sequence. Now imagine you want to know each time a symbol has "peaked" - i.e. each time 3 consecutive values for any symbol has the maximum as the middle value. With Reactive Extensions and LINQ you would write:


    var peaks = stockQuotes.GroupBy(sq => sq.Symbol).SelectMany(g => g.Buffer(3, 1).Where(IsPeak));

    where IsPeak is defined as:

    bool IsPeak(IList<Quote> b) {
            b[0].Rate < b[1].Rate && b[1].Rate > b[2].Rate;
    }

    Explanation:
    1. stockQuotes is the IObservable stream of quotes.
    2. GroupBy created a new stream of multiple streams. Each time a new symbol is encountered, a new group will be added (appear in the stream); if the symbol has already been encountered the quote is added to the end of the stream for the symbol.
    3. Buffer creates a "sliding" buffers (increments of 1), each with 3 items.
    4. Where filters the IObservable so that only "peaks" are let through.
    5. SelectMany "flattens" multiple streams into a single stream again, i.e. creates a single stream of quotes regardless of their symbol (group)

    Now, this is an IObservable stream with no subscribers (observers) yet. This also means that there is no subscription at stockQuotes. But as soon as you register a subscription like this:


                      peaks.Subscribe(Peaked)

    It starts to invoke the Peaked method with peaks consisting of lists with exactly 3 items each. And this will go on and one.

    Now imagine how you would write something like that using events and event handlers? It will probably take 10 times more code and be less readable than the above. (Yes, I know that it is not entirely straightforward if you are not used to RX and LINQ).

    --
    Reading slashdot one-liner: (irm http://rss.slashdot.org/Slashdot/slashdot).rdf.item | fl title,desc*
    1. Re:Reactive is an extension of event driven by Anonymous Coward · · Score: 0

      Almost all of the code's terseness is from LINQ and anonymous functions. Certainly cool, but most of the credit goes to C# supporting LINQ & lambda functions.

      Besides, if the so-called Reactive "movement" thinks nobody has been writing private event buffers & message lists for the past few decades then they're mistaken.

    2. Re:Reactive is an extension of event driven by benjymouse · · Score: 1

      Certainly cool, but most of the credit goes to C# supporting LINQ & lambda functions.

      The point is, that when you view events as

      public event EventHandler StockQuote;

      you cannot use the LINQ goodness to compose events. Once you make the switch and view events as sequences where the items have not appeared yet, you enable the likes of LINQ and list comprehensions.

      Mind you, these IObservable LINQ operators look like the IEnumerable counterparts - but they are all implemented quite differently. There is a beautiful duality between the two which enable us programmers to think about events the same way we think about collections.

      Besides, if the so-called Reactive "movement" thinks nobody has been writing private event buffers & message lists for the past few decades then they're mistaken.

      I'm with you. I'm certainly not part of any "movement" - I do not think every programming problem needs to be attacked from a "reactive" point of view. But I can recognize a good idea when I see one, and Reactive Extensions is one such good idea. And I am already aware of several places I should have used RX and LINQ instead of building complex finite state machine logic.

      Another cool idea that I think this "movement" is embracing, is async. That has much more profound consequences for how we program and has been a real eye-opener. When I can program with async all the way down through multiple tiers, to the business logic that call external services or queries the database, a whole bunch of problems suddenly goes away: I no longer has to balance how many threads should serve the website, the app servers against how "idle" the threads are when waiting for a query to return or waiting for an external service to respond. When a request "waits" it yields the thread to the server so that it can be used for other requests. Once the answer arrives from the database or service, a thread is allocated to continue the request processing. The outcome is that all threads tend to become cpu bound - never idle. Which scales much, much better.

      However, I still question that this is (or needs to become) a movement. It a discipline - or rather 2 related disciplines - that a good programmer should have in his/her toolbox.

      --
      Reading slashdot one-liner: (irm http://rss.slashdot.org/Slashdot/slashdot).rdf.item | fl title,desc*
    3. Re:Reactive is an extension of event driven by frank_adrian314159 · · Score: 1

      Well, that's about par for the course. An oversimplified example that gets the domain knowledge wrong. Almost no one looks for "peaks" like that in finance. They are either looking for mismatches in market prices from multiple sources or for trends.

      Your example is stupid. You might want something like that for a domain needing signal detection, though, so good try. You just didn't know enough about anything in the real world to get it RIGHT.

      --
      That is all.
  26. Can we please have another recession? by Anonymous Coward · · Score: 0

    Can we please have another recession? I know it will be painful for a lot of honest, hard-working folks; but at least the buzzword factories will get laid off... Oh, no, wait... only honest hard working folks will get laid off. The buzzword factory people will just get slightly browner noses. That might sound like punishment but I think they actually enjoy it. Maybe we can just shoot the tires out of random BMWs. Most buzzword spouters drive that make.

  27. Faliure to accommodate the requirements space by Anonymous Coward · · Score: 0

    Soapbox mode on.

    The truth of the matter is simple and yet very complex: requirements aren't easy to map but neither is it easy to implement. Those that came before us understood this tenet very well. But they didn't have enough history to map the topology of the requirements space. Each methodology we have encountered since the computer was developed has been an interim milestone in our journey of discovery. But the stage is set and the time is at hand to reveal the nature of the requirements space.

    Empirically, the truth is that the space has at least 6 orthogonal axes, and on average, each methodology attempts to take a 3 dimensional slice (a space with 3 axes) as it's core and assumes the rest of the space is static and then proceeds to identify surfaces and points within the space as the requirements to be fulfilled leaving the rest as an exercise to the reader. Until we realize that the requirements space requires ALL 6 orthogonal axes and that the problem set itself defines which of the axes is required to solve for the optimal solution, we are destined to repeat the fanatical religious debacles of the previous generations. This is why we produce software developers (artists) rather than engineers, and why we keep using the same personal hammer for every diverse nail we find, and why we keep having high defects rates and produce buggy software. And we forget the number one tenet of discrete math: errors accumulate as they propagate and can only be ignored for so long - a Taylor series does have a finite limit and that limit gets large the number of series that are multiplexed into the problem set being solved.

    But there is hope. In the 80's there was a book written that codified how to handle much of this complexity: "Software Engineering - Planning for Change". And in 90's, we saw the GOF write the cornerstone tenet on how to pattern software with repeatable building blocks: "Design Patterns". And in the 00's there was a book that codified how to handle the complexity of the requirements space (albeit with limited orthogonal axes): "Writing Effective Use Cases". But the one book that is missing from everyone's shelf and reading list is the one book that we DO INDEED rely on every day for our mechanical world outside of electronics which codified how to handle the predicate calculus that would let us navigate the partially continuous 6 dimensional requirements space: "Finite State Automata". I just wish I knew where I placed the damn thing. But it is the definitive treatise on how to solve the requirements space for the problem set which when implemented following the tenets of the previous icons, leads to a solution that embodies the truth of the solution - it just works.

    One last word. This set of theories is not sufficient by itself - it needs to be supported by visual communication as those used by many practitioners the world over - seeing is believing. And even if the solution is manifold in its complexity - these tools applied judiciously ALWAYS give the right answers REGARDLESS of the 180-degree turns initiated by senior management and REGARDLESS of the methodology used. When we stand on the shoulders of giants, we can only succeed at their discretion and under their tutelage.

    Soapbox mode off.

    1. Re:Faliure to accommodate the requirements space by Anonymous Coward · · Score: 0

      Correction to the book title: "Introduction to Formal Languages and Automata" - misremembered obviously. But it was the best damn class ever - it's like you learned how to describe how the world functioned as far as you could observe.

  28. Is this just an astroturf campaign for Scala? by AtlantaSteve · · Score: 2

    My understanding is that the authors of the "Reactive Manifesto" are all Typesafe guys (i.e. the commercial entity behind the Scala programming language, and the Akka framework that drives Scala's concurrency model). The only people who I ever see tweeting about this are Typesafe guys. The only people who I ever see blogging about it are Typesafe guys. The interview here is with a Typesafe guy. The Coursera class on "Reactive Programming" is taught by a Typesafe guy, using Scala. The only time I've ever heard anything about this mentioned in person was by someone at a Scala meetup.

    I'm not trying to bash Scala. I was really excited when it first came out, and tried to introduce it at my last job. The combination of its learning curve, its breaking changes between versions, and the upcoming Java 8 all pretty much doomed its adoption at that shop... but it's still a neat language nevertheless.

    However, the "Reactive" thing just seems like the guys behind a particular programming language publishing a "manifesto" of best practices, which exactly fits the way their particular programming language is designed. I don't know... that just seems to me like an astroturf effort to coin a new buzzword, so that your vested interest can be a leader in the space of that new buzzword. Is there any real energy around this which ISN'T coming from the professional Scala community? Do we really need a new buzzword (or "manifesto"!) to describe the longstanding concept of "message-based and event-driven"?

    It seems like most of the comments here are from people who haven't connected the dots between this "manifesto" and Typesafe. A lot of people haven't read any of this stuff at all, and think that it's meant to be a methodology , as with the "Agile Manifesto" (no doubt the marketing inspiration for the name). Others have at least skimmed it, and don't see anything new with "message-based and event-driven". I believe that what's new is an effort to replace "message-based and event-driven" with a different buzzword, for which Typesafe's website already has great SEO.

  29. Anti-Fragile is the rage now by psyclone · · Score: 1

    Invert your Fragility training as I thought Anti-Fragile is all the rage now days.