beWeeVee for Sharepoint v2.0
Reading time: 1 - 2 minutes
Reading time: 1 - 2 minutes
Reading time: < 1 minute
A recurring question that we’ve received is the one that entitles this post. In order to answer that question, we’ve created a benchmark matrix to compare the three alternatives feature by feature. Please, feel free to mail us if you have some information to share or to update. We always try to complete this table with the last information available on the web. Visit http://www.beWeeVee.com
Reading time: 2 - 2 minutes
If you ever wondered what it would incorporate co-operation (real-time collaboration) in Microsoft Sharepoint, and can stop.
In the last months, the team of specialists from Microsoft Sharepoint at Huddle Group, worked to integrate beWeeVee as a webpart in this tool. This is a big step because this provides strong progress in the sense of increasing the adoption of co-operation in a corporate environment through familiar tools for these users. Taking its intrinsic benefits to end users in a simple and proven effective.
Huddle Group team, headed by Daniel Saad, based its work on beWeeVee SDK to create a webpart that would easily integrate with Microsoft Sharepoint and export the result of the pad to a Document Library.
The team developed this webpart to be used in areas such as:
Another good news is that the webpart works in Microsoft Sharepoint 2007 and Microsoft Sharepoint 2010.
The following is a preview of the product, implemented at a domestic site Huddle Group.
For further information about this product, please contact info@huddle.com.ar
Reading time: 2 - 3 minutes
Si alguna vez se preguntaron cómo sería incorporar co-operación (colaboración en tiempo real) en Microsoft Sharepoint, ya pueden dejar de hacerlo.
En los últimos meses, el equipo de especialistas de Microsoft Sharepoint en Huddle Group, trabajó para integrar beWeeVee como un webpart en esta herramienta. Este es un gran paso, ya que este avance aporta fuértemente en el sentido de incrementar la adopción de la co-operación en un entorno corporativo a través de herramientas familiares para este tipo de usuarios. Llevando sus beneficios intrínsecos a usuarios finales de manera simple y probádamente efectiva.
El equipo de Huddle Group, a cargo de Daniel Saad, trabajó basándose en el SDK de beWeeVee para crear un webpart que permitiera integrarse fácilmente en Microsoft Sharepoint y exportar el resultado del pad a una Document Library.
El equipo desarrolló esta webpart para ser utilizada en aspectos tales como:
Otra buena noticia es que el webpart funciona en Microsoft Sharepoint 2007 y en Microsoft Sharepoint 2010.
La siguiente es una vista previa del producto, implementado en un sitio interno de Huddle Group.
Por cualquier información sobre este producto, pueden contactarse a info@huddle.com.ar
Reading time: 4 - 6 minutes
In the first part of this article we have been exploring how beWeeVee works under the hood, as many other frameworks like Google Wave it resorts to an Operational Transformation Framework.
We also talked about linearizable structures, that is the base of the current beWeeVee implementation that will be released in the CTP. Text as we know it easily linearizable, as you can treat each character as an element on a list. Other things require a little more though, but we are going to show how to create a type independent elements list.
We will focus on explaining how to modify the structures using a Range API that is the base of the ITextView and IElementView<T> helpers.
The ITextView is a high level representation of a simple text document with edition capabilities based on Range primitives. Ranges are primitive types lately popularized by Andrei Alexandrescu at the Boost Conference [1] and are defined as a pair of begin/end iterators that are packed together as a high level entity. Ranges are perfectly suited to handle the signaling process required by beWeeVee, provide a verifiable and extensible API as they allow easy composition and are a superior abstraction.
The current SDK version only supports non-tracking Ranges, so they are invalidated after an editing operation is performed. After any edition operation is performed it will be returned a new Range accounting for the edition operations that were performed.
Let’s suppose that we want to create a Text Document with “ABC” as its content, and then create a range spanning the entire document.
var textView = new TextView(”ABC”);
Range all = textView.CreateRange(0, 3);
Now all is a range that has “ABC” as its content. If we would wanted to create a range that has on “BC” we would have do the following:
var textView = new TextView(”ABC”);
Range partial = textView.CreateRange(1, 2);
Note that we are starting the range at position 1 and giving it a length of 2. Now let’s suppose that we want to add an “X” before the “B”. It is as simple as:
var textView = new TextView(”ABC”);
Range partial = textView.CreateRange(1, 2);
partial = partial.InsertBefore (”X”);
Now the new partial range contains “AXBC” because it has added before “X” so its length is 4 and the start position is still 1. You can also insert at a specific position inside the range with the InsertAt method.
var textView = new TextView(”ABC”);
Range partial = textView.CreateRange(0, 3);
partial = partial.InsertAt (1, “XX”);
The result of inserting “XX” at position 1 of the range starting and 0 with Length equal to 5 is “AXXBC”. You can also shrink or expand the ranges in any direction using the appropriate methods and delete or replacing range content with something else.
On the background, the Range will signal the ConcurrencyController of the TextView of the changes and transform those operations into canonical form to be sent to the other parties.
The IElementView<T> is a high level representation for elements lists similar to the ITextView but allowing any arbitrary serializable type. It also provides a Range based interface to interact with the content.
It’s usage pattern similar to the TextView, but provides the ability to synchronize more complex structures. The biggest advantage is that allows the developer to control the representation and complexity of the information exchange. For example, you can use Silverlight Stroke class (a non serializable type) and create a synchronized data structure with just a few lines of code.
In the SketcherSample, that we will cover in the third part of this series, we will show a sample where you will be able to see how to perform non serializable types’ adaptation and extending the ElementView<T> through inheritance (it can be possible to also use it without inheriting) to create a synchronized drawing pad.
As a sneak peak I think you can fill in the blanks of what it is needed from this simple code:
public class SynchronizableStrokeCollection : ElementView<SerializableStroke>
{
public SyncronizableStrokeCollection()
{
[...]
}public StrokeCollection Strokes { get; set; }
[...]
}
In the SynchronizableStrokeCollection example we are creating an ElementView with a SerializableStroke that is a wrapper over the Stroke data structure used in WPF and Silverlight. We exposed the StrokeCollection to perform data binding on the InkPresenter that will show those strokes.
You may be asking yourself: “Could it be so easy?”. You will know pretty soon, so stay tuned.
Reading time: 20 - 32 minutes
“The more efficient a force is, the more silent and the more subtle it is.”
Mahatma Gandhi
Versión en español: http://www.corvalius.com/blog/?p=49
It is not easy to propose a change. It is not easy to follow a change proposal. In short, change is difficult in itself and that is part of the complexity which we deal every day. And we deal with it because we chose to do so. We deal with it, ultimately, because we benefit from solving it.
So, up to here what it is obvious and cliché. What’s next? Well it is not simple to explain. Especially since we do not want to overestimate or underestimate the impact of this new trend that we identified some years ago and every day that pass we see more and more examples of. We want to just broadcast it in its fair impact. No more, no less. And that is also complex.
Our greatest difficulty is to explain, as we understand today, the subtleties that distinguish two paradigms. One which is beginning to cede its influence over the other. Collaboration vs. Co-Operation.
What you’ll read in this post will help you to understand our vision of the subtle changes that happening arround us. Not a big deal. But they exists. And, undoubtedly, they will change the way we interact with our peers and our community. The changes are becoming more common so you should already be accustomed to be advertised about revolutions, reinventions and things that redefines something else. You know how to deal with them ![]()
There are things that I enjoy a lot, but I also recognize them as a professional bias. I can not help it, I enjoy labeling things. Not only satisfies me to do it well, but I defend my attitude arguing the usefulness of such action. The truth is that I find useful to contextualize the moment and call a spade a spade. I think it may help to better understand the approach we propose.
For some unprepared, and although it sounds somewhat clever, it is worth mentioning that“The spread of the Internet did not start the Information Age. It finished it.” (BTW, another professional bias, I like being direct). I know that for those who are not familiar with the concept, the previous assumption may be false. I will ask those who think that way to follow me in the next reasoning. Those who consider it true, can look forward fot the next section.
Two factors are essential when dealing with information:
This colloquially, can be understood as: “If I didn’t get the information, in the best case, I have only data.” And (most importantly) “If I did interpretate the information and I was able to assimilate it, then it is knowledge. ”
There was a time in which the information was difficult to obtain. Organizations and individuals engaged in a great effort to obtain data, give it sense, and transform it into information. It is difficult (at least for me) temporarily contextualize that stage accurately. But I can assure you that for a long, long, long time, the more information you had, the more advantage you could get. It’s almost common sense by now.
This is perennial, and it is evolving. Just as the language allows us to abstract concepts and mentally we are able to handle lots of complex functionality out-of-the-box (if I may so, a very geek’s concept). In the same way that we can see a moving image while watching TV, and we can abstract from analyzing each dot light separately. In the same way that we can live a situation and transform it into an storytelling experience by removing, adding and emphasizing events. In the same way, we can abstract from the information when we assimilate and transform it into something else, turn it into knowledge. This is what frees us to become insane with complexity.
The average society is over the Information Age. I say average because there are some societies where are still people who believe information should be restricted, which slows (not prevent) the advancement of knowledge. What Peter Drucker dreamed exactly 40 years ago, began to take shape about 15 years or so. Internet penetration democratized and, still, democratize access to information.
Nowadays, anyone with Internet access has available much of the digitized information of mankind. How much of this information can become knowledge?
The answer to that question, intuitively, is often “It depends on the amount of information that can be interpreted / absorbed / learned / grasped.” This is strictly true. It is true that the entire society’s interest that the individual gradually increase its capacity to assimilate information. That’s why thousands of years ago we established schools and universities.
Two thoughts on this section:
So far, this is familiar to many.
At the risk of being reprimanded by our friend Santiago Bustelo from Icograma. I’ll make a simplified, abstract, linear and arbitrary timeline of the evolution of some technologies. Just to clarify why we use today those tools.
I chose to start with Mainframes. From these, non-stop to workstations on a LAN, then to the WAN and then to what we call now the cloud.
Why the obvious (and arbitrary, insist) progression? To promote the following premise: “The computational power, applications and information distribution, maintains a progression that promotes the work of many among many.” Or what is the same: technology, made us promiscuous :-P.
Much more simpler, some time ago the information was mine, then belong to my closest group, after that to my well-known bands, then I just began to lose control of the data I have generated. Finally, the information I produce, will no longer been generated alone.
This model, which sounds obvious today (see above), was a gradual evolution of technology and social relations. It took us from the paper and the typewriter and postage stamps to Google Docs and Facebook, via Office, Minesweeper and Notepad. It may not evolve much more or perhaps it will evolve too.
This model that allows me, now, being Saturday morning writing on the couch in my house to a public in the whole world. This model is changing to something that will allow to do more and more efficient.
The model that is going from us, is the collaborative model. The one which is emerging is the co-operative.
Therefore, among other reasons, it is important to identify the context of the applications you normally use. Today, most applications that surround us, are based on the collaborative model and that is its context. That is its paradigm, and possibly its conceptual limitation.
The paradigm is: “The user generated information and share it, and eventually someone changes that information”.
Several examples to reinforce the concept:
On a simpler manner. Among many, we fulfill a common goal. Some examples that are often overlooked:
One of the limitations that collaborative applications have is that access to the information is exclusive. This means that more than one user can not modify the same instance of information at the same time. This restriction did not prevent this model evolve to where it is today (which is VERY far away). But it may not get much further.
This restriction seems subtle, but may prove disabling for the universe of things that we’ll want to do together in the future.
In the middle and as an exponent of this transition is, among others, Google Docs and Microsoft Office OneNote. These applications, one on the web and the other on the desktop platform, simulate a kind of simultaneous access to data, but it’s not real (or at least we cannot sense it like it is real). It is clear when one perceives the delay between each user updates. There is always a token that rotates among users to make full use of the information file, but these applications reduce to the minimum the duration of that token.
But the most important limiting factor, much more than exclusion, is the inability to resolve the intention of each user.
And everything I wrote so far serves as an introduction to these two limitations of the Collaborative Model:
I insist that this can now be simulated. Consequently, the actual impact of these two constraints is diminished. But that will not happen in the future. If anything history has shown to us is that human beings, individually and together, knocked down the theoretical limits again and again. And what seemed unnecessary became indispensable.
I appeal to the ability of all those who had the patience to get to this line in this long article to understand the subtlety expressed.
THESE TWO LIMITATIONS ARE NOT TRIVIAL.
The good news is that those limitations no longer exists
The good news is that we are witnessing the transition between the Collaborative and Co-Operative Models.
The difference, again subtle but strong is the following:
We believe that the involved change is going to be quite large. We trust that the community of developers can build applications better than we imagine with the technology that makes possible the co-operation.
When Federico Lois, Labs+Academics Manager and Corvalius’ Co-Founder, told us to develop an application making use of this technology, I confess that I have underestimated the impact. It really is not a concept easy to see quickly. But is there (expecting to hit us from the front).
I will try to explain, surelly not as well as Federico would do, the constraints expressed in the previous paragraph:
We always had a token. This token, allows us to read and write on a document. Then it evolved and only allowed to write, to read it was no longer needed. Then returned to evolve (in some applications) and became almost unawareable, but it still was there. Being there implied a time lag. Time that passes between, for example, I submit my paper to get approval and get a revised copy with corrections.
This now seems a minor issue because we already have it under the skin. I mean, “the waiting workflow” is part of ours mental model. But usually people dont challenge a mental model until they find another one that works better than the older one and end up adopting it. And the more natural and intuitive the model is, the less the impedance in the adoption is.
When writing a text, for example, is often tedious and even paralyzing be interrupted even if a few seconds. That’s what happens with applications that are still in the Collaborative Model if we want to write a document. We invite some friends in the session, we began to write and see their contributions around 10 or 15 seconds after they wrote them.
Ultimately, this application will help us to evaluate versiones and to seek feedback from collaborators. But we can’t write a document from scratch. It is not practical for this purpose.
Co-Operative Applications, allow entry to any document at any time. Regardless if someone is editing it or not. (Depending, of course, the security privileges)
An example of the unsolved problem.
Two users (User 1 and User 2). Both want to delete the letter “S” from the word HOUSE.
User 1 deletes
H O U S E
User 2 deletes
H O U S E
Deleting S, without a resolution of intent, the application interprets that the users seeks to remove the U.
Expected Result
H O U E
Real Result
H O E
Without an algorithm to interpret correctly the intention of each user, this common task would not be possible to achieve. The technologies we are working on in order to build applications on the Co-Operative model, solve this problem. Otherwise it can’t even be conceived.
A feature of the Co-Operative applications is that they contains a permanent record of transactions. Ie. Undo operations are infinite, and the whole document can be reconstructed at any desired operation. This feature opens up many possibilities, to enable auditing of all changes by default, and maintaining a comprehensive and detailed versioning.
It is true that in the community, the concept Real-Time Collaboration is widespread as a subtype of collaborative applications, and these could be confused with our Co-Operative Applications. This Wikipedia article describes the cases of real-time editors. Please, take the time to read and test the application examples listed, very few fall within the concept proposed here as Co-Operation.
We believe that Google Wave is one of the exponents of this paradigm of applications, so defined. For some years it has been SubEthaEdit and more recently Etherpad, among others. Very few. Certainly less than needed.
We believe we can summarized as: “Very soon, everything that only one person can do, will be possible to do between many.” And we are convinced that this will happen because there is no technical limitation. Nothing may justify this doesn’t happen.
Co-operation can be applied in all the areas where today there is Collaboration. And some more. Specifically, the chart below, is part of the envisioning documentation we have in Corvalius for our technology that makes Co-Operation possible.
We want to share it with you to begin to engage in what will be our first product soon. In it the most common types of applications are ordered according to the dimensions of interest to us.With regard to the extent that it orders the complexity, what we seek to represent is “How complex can be to apply Co-Operation to those domains.”
For those who are more familiar with the Microsoft world … this is our specific vision:
Such applications will require adaptations in the social sphere. Adaptations that allow many people operate as if they were one. New rules or “social protocols” must be invented and perfected. For those who come from the world of programming, imagine the following concept: “RXP - Remote eXtreme Programming.” Can you imagine rules to be successful with RXP?
Now a kind of Trivia. Taking into account what we have told in the previous and in this paragraph.Imagine an application like Visual Studio.NET. Which would be the impact of undertaking Co-Operation? What other common application would be obsolete? Those interested in bringing their ideas, they can do to info@corvalius.com with the subject: [TRIVIA] - Impact of Co-Operation.
We believe that change is going to be quite large. We trust that the community of developers can build applications better than we imagine with the technology that makes possible the co-operation.
As you know, from Corvalius we’re working on developing a base technology that allows the application of Co-Operation in all exposed areas. Sounds ambitious, and it is :-P. We really have high expectations. Clearly we do not have the resources of Google, but that is not still a significant impediment.
Participation. Participation. More Participation. It is important that those who are related to this concept, share our vision and want to be part of it, co-operate in the process of evangelization of methods, APIs, tools and anything that you can feel will make an impact.
It is important that software developers be aware that this is a different paradigm with different rules and challenges (we will post more about it in the future). It certainly has a very large potential and is all waiting to be done, but we can be certain that when we will screw up, the impact will be bigger.
Be alert to developments with respect to the Co-Operation in software. Be alert to the subtleties
We hope we have made clear our vision of the future and the trends that define it. Hope that was not tedious to read. Since Corvalius only want one thing: “We want to secrete and help to secrete more endorphins.” We just happen to make software.
The difference between stupid and intelligent people - and thi s is true whether or not they are well-educated - is that intelligent people can handle subtlety.
Neal Stephenson
Reading time: 20 - 34 minutes
“The more efficient a force is, the more silent and the more subtle it is.”
Mahatma Gandhi
No es fácil proponer un cambio. No es fácil seguir una propuesta de cambio. En fin, el cambio es difícil en sí mismo y esa es parte de la complejidad con la que lidiamos cada día. Y lidiamos con ella porque elegimos hacerlo. Lidiamos con ella porque al final de cuentas, resolver la complejidad nos beneficia.
Hasta aquí lo que es obvio y cliché. Lo que viene no es simple de explicar. Sobre todo porque no queremos sobreestimar ni subestimar el impacto de la nueva tendencia que desde hace unos años identificamos y cada día vemos más presente. Queremos difundirla en su impacto justo. Ni más, ni menos. Y eso también es complejo.
Nuestra mayor dificultad radica en poder explicar, tal como nosotros entendemos hoy, las sutilezas que diferencian dos paradigmas. Uno que está empezando a ceder su capacidad de influencia por sobre el otro. Colaboración vs. Co-Operación.
Lo que va a leer en este post lo va a ayudar a entender nuestra visión del cambio silencioso que estamos presenciando. No es gran cosa. Pero existe.Y sin dudas va a modificar la manera en la que interactuamos con nuestros pares y en nuestra comunidad. Los cambios son cada vez más comunes así que usted ya debe estar acostumbrado a ser anunciado de revoluciones y reinvenciones y redefiniciones. Ya sabe como lidiar con ellas
Hay cosas que disfruto mucho y reconozco que es una deformación profesional, pero no puedo evitarlo. Disfruto rotular las cosas. No sólo me produce satisfacción hacerlo adecuadamente, sino que me permito defender mi actitud argumentando la utilidad de tal acción. Lo cierto es que, me resulta útil poder contextualizar el momento y llamar a las cosas por su nombre. Creo que puede ayudar a entender mejor el planteo que proponemos.
Para algún desprevenido, y aunque suene poco intuitivo, vale destacar que: “La difusión de Internet no inició la Era de la Información. La dio por terminada.” (a propósito, otra deformación profesional, me gusta ser directo). Sé que para aquel que no está familiarizado con el concepto, la premisa anterior puede resultar falsa. Les voy a pedir a aquellos que piensen de esa manera que sigan el siguiente razonamiento. Los que la consideren verdadera, pueden continuar en el siguiente apartado.
Hay dos factores esenciales con la información:
Esto, coloquialmente, puede ser entendido como: “Si no obtuve la información, en el mejor de los casos tengo un dato.” y (lo más importante) “Si interpreté la información y fui capaz de asimilarla, pues entonces ya es conocimiento.”
Hubo un tiempo en el cual la información era difícil de obtener. Las organizaciones y las personas dedicaban un gran esfuerzo en obtener datos, darle sentido, y transformarlas así en información. Es difícil (al menos para mi) contextualizar temporalmente de forma exacta esa etapa. Pero puedo asegurarles que desde hace mucho, mucho, mucho tiempo, el que tiene más información, tiene una ventaja.
Esto es perenne, y evoluciona. Así como el lenguaje nos permite abstraer conceptos y mentalmente estamos capacitados para manejar la complejidad con funcionalidad out-of-the-box (si me permiten lo geek del concepto). De la misma forma en la que somos capaces de ver una imagen con movimiento al mirar el televisor, y podemos abstraernos de analizar cada punto de luz de forma separada. De la misma manera en la que podemos vivir una situación y transformarla en anécdota quitando, agregando y enfatizando eventos. De esa misma manera, podemos abstraernos de la información cuando la asimilamos y transformarla en otra cosa, transformarla en conocimiento. Y eso es lo que nos libera de volvernos locos con la complejidad.
La sociedad, en su promedio, superó la Era de la Información. Y digo en su promedio porque todavía existen organizaciones y personas que consideran que la información debe ser restringida, lo cual retrasa (no impide) el avance del conocimiento. Lo que soñó Peter Drucker hace exactamente 40 años, comenzó a materializarse hace unos 15. La difusión de Internet democratizó y democratiza el acceso a la información.
Hoy por hoy, cualquier usuario con acceso a Internet tiene disponible gran parte de la información digitalizada de la humanidad. Cuánta de esa información puede convertir en conocimiento?
La respuesta a esa pregunta, intuitivamente, suele ser: “Depende de la cantidad de información que pueda interpretar/asimilar/conocer/aprehender.” Y es estrictamente cierto. Aunque también es cierto que a la sociedad entera le interesa que cada individuo incremente gradualmente su capacidad de asimilar información. Es por eso que hace miles de años creamos escuelas, desde hace cientos, creamos universidades.
Y desde nuestro nuestro humilde lugar de trabajadores e investigadores de las Tecnologías de la Información, trabajamos desde hace años en la evolución de aplicaciones que hagan más simple el procesamiento de información. Hoy, ADEMAS, debemos trabajar en la creación de aplicaciones que faciliten el aprendizaje, que viabilicen el conocimiento. (Me pregunto si no debiéramos pensar seriamente en el concepto de Tecnología del Conocimiento junto con otras disciplinas.)
Dos puntos concluyentes de este apartado:
Hasta aquí, para muchos, nada nuevo.
A riesgo de ser reprendido por nuestro amigo Santiago Bustelo de Icograma. Voy a hacer un análisis simplificado, abstracto, lineal y arbitrario de la evolución de las tecnologías. Solo para clarificar el por qué de las herramientas que hoy utilizamos.
Elegí comenzar con los Mainframes. De ellos, paso sin escalas a las workstations en una LAN, de ahí a las WAN y de ahí lo que hoy denominamos La Nube.
Por qué la progresión obvia (y arbitraria, insisto)? Para poder fomentar la siguiente premisa: “El poder de cómputo, las aplicaciones y la información, mantienen una progresión que promueve el trabajo de muchos entre muchos”. O lo que es lo mismo: La tecnología, nos volvió promiscuos :-P.
Más simple aún, la información antes era mía, después fue de mi grupo cercano, después de mis grupos conocidos, luego comencé a perder el control de la información que yo generaba. Finalmente, la información que produzca ya no la habré generado solo.
Este modelo, que hoy suena obvio (ver apartado anterior), fue una evolución paulatina de tecnologías y relaciones sociales. Nos llevó desde el papel, la maquina de escribir y las estampillas postales a Facebook y Google Docs, pasando por Office, el Buscaminas y el Bloc de Notas. Pero quizás no evolucione mucho más. Quizás ya evolucionó demasiado.
Ese modelo que me permite hoy Sábado a la mañana estar escribiendo en el sillón de mi casa para todo el mundo. Está cambiando hacia algo que va a permitir hacer más cosas y de modo más eficiente.
El modelo que se va, es el modelo colaborativo. El que está surgiendo es el co-operativo.
Siempre es útil conocer el contexto de cada uno. No porque siempre sea necesario, sino porque cuando es necesario, aporta gran valor. Es equivalente a la rueda de auxilio o a un seguro.
Específicamente en el contexto de las aplicaciones de tecnología de software, a los usuarios les sirve conocer su contexto para saber buscar opciones. Probar una aplicación, probar otra, adoptar una de ellas o descartarlas todas. O simplemente, entender donde están parados. A los desarrolladores nos sirve para poder restringir el dominio de nuestras aplicaciones. Comprenderlo y poder enriquecer la resolución del proceso que se efectúe en cada caso.
Por eso, entre otros motivos, es importante identificar el contexto de las aplicaciones que habitualmente utilizamos. Hoy por hoy, la mayoría de las aplicaciones que nos rodean, se basan en el modelo colaborativo y ese es su contexto. Ese es su paradigma y, eventualmente, su limitante, conceptual.
El paradigma es: “El usuario genera información, la comparte y eventualmente alguien más evoluciona esa información.”.
Ejemplos varios para reforzar el concepto:
De forma más simple. Entre muchos, cumplimos un objetivo común. Algunos ejemplos que suelen pasar desapercibidos son:
Uno de los limitantes que tienen las aplicaciones colaborativas es que el acceso a la información es excluyente. Esto significa que más de un usuario no puede modificar la misma instancia de información al mismo tiempo. Esta restricción no impidió a este modelo evolucionar hasta donde llegó hoy (que es MUY lejos). Pero no le permitirá llegar mucho más allá.
Esta restricción parece sutil, pero puede resultar inhabilitante para el universo de cosas que vamos a querer hacer en conjunto en el futuro.
En el medio y como exponente de esta transición se encuentra Google Docs y Microsoft Office OneNote, entre otras. Estas aplicaciones, la primera en la web y la segunda en plataforma desktop, simulan un acceso de tipo simultáneo pero no es real. Es claro cuando uno nota el delay que hay entre las actualizaciones de cada usuario. Siempre existe un token que se alterna entre los usuarios para poder hacer uso completo del archivo de información, sólo que estas aplicaciones reducen a la mínima expresión posible ese token.
Pero el limitante más importante, mucho más que la exclusión, es la incapacidad de resolver la intención del usuario.
Y todo lo que escribí hasta el momento, sirve como introducción para estos dos limitantes del Modelo Colaborativo de Aplicaciones:
Insisto en que esto hoy puede ser simulado. En consecuencia, el impacto actual de estos dos limitantes se ve disminuido. Pero a futuro no será así. Si algo nos demostró la historia es que el ser humano, individualmente y en conjunto, derribaron los límites teóricos una y otra vez. Y lo que parecía innecesario se convirtió en indispensable.
Apelo a la capacidad de todos aquellos que tuvieron la paciencia de llegar a esta línea de este largo artículo de entender la sutileza expresada.
NO SON MENORES ESTOS DOS LIMITANTES.
La buena noticia es que esos limitantes no existen más
La buena noticia es que somos testigos de la transición entre el Modelo de Aplicaciones Colaborativas y el Modelo de Aplicaciones Co-Operativas.
La diferencia, nuevamente sutil pero contundente es la siguiente:
Más específico: Soy capaz de operar, al mismo tiempo, con alguien más. Con cualquier propósito.
Como ya saben si siguen nuestro, por ahora poco, material publicado. Hace un tiempo que estamos trabajando en tecnología que haga posible un modelo Co-Operativo de trabajo. No encontré, bibliografía que hable sobre este modelo como tal, al menos como lo concebimos nosotros. Es por eso que podemos atribuirnos la invención del concepto. Deberemos determinar después si eso es bueno o no :-S.
Creemos que el cambio va a ser bastante grande. Confiamos que la comunidad de desarrolladores podrá generar aplicaciones mejor que las que imaginamos con la tecnología que hace posible la co-operación.
Cuando Federico Lois, Manager del Area de Labs+Academics y Co-Fundador de Corvalius, nos propuso desarrollar una aplicación que hiciera uso de esta tecnología; debo confesar, subestimé el impacto. Realmente no es un concepto fácil de ver rápidamente. Pero está ahí (esperando a golpearnos de frente).
Voy a intentar explicar, no tan bien cómo lo haría Federico, los limitantes que expresé en el apartado anterior:
Siempre tuvimos un token. Este token, nos permitía en un momento leer y escribir sobre un documento. Luego evolucionó y nos permitía escribir, para leer ya no lo necesitábamos. Luego volvió a evolucionar (en algunas aplicaciones) y se volvió casi imperceptible, pero todavía estaba ahí. Que estuviese ahí, implica tiempo que transcurre. Tiempo que pasa entre que, por ejemplo, someto mi documento a aprobación y obtengo una copia revisada y con correcciones.
Esto hoy parece menor porque es algo que ya tenemos asimilado. Digo, “el workflow de espera” es parte nuestro. Pero usualmente los seres humanos adoptamos un modelo mental hasta que comprobamos que uno distinto nos funciona mejor y terminamos por adoptar este último. Y cuánto más natural e intuitivo es ese modelo, menos impedancia hay en la adopción del mismo.
Cuando escribimos un texto, por ejemplo, suele ser fastidioso y hasta paralizante ser interrumpidos aunque sea unos segundos. Eso es lo que pasa con las aplicaciones que todavía se encuentran en el modelo colaborativo cuando pretendemos escribir un documento. Invitamos a amigos en la sesión, comenzamos a escribir y vemos sus contribuciones unos 10 o 15 segundos después que las escribieron.
En definitiva, este tipo de aplicaciones nos ayudan mucho a la hora de evaluar versiones y pedir feedback a colaboradores. Pero no nos permite escribir desde cero un documento. No resulta práctico para ese propósito.
Las aplicaciones Co-Operativas, permiten ingresar a cualquier documento, en cualquier momento. Independientemente si alguien está editándolo o no. (Dependiendo, claro está, de los privilegios de seguridad)
Si resolviéramos el problema anterior, nos encontraríamos con que ahora es un problema en sí mismo la simultaneidad. ¿Cómo identificar lo que cada participante quiso, por ejemplo, escribir?
Veamos un ejemplo de la problemática NO resuelta.
Dos usuarios (Usuario 1 y Usuario 2). Ambos quieren borrar la letra “P” de la palabra CASPA.
Borra el Usuario 1
C A S P A
Borra el Usuario 2
C A S P A
Al haber sido eliminada la P, sin resolución de intención, la aplicación interpreta que pretende eliminarse la S.
Resultado Esperado
C A S A
Resultado Obtenido
C A A
Sin un algoritmo que interprete correctamente la intención de cada usuario, esta tarea común no sería posible de realizar. Las tecnologías en las que trabajamos para poder generar aplicaciones bajo el modelo Co-Operativo, resuelven este problema. De otra manera no podrían ser concebidas siquiera.
Una característica de las aplicaciones Co-Operativas es que contienen un historial perpetuo de operaciones. Esto es. Las operaciones de deshacer son infinitas, y todo el documento puede ser reconstruido a cualquier operación que se desee. Esta característica abre muchas posibilidades, al permitir auditoría de todos los cambios de manera default, y mantener versionado exhaustivo y detallado.
Es cierto que en la comunidad, está difundido el concepto Real-Time Collaboration como un subtipo de aplicaciones Colaborativas, y estas podrían ser confundidas con nuestra propuesta de Aplicaciones Co-Operativas. Este artículo de Wikipedia expone los casos de Editores en tiempo Real. Por favor, tómense el tiempo de leerlo y de probar los ejemplos de aplicaciones que enumera, muy pocas entran dentro del concepto Co-Operativo que proponemos.
Creemos que Google Wave es uno de los exponentes de este paradigma de aplicaciones, de manera definida. Desde hace algunos años lo es SubEthaEdit y más recientemente Etherpad, entre algunos otros. Muy pocos. Menos que los necesarios.
Creemos que podemos sintetizarlo así: “Muy pronto, todo lo que sólo se puede hacer de a uno, se podrá hacer de a varios.” Y estamos convencidos de que esto será así ya que no habrá limitante técnica. Nada justificará que así no sea.
La Co-Operación se puede aplicar en todos los dominios en los que hoy existe la Colaboración. Y en algunos más. En concreto, el siguiente gráfico, es parte de la documentación de conceptualización que tenemos en Corvalius para nuestro aplicación de la tecnología que hace posible la Co-Operación.
Queremos compartirla con ustedes para comenzar a hacerlos partícipes de lo que será en breve nuestro primer producto. En ella ordenamos de acuerdo a las dimensiones que a nosotros nos interesan, los tipos de aplicaciones más comunes. Con respecto a la magnitud que ordena la complejidad, lo que pretendemos representar es “Qué tan complejo puede ser aplicar a estos dominios la Co-Operación”.
Para aquellos que están más familiarizados con el mundo Microsoft… está es nuestra visión específica:
Este tipo de aplicaciones, requerirá de ciertas adaptaciones en lo social. Adaptaciones que permitirán que muchas personas operen como si fuesen una sola. Nuevas reglas de “etiqueta” deberán ser inventadas y perfeccionadas. Para aquellos que vengan del mundo de la programación, imaginen el siguiente concepto: "RXP – Remote eXtreme Programming”. ¿Pueden imaginarse normas para que sea exitoso?
Ahora una especie de Trivia. Teniendo en cuenta lo que contamos en el apartado anterior y en este. Imaginen una aplicación como Visual Studio.NET. Cuál consideran qué es el impacto real de aplicar Co-Operación? Qué otra aplicación resultaría obsoleta? A los que les interese comentarnos sus ideas, pueden hacerlo a info@corvalius.com con el subject: [TRIVIA] - Impacto de la Co-Operación.
Como saben, entonces, desde Corvalius estamos trabajando en desarrollar una tecnología base que permita la aplicación de Co-Operación en todos los dominios expuestos. Suena ambicioso, y lo es :-P. Realmente tenemos las expectativas altas y creemos estar a la altura de las expectativas. Claramente no poseemos los recursos de Google, pero eso no es un impedimento significativo aún.
Las siguientes son las acciones que pueden esperar de nosotros:
Durante el Mes de Julio evaluaremos los requerimientos y adaptaremos la API a los propósitos que sugieran.
Participación. Participación. Más Participación. Es importante que aquellos que se sienten afines a este concepto, compartan nuestra visión y quieran ser parte de ella, co-operen
en el proceso de evangelización que desde muchos lugares se está realizando. Es importante que los desarrolladores de software seamos conscientes de que existe un paradigma distinto, que tiene un potencial muy grande y está todo por hacerse.
Estén alerta a las novedades con respecto a la Co-Operación en software. Estén alerta a las sutilezas
Esperamos haber dejado clara nuestra visión del futuro y de las tendencias que lo definen. Esperamos que no haya sido tedioso de leer. Desde Corvalius queremos sólo una cosa: “Queremos liberar y hacer liberar más endorfinas.” Sucede que hacemos software.
The difference between stupid and intelligent people - and this is true whether or not they are well-educated - is that intelligent people can handle subtlety.
Neal Stephenson
Recent Comments