yeah thank you guys for coming today my
topic is an anonymous personalization
without leaving Drupal
first of all just wanted to show hand
screw here knows what anonymous web
personalization is for the other on few
years implemented some level of
personalization for now you see boss
awesome that's great so what we're going
to talk about today is a tool set we've
been working on for the past few years
that really helps facilitate that within
Drupal but Before we jump into that give
a quick intro let's go I saw Mike Lander
I worked for elevated 3rd here's my
contact info I'll show this again at the
end but if you guys have any questions
feel free to ask questions along the way
if I feel like we're taking too much
time of questions and maybe we'll push
them to the end but I didn't make sure
to leave time plenty of time for
questions but again if you have
questions later on or you decide you
wanna get involved feel free to reach
out to me
I'm not real active on Twitter but I
will make an effort to check it just for
this personally so when it's
personalization personalization is to
alter the content and UX of a website to
provide an experience customized to an
individual's user context or state so
this is really like how we adjust and
change a website to try to help them
find the information they need or maybe
from a utility type perspective show
them information that's more relevant
rather than just a generic experience
that's the same for everyone it uses the
site these are some types of anonymous
personalization
identified dynamic content
recommendation that's really the
services where you say feed your content
into a pool where it's aggregated then
they're using that you know they're a
maybe it's their AI system or whatever
to take that information and to give you
information back that they think is
relevant so you'll see this with systems
where you see looks like hyper targeted
recommended content and it kind of seems
like it's reading their mind and I've
showed these specific things a lot of
third-party support that it's not
something we're going to talk about
today another one is individualized
tokenization
this is something where it's more taking
information they know about you and
actually spitting that back out at you
an example of that would be like when
you visit a site and it's like hi Mike
welcome back to the site Mike in the
weather in this place is this or like
it's taking information they know and
literally just tokenizing that and
throwing that out on the site another
one that we're not going to be talking
about today
the one we'll be talking about is
contextual conditions so this is more
focusing on taking the information that
we know about someone or their device or
browser or whatever we can detect and
doing curated content so immediately
setting things what we're saying based
on this information we know we want to
show this so a focus really being a
manual curation process and not
something where something's trying to
take a guess at what you want to see in
just feed in UFO
so an example of that from a marketing
perspective here we have two banners
that we're showing it's the same site
but we're trying to take a guess or what
person is interested in what type of
food they're interested in this case and
we're going to show it something
different
another example that might be a little
bit more on the utility side so in this
case detecting someone's on a mobile
phone or more specifically an Android
phone and we're going to show them a
recommendation for mobile app with a
link to the Android store for them to
download and so this is again something
that you don't see a lot of in the in
the Drupal space just out of the box
there's really no tools for that and a
lot of times it's a customer effort that
you build this type of thing or maybe
you're doing it with like some CSS and
JavaScript
you know trickery but what we're trying
to do today is talk about more of an
initiative to focus a toolset around
doing this type of thing in the
interface so Drupal is great at
providing customized experiences for us
educated users and flattening pages for
anonymous users but what if we want to
provide customized experiences for
anonymous users so right now if you look
at Drupal say they're cashing systems so
there's the page cache system and
dynamic page cache page cache is awesome
and that takes lighter contact lines it
sends that out the varnish send it out
to your CDN sends it out to whatever but
it's really made for just one display
for everyone to see
dynamic page cache on the other hand is
really set up for your authenticated
traffic taking parts of the page making
that cache to take in other parts
leaving that out of cache or maybe
reducing the time that's cached changing
that out contextually based on you know
cache tags and using cached keys and all
those types of things so no and no part
of that cache system is it saying for
your typical anonymous user let me
change
yet for your typical user let's change
the experience it's just not really
built around that so some things we
could potentially react on and change
the site - or things like looking at
someone's cookies looking at local
storage looking at what properties your
browser the browser says about - user
looking at device properties maybe its
visitor actions first time visiting the
site versus returning to the site
visited a certain page on the site spent
a lot of time looking at if they had a
certain page scroll past the the you
know the initial fold anything that we
can look at and start to determine like
what is this person's interest and how
can we show them content that's more
relevant to that interest and then third
party's connecting to you know these
tools or maybe we're feeding form data
into or we have analytics data or
whatever it may be
can we take information back out of that
and actually use it to improve that
experience and more these are just some
of the things we've outlined but
potentially with this tools that we've
built the ideas that you could extend
this in a lot of different ways
so introducing smart content this is the
first time I'm actually speaking about
this module so pretty excited it's going
to be it's been our focus actually for
the last two years and it's something
that really seen this to fruition has
been pretty awesome really smart content
at its cores and API and toolset for
providing conditions and subsequent
reactions so it's taking things like we
talked about on that last slide with
with cookies or local storage or
whatever we can grab information on and
then allowing you to set reactions
reactions like switching on view modes
we're switching out blocks
switching out these components and tools
that triples built and really good at
controlling for authenticated users and
instead taking things that are more
client-side and allowing us to also put
their content is not however an access
control module so this is a really
important thing if we're reacting on
client-side data there's not a lot we
can do in terms of controlling how
someone's able to tweak that so the goal
here is we're respecting all access
control within Drupal like we're not
bypassing access control we're not doing
anything in that regard but if you were
to say showing like say using this
border of gated resource and that
resource you wanted to show a form on
top and then once they fill out that
form you want to switch and show the
resource and you're switching between
two view modes technically if someone
got in the JavaScript they could find
out a way around this this is not
something that we're doing this really
hard and security on it's using its
respecting Drupal's permissions of
having the ability to do something and
then it's using client-side variables to
swap that out that said it is obscured
it's not something where 95% of your
users or 98% of users are actually going
to know even what's going on in the code
but if someone really wanted to get in
there they could trick it this is just
again it's it's not meant for this it's
meant for more of a a presentation side
of things swapping what they see not
actually restrict access so the
ecosystem has it looks right now smart
content IOC being the main one and that
contains two modules smart content block
and smart content browser smart content
block is a kind of where our starting
point was and that's the ability to do
conditionally show different blocks
based on whatever conditions you define
so you essentially end up placing a
block and then you say based on these
conditions show other blocks I'll be
demoing that in a few so you'll see what
that looks like smart content browsers
what's defining conditions from your
browser so you know determine if
someone's on a mobile device or or you
know desktop if someone is has a certain
cookies or even allows cookies at all
anything that we can determine from the
browsers what we're starting to feed
into that smart content view mode still
pretty early on that's going to be able
to switch out view modes based on
conditions and smart content segments
it's really around defining conditions
into groups that will be reusable later
so if you've defined your segments as
some people on mobile that are on the
East Coast or whatever in the eastern
time zone if you want to reuse that
group rather than identifying those
conditions every single time it lets you
group them gives you one place to go
back and change that later rather than
going through everywhere use those
conditions and there's obviously a lot
more to come
so actually let's take a look at how
this works any questions before I
started cool all right so we're going to
use the famous food magazine umami so
let's start with that example of if
someone's on a mobile device we actually
want to change and show a banner for for
your app store so what this looks like
is where we're going to just use the
block the block method for now doing
this inside here I've just pre created a
block we're showing that content and
we're gonna leave that disabled but just
so we know like this is what our
response is going to be we're gonna
place a new block here and so basically
when you get when you create a new smart
content block it gets built around this
idea of variations variations are your
container for set of conditions and set
of reactions and then you can do
multiple variations the first variation
that's considered true where all your
conditions are true that's the reactions
we're going to get so that way you can
be like if they're in second I have one
show this if they're in second to show
this if they're inside my three show
this but we're gonna start real simple
these are the conditions as we've
defined so far and we're going to take
and say if the user's mobile and it's
worth mentioning real quick to get to
this point all you have to do is go to
the extend page and napal a smart
content smart content block and smart
content browser there's nothing else
there's no additional configuration
that's why you need
so why that so we're gonna say if mobile
you also have the option of doing knots
and then we're going to say show the
mobile app let's make sure we're not
showing the title and we're going to
show this on all pages and regions going
to be set to alert so I'll save this
okay so we put star block now I always
joked we're going to do this from
incognito this is like the magician
showing all sides of the box make sure
I'm not cheating pages flatten is cached
it can be sent out to varnish or a CD in
whatever may be so then right now
obviously one desktop so refreshing the
page we're not going to see anything
I'll go into my tools here let's switch
this to mobile and then let's reload the
page the page has a chance to build
again and now we're showing that
additional block and if we jump back
it's still going to show it because we
haven't rebuilt our page yet if we
rebuild our page a little high that
again let's take this a little bit
further now and let's actually show
something more in regards to marketing
content maybe switching out the banners
and stuff like that so first before they
do that I'm going to show you real quick
what the segment stuff looks like it's
really pretty straightforward
so if I go in the smart content and go
into these segments I've identified my
segment names here and in this case we
just put these out found some arbitrary
ones to use and these are really simple
so I added a module for this called
smart content demo all that module does
is it has a single condition and that
condition looks for a cookie called data
it makes it really simple and set this
so if that cookie called demo equals
adventure then this segment would be
and then we did the same for dessert for
general so I'll go back to the block
page and again sort of noting like with
these segments this is the same
condition stuff you have control of when
you place an individual block it just
allows you to curate this in a separate
area and manage it separate and then we
use them as a group of conditions you
can also do hand ORS if you wanted to
you could do a group which allows you to
do and ORS and stack them and make them
as complex as you feel like though we're
going to keep this as simple as possible
for now so let's jump back into block
layout and this time what I did is I
have my three my additional banners that
I've created for these but what I'll do
is I'll go ahead and disable the top
banner for now so we have a recipes
banner disabled that if we look at the
home page now it's a little more barren
and then what I'll do is create another
block
okay so this time I'm gonna have three
separate variations the first variation
is going to say and you see my segments
are showing up down here so let's say if
the user is in the segment adventure
we're going to add a reaction that shows
this band and then let's take that
further and say if the user is desert
and then we'll do another one which is
just the general one which is going to
be just the default there
okay so I'm gonna going to save this
right now none of these are going to be
true
dumb monkey doesn't know values right
now so one thing we can do for that is
if we go back to the home page and
refresh
nothing is going to show I'm looking at
the cookies cookies are empty right now
so what you can do actually is one part
of the block systems that we have the
ability to define default that are set a
default variation in this meaning if
none of these are true you can show some
contact so let's just say by default if
none of these are true we want to show
this last one save this jump back word
fresh and now let's actually go into
manipulating this so maybe you sent out
some emails to people and part of that
email is that you put a referral so like
you targeted a group that the referrals
had some identifying information and
based on them clicking a certain link to
your site you're going to tag them and
say this person is really interested in
desserts what we can do is we'll go into
here and you know set up something to
set that cookie for us and then we can
react on that so when we refresh the
page are going to now show a dessert
banner that's featuring you know some
steps for that if they come in maybe
more interested in adventure gonna
refresh the page
and again we'll switch out what we're
showing based on cookie and then maybe
we combine these two and now it showed
on the mobile app with the banner that
they're wanting to see
let's take this one step further so now
let's actually give them a form on the
side that they can fill out and based on
what they fill in that form let's have
that in fact what they see in that
banner so I've created a simple I've
actually created two simple forms one
form has a drop down in categories like
taxonomy terms which we'll put on there
first and I created another form that
allows you to basically clear that
cookies values not that does the use
case you're going to implement in that
exact form but you might decide later
that the information you're customizing
on might change or you might not no
longer find a palette so you might want
the ability to clear out with that size
let's start simple for now so we'll
create this food survey jump back on
this page so our food surveys there and
then this food survey it's actually
going to fill out a separate cookie so
in our case I have it the way I just
wrote a really simple form I'll tear
that same when this form submit grabbed
the value from here throw it into a
cookie so actually what's two
exclamation and you'll see we've thrown
in this extra cookie here and now we
have to move on so to get this to
actually feed in we're going to want to
change our logic up a little bit
and we're going to go into this desert
one and we're gonna grab a cookie name
and instead of using the segment we're
just gonna go in and look at cheek let's
clear this out first cuz we want both
who used to work and then let's go ahead
and create a new one called good group
and we can still add our old one in
place so we can say segment equals
desert floor if cookie and we can
actually put the name of that equals
desert so now we have an oral we're
saying if either they're identified in
that segment or if their food survey
interests cookie you set to this value
and you also have some options here to
do like equals starts with if this
cookie said at all so forth we've kind
of implemented a type system in the
sense where whatever you're doing for
conditions you have a widget that's
involved you can technically choose to
use the types of somewhere you can build
custom conditions an example would be a
condition group that is more complex
than type system was really intending so
that's just a one-off condition with its
own form so you're not tired of the
Typekit type system but it makes a lot
easier to extend and then let's do
another one where we're going to add
another variation
let's do one call it starter and we're
gonna add another block both starter
okay and I'm gonna drive these up so
that des will fire off first in order
because we have that other cookies still
set now we're setting priority and again
it's gonna say if this first ones sure
do that to say if it's not sure you're
going to the second one go on to the
third one
so we'll say if that's true and then
we'll take this other one and we'll put
that there that way that first cookie be
upset doesn't override whatever we're
trying to do with these rules so we'll
check in so I'm going to save this
and then we will jump back to this page
and so now we have our food survey
interest equals dessert even though this
is adventure that one's going to fire
off we were to remove this we're back to
chef showing that one again we can go
down and change this just say starter
and now we're showing a different banner
all together so now we're actually
taking information they're submitted
inside forms and changing the site
accordingly
let's go to one where we don't have any
rules applied there's something in and
we're back to falling back to adventure
so it's as you can see we're just doing
a series of rules and reactions and it's
finding the first one here it's going to
show and clear both of these and we're
back to this play cool so let's talk
about a little bit how this actually
works so what happens is actually as you
have this flatten page page patches
kicked in a placeholder did was rendered
this is actually how the modules rent or
the block that you're placed is rendered
it's just empty it just has a div and
inside that div you have properties
those properties are the ID for that
smart content upset and any is so any
additional attributes that might need
for rendering then what happens is the
module also attaches a lot of conditions
it needs so anything you spent
configuring in there its associating
that data into your things like your
conditions here inside of these and so
that data needs to line up with
whatever's in that placeholder what it's
also doing is its attaching any
libraries that it needs so if I create a
brand new module into that module to
process this it has its own JavaScript
library it'll go out and find here's all
the conditions I use here's all the
libraries I need to process this and
it's going to attach those this is also
where you'd see like potentially if you
need a load of specific third-party
library depending on
that at that point once that all lines
up its gonna decision Janice is actually
gonna search the page travel those make
sure they align and then it's going to
start processing each of those
placeholders and so this is where it
gets a little bit fancier this is just
kind of a high-level description now so
we have our decision with our variation
over there and then within each
variation we have our conditions and our
Associated reactions so in this case we
have three along there saying if it's
mobile
let's show block one if it's cookie
equals V one let's show block two if
it's cookie equals b2 let's show block
three then what it does is at first
before it process it any further it
takes all these conditions out and it
sends them into the condition handler
you see the heart here that's so signify
that I'm pretty proud of this piece
because it's really performant and
pretty cool what happens is it takes all
common and from it all common cookies
that are from the same source and it
combines them first so before it does
any evaluation it says let's go collect
that information let's go to this third
party and get the users company they
work for this cookie and grab that it's
going to associate that all together so
that you're not making multiple calls to
the to get the same exact information
once you went and
paired those together it basically sends
out kind of an event for things to
subscribe to and they're going to claim
the ones that they're responsible for so
in this case my content browser might
grab them if mobile one and the smart
content demo would grab like the demo
cookie demo keys no setup they go and
retrieve that information and they're
going to return results for those so I'm
almost false in this case and cookie
values v1 it's going to then send it
back into this system so we take and we
return cookie equals v1 and mobile as
false we're going to then go through
here and say if condition mobile and
this is false so this is not this is not
true if condition equals v1
well condition is v1 this one would be
true if cookie equals v2 false normally
what would happen is this would run
first and it would stop even processing
v3 but just for sake of talking to those
so if the winner is found at that point
then what it's going to do is going to
go to an end point that we've defined
and it'll actually grab that information
and throw that out so you imagine we
have this bully cache page we have a
place holder and then a decisions made
by JavaScript and then it goes and grabs
the cached result so in terms of
performance it's really pretty fast
because you're just hitting all caches
and no point you have to break out cache
so what can we use this for just some
areas you've identified obviously
targeting segments is a big one
especially from a marketing perspective
the ability to segment your users and
start to switch out content is going to
be a really big use kiss content based
on scoring so if maybe you're starting
to implement systems where we're scoring
people based on their interest in
certain topics and then we're setting
the rules that are saying if this score
is higher than this or if this category
is the high score let's show something
different
fertilizer OS content maybe you have a
forum or page that's showing downloads
and you want to show if they're on Mac
OS you want to show one file type if
they're on Windows you want to show the
other file type you can actually use
this to do the swapping of what they see
gated resources I think will be a really
big one
if we get the view mode stuff you know
when we get that wrapped up you could
have one view mode that set as your gate
and that can have a form that displays
on it and then you have your second view
mode which is your full display of your
content and then you actually switch
your roles around and say you know
before they filled out that form show
the form once they submit the form show
the full content
again maybe it's targeting things like
new verse returns so your application
has you know some things that you want
to explain the first time someone hits
it allows them to learn how to use it or
where to start whatever it may be the
next time they come to the page you can
expire that and now you'd just see the
full app without any of those
explanations look casing location-based
customizations this is talking a lot
more granular than just look house but
like you could if you can determine
roughly what area if someone is whether
it be via timezone using the JavaScript
location stuff using third parties
they're identifying based on IP eaves or
things like that maybe just changing the
look in the field of the site based on
the location if it's a product website
could you change it to have a different
display when someone's on the east coast
or and say New York the way you're
showing that product versus in
California different feel different look
that's it I think time of day
customizations I think there's a lot of
potential here one thing there's just
been this recent effort with browsers to
attach dark notes for for nighttime
viewing and so I think taking that a
step further and saying like do we want
to switch up what content they see based
some type of day
actually gdpr notifications can be a
good fit for this so that form that that
consent that you have to have you know
someone agreed to we could actually use
you know first of all are they located
in in Europe are they have they checked
this box before what boxes have they
checked that type of thing based on that
we can actually swap out what we're
showing and then maybe taking it further
and doing a/b or multivariate testing
with us so if you imagine a block where
the first variation is locked in a
fission a bless you the second variation
is locked in is Block B or condition B
or B test I guess and then you set your
reactions
you could then sit there and flip those
automatically based on however you group
someone multivariate probably a little
bit more complex I think this will have
more use cases we get into maybe doing
field level customizations because you
guys are familiar with multivariate it
would be taking say three different
fields with three different very three
different variations of those data and
showing every possible combo and
determining which one is the winner it's
a little bit more complex kind of a use
case and it really requires more of a
granular level than we're doing right
now you could do it it just probably is
going to be not the best fit so how to
get involved so right now the module is
an alpha state and so what we're really
looking for right now is people to start
downloading the module testing the
module really pushing the module trying
different use cases trying it with
different other modules so maybe modules
that control block display you know
we're just now trying to test it more if
like the layout builder already know
there's a few issues there block fields
another one
you know we have it working on but
there's some courses that are kind of
holding it up from working completely as
we'd like any other use cases we really
can think about extending it I think
that's the type of testings feedback
we're looking for and also have there's
people interested in joining and helping
as a maintainer and they used to say
something that you decide you're
passionate about and want to get
involved with we're always looking for
help in regards to getting this to a
beta data we want to finalize our
interfaces we're at this point now we're
looking really through our code
structure and deciding if we're
completely happy with things if we want
to split some things out into separate
classes we feel like the separation and
their concerns is where we want it and
then making sure that we commit to
interfaces that we're not going to go
back and change later and break
everything that depends on the fix any
beta blocking bugs again this is one of
those things that the more people can
test this and use it and try it and find
things and so forth it will really help
us identify a clear path for that and
improve documentation ideally people
wouldn't have to go watch this
presentation just to learn to get
started anything we can do to help them
figure out how to give this model set up
and running movie awesome our target for
beta right now is May 1st so I'll be
doing this similar takotsubo con again
the goal is to get people and they're
using it and based on feedback and
response they'll kind of maybe change
those a timeline but we'll see how
things go and then where do we go from
there
well obviously continue on to a full
release I would love to have a full
release by this summer again it really
depends on how many people we get out
there testing and people submitting
patches people coming up with ideas and
so forth extend the module features out
so
that's really nice is it's really easy
to add conditions I can actually show
that briefly if we have time but the
standing conditions out and this is
really simple it's really just defining
a plugin that says what type of
condition is it and then define in
JavaScript with it that goes and
retrieves information for you all the
evaluation and everything else the
module takes care of and that obviously
again extending this into new directions
with new types of modules and stuff so
questions
okay security I know aqua has a module
called personalized with it's kind of
their decision engine that underlies
their their like content it could like
interact it's out of the personalization
as a service platform yeah I just
wondered if you had seen it in how like
anyways like this decision decision
engine might compare with that decision
engine or any other ones that might be
out there in computing so the question
was about aqueous personalized module
which how it compares and how it
affected I guess our decision of
building this and so forth so
personalized at least last I looked at
it it froze basically after Drupal 7
there wasn't any Drupal 8 development on
it that might have since changed but
what happened essentially is I think
their focus switched from supporting
that to moving it into lift which would
became awkward lift which is a really
awesome tool I'm in general but I felt
the barrier for entry was pretty tough
with lift so trying to create something
where even again some of these smaller
utility type use cases and not looking
for that full-fledged kind of product
that lift is gifts just getting people
thinking about these types of things is
really what kind of steered our approach
I actually originally worked on some
extend big contributors for personalized
so that's when I first got familiar with
it but then looking in Drupal 8 just
changing the direction the thought
process behind it going a little bit
different routes really where we decided
to go
do
well I can either jump in and show you
guys a little bit of how conditions work
or we can into any hands if you guys
want to see how conditions work okay see
so what I'll do is I can actually show
out that demo cookie once set up I think
it's a really easy example and then I'll
show how say the browser ones work they
actually use derivatives which are
they're not too complicated it's just a
little bit it's an additional layer on
top of plugins for generating plugins
dynamically so coping over the code so
what I have here is I have my smart
content and well cookie module have with
the source plug-in you have to drop a
class basically inside of this smart
content condition this is the path
that's going to be looking for the
plugins so from here I'm defining the
rules for the properties for this
condition so I've got my ID I've got the
label for it wait wait wait is religious
to order which is displaying in
dropdowns the reason we put that in is
like something like a segment where you
went out of your way to like configure
and define this you probably want that
to show pretty high up
oh yes that good yeah thank you
unique is important because if
conditions were to technically have the
same name but be able to have different
results you want to process those
separately you don't want to group them
together for processing the example
would be groups like a group condition
they could easily all be called group
you know one group two group three you
could have multiple ones because of
nesting but those groups have different
conditions inside so you wouldn't want
to try to process them as one so whereas
a condition called you know browser with
the browser waits I was going to be the
same so you can
safely group those together and then
when you actually evaluate you'd split
the month and then type so again this is
this is one based on a type but
technically you don't have to use the
type system you can just extend the
different base class and you can define
all your own rules around this but for
the most part we're trying to encourage
using the type system and building out
any types you need rather than just
circumventing that and then in our case
all we have to do for this is define
just get libraries and we're going to
define our library that we have for
processing the going out and retrieving
the cookie
so outside of this demo cookie chasse
and what it does is essentially just um
it's kind of like a hook system for
JavaScript but essentially it's
listening for any times this is being
initiated it'll say if the plugins name
is demo cookie which correlates with
with our name over here
it means yeah so same thing like if demo
cookie we're gonna claim that feel that
we know other modules are claiming it or
doing anything with it and then we're
going to complete this you can also use
promises here so if you have something
that's dependent on say third-party data
that's got to go and retrieve and it's
going to take a little bit time you can
put a JavaScript promise here once it
comes back it's gonna then you call
fields complete on it essentially what
field complete does is it sets that
status as being fulfilled and then it'll
loop back through and check all the
fields and see if they're ready for
processing if there's one still waiting
it's just going to wait and each time it
pings it it just does a quick check and
make sure that to see if it has all its
conditions or not and so once those are
all filled at that point it's actually
going to process it so that's all that's
all you need for like to find anyone
that's grabbing from really simple
things that are in the type system to
take that to say the browser stuff
well it's a sensor module that's me so
inside a browser we have our derivative
and then we have a base class for it so
this base classes again really simple
all it's doing this to finding those
properties again ID label a group weight
and then in this case we're using a
driver the driver again is looking for
dynamically generating these but you
have to define a base class for them to
use so will we go into our derivatives
and we're then actually looping through
and saying from the browser grab
language mobile operating system cookie
and we're defining what the type is so
mobile is a boolean language is a text
field that type of thing and with that
library that were connecting consider or
loading and I should say we're actually
doing the same thing we're claiming if
it's browser language go got the
language from the browser and return if
it's browser mobile it's going to do a
comparison to try to determine if it's
mobile and then it's going to return it
so it's really simple logic it's just
claims it processes it returns it and
then evaluates
you release this bully whether it be an
examples folder or modules you can have
something variable yeah I think it would
be good to do like sorry the question
was wonder at least this will we do any
type of examples folder kind of a
playbook if you will like how to use the
module and I would say I think ideally
yeah we get to a point where we do have
some playbooks identify when you say you
know using this combination for really
common things would be good it's a
little bit figuring out how people are
going to use it it's part of the
challenge because we tried to make it
pretty open for any type of client-side
contextual data retrieving so I think
our focus initially is more on the
marketing content side but I'd be
curious when we put it out there seeing
what use cases people come up with
yeah yeah ideally it'll be pretty
straight forward but I think putting
some documentation about like how to do
a block and stuff like that would be
really good yeah is there any way
client to test that their conditions are
working or you know yeah that's a great
question so the question is is there any
way for clients the test and actually
see if their conditions are working
that's something we're working on right
now actually so kind of like the way
master masquerade works for example for
authentication trying to figure out a
way to do that and stimulate these for
anonymous so in regards from like a
coding perspective it's not real
challenging to do that masquerading but
trying to get a UI that makes sense
because you potentially have to go in
and enter in every single value that
you're trying to many because if you're
say you're using there your condition
are the same condition so they'll get
the same cookie on four different you
know sets or blocks throughout the site
you potentially want to test all of
those together so you don't want to just
trick it in the same this one's true
instead you actually want to set that
cookie to be what you're testing against
and see the experience as you go through
the entire site so there's some things
that that could be pretty heavy of a
lift if you will of going in and like
changing that so one thing we talked
about is like using the segment stuff
and allow you to trigger segments is
true if those segments are true then you
would define those values that's looking
for as true and that way you could test
it from like a segment perspective and
you're technically won't even have to
use the segment in any conditions but
you could use it for pre defining values
or kind of groups of conditions that
you're targeting
Oh
any other questions
Oh
so yeah if you guys want to give me
feedback there's the link
preferably positive feedback but
negative will do as well just calling
out contribute and Saturday
definitely something a few guys are
interested in contributor this ball
means reach out to me Joe pelagic you if
there's other things you want to
contribute on highly encouraged to get
involved again it doesn't have to be
code yeah we have and that's one of
those things that it would be pretty
easy like even if you found a different
way you wanted to approach blocks like
say the way you set context for blocks
and it's AA real quick the question was
if we explored other options for the
content authoring experience out of the
module so right now when you set blocks
you have the context groups down below
and you set those that's one thing we've
looked at is like should we just make
this like a conditional type of thing
similar to that but instead you type
into JavaScript client-side sorry the
settings and for us I think we settled
on this because the ability to place an
area and change that experience was more
important than like having a relation of
those like if this one versus this one
versus this one so there's a lot of ways
we've kind of looked at it and this is
one starting place but I would say that
if someone had a better idea or a
different way they wanted to say
approach block UI the core of the
modules of just about the conditions and
reactions piece and another way that the
forms could work can be changed and
altered
the party would be able to see all the
variation yeah and to have them be
dependent on one so if the first one's
not true then the second one would be
true whereas if you separate it all all
out to individual blocks and just have a
conditionals for the one block for
example that just been one example of
how we could of the UI differently yeah
because then you get stuck doing like
knots if not this one and this one if
you separate all those out per block but
again if if we it would be really easy
to extend this module and create a
different type of block that really just
hides and shows based on one set of
rules and has no variations really it
really is just one variation if you want
okay
well thank you guys again if you again
want to reach out to me here's the way
you can come find me at the booth or on
drupal.org it's Michael Lander Twitter
slack and you goes work thanks
[Applause]