118
O
pen
S
Ource
Y
earbOOk
2015
.
.
.
O
penSOurce
.
cOm
9
• Easy integration of authentication styles, such as OAuth,
Basic Auth, or API Tokens.
• Simple permission system for fine-grained control of which
users can use which API endpoints and/or actions.
• Built-in rate limiting.
• Nearly automatic API documentation when combined with
django-rest-swagger [16].
• Extensive ecosystem of third-party libraries.
Although you could certainly build an API without DRF, we
can’t fathom a reason why you would start off down that
path. Even if you don’t use all of DRF’s features, building
up your own API views from their solid base view classes is
a huge win in terms of safety, consistency of your API, and
development velocity. If you aren’t using DRF already, you
should set aside some time to check it out.
Best Django-based CMS: Wagtail
Wagtail is the current darling of the Django CMS world and
with good reason. Like most CMS systems, it gives you flex-
ibility to define different types of pages and their content via
simple Django models. This takes you from zero to a basi-
cally working system in hours, not days. To give you a quick
example, to define a Staff page type for people at your com-
pany can be as simple as:
from wagtail.wagtailcore.models import Page
from wagtail.wagtailcore.fields import RichTextField
fr om wagtail.wagtailadmin.edit_handlers import
FieldPanel, MultiFieldPanel
fr om wagtail.wagtailimages.edit_handlers import
ImageChooserPanel
class StaffPage(Page):
name = models.CharField(max_length=100)
hire_date = models.DateField()
bio = models.RichTextField()
email = models.EmailField()
he adshot = models.ForeignKey(‘wagtailimages.Image’,
null=True, blank=True)
content_panels = Page.content_panels + [
FieldPanel(‘name’),
FieldPanel(‘hire_date’),
FieldPanel(‘email’),
FieldPanel(‘bio’, classname=”full”),
ImageChoosePanel(‘headshot’),
]
The real appeal of Wagtail, however, is in its easy-to-use
modern admin interface and flexibility. You can control
which types of pages are allowed in different areas of the
site, add additional complex logic to your pages, and get
standard moderation/approval workflows right out of the
box. With most CMS systems, at some point you run into
a wall you can work around. With Wagtail, we have yet to
find a wall we couldn’t easy find a door through to make
it do exactly what we want in an easy and maintainable
file system directories as well, which is perfect for non-re-
usable scenarios.
We mention cookiecutter as a great Django package, but
honestly it’s useful for plain Python or even non-Python-re-
lated purposes. Being able to lay things out exactly as you
like in an easily repeatable way makes cookiecutter a great
tool for keeping your workflow DRY.
Best static asset server: Whitenoise
For many years, serving your site’s static assets—images,
JavaScript, CSS—was a pain. The built-in django.views.
static.serve view [12] is, as the documentation states, “not
hardened for production use and should be used only as a
development aid.” But serving media from a “real” web serv-
er, such as NGINX or out of a CDN, can be difficult to set up.
Whitenoise cleanly solves this problem. It’s as easy to set up
as the development-only static server, and is hardened and
optimized for production. Setup is simple:
1. Make sure you’re using Django’s contrib.staticfiles app
[13], and that you’ve correctly set `STATIC_ROOT` in
your settings file.
2. Enable Whitenoise in your `wsgi.py` file:
from django.core.wsgi import get_wsgi_application
from whitenoise.django import DjangoWhiteNoise
application = get_wsgi_application()
application = DjangoWhiteNoise(application)
That’s really all it takes! For large applications, you’ll likely
want to use a dedicated media server and/or a CDN, but
for most small- or medium-sized Django sites, Whitenoise is
more than powerful enough.
For more information on Whitenoise, check out the docu-
mentation [14].
Best Tool for REST APIs: Django REST Framework
REST APIs are quickly becoming a standard feature of mod-
ern web applications. An API is really simply talking in JSON
rather than HTML, and of course you can do this with just
Django. You can craft your own views that set the proper
content types and return data in JSON rather than templat-
ed HTML responses. This is exactly what many people did
before API frameworks such as Django Rest Framework
(a.k.a., DRF) [6] were released.
Building a REST API with DRF is similar to working with
Django’s Class Based Views if you’re familiar with them, except
these are specifically designed and targeted around an API use
case. Quite a bit of code is involved in your average API setup,
so instead of a code sample to get you excited, we’ll highlight
some of DRF’s features that make your life easier:
• Automatic browseable API, which makes development and
manual testing a breeze. Click around in the DRF demo
example [15]. You can view API responses and support
POST/PUT/DELETE type operations without having to do
anything yourself.
92
10
O
pen
S
Ource
Y
earbOOk
2015
.
.
.
O
penSOurce
.
cOm
W O R K I N G
......... .
... .. ... .
.. .. .. ....
to work, too. This is nice for anyone with custom authen -
tication needs.
django-allauth is easy to setup and has extensive docu-
mentation. The project is also well tested so you know that
everything actually works.
way. If you’re interested, we wrote up a deeper dive into
Wagtail [17].
Best Social Login Tool: django-allauth
django-allauth [18] is a reusable Django application that
solves your registration and authentication needs. Whether
you need a local or social registration system, django-allauth
has you covered.
The project supports multiple authentication schemes,
such as user name or email address. Once a user has signed
up, multiple strategies are supported for account verification
ranging from none to email verification. Multiple social and
email accounts are also supported. Pluggable signup forms
are also supports which allows asking additional questions
during registration.
django-allauth supports more than 20 authentica-
tion providers, including Facebook, GitHub, Google,
and Twitter. If you have an account on a social website
that’s not supported, then it’s most supported through a
third-party add-on. The project supports writing custom
backends, which allows custom authentication systems
Links
[1] Django: https://www.djangoproject.com/
[2] How to write reusable apps: https://docs.djangoproject.
com/en/1.8/intro/reusable-apps/
[3] PyPi packages: https://pypi.python.org/pypi?:ac-
tion=browse&c=523
[4] Cookiecutter: https://github.com/audreyr/cookiecutter
[5] Using WhiteNoise with any WSGI application:
https://github.com/audreyr/cookiecutter
[6] Django Rest Framework:
http://www.django-rest-framework.org/
[7] Wagtail: https://wagtail.io/
[8] django-allauth:
http://www.intenct.nl/projects/django-allauth/
[9] Django Packages: https://www.djangopackages.com/
[10] Grid for REST tools:
https://www.djangopackages.com/grids/g/rest/
[11] Lawrence-born Django celebrates 10th anniversary:
http://www2.ljworld.com/news/2015/jul/09/happy-birth-
day-django/
[12] django.views.static.serve view: https://docs.djangoproject.
com/en/1.8/ref/views/#django.views.static.serve
[13] staticfiles app: https://docs.djangoproject.com/en/1.8/ref/
contrib/staticfiles/
[14] Whitenoise documentation:
http://whitenoise.evans.io/en/latest/index.html
[15] DRF demo example: http://restframework.herokuapp.com/
[16] Django REST Swagger: http://django-rest-swagger.
readthedocs.org/en/latest/index.html
[17] Get ready for Wagtail, the best Django CMS yet:
https://opensource.com/business/15/5/wagtail-cms
[18] django-allauth documentation:
http://django-allauth.readthedocs.org/en/latest/
Authors
Jeff Triplett has worked at the Lawrence Journal-World in
Lawrence, KS, where Django was invented. He now works
at Revolution Systems (Revsys) as a developer and a con-
sultant. Jeff is a co-founder of the Django Events Foun-
dation North America (DEFNA) and Conference Chair for
DjangoCon US 2015 and 2016.
Jacob Kaplan-Moss is a core contributor to Django and
works at Heroku as Director of Security.
Frank Wiles is President and Founder of Revolution Sys-
tems, a open source consultancy specializing in performant
and large scale Python, Django, PostgreSQL, and related
web infrastructure. He is a frequent author and speak-
er on open source topics. Frank’s personal homepage is
frankwiles.com.
90
O
pen
S
Ource
Y
earbOOk
2015
.
.
.
O
penSOurce
.
cOm
11
W O R K I N G
..........
.........
..........
Facebook
believes in the power of open source.
When a community gathers to work
on code, there are a host of benefits. Fresh eyes point out
problems and we arrive at solutions faster. Together we tackle
the challenges we’re facing, innovation accelerates, and the
community stretches the limitations of existing technology.
Of course, a successful open source program depends on
a strong, collaborative community. As the end of the year ap-
proaches, we wanted to reflect on Facebook’s top five open
source projects in 2015, measured by community activity
and impact.
HipHop Virtual Machine (HHVM)
HHVM [1] is our virtual machine and web server that we
open sourced in 2013, building on the HPHPc compiler we
released in 2010. In the past year alone, we’ve seen a 29%
increase in the number of commits and a 30% increase in
the number of forks.
HHVM is most commonly run as a standalone server,
replacing both Apache and mod_php, designed to execute
programs written in Hack and PHP. It uses a just-in-time
compilation approach to achieve superior performance,
while maintaining the flexibility that PHP developers are ac-
customed to. We’ve reached great milestones in 2015:
1. We made new Async features [2] available by default, in-
cluding Async MySQL [3] and MCRouter [4] (memcached)
support.
2. In December we announced [5] support for all major PHP
7 features at the same time that the language itself was
released, and we released our next generation of user
documentation.
3. Box announced [6] HHVM as the exclusive engine that
serves its PHP codebase.
4. Etsy migrated to HHVM in April, which helped the compa-
ny address a variety of challenges associated with build-
ing mobile products at the scale needed.
React
Facebook open sourced React [7] in May 2013, and in the
past year we’ve continued to see strong collaboration in the
community, including a 75% increase in the number of com-
mits and a 198% increase in the number of forks. React is
Facebook’s JavaScript library for building user interfaces,
and is being used by many companies because it takes a
different approach to building applications: React allows you
to break the application down into separate components that
are decoupled so that the various components can be main-
tained and iterated on independently.
This year we had two major releases, launched React Na-
tive, announced new developer tools [8], and saw more
companies—including Netflix [9] and WordPress [10]—use
React to build their products.
Presto
Presto [11] is our distributed SQL engine for running interac-
tive analytic queries against data sources of all sizes, rang-
ing from gigabytes to petabytes. We created Presto to help
us analyze data faster because our data volume grew and
the pace of our product cycle increased.
Since making Presto available to others in November
2013, we’ve seen a lot of growth, adoption, and support for
it, including a 48% increase in the number of commits and a
99% increase in the number of forks in the past year. Com-
panies like Airbnb [12], Dropbox, and Netflix [13] use Presto
as their interactive querying engine. We also see growing
adoption all over the world, including by Gree [14], a Jap-
anese social media game development company, and Chi-
nese e-commerce company JD.com .
Facebook’s top
5 open source
projects of 2015
BY
CHRISTINE ABERNATHY
110
12
O
pen
S
Ource
Y
earbOOk
2015
.
.
.
O
penSOurce
.
cOm
W O R K I N G
......... .
... .. ... .
.. .. .. ....
Links
[1] HipHop Virtual Machine (HHVM):
https://github.com/facebook/hhvm
[2] Async introduction:
https://docs.hhvm.com/hack/async/introduction
[3] Async MySQL extention:
https://docs.hhvm.com/hack/async/extensions
[4] MCRouter extention:
https://docs.hhvm.com/hack/async/extensions#mcrouter
[5] Improved user documentation announcement:
http://hhvm.com/blog/ 10925/improved-user-documentation
[6] Box’s HHVM migration:
https://code.facebook.com/posts/1607907626123431/un-
der-the-hood-box-s-hhvm-migration/
[7] React: https://github.com/facebook/react
[8] New React Developer Tools:
https://facebook.github.io/react/blog/2015/09/02/new-re-
act-developer-tools.html
[9] Netflix Likes React:
http://techblog.netflix.com/2015/01/netflix-likes-react.html
[10] The Story Behind the New WordPress.com:
https://developer.wordpress.com/2015/11/23/the-story-be-
hind-the-new-wordpress-com/
[11] Presto: https://github.com/facebook/presto
[12] Introducing Airpal: http://nerds.airbnb.com/airpal/
[13] Using Presto in our Big Data Platform on AWS:
http://techblog.netflix.com/2014/10/using-presto-in-our-big-
data-platform.html
[14] A year of using Presto in production:
http://labs.gree.jp/blog/2014/12/12838/
[15] Open-Source Presto to the Enterprise:
http://blogs.teradata.com/data-points/bring-
ing-open-source-presto-enterprise/
[16] Presto on Amazon EMR:
https://aws.amazon.com/elasticmapreduce/details/presto/
[17] RocksDB: https://github.com/facebook/rocksdb
[18] Percona: https://www.percona.com/
[19] React Native:
https://github.com/facebook/react-native
Author
Christine Abernathy is a developer advocate on the open
source team at Facebook. She’s held previous developer ad-
vocacy roles on both Parse and Facebook Platform. Prior to
working at Facebook, Christine lead engineering at MShift,
a mobile banking software provider delivering iOS apps and
mobile browser-based products.
In 2015, Teradata announced [15] plans to join the Pres-
to community, with a focus on enhancing enterprise features
and providing support. This emphasizes the level of trust the
community has in Presto’s ability to be an integral part of the
data infrastructure stack. Additionally, Amazon Web Services
(AWS) supports Presto as a first-class offering in its EMR ser-
vice [16], with many production users—including Nasdaq and
leading business intelligence tool vendor MicroStrategy—sup-
porting Presto in its flagship MicroStrategy 10 product.
RocksDB
We open sourced RocksDB [17], an embeddable, persistent
key-value store for fast storage, in November 2013. Aside
from the impressive 52% increase in the number of commits
and the 57% increase in the number of forks for this project in
the past year, the reason this particular project has resonated
so well in the open source community is that the embedded
database helps provide a way to work around slow query re-
sponse time due to network latency, and it is flexible enough
to be customized for various emerging hardware trends.
RocksDB powers critical services at companies such as
LinkedIn and Yahoo, and a key focus for us in 2015 was to
bring the RocksDB storage engine to general-purpose da-
tabases, starting with MongoDB. Similar to Teradata’s com-
mercial support for Presto, another milestone for RocksDB in
2015 was the announcement of enterprise-level support by
Percona’s [18] data performance experts.
React Native
React Native [19], one of our newest open source projects,
was made available in March 2015. React Native lets engi-
neers use the same React methodology and tools to rap-
idly build native applications for mobile devices. In addition
to developing these tools internally, Facebook collaborates
with the open source community to improve the experience
for developers worldwide. In its first year, React Native has
become the second most popular Facebook open source
project, with more than 23,000 followers in GitHub. It was
used internally to build the Facebook Ads app for both iOS
and Android, resulting in an 85% code reuse by developers
whose core competency was JavaScript. The paradigm shift
in mobile development that React Native brings to the table
makes this one a key highlight of 2015.
Overall, we still have a lot of work to do, but we’re proud
of what we’ve been able to accomplish as a community. We
want to thank everyone who dedicated time to to these proj-
ects and helped us make 2015 a great year!
C# PowerPoint - How to Process PowerPoint C# methods to add, insert or delete any specific PowerPoint slide, adding & burning & methods and sample codes of respective function, you may link the quick
accessible links in pdf; pdf link open in new window
95
O
pen
S
Ource
Y
earbOOk
2015
.
.
.
O
penSOurce
.
cOm
13
W O R K I N G
..........
.........
..........
Looking back
at 2015, there have been
many projects created by
the Docker community that have advanced the developer
experience. Although choosing among all the great contri-
butions is hard, here are 10 “cool tools” that you should be
using if you are looking for ways to expand your knowledge
and use of Docker.
1. Container Migration Tool (CMT)
CMT [1] was a winning entry [2] at the Docker Global Hack
Day #3. The Container Migration team [3] drew inspiration
from a DockerCon talk in which Michael Crosby (@crosby-
michael) and Arnaud Porterie (@icecrime) migrated a Quake
3 container around the world, demonstrating container migra-
tion while maintaining a TCP connection. The CMT project
created an external command-line tool that can be either used
with Docker or runC [4] to help “live migrate” containers be-
tween different hosts by performing pre-migration validations
and allowing it to auto-discov-
er suitable target hosts.
2. Dockercraft
We had to add in a fun
one—Dockercraft [5]! Lots of
Docker users run custom Mi-
necraft [6] servers in contain-
ers. But Dockercraft is a Mi-
necraft client to visualize and
manage Docker containers.
With the flick of a switch, a
container turns on or off. And
with the press of a button, you can destroy one. Dockercraft
is a fun project—that is surprisingly addictive—from Docker
engineers Adrien Duermael and Gaetan de Villele.
3. Docker Label Inspector
The Docker Label Inspector [7] tool helps ensure that devel-
opers are providing Docker images with the metadata con-
tainers required when distributed across the Internet. Specif-
ically, this tool enables developers to use Docker labels [8] to
create metadata within the domain of container technology,
to check labels against official label schema and to validate
against provided JSON schema.
4. Dvol
Dvol [9] enables version control for your development
databases in Docker. Dvol lets you commit, reset, and
branch the containerized databases running on your lap-
top, so you can easily save a particular state and come
back to it later. Dvol can also integrate with Docker Com-
pose to spin up reproducible microservices environments
on your laptop.
5. IPVS Daemon GORB
Presented at DockerCon EU, IP Virtual Server (IPVS) for
Docker containers enables production-level load balanc-
ing and request routing using
open source IPVS, which has
been part of the Linux ker-
nel for more than a decade.
It supports TCP, SCTP, and
UDP and can achieve fast
speeds, often within five
percent of direct connection
speeds. Other features in-
clude NAT, tunneling, and
direct routing. To make IPVS
easier to use, the Go Routing
and Balancing (GORB) dae-
mon [10] was created as a REST API inside a Docker con-
tainer to provide IPVS routing for Docker.
6. Libnetwork
Libnetwork [11] combines networking code from both libcon-
tainer and Docker Engine to create a multi-platform library
for networking containers. The goal of libnetwork is to deliver
10 cool tools
from the Docker
community
BY
MANO MARKS
104
14
O
pen
S
Ource
Y
earbOOk
2015
.
.
.
O
penSOurce
.
cOm
W O R K I N G
......... .
... .. ... .
.. .. .. ....
10. Wagl, DNS service discovery for Swarm
Wagl [20] is a DNS server that allows microservices running
as containers on a distributed Docker Swarm [16] cluster to
find and talk to each other. Wagl is minimalist and works as a
drop-in container in your cluster to provide DNS-based ser-
vice discovery and simple load balancing by rotating a list of
IP addresses in DNS records.
Links
[1] Container migration tool:
https://github.com/marcosnils/cmt
[2] Container migration tool (CMT) (YouTube video):
https://youtu.be/pwf0-_cs6U4
[3] Participating in Docker global hackday #3 (blog post):
http://blog.mantika.io/GHD/
[4] runC: https://runc.io/
[5] Dockercraft: https://github.com/docker/dockercraft
[6] Minecraft: https://minecraft.net/
[7] Docker Label Inspector:
https://github.com/garethr/docker-label-inspector
[8] Docker labels:
https://docs.docker.com/engine/userguide/labels-cus-
tom-metadata/
[9] dvol: https://github.com/ClusterHQ/dvol
[10] Go Routing and Balancing (GORB):
https://github.com/kobolog/gorb
[11] libnetwork: https://github.com/docker/libnetwork
[12] DockerCon 2015 Videos: Day 2 Closing Keynote – What’s
Next for Docker?: http://blog.docker.com/2015/07/docker-
con-2015-videos-day-2-closing-keynote/
[13] Raspberry Pi Challenge:
https://github.com/hypriot/rpi-kernel
[14] Zoe: https://github.com/DistributedSystemsGroup/
zoe-docker-images
[15] Apache Spark: http://spark.apache.org/
[16] Docker Swarm: https://docs.docker.com/swarm/
[17] Unikernels, meet Docker!:
http://unikernel.org/blog/2015/unikernels-meet-docker/
[18] Contain Your Unikernels!:
http://unikernel.org/blog/2015/contain-your-unikernels/
[19] Rump Kernels: http://rumpkernel.org/
[20] wagl: https://github.com/ahmetalpbalkan/wagl
Author
Mano Marks is Director of Developer Relations at Docker, Inc.
a robust Container Network Model that provides a consistent
programming interface and the required network abstrac-
tions for applications. There are many networking solutions
available to suit a broad range of use-cases. Libnetwork uses
a driver/plugin model to support all of these solutions, while
abstracting the complexity of the driver implementations by
exposing a simple and consistent Network Model to users.
7. The Raspberry Pi Challenge
In the DockerCon closing keynote [12], Dieter Reuter from
Hypriot presented a demo running 500 Docker containers
on a Raspberry Pi 2 device. Convinced that this number of
containers could be at least doubled, Dieter then challenged
[13] the Docker community to beat his personal record. As
part of his project, Dieter Reuter demonstrated how to get
started with Docker on Raspberry Pi and how to scale the
number number of web servers running in containers that
could reside on a single Raspberry Pi 2. The current record
is more than 2,500 web servers running in containers on a
single Raspberry Pi 2.
8. Scaling Spark with Zoe analytics
The Zoe open source user-facing tool [14] ties together
Spark [15], a data-intensive framework for big data computa-
tion, and Docker Swarm [16]. Zoe can execute long-running
Spark jobs, but also Scala or iPython interactive notebooks
and streaming applications, covering the full Spark develop-
ment cycle. When a computation is finished, resources are
automatically freed and available for other uses, because all
processes are run in Docker containers. This tooling can en-
able application scheduling on top of Swarm and optimized
container placement.
9. Unikernel demo source code
First unveiled as a cool hack at DockerCon EU (Unikernels,
meet Docker! [17]), this demo [18] showed how unikernels can
be treated as any other container. In this demo, Docker was
used to build a unikernel microservice and then followed up
by deploying a real web application with database, webserver,
and PHP code, all running as distinct unikernel microservices
built using Rump Kernels [19]. Docker managed the uniker-
nels just like Linux containers, but without needing to deploy a
traditional operating system. Apart from the MySQL, NGINX,
and PHP with Nibbleblog unikernels shown in the demo, this
repository also contains some examples of how to get started.
C# Word - Process Word Document in C# Capable of adding and burning image on specific Word document page in C# class. You may click the link to go to each Word document processing tutorial page to
change link in pdf file; add link to pdf acrobat C# Excel - Excel Page Processing Overview Support adding image of various formats (such as BMP, PNG & TIFF) to an Excel Click the link to specific C#.NET guide page and you will find detailed API(s
adding hyperlinks to pdf files; clickable links in pdf from word
97
O
pen
S
Ource
Y
earbOOk
2015
.
.
.
O
penSOurce
.
cOm
15
W O R K I N G
..........
.........
..........
Drupal
[1], one of the
largest open
source projects in the world,
is a content management sys-
tem and application frame-
work that powers millions of
websites, web services, and
mobile applications. Individu-
als and organizations in every
sector use Drupal for every-
thing from simple blogs and micro-sites, to complex intranets
and private internal applications, to some of the largest sites
on the web, including several top 100 properties.
More than 3,000 people contribute to the core Drupal
codebase that provides a base level of functionality with a
modular architecture. Over 10,000 developers contribute and
maintain more than 25,000 contributed open source mod-
ules that modify and extend the core capabilities, changing
behavior, adding new features, and integrating Drupal with
other systems. Users can add their own modules, as well as
third-party PHP libraries, and leverage a lot of existing func-
tionality, so they can focus on their unique needs, branding
and design, and business logic to get up and running quickly.
In addition to its highly extensible codebase, Drupal lets us-
ers who are not programmers manage and control a lot of
how the platform and their site(s) run and operate through
point and click end-user interfaces. This enables more peo-
ple to contribute to an organization’s online presence, and
site updates happen significantly faster because Drupal us-
ers aren’t reliant on expensive and limited development re-
sources, or updating code.
The newest major version of Drupal, version 8, came
out in November 2015, so let’s look at a few of my fa-
vorite contributed modules. Whether you’re running one
Drupal website, or thousands, here are five modules that
will empower your entire team and drive the success of
your application:
Views
Views [2], one of the most
popular contributed Drupal
modules, enables site build-
ers, content editors, and oth-
er non technical users to sur-
face information from within
Drupal—or other systems
through Drupal—and display
and visualize that information
through a point and click interface. With Views you can cre-
ate a new page that lists all recent updates to your site, a
sidebar block that shows the five most recent comments
on your website, a slideshow of your most popular images
of the week, and much more. Views can be dynamic, end
users can have access to control resorting or filtering the
information (by date or other parameters), and privileged
users can be granted the ability to perform bulk actions on
Views. For example, on a site with moderated comments,
admins can create a page where users can quickly select
all the comments they want to approve or reject, and do so
in bulk to save a lot of time. As of Drupal 8, Views is now a
part of Drupal Core and has expanded capabilities so users
can build custom admin pages, export any View as JSON
or XML, and build most of a site—or the back-end for a mo-
bile application—without writing a line of code.
BigPipe
Site speed is a critical goal for all websites and companies.
The BigPipe [3] concept was created by Facebook and was
a key component in doubling the speed of their site page
load times. BigPipe is a contributed module for Drupal 8
that leverages Facebook’s methodology and delivers web
pages from servers to clients in a way that allows dramat-
ically improved perceived load time as well as the actual
page load time of sites. With BigPipe the server will send
an initial response or page with the cacheable components
5 handy
Drupal modules
BY
MICHAEL E. MEYERS
89
16
O
pen
S
Ource
Y
earbOOk
2015
.
.
.
O
penSOurce
.
cOm
W O R K I N G
......... .
... .. ... .
.. .. .. ....
Lightning
Lightning [6] isn’t actually a module; it’s a collection of Drupal
modules provided as a distribution. Drupal distributions are
a way to package up and distribute a Drupal site (modules,
themes, configurations, automated QA tests, content, etc.).
Launching a new website can be done quickly by deploying
a distribution for a specific use case, and then adding any
customizations required. The Lightning distribution is meant
to be a framework that you build on top of—it provides you
with pre-configured popular modules that work well togeth-
er for common use cases, with the ability to disable what
you don’t need, and launch a new site on Drupal using best
practices for the most common needs. Lightning helps new
users advance through the learning curve much faster, and
enables all users to rapidly deploy new sites.
What are your favorite Drupal modules? From the ob-
scure problem solvers, to the ones you simply can’t live
without, share your story and send Drupal article proposals
to open@opensource.com .
Disclosure: In partnership with Acquia, OpenSource.com
and Red Hat are Drupal users and open source contributors
to the Drupal project.
Links
[1] Drupal: https://www.drupal.org/
[2] Views: https://www.drupal.org/project/views
[3] BigPipe: https://www.drupal.org/project/big_pipe
[4] Rules: https://www.drupal.org/project/rules
[5] Features: https://www.drupal.org/project/features
[6] Lightning: https://www.drupal.org/project/lightning
Author
Michael E. Meyers is the VP of Developer Relations at Acquia.
He’s been driving innovation in the Drupal community for more
than a decade. Prior to joining Acquia, Michael was the CTO
of Examiner.com, a top 50 site, and the leading contributor to
Drupal 7. Follow Michael on Twitter @MichaelEMeyers.
and place holders for any dynamic or uncacheable parts,
and then stream in the dynamic/personalized pieces to re-
place the placeholders.
Rules
Rules [4] is a contributed module that enables site users to
create Event, Condition, Action (ECA) rules. Site builders
can create and modify fairly complex business logic without
writing any code, and developers have tremendous flexibil-
ity to create complex rules, and to extend and modify the
behavior of the Rules module itself. For example, when a
new comment is posted to a page (an event), a site builder
could create a rule that sends an email notifying the author
of the page (the action) of the new comment so they can re-
view and respond quickly. Optionally, users can add a con-
dition to send the email only if the comment author is not
the author of the page (so the page author doesn’t get an
email every time they reply to a comment). Many rules can
also be triggered manually via the click of a button (e.g., by
a site admin) or, via the Rules API, actions can be set to run
immediately or scheduled.
Features
Most organizations write code and make changes to their
web sites in one or more development environments, then
integrate and test these changes in QA or staging environ-
ments, and finally release approved changes to their pro-
duction or live environment. Furthermore, few organizations
have a single website; nowadays even individuals run many
websites, and large organizations can have more than
10,000 sites. Features [5] is a contributed module that en-
ables you to import and export configuration and or code as
a package or collection that you can move across Drupal
sites. For example, site builders could create a rule using
the Rules module and then using Features, export the rule
so that it can be imported into the many other environments
and web sites you have.
83
O
pen
S
Ource
Y
earbOOk
2015
.
.
.
O
penSOurce
.
cOm
17
W O R K I N G
..........
.........
..........
Software
has been eating the world for far lon-
ger than four years [1]. But develop-
ers think of software a little differently. Insofar as we’re solv-
ing real-world problems [2], we’re not thinking mainly of the
metal [3]. And as the problems get bigger and the solutions
more complex, pragmatic (and not-too-leaky) abstractions
become more important than ever.
The upshot: From a productivity-oriented developer’s point
of view, frameworks are eating the world. But which ones are
eating how much of which parts of the world?
Given the insane variety of superb open source frame-
works available, I picked our top 5 open source frameworks
of 2015 not from a single ranked order, but from all levels
of the stack. (For front-ends, I focused on the web and, still
more narrowly, true client-side frameworks—simply because
browsers and mobile devices are growing increasingly ca-
pable, and because SPAs [single page applications] and the
like avoid sending data over the wire unnecessarily.)
1. Presentation: Bootstrap
Let’s start at the top of the stack: the presentation layer,
the stuff developers and us folks both touch. Here the clear
winner remains Bootstrap [4]. The forecast looks outstand-
ing, leaving old alternatives, such as Foundation [5], and
new kids, such as Material Design Lite [6], in the dust [7].
Bootstrap dominates usage trends on BuiltWith [8], and on
GitHub remains easily the most starred and most forked
framework of all time.
And Bootstrap is still under active development. In Au-
gust 2015, Bootstrap celebrated its fourth birthday with
version 4 alpha release [9], a major simplification and ex-
pansion of an already powerful feature set. The gist of
the update: Everything got more programmatic. Bootstrap
moved from Less to Sass, centralized all HTML resets in a
single module, tossed a load of style customizations direct-
ly into Sass variables, and ES6-ified all JavaScript plugins.
The team even launched an official Bootrap Themes mar-
ketplace [10], complementing an already massive theme
ecosystem.
2. Web MVC: AngularJS
As the web platform continues to mature, developers en-
joy increasingly well-crafted abstraction-distance from the
still-markup-colored DOM. The work begun by XMLHttpRe-
quest reaches its zenith in modern Single-Page Applica-
tions (SPAs), and the most popular SPA framework by far
is AngularJS [11].
What’s so special about AngularJS? In a word: direc-
tives [12]. Just a little ng- can bring a (static, markup) tag
to (dynamic, JavaScript-executing) life. (Dependency in-
jection is pretty neat, too, and like many of Angular’s fea-
tures aims to simplify maintenance and abstract more fully
from the DOM.)
The basic principle is just the perfectly reasonable sepa-
ration of declarative view from imperative domain logic, fa-
miliar to anyone who has scanned a POM file or wrestled
with an ORM (and hey, some of us used to enjoy XAML, too).
This is thrilling, liberating, and a little weird all at once—giving
HTML power it kinda really shouldn’t have.
Top 5 open source
frameworks every
application developer
should know
BY
JOHN ESPOSITO
108
18
O
pen
S
Ource
Y
earbOOk
2015
.
.
.
O
penSOurce
.
cOm
W O R K I N G
......... .
... .. ... .
.. .. .. ....
Perhaps a bit sadly, the most aggressive concept behind
AngularJS—two-way data binding, which effortlessly keeps
views and models synced—is going away in Angular2 [13],
which is “very close” to beta release [14]. So a bit of the
magic will disappear, but so will some massive performance
headaches at scale and some hair-pullingly tough debug-
ging (just think about two-way for a moment and feel the cliff
drop out from under your feet)—a trade off that grows more
valuable as page size and SPA complexity balloon.
3. Enterprise Java: Spring Boot
What’s so great about Java? Fast, mature, comprehensive
class library, gigantic ecosystem, write-once-run-every-
where, active community—but not painless bootstrapping.
Even hard-core Java developers resort to Ruby or Python
to write quick one-off programs (admit it). And yet Java con-
tinues to dominate the enterprise for those other reasons
listed above.
Enter Spring Boot, the boilerplate evaporator—a framework
that lets you fit a working Spring application in a single tweet:
No unpleasant XML config, no sloppy generated code.
How is this possible? Simple: Spring Boot has some pretty
strong opinions. Read that tweet above and suddenly it all
makes sense! When you realize that the framework auto-
matically spins up an embedded servlet container to han-
dle incoming requests on port 8080—a decision you didn’t
explicitly configure it to make, but a conventional (and fire-
wall-friendly) call.
How hot is Spring Boot? It’s by far the most forked [15] and
most downloaded Spring project (not counting the master
framework itself). And in 2015, for the first time, Google
logged more searches for spring boot than for spring
framework [16].
4. Data processing: Apache Spark
Once upon a time (in 2004), Google developed a pro-
gramming model (MapReduce [17]) that generalized many
distributed batch processing job structures, then wrote a
famous paper [18] about it; then some Yahoo folks wrote
a Java framework (Hadoop [19]) that implemented Map-
Reduce and a distributed file system [20] to simplify data
access for MapReduce tasks.
For nearly a decade Hadoop dominated the “Big Data”
framework ecosystem, despite the limited problem space ad-
dressed (optimally) batch processing—partly because busi-
ness and scientific users were accustomed to batch analysis
of large datasets anyway. But not all large datasets are op-
timally processed in batches. In particular, streaming data
(such as sensor inputs) and data analyzed iteratively (like
machine learning algorithms love to do) don’t like batch pro-
cessing. So dozens of new Big Data frameworks were born,
new programming models, application architectures [21],
and data stores [22] gained traction (including a new cluster
management system [23], decoupled from MapReduce, for
Hadoop itself).
But of all these new frameworks, Apache Spark [24] (de-
veloped at Berkeley’s AMPLab) is the easy-choice 2015
standout. Surveys (DZone report [25]; Databricks infograph-
ic [26]; Typesafe report [27]) show huge growth in Spark
adoption. GitHub commits have been growing linearly since
2013, and Google Trends showsexponential (yes, literally)
growth in searches over 2015 [28].
So Spark is popular. But what does it do? Well, very fast
batch processing; but this depends on one killer feature that
allows for vastly more programming models than Hadoop.
Spark makes data available in Resilient Distributed Datasets
(RDDs) that remain in memory on multiple nodes after pro-
cessing, but without replication (by storing info on how to
recreate; compare to CQRS [29],pragmaticism [30], Kolm-
ogorov complexity [31]). This (obviously) lets algorithms to
iterate without reloading from a (s)lower rung in the distrib-
uted memory hierarchy. And this means that batch process-
ing need no longer suffer the indignity of the “long stroke”
of Nathan Marz’s lambda architecture. RDDs even allow
Spark to simulate true (push) stream processing by running
small batch jobs fast enough to keep latency within “effective
streaming” bounds for many applications.
5. Delivery: Docker
Okay, so Docker [33] isn’t a “framework” in the sense of
“code library, generously defined, that imposes a specific set
of conventions to solve large and recurrent problem sets”.
But if frameworks are just things that let you write code at a
more suitable level of abstraction, then Docker is a frame-
work extraordinaire. (Let’s call it an exoskeletal framework,
just to mix metaphors confusingly.) And it would feel funny to
name “top 2015 anythings for developers” without including
Docker on the list.
Why is Docker great? First, why are containers (earlier:
FreeBSD Jail, Solaris Zones, OpenVZ, LXC) great? Sim-
ple: isolation without a full operating system; or, safety and
convenience of a VM with far less overhead. But isolation
Documents you may be interested
Documents you may be interested