В последнее время многие сайты сталкиваются с проблемой корректного указания прав на доступ к контенту. Например, в 2011 году в Сеть случайно попали фотографии Марка Цукерберга из закрытого фотоальбома на Facebook. Предназначенные только для друзей снимки удалось посмотреть постороннему благодаря ошибке в одном из модулей сайта Facebook.
К сожалению, применять политики приватности на уровне информационных потоков — это нетривиальная задача в веб-программировании. Новый язык Jeeves создан в помощь разработчикам. Он позволяет отделить протоколы приватности от остальной функциональности веб-приложения. Если указать правила доступа к определенному контенту, то эти правила останутся неизменными, какие бы новые модули не разрабатывались для сайта. Теоретически, разработчики новых модулей могут даже не знать о политиках приватности для отдельных типов контента.
Jeeves — типичный пример программирования в ограничениях (constraint programming), формы декларативного программирования, но только в применении к настройкам приватности.
Скажем, в той же истории с Цукербергом на баг натолкнулся случайный пользователь. Когда он пометил на Facebook одну из фотографий как «неподобающую», система автоматически подсунула ему для оценки другую фотографию, не обращая внимания на ее приватный статус. Другими словами, из одного раздела сайта контент был приватным, а из другого раздела понятия приватности вообще не было. При использовании Jeeves подобные ситуации невозможны в принципе.
Аналогичный случай произошел на Facebook в 2011 году с девушкой нетрадиционной сексуальной ориентации. Френд добавил ее в группу таких же неформалов (френды могут сделать это без получения согласия) — и хотя девушка тщательно скрывала информацию в профиле, чтобы о ее предпочтениях не узнал папа, сам факт добавления в группу вышел на ее ленту активности, открытую для всех. Опять же, использование Jeeves исключило бы подобный казус.
Изобретатель нового языка программирования Джин Ян из Массачусетского технологического института говорит, что Jeeves 1.0 пока не готов для использования в коммерческих приложениях как Facebook, в первую очередь, по причине слишком медленной работы. Наверное, его можно использовать в небольших приложениях, не под нагрузкой. Уже созданы две встроенные предметно-ориентированные реализации Jeeves для Scala и Python. Всех заинтересованных приглашают к использованию Jeeves в веб-фреймворках и других приложениях.