incubator-general mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Suresh Marru <sma...@cs.indiana.edu>
Subject Re: [VOTE] Accept Rave into the Incubator
Date Fri, 25 Feb 2011 13:15:05 GMT
+ 1

--Suresh

On Feb 24, 2011, at 7:08 PM, Ate Douma wrote:

> Given the feedback received so far I think the Rave proposal is in good shape so I'd
like to bring up the vote for accepting Rave into the Incubator.
> 
> The proposal is at: http://wiki.apache.org/incubator/RaveProposal and also copied as
text below.
> 
> Please vote.
> 
> [ ] +1 Accept Rave into the incubator
> [ ] +0 Don't care'
> [ ] -1 Reject for the following reason:
> 
> I'll close the vote at Tuesday morning 1st March CET to accommodate for the coming weekend.
That's a little over 5 days from now.
> 
> Regards,
> 
> Ate
> 
> ----- COPY OF PROPOSAL FROM http://wiki.apache.org/incubator/RaveProposal -----
> = Apache Rave Proposal =
> 
> 
> == Abstract ==
> 
> Apache Rave is A new WEb And SOcial Mashup Engine. It will provide an out-of-the-box
as well as an extendible lightweight Java platform to host, serve and aggregate (Open)Social
Gadgets and services through a highly customizable and Web 2.0 friendly front-end.
> Rave is targeted as engine for internet and intranet portals and as building block to
provide context-aware personalization and collaboration features for multi-site/multi-channel
(mobile) oriented and content driven websites and (social) network oriented services and platforms.
> For the [[http://www.opensocial.org/|OpenSocial]] container and services the (Java) [[http://shindig.apache.org|Apache
Shindig]] will be integrated. At a later stage further generalization is envisioned to also
transparently support [[http://www.w3.org/TR/widgets/|W3C Widgets]] using [[http://incubator.apache.org/wookie/|Apache
Wookie]].
> 
> 
> == Proposal ==
> 
> The reason for starting Rave is to bring together and combine several existing projects
and teams currently working towards more or less the same or overlapping goals but each in
their own small(er) target audience and community.
> 
> The goal for Rave is to become a lightweight and open-standards based extendible platform
for using, integrating and hosting !OpenSocial and W3C Widget related features, technologies
and services.
> It will also provide strong context-aware personalization, collaboration and content
integration capabilities and a high quality out-of-the-box installation as well as be easy
to integrate in other platforms and solutions.
> 
> The initial features for Rave will at least be based on the current capabilities from
the contributing external projects, for which they will provide the necessary code contributions.
> However, the code base for Rave will be built anew with strong focus on generalization,
customization and extendibility to support the intended multi-purpose adoption and integration.
> The contributing external projects will start using and switch to the new Rave based
solution as soon as the initial features become available to ensure the continued participation
and interest from their side as well as their own communities.
> 
> ==== The intended initial features include: ====
> 
> '''Core Features'''
> 1. Advanced !OpenSocial compliance and optional features support
> 1. !OpenSocial persistence and SPI (Service Provider Interface) implementation
> 1. Self-service application administration including security, gadget management and
page templates
> 1. User and group management with full privacy model
> 1. Gadget repository with life-cycle management (install/update/remove) and extended
meta data (categories, comments, ratings, etc.)
> 1. Dynamic and highly customizable front-end engine (skins, pages, tabs, layouts, navigation)
> 1. Full OAuth support
> 1. Support for security restrictions on both Gadgets and page/tag/layout customizations
> 1. Set of common and general purpose Gadgets to be usable out-of-the-box
> 1. Support for inter-gadget messaging with examples
> 
> '''Extensible Features'''
> 1. Pluggable persistence
> 1. Pluggable security model with example modules for authentication and authorization
> 1. Support for !OpenSocial extensions not (yet) defined in the specification
> 1. Support for other (non-standard, yet) pluggable container services and extensions
> 
> Beyond these initial features the vision and scope for Rave goes much further and includes
integrating and providing other highly desired/needed features like:
> 
> * native W3C Widgets support through [[http://incubator.apache.org/wookie|Apache Wookie]]
> * pluggable and extendible content integration and management services
> * space extensions and management features, like http://wiki.opensocial.org/index.php?title=Space_extension
> * context aware features and extensions integration for personalized and social network
and (mobile) device oriented sites and channels
> * enhanced client-side widget messaging, coordination and co-location support like using
[[http://www.openajax.org|OpenAjax]] Hub and Registry
> * space, page and Gadget based linking, navigation, coordination and collaboration
> * inline widget rendering, like http://issues.apache.org/jira/browse/SHINDIG-1402
> * [[http://activitystrea.ms/|Activity Streams]] support
> * integration with other social networks like with [[http://www.w3.org/2005/Incubator/federatedsocialweb/|W3C
Federated Social Web Incubator Group]], [[http://onesocialweb.org/|OneSocialWeb]] and [[http://ostatus.org/|OStatus]]
> * integration with [[http://incubator.apache.org/wave/|Apache Wave]]
> * runtime services monitoring, reporting and configuration/life-cycle management support
> 
> 
> == Background ==
> 
> The plan for starting a project like Apache Rave was initially proposed at an [[http://wiki.apache.org/portals/MeetupAtlanta2010|ApacheCON
meetup]] November 2010 in Atlanta and [[http://docs.opensocial.org/download/attachments/720955/Apache+SocialSite+2+proposal.pdf|in
more detail]] at the first [[http://docs.opensocial.org/pages/viewpage.action?pageId=720955|European
OpenSocial Event]] December 2010 in Utrecht (The Netherlands).
> This resulted in participants from [[http://www.collab-ogce.org/|Pervasive Technology
Institute Indiana University]], [[http://www.mitre.org/about/index.html|The MITRE Corporation]],
[[http://www.surfnet.nl/en/Thema/coin/|SURFnet SURFConext]], [[http://www.oss-watch.ac.uk/|OSS
Watch]], [[http://www.onehippo.com/|Hippo]] and other individuals to come together and discuss
the possibilities to collaborate and work together on this joined effort, resulting in this
proposal for the Apache Rave project.
> 
> 
> == Rationale ==
> 
> The reason for the Apache Rave proposal is that there is a clear need for a more lightweight
collaborative and social network oriented integration and services platform, portal if you
like, which is easier to use, extend and manage than the more heavy weight J2EE / Portal /
Portlet standards based solutions.
> The !OpenSocial, WC3 Widgets and similar related standards are much more "network" and
collaboration oriented and lighter weight in their definition, implementation and integration
requirements, and are moving much more rapidly and agile forward.
> Several open-source projects already have stepped into this arena, converting over or
starting from scratch, to create new and lightweight solutions based on these emerging standards.
> 
> In most cases these new implementations are still at the early stages, and much of the
basic work is duplicated as is the effort to build up communities and attract developers.
> The Apache Rave contributing projects are all building on the same concepts (!OpenSocial),
have the same or very similar functional needs with regards to Gadget handling, service handling,
back-end integration, front-end rendering, code maintenance, etc.
> The rationale for Apache Rave is to combine these efforts and work and collaborate together
on a common base solution and to get out of each own "silo".
> This joined effort than can benefit everyone, both on technical implementation and feature
realization and provide a much wider and stronger community perspective.
> 
> The initiating projects and individuals on this joined effort have their existing code
based licensed under the ASL 2.0, or will do so as part of this project. Participants include
long time users, committers and members of the Apache Software Foundation. That, and the strong
alignment with existing Apache projects like Shindig and Wookie, and the strong belief in
the Apache "way" with focus on collaboration and community, makes starting the Rave project
at Apache the logical thing to do.
> 
> The external projects providing the initial code contributions all fully support the
goal to come up with a '''new''' base solution to replace their own project base line solution.
> Apache Rave will not be started from one of these initial code contributions directly,
but be build from scratch where selected features and implementations might be cherry picked
from the code contributions where applicable.
> Each of the code contribution projects are willing to give up their current implementation
and replace that with the new solution from Apache Rave, even if no part of their existing
implementation details would "survive".
> 
> 
> == Current Status ==
> 
> === Community ===
> 
> This project will form a new community, made up initially of the contributors listed
below. However, from our experience at the !ApacheCon, we believe that this project will quickly
draw interest and its community will broaden easily. The proposers have worked well together
so far, in producing this  proposal and clarifying design approaches, and are keen to continue
this  in a more open venue.
> 
> 
> === Code ===
> 
> Three initial codebases that implement parts of the scope of this project have been offered
to this project. All are, or will be, Apache licensed, and grants can be provided. All three
of these codebases will be imported into Apache SVN, each into separate sandboxes.
> 
> A followup codebase donation is planned, providing a context aware mapping engine and
content integration features, under the same conditions as for the initial codebases.
> 
> 
> == Initial Goals ==
> 
> The initial goal will be to produce a single usable codebase from the three imported
codebases, and to get this to a suitable state where contributing parties can use it within
their own products/projects.
> 
> This will be done by starting with a fresh, clean repository and then, on a feature-by-feature
basis, cherry-picking the best code for that feature from the three codebases.
> 
> 
> == Known Risks ==
> 
> Any project joining the Incubator is going to have risks - aspects to it that could lead
the project to fail. In this section, the risks that have been noted for the Rave project
are discussed.
> 
> 
> === Three Code Bases ===
> 
> Working with three initial code bases will be a challenge. However, we are hoping that
it will be less of a challenge than starting with none!
> 
> All parties contributing code have agreed that they are prepared to participate in this
project even if none of their contributed code is incorporated in the final product, recognising
that for each feature, it will be necessary to pick the best code for the job, rather than
the code that one participant is most attached to.
> 
> 
> === Speed of Development ===
> 
> Initially at least, this project is dependent upon contributions made on company time.
For this approach to succeed, the project must deliver a workable system in a timeframe acceptable
to those companies. The initial parties have the intention of releasing a first version within
6 months after starting the Incubator. Failure to do so could prevent the project reaching
critical mass, and could prevent the project from being in a position to attract new developers.
> 
> 
> === Inexperience with Community Development ===
> 
> None of the participants have worked together before this project was conceived. Some
participants have released open source code, but not done development 'in the open'.
> 
> There will clearly be some learning in how to participate together in this project, in
a meritocratic way, as a newly formed community. However, we do have in our mix folks that
are experienced in open source development, including existing Apache committers and Apache
members, as a consequence of which we believe we have enough experience to work with the challenges
of forming a new community.
> 
> 
> === Reliance on Salaried Developers ===
> 
> At present, the vast majority of contributors will be doing so as a part of their day
jobs. Therefore, as already alluded to, there is a risk that the project won't gain enough
traction to be of use to their employers. However, given the centrality of these codebases
to the participating companies, it is clearly in their best interests to transition to an
openly developed alternative.
> 
> 
> === Other Risks ===
> 
> Of the other risks commonly raised regarding incubator proposals, none seem particularly
pertinent to this project.
> 
> The project is no less likely to be orphaned than any other new podling. Given the multi-company
support it has easily gained, it would seem to be quite the opposite.
> 
> Given the range of organisations putting themselves behind this proposal, there is no
obvious risk of over-dependence on one contributing organisation.
> 
> The participants are attracted to Apache due to its governance model, and proximity to
similar projects, e.g. Apache Shindig. This affinity is clearly shown by the fact that the
original group who formed this proposal met at !ApacheCon.
> 
> 
> == Documentation ==
> 
> Details for the initial contributed code can be seen here:
> * MITRE: [[http://code.google.com/p/osec|OpenSocial Enterprise Container]]
> * SURFnet: [[https://portal.surfconext.nl|SURFConext Portal]]; [[https://wiki.surfnetlabs.nl/display/surfconextdev/Technical+Design|SURFconext
technical design]]
> * [[http://www.collab-ogce.org|OGCE]] [[http://www.collab-ogce.org/ogce/index.php/OGCE_Gadget_Container|OGCE
Gadget Container]]
> 
> Because this project will create new code, we will not have any documentation on first
starting. It is likely however that partial documentation can be reused from either codebases.
> 
> 
> == Initial Source ==
> 
> The initial source will be made up of three contributions, namely:
> * [[http://code.google.com/p/osec/source|MITRE OpenSocial Enterprise Container - Source]]
> * SURFnet SURFconext Portal - This source will be brought into the Incubator as SURFnets
contribution
> * OGCE: Gadget Container code is part of the [[http://sourceforge.net/projects/ogce/develop|OGCE
SourceForge Site]]. See [[http://www.collab-ogce.org/ogce/index.php/Portal_download|the portal
download page]] for SVN instructions.
> 
> 
> == Source and Intellectual Property Submission Plan ==
> 
> 
> ==== Hippo ====
> 
> The code to be offered by Hippo is already open source and Apache Licensed.
> 
> 
> ==== The MITRE Corporation ====
> 
> The code offered by The MITRE Corporation is already open source and Apache Licensed.
> 
> 
> ==== SURFnet SURFConext Portal ====
> 
> This source will be brought into the Incubator as SURFnets contribution; initial project
members have already been given access for evaluation purposes.
> 
> 
> ==== Open Gateway Computing Environments ====
> 
> The OGCE will contribute its Gadget Container code, which is Apache licensed and available
from !SourceForge, with current dependencies and their licenses described below.
> Other OGCE software efforts are not covered by this incubator proposal and are not included
in the code contribution.
> 
> 
> == Dependencies on other Apache Projects ==
> 
> * Apache Shindig
> * Apache Tomcat
> * Apache Tiles
> * Apache !HttpComponents
> * Apache Commons
> * Apache Log4J
> * Apache Maven
> * Apache Ant
> 
> 
> == Cryptography ==
> 
> There is no cryptography in the code at this time.
> 
> OGCE has requirements to support security for Computational Grids and Clouds. Although
the code will not have any cryptographic implementations, in the future there will be dependencies
on external cryptographic libraries. Before committing any cryptographic dependencies, the
process listed at http://www.apache.org/dev/crypto.html will be followed.
> 
> 
> == Required Resources ==
> 
> 
> === Mailing lists ===
> 
> * rave-dev
> * rave-commits
> * rave-private (moderated subscriptions)
> 
> 
> === Subversion Directory ===
> 
> * http://svn.apache.org/repos/asf/incubator/rave
> 
> 
> === Issue Tracking ===
> 
> We intend to make use of Jira for issue tracking.
> 
> Proposed JIRA key: JIRA-RAVE
> 
> 
> === Other Resources ===
> 
> None right now.
> 
> 
> == Initial Committers ==
> 
> Names of initial committers with affiliation and current ASF status:
> * Ate Douma (Hippo), Apache Member, id: ate
> * Unico Hommes (Hippo), Apache Committer, id: unico
> * Ard Schrijvers (Hippo), Apache Committer, id: ard
> * Woonsan Ko (Hippo), Apache Committer, id: woonsan
> * Matt Franklin (MITRE, osec)
> * Jesse Ciancetta (MITRE, osec)
> * Tony Carlucci (MITRE, osec)
> * Ross Gardler (OSS Watch), Apache Member, id: rgardler
> * Sander van der Waal (OSS Watch)
> * Scott Wilson (University of Bolton), Apache Committer, id: scottbw
> * Hadrian Zbarcea (independent), Apache Member, id: hadrian
> * Marlon Pierce (Pervasive Technology Institute Indiana University, OGCE)
> * Raminderjeet Singh (Pervasive Technology Institute Indiana University, OGCE)
> * Zhenhua Guo (Pervasive Technology Institute Indiana University, OGCE)
> * Suresh Marru&nbsp;(Pervasive Technology Institute Indiana University, OGCE)
> * Niels van Dijk (SURFNET, SURFConext)
> * Maarten Kremers (SURFNET, SURFConext)
> * Bas Zoetekouw (SURFNET, SURFConext)
> * Joost van Dijk (SURFNET, SURFConext)
> * Okke Harsta (Zilverline, SURFConext)
> 
> 
> == Sponsors ==
> 
> 
> === Champion ===
> 
> * Ate Douma
> 
> 
> === Nominated Mentors ===
> 
> * Ate Douma
> * Sylvain Wallez
> * Upayavira
> * Ross Gardler
> * Hadrian Zbarcea
> 
> 
> === Sponsoring Entity ===
> 
> * Apache Incubator Project
> 
> 
> == Appendix A: External Dependencies ==
> 
> Here's the list of identified external dependencies for each of the initial code contributions:
> 
> ==== MITRE OpenSocial Enterprise Container ====
> 
> * ''Build Time/Test Dependencies''
> 
> '''Apache Licensed'''
>  * Jakarta ORO
>  * Apache log4j
>  * cglib
>  * !EasyMock
>  * Google Guice
>  * h2datasource (MITRE Developed)
>  * Objenesis
>  * Spring Framework Test
>  * servlet-api
> 
> '''BSD Licensed'''
>  * YUI Compressor
>  * YUI Compressor Ant Task
>  * JUnit
> 
> '''MPL && EPL Licensed'''
>  * H2 Database Engine
> 
> '''Other Licenses'''
>  * ASM: http://asm.ow2.org/license.html
>  * Cobertura: http://cobertura.sourceforge.net/license.html
> 
> * ''Runtime Dependencies''
> 
> '''Apache Licensed'''
>  * Apache Commons
>  * Apache Taglibs
>  * Google Collections
>  * Jackson
>  * Apache log4j
>  * Shindig
>  * Spring Framework
>  * Spring Security
>  * Apache Tiles
>  * Google Guice
>  * h2datasource (MITRE Developed)
> 
> '''MPL && EPL Licensed'''
>  * H2 Database Engine
> 
> '''EPL Licensed'''
>  * !EclipseLink
>  * javax.persistence API
>  * AspectJ
> 
> '''BSD-style Licensed'''
>  * !FreeMarker: http://freemarker.sourceforge.net/docs/app_license.html
> 
> '''CDDL Licensed'''
>  * JSTL
>  * !JavaMail
> 
> '''MIT Licensed'''
>  * SLF4J
> 
> '''Other Licenses'''
>  * AOP Alliance: http://aopalliance.sourceforge.net/
> 
> ==== SURFnet SURFConext portal ====
> 
> ''Dependencies and licenses of all dependencies of the COIN portal (excluded the shindig
dependencies)''
> 
> '''Apache Software License, Version 1.1'''
>  * cglib:cglib-nodep:jar:2.2:compile
> 
> '''Apache Software License, Version 2.0'''
>  * org.codehaus.jackson:jackson-mapper-lgpl:jar:1.5.5:compile
>  * org.springframework:spring-core:jar:3.0.3.RELEASE:compile
>  * org.springframework:spring-orm:jar:3.0.3.RELEASE:compile
>  * org.springframework:spring-jdbc:jar:3.0.3.RELEASE:compile
>  * org.springframework:spring-tx:jar:3.0.3.RELEASE:compile
>  * org.springframework:spring-context:jar:3.0.3.RELEASE:compile
>  * org.springframework:spring-aop:jar:3.0.3.RELEASE:compile
>  * commons-dbcp:commons-dbcp:jar:1.2.2:compile
>  * commons-pool:commons-pool:jar:1.3:compile
>  * commons-codec:commons-codec:jar:1.4:compile
>  * org.springframework:spring-webmvc:jar:3.0.3.RELEASE:compile
>  * org.springframework:spring-asm:jar:3.0.3.RELEASE:compile
>  * org.springframework:spring-beans:jar:3.0.3.RELEASE:compile
>  * org.springframework:spring-context-support:jar:3.0.3.RELEASE:compile
>  * org.springframework:spring-expression:jar:3.0.3.RELEASE:compile
>  * org.springframework:spring-web:jar:3.0.3.RELEASE:compile
>  * commons-collections:commons-collections:jar:3.1:compile
>  * org.codehaus.jackson:jackson-mapper-asl:jar:1.5.3:compile
>  * org.codehaus.jackson:jackson-core-asl:jar:1.5.3:compile
>  * org.apache.httpcomponents:httpclient:jar:4.1-alpha2:compile
>  * org.apache.httpcomponents:httpcore:jar:4.1-beta1:compile
>  * commons-logging:commons-logging:jar:1.1.1:compile
>  * org.easymock:easymock:jar:2.5.2:compile
>  * org.objenesis:objenesis:jar:1.0:compile
>  * org.apache.commons:commons-io:jar:1.3.2:compile
>  * javax.validation:validation-api:jar:1.0.0.GA:compile
>  * org.hibernate:hibernate-validator:jar:4.0.2.GA:compile
>  * javax.xml.stream:stax-api:jar:1.0-2:compile
> 
> 
> '''GNU Lesser General Public License'''
>  * c3p0:c3p0:jar:0.9.1.2:compile
> 
> '''Dual license of the MPL and the LGPL'''
>  * javassist:javassist:jar:3.8.0.GA:compile
> 
> '''BSD License'''
>  * org.hsqldb:hsqldb:jar:1.8.0.10:compile
> 
> '''GPL-2.0'''
>  * mysql:mysql-connector-java:jar:5.1.10:compile
> 
> '''Public Domain'''
>  * aopalliance:aopalliance:jar:1.0:compile
> 
> '''LPGL v2.1'''
>  * org.hibernate:hibernate-core:jar:3.3.2.GA:compile
>  * org.hibernate:hibernate-annotations:jar:3.4.0.GA:compile
>  * org.hibernate:ejb3-persistence:jar:1.0.2.GA:compile
>  * org.hibernate:hibernate-commons-annotations:jar:3.1.0.GA:compile
> 
> '''BSD license'''
>  * antlr:antlr:jar:2.7.6:compile
>  * dom4j:dom4j:jar:1.6.1:compile
>  * org.hamcrest:hamcrest-core:jar:1.1:compile
> 
> '''COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0'''
>  * javax.transaction:jta:jar:1.1:compile
>  * javax.mail:mail:jar:1.4.3:compile
>  * javax.activation:activation:jar:1.1:compile
>  * javax.servlet:jstl:jar:1.2:compile
>  * javax.xml.bind:jaxb-api:jar:2.1:compile
>  * com.sun.xml.bind:jaxb-impl:jar:2.1.3:compile
> 
> '''MIT license'''
>  * org.slf4j:slf4j-api:jar:1.5.8:compile
>  * org.slf4j:slf4j-log4j12:jar:1.5.8:compile log4j:log4j:jar:1.2.14:compile
>  * org.mockito:mockito-core:jar:1.8.5:compile
> 
> ==== OGCE Gadget Container ====
> 
> '''Apache Software License, Version 2.0'''
>  * OpenAJAX
>  * Commons-codec
>  * Commons-logging
>  * Commons-fileupload
>  * Commons-collections
>  * Commons-digester
>  * Commons-el
>  * Commons-lang
>  * Tomcat Catalina
>  * Google-collections
>  * Xalan
>  * Xerces dom3-xml-apis and dom3-xercesImpl
>  * Tomcat annotations-api
>  * commons-beanutils
>  * commons-io
>  * openid4java
>  * axiom-api
>  * openxri-client, openxri-syntax
>  * jug
>  * stax-api
>  * Guice
>  * cilogon-portal-servlet (also have BSD & NCSA Licenses)
> 
> '''MIT'''
>  * Facebook Java API
>  * slf4j (3 jars: simple, api, and jdk14)
>  * xmlsec
> 
> '''BSD'''
>  * Dom4j
>  * Antlr
> 
> '''CDDL'''
>  * JSTL
> 
> '''GPL V3'''
>  * EXT-JS v2.2
> 
> '''GPL v2'''
>  * Trimpath v1.0.38
>  * Rhino JS 1.7R1 (Also has MPL1.1 license)
>  * Sun Jersey (Also has CDDI license)
>  * mysql-connector-jar
> 
> '''LGPL'''
>  * Hibernate
>  * !C3P0
>  * JBoss Javassist (Also has MPL License)
>  * htmlparser (also has CPL License)
> 
> '''Common Public License, v1'''
>  * Junit, junit-addons
> 
> '''Sun Binary'''
>  * Servlet API
>  * activation
> 
> '''EPL'''
>  * higgins-configuration-api
>  * higgins-sts-api
>  * higgins-sts-common
>  * higgins-sts-server-token-handler
>  * higgins-sts-spi
> 
> '''Other'''
>  * Google !FriendConnect: http://code.google.com/apis/friendconnect/docs/terms.html
>  * TMT JS: http://www.massimocorner.com/license.htm
>  * JSON: http://www.json.org/license.html
>  * H2: http://www.h2database.com/html/license.html
>  * icu4j: http://source.icu-project.org/repos/icu/icu/trunk/license.html
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: general-unsubscribe@incubator.apache.org
> For additional commands, e-mail: general-help@incubator.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: general-unsubscribe@incubator.apache.org
For additional commands, e-mail: general-help@incubator.apache.org


Mime
View raw message