<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Jeff Sayre Webtrepreneur &#187; GPL</title>
	<atom:link href="http://jeffsayre.com/tag/gpl/feed/" rel="self" type="application/rss+xml" />
	<link>http://jeffsayre.com</link>
	<description>Thoughts on startups, leadership, the Web, and disruptive technologies</description>
	<lastBuildDate>Fri, 03 Feb 2012 23:52:25 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
	<atom:link rel="next" href="http://jeffsayre.com/tag/gpl/feed/?page=2" />

		<item>
		<title>Integrating MongoDB Into BitNami’s MAMPStack</title>
		<link>http://jeffsayre.com/2012/02/03/integrating-mongodb-into-bitnamis-mampstack/</link>
		<comments>http://jeffsayre.com/2012/02/03/integrating-mongodb-into-bitnamis-mampstack/#comments</comments>
		<pubDate>Fri, 03 Feb 2012 21:14:55 +0000</pubDate>
		<dc:creator>Jeff Sayre</dc:creator>
				<category><![CDATA[Social Media & Semantic Web]]></category>
		<category><![CDATA[Databases]]></category>
		<category><![CDATA[developers]]></category>
		<category><![CDATA[GPL]]></category>
		<category><![CDATA[MongoDB]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[NOSQL]]></category>
		<category><![CDATA[PostgreSQL]]></category>
		<category><![CDATA[project management]]></category>
		<category><![CDATA[RDBMS]]></category>
		<category><![CDATA[smartups]]></category>
		<category><![CDATA[SocialWeb]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[startups]]></category>

		<guid isPermaLink="false">http://jeffsayre.com/?p=1681</guid>
		<description><![CDATA[This article is for all you OS X Lion-based Mac developers who use BitNami’s MAMPStack and dream of being able to add a NOSQL database engine, like MongoDB, to the stack. If you are not running Lion, then there is no reason to proceed. BitNami offers a variety of development and production stacks that make [...]]]></description>
			<content:encoded><![CDATA[<p>This article is for all you OS X Lion-based Mac developers who use <a href="http://bitnami.org/stack/mappstack">BitNami’s MAMPStack</a> and dream of being able to add a NOSQL database engine, like MongoDB, to the stack. If you are not running Lion, then there is no reason to proceed.<span id="more-1681"></span></p>
<p>BitNami offers a variety of development and production stacks that make it quick and easy to set up a localhost-based development environment or even provision a production-based server with a full suite of tools. If you are familiar with the better known <a href="http://www.mamp.info/en/index.html">MAMP</a>, offered by the German company appsolute GmbH, then you should have no issues using BitNami’s version instead.</p>
<p>What are the benefits of using BitNami’s MAMPStack?</p>
<p>First, as of the date of this article, their stack is up to date. It is compiled and built with the most recent, stable versions of PHP, Apache, MySQL, and phpmyadmin. Second, they offer a very easy-to-install PostgreSQL addon module that integrates into the MAMPStack. This provides the opportunity to use an alternative database, even leveraging PHP’s PDO extension to create a truly SQL-agnostic application. It should not be too hard in the future to add support for other open source SQL-based RDBMSs like <a href="http://www.percona.com/software/">Percona</a> or even <a href="http://www.drizzle.org/">Drizzle</a>. Third, they seem very responsive to their user community.</p>
<p>Why would you want to integrate MongoDB into your MAMPStack?</p>
<p>The days when a RDBMS could be the end all and be all of your backend are over. For more on this point, read part three of my five-part <a href="http://jeffsayre.com/2010/09/13/web-3-0-powering-startups-to-become-smartups/">Smartup</a> series, <a href="http://jeffsayre.com/2010/09/17/web-3-0-smartups-moving-beyond-the-relational-database/">Web 3.0 Smartups: Moving Beyond the Relational Database</a>.</p>
<p>In short, in the Social Web, smartups cannot use a RDBMS as their only backend tool for every job. A RDBMS is not a universal tool. In fact, RDBMSs &#8212; MySQL in particular &#8212; are overused and often misused.</p>
<p><strong>Let’s Get Started!</strong></p>
<p>Integrating MongoDB into your BitNami MAMPStack is a relatively straightforward process &#8212; at least if you are a developer accustomed to building and modifying your dev stacks. Reading this article will take you some time. But, once you fully understand this process, it should take no more than fifteen minutes to install and configure MongoDB to work within your BitNami MAMPStack.</p>
<p>How do I know? Because before posting this article, I deleted my BitNami MAMPStack using the uninstall.app application with which it ships. This deleted all the work I did in integrating MongoDB into the stack. I then reinstalled the stack and repeated the process below. Of course, I had backup copies of the BitNami MAMPStack because there is no need to redownload that. But, I did go through the entire below process. Total time? Thirteen minutes and four point six seconds &#8212; and that is with two MAMPStack server restarts. Bam!</p>
<p><em><strong>Disclaimer</strong>: Before you begin, you agree that you have read this disclaimer and the next one and agree with them. You understand that you are entirely on your own with this process. If you are not comfortable with UNIX commands, if you have never worked within Terminal before, if you do not know how the steps listed below will affect your computer, and if you do not know how to fix any issues that may arise out of trying out these steps, then do not proceed. I am not responsible for what happens to your computer as a result of these suggested techniques. You have been warned. Proceed at your own risk.</em></p>
<p><em><strong>Disclaimer 2</strong>: This process should <strong>not be used</strong> on production servers. It is only suitable for a development environment running on localhost.</em></p>
<p><strong>A. Compiling the MongoDB PHP Driver From Source</strong></p>
<p>Grab the very latest version of the <a href="http://pecl.php.net/package/mongo">MongoDB PHP Driver</a>. Download the tarball version.</p>
<p><em>(Note: Although you can try installing the driver using PHP’s PECL command, I’ve had spotty luck with that approach in the past when attempting to install MongoDB into a third-party dev stack. The driver did not always get installed in the proper location. Sometimes it got installed in the extension directory of the default version of PHP that ships with OS X. When that happens, you have to uninstall the driver and try reinstalling it into the proper directory. As this has proven unreliable in the past, I find it easiest to compile from source then move the extension into the proper location within the MAMPStack. It just takes a few more minutes but ensures that everything is in its proper place.)</em></p>
<p>Drag the tarball out of your Downloads folder onto your desktop. Then double click on the mongo-x.x.x.tar tarball to extract the files. This will create the driver folder. Open up Terminal and navigate to that folder. Each line below starting with a “$” indicates a new terminal command. Before beginning, see the notes below the ordered list. Enter these commands one at a time in Terminal:</p>
<ol>
<li>
<pre class="brush: bash; light: true; title: ; toolbar: false; notranslate">$ cd /Users/{your_user_name}/Desktop</pre>
</li>
<li>
<pre class="brush: bash; light: true; title: ; toolbar: false; notranslate">$ ls</pre>
</li>
<li>
<pre class="brush: bash; light: true; title: ; toolbar: false; notranslate">$ cd mongo-x.x.x</pre>
</li>
<li>
<pre class="brush: bash; light: true; title: ; toolbar: false; notranslate">$ cd mongo-x.x.x</pre>
</li>
<li>
<pre class="brush: bash; light: true; title: ; toolbar: false; notranslate">$ sudo /Applications/mampstack-5.3.9-0/php/bin/phpize</pre>
</li>
<li>
<pre class="brush: bash; light: true; title: ; toolbar: false; notranslate">$ ./configure</pre>
</li>
<li>
<pre class="brush: bash; light: true; title: ; toolbar: false; notranslate">$ sudo make install</pre>
</li>
</ol>
<p><em>Terminal Notes</em></p>
<blockquote><p>Step 1: Replace {your_user_name} with the name of your mac account user. It is the name that appears within the /Users folder.</p>
<p>Step 2: The list command will allow you to double check the MongoDB file folder name which you will enter in the next step.</p>
<p>Step 3: Switch to the directory that contains your MongoDB PHP Driver and associated files. Replace the x.x.x with the version number of the driver which should be the same as that listed for the folder name.</p>
<p>Step 4: This seems like a repeat of above, but if you inspect the folder structure of the driver download, you will see what is going on. This switches into the directory within the downloaded folder that contains the actual driver source files. It is within this directory that you run the compile commands.</p>
<p>Step 5: The phpize command prepares the build environment for PHP extensions &#8212; in this case, for building the MongoDB PHP Driver extension (mongo.so). You will be prompted to enter your administrator password. This is your mac user account password (assuming that you are the owner of the mac).</p></blockquote>
<p>When the screen of output is finished, you will have a compiled MongoDB Driver extension located in the modules directory of the driver folder. Look in /mongo-x.x.x/mongo-x.x.x/modules for the extension named <em>mongo.so</em>. Copy that extension into the following folder in your BitNami MAMPStack directory:</p>
<blockquote><p><em>mampstack-5.3.9-0/php/lib/php/extensions</em></p></blockquote>
<p>Now you need to add the following to your listed extensions within the php.ini file. In the BitNami MAMPStack, the php.ini file can be found here:</p>
<blockquote><p><em>mampstack-5.3.9-0/php/etc</em></p></blockquote>
<p>Open the php.ini file in your favorite IDE and add this to the “Dynamic Extensions” section of the file, just below the last active extension:</p>
<pre class="brush: plain; light: true; title: ; toolbar: false; notranslate">extension=mongo.so</pre>
<p>Save and close the php.ini file.</p>
<p>Now, before continuing on to the next step, if your MAMPStack server is running, stop it and then restart it. Visit your phpinfo page to make sure that the MongoDB PHP Driver has been installed and is active. If you don&#8217;t know what a phpinfo page is, <a href="http://php.net/manual/en/function.phpinfo.php">visit this link</a>. (I made my PHP Info Page and placed it at root level in the apache2/htdocs folder before I began this process.) Run your phpinfo page and look for the “Configuration” section in the output. Now scroll down until you see “mongo”. Check to make sure the version number is what you expect.</p>
<p>If you do not see “mongo” listed, or the version number is incorrect, you’ll have to start the process again &#8212; but first you will need to delete the mongo.so file from BitNami MAMPStack’s PHP extension folder. However, if everything looks fine, you’re ready for the next section below &#8212; part two.</p>
<p><strong>B. Adding and configuring the MongoDB Database</strong></p>
<p>In this section, we’ll setup the MongoDB backend and make sure that it is functioning properly.</p>
<p>Follow these simple steps:</p>
<ol>
<li>Download the most recent, stable OS X 64-bit binary version of <a href="http://www.mongodb.org/downloads">MongoDB</a>. Double click the tarball to extract the files.
</li>
<li>Create a new folder called “mongo” in BitNami MAMPStack’s root. When you are done, you will have this directory structure: <em>mampstack-5.3.9-0/mongo</em>
</li>
<li>Create three subfolders in this newly-created mongo folder, setting their permissions to 775:
<pre class="brush: plain; light: true; title: ; toolbar: false; notranslate">bin</pre>
<pre class="brush: plain; light: true; title: ; toolbar: false; notranslate">data</pre>
<pre class="brush: plain; light: true; title: ; toolbar: false; notranslate">tmp</pre>
<p>Within the newly-created data directory, add the following subfolder with permissions set to 775 as well:</p>
<blockquote><p>db</p></blockquote>
</li>
<li>Install the MongoDB files you’ve just downloaded and extracted into the mampstack-5.3.9-0/mongo/bin. Make sure you install just the contents of the bin folder within the downloaded MongoDB folder and not the bin folder too.
</li>
<li>Next, you’ll create a configuration file for mongoDB. This file will tell mongo where to store data, log errors, and which directory to use for temporary stuff. In your favorite IDE, create a new file named mongodb.conf in the root directory of your mongo install ( <em>mampstack-5.3.9-0/mongo</em> ). In that file, add the following:
<pre class="brush: plain; title: ; toolbar: false; notranslate"># Store data in default MongoDB directory structure, /data/db/
dbpath = /Applications/mampstack-5.3.9-0/mongo/data/db

# Set location where all MongoDB errors should be logged.
# This should create a log file if it does not exist
logpath = /Applications/mampstack-5.3.9-0/mongo/mongodb.log

# Set location of pid file; this should create one if it does not exist
pidfilepath = /Applications/mampstack-5.3.9-0/mongo/tmp/mongo.pid

# Only accept local connections
bind_ip = 127.0.0.1</pre>
<p>Save and close your newly-created mongodb.conf file.</p>
</li>
<li>To launch MongoDB server, open up terminal and type the following command all on one line. However, as we have just made significant additions and changes to the basic, out-of-the-box BitNami MAMPStack, you need to restart your BitNami MAMPStack servers to make sure all the changes are picked up.
<p>Once the MAMPStack servers have restarted, type this into Terminal &#8212; place your cursor in the box and copy the entire string as it does extend beyond the margins of the box:</p>
<pre class="brush: bash; light: true; title: ; toolbar: false; notranslate">sudo /Applications/mampstack-5.3.9-0/mongo/bin/mongod --config=/Applications/mampstack-5.3.9-0/mongo/mongodb.conf</pre>
<p><strong>Please note</strong>: From now on, this is how you will start your mongod server.</p>
</li>
<li>Test your MongoDB install to make sure that the server is running. By default, MongoDB listens to port 27017. You can verify which port MongoDB is listening to by looking up the configuration settings of your MongoDB PHP Driver in the PHP Info page. However, Mongo’s Web-based admin console listens to port 28017. Therefore by visiting “localhost:28017” in your browser, you can see if you have a connection. If you do, you’re all set!</li>
</ol>
<p>To learn more about starting and stopping the MongoDB server (Mongod), <a href="http://www.mongodb.org/display/DOCS/Starting+and+Stopping+Mongo">see this resource</a>.</p>
<p><em>(Note: You could install MongoDB into your /usr/local/ directory and then symlink the binaries out of the /usr/local/mongo/bin folder to the BitNami MAMPStack. However, the idea in this method is to keep all the applications bundled under the same master folder &#8212; your BitNami MAMPStack. That way, uninstalling the stack is very simple. You just delete the BitNami MAMPStack folder from your /Applications directory. The method presented here also makes it easy to move this application setup to another machine. Finally, although it is normally not an issue, with this method you do not have to worry about potential problems when upgrading your OS.)</em></p>
<p><strong>C. Download and install phpMoAdmin</strong></p>
<p>We are almost finished! If you’ve successfully completed parts one and two above, congratulations! You have integrated MongoDB to run inside of your BitNami MAMPStack. This last step will provide you with a tool to manage MongoDB.</p>
<p>Just as you use phpmyadmin to administer and manage your MySQL databases, MongoDB has several database admin tools written in PHP. We’re going to be installing phpMoAdmin. Grab the <a href="http://www.phpmoadmin.com/">most recent stable version</a>.</p>
<p>Once you’ve downloaded a copy, unzip it if it did not automatically unzip. Next, create a new folder within Apache’s htdocs folder called phpmoadmin. Copy the moadmin.php file into this new folder.</p>
<p>Done! You now can access this very simple, but useful MongoDB admin tool by visiting “localhost:8080/phpmoadmin/moadmin.php” in your browser.</p>
<p>Alternatively, you can use <a href="http://mongohub.todayclose.com/">MongoHub</a> or <a href="http://code.google.com/p/rock-php/wiki/rock_mongo">RockMongo</a> to administer your MongoDB backend. I suggest checking all three out and deciding which one you like best.</p>
<p>Why are we using phpMoAdmin? It offers the most recently-updated version out of the three and it is simple to install as it is a single, small file. For this article, it is sufficient. However, the other tools may provide better GUIs and a stronger set of features. So, you should check them out and decide which one you like best.</p>
<p><strong>Don’t Forget to Give Thanks!</strong></p>
<p>That’s it! </p>
<p>You can further expand your BitNami MAMPStack by setting up VHOSTs in your Apache config file, but that is beyond this article. If you’re interested in that, see the documentation in the /apache2/manual folder. </p>
<p>Finally, please remember to give back to the open source community as it provides you with high-quality, powerful software with many freedoms &#8212; and often free as in cost, too. Share this article, write your own, create a version of this article for Linux distros or Windows, volunteer time to an open source project, contribute bug fixes, thank BitNami for their services, or donate to help fund an open source project. Free and Open Source Software (FOSS) needs your support!</p>
<p>Now go out there and create the next, greatest <a href="http://jeffsayre.com/2010/09/13/web-3-0-powering-startups-to-become-smartups/">Smartup</a>!</p>
<p><strong>More resources</strong></p>
<ul>
<li><a href="http://www.mongodb.org/display/DOCS/Home">Learn more about MongoDB</a></li>
<li><a href="http://www.mongodb.org/display/DOCS/Books">MongoDB books</a></li>
<li><a href="http://www.doctrine-project.org/docs/mongodb_odm/1.0/en/cookbook/blending-orm-and-mongodb-odm.html">Blending the Doctrine ORM with the Doctrine MongoDB ODM</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://jeffsayre.com/2012/02/03/integrating-mongodb-into-bitnamis-mampstack/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>BP Privacy v1.0-RC1 is now available!</title>
		<link>http://jeffsayre.com/2011/02/16/bp-privacy-v1-0-rc1-is-now-available/</link>
		<comments>http://jeffsayre.com/2011/02/16/bp-privacy-v1-0-rc1-is-now-available/#comments</comments>
		<pubDate>Wed, 16 Feb 2011 16:37:47 +0000</pubDate>
		<dc:creator>Jeff Sayre</dc:creator>
				<category><![CDATA[BuddyPress]]></category>
		<category><![CDATA[developers]]></category>
		<category><![CDATA[GPL]]></category>
		<category><![CDATA[privacy]]></category>
		<category><![CDATA[WordPress Plugins]]></category>

		<guid isPermaLink="false">http://jeffsayre.com/?p=1307</guid>
		<description><![CDATA[After more than 1500 hours of work, 7300 code and comment lines, and creation of a 38-page manual, BP Privacy release candidate one is now available for download and testing. It requires at least PHP 5.2.x and is developed and tested to work with WordPress 3.0.5 and BuddyPress 1.2.7. It also requires a modern Web [...]]]></description>
			<content:encoded><![CDATA[<p>After more than 1500 hours of work, 7300 code and comment lines, and creation of a 38-page manual, BP Privacy release candidate one is now available for download and testing. It requires at least PHP 5.2.x and is developed and tested to work with WordPress 3.0.5 and BuddyPress 1.2.7. It also requires a modern Web browser and you and your users must have javascript enabled.<span id="more-1307"></span></p>
<p>After much debate, I decided to place BP Privacy in the WordPress Plugin Repository as that is the easiest place for the community to access it. Placing it elsewhere might result in it being quickly forgotten.</p>
<p>Please be advised that as of this post and release, I am no longer developing or supporting this plugin. Therefore, with this release ends my BuddyPress Privacy journey. BP Privacy is now in the hands of the community. It is up to someone, or preferably a team of developers, to fork BP Privacy, reshape it to their vision, and help it grow to meet the community&#8217;s needs.</p>
<p>This means that if you have issues with the plugin your only recourse is to read the BuddyPress Privacy Manual (start with the Site Administrator&#8217;s Guide section) or hire a developer. I am not for hire so please do not contact me. Also, I will not be answering any emails about BP Privacy, including requests for suggestions on competent developers to hire. Please use the BuddyPress Support forums instead.</p>
<p><a href="http://wordpress.org/extend/plugins/bp-privacy/">Visit this link to download BP Privacy</a>!</p>
<p><strong>Even More Details</strong></p>
<p>For a detailed history of BP Privacy, read my article, <a href="http://jeffsayre.com/2011/01/19/bp-privacy-history-and-lessons-learned-from-developing-a-major-buddypress-component/">BP Privacy: History and Lessons Learned from Developing a Major BuddyPress Component</a>.</p>
<p><strong>BP Privacy’s Future</strong></p>
<p>The current version of this plugin was to be released as v1.0 but I have reverted the version numbering to pre-release status. Therefore it should be treated as a pre-release version and not used in a production environment.</p>
<p>Before installing and using this plugin, you should fully and carefully read the plugin’s readme.txt file, the disclaimer.txt file, and the BuddyPress Privacy Manual that comes bundled with the plugin.</p>
<p>Also, please see the future.txt file which contains the roadmap features for BP Privacy’s further development. The items listed under v1.0-RC2 were originally planned for multiple version releases&#8211;some under v1.0.x and some under v1.1. These features have been gathered under v1.0-RC2 to suggest that they should be developed, fully tested, and rolled out before someone else (or some team) releases a production-ready fork of this plugin. It will take that long for a developer or team of developers to sufficiently understand the inner workings of this plugin before they can claim that their forked-version is production ready.</p>
<p>Enjoy and best of luck!</p>
<p><em>Note: Comments are turned on but I will not be allowing any comments asking for support as I am not providing support. I also will not be allowing through any negative comments. This is not a public forum.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://jeffsayre.com/2011/02/16/bp-privacy-v1-0-rc1-is-now-available/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>BP Privacy: History and Lessons Learned from Developing a Major BuddyPress Component</title>
		<link>http://jeffsayre.com/2011/01/19/bp-privacy-history-and-lessons-learned-from-developing-a-major-buddypress-component/</link>
		<comments>http://jeffsayre.com/2011/01/19/bp-privacy-history-and-lessons-learned-from-developing-a-major-buddypress-component/#comments</comments>
		<pubDate>Wed, 19 Jan 2011 20:29:35 +0000</pubDate>
		<dc:creator>Jeff Sayre</dc:creator>
				<category><![CDATA[BuddyPress]]></category>
		<category><![CDATA[Entrepreneurship & Leadership]]></category>
		<category><![CDATA[developers]]></category>
		<category><![CDATA[FOSS]]></category>
		<category><![CDATA[freedoms]]></category>
		<category><![CDATA[GPL]]></category>
		<category><![CDATA[leadership]]></category>
		<category><![CDATA[privacy]]></category>
		<category><![CDATA[project management]]></category>
		<category><![CDATA[WordPress Plugins]]></category>

		<guid isPermaLink="false">http://jeffsayre.com/?p=1288</guid>
		<description><![CDATA[Coding great-quality, open source software, while often rewarding, can also be a thankless, difficult task. As many have been asking for an update on BP Privacy&#8211;also known as the BuddyPress Privacy Component&#8211;I thought I would take the time to write up an exhaustive history of the project and share some lessons learned. It is important [...]]]></description>
			<content:encoded><![CDATA[<p>Coding great-quality, open source software, while often rewarding, can also be a thankless, difficult task. As many have been asking for an update on BP Privacy&ndash;also known as the BuddyPress Privacy Component&ndash;I thought I would take the time to write up an exhaustive history of the project and share some lessons learned.<span id="more-1288"></span></p>
<p>It is important to state up front that there are many wonderful, helpful, supportive, knowledgeable, community-minded members in the greater WordPress community. If you are an active participant within this community, you already understand that fact.</p>
<p>Of course, a great community of supportive, fun-loving people does not guarantee that you will face few challenges with your WordPress or BuddyPress projects&mdash;whether that is starting and running a community, designing themes, or developing plugins.</p>
<p>This is the story about the challenges I have faced in bringing BP Privacy to fruition. It is just one developer&#8217;s journey and, as such, should not be construed as anything more than my perspective.</p>
<p>I hope that those who manage to read through this entire, long article walk away with not only a better understanding of some of the difficulties BP Privacy has faced, but also a feel for how they might want to approach taking on similar open source projects in the future.</p>
<p><strong>Genesis of the Idea</strong></p>
<p>In the beginning, there was an idea that BuddyPress needed privacy. Well, that idea was not present at the genesis of BuddyPress as it does not offer core privacy, but the idea was hatched in the early pre-RC2 release days of the BuddyPress project by two very active community leaders&mdash;one of whom was me.</p>
<p>At the inception of this project, BP Privacy had two developers. That&#8217;s right. I had a project partner. This partner was a key BuddyPress member and very interested in coding his first BP plugin. We teamed up on this project as we realized the complexity of the task at hand and that it would be beneficial to have a project partner.</p>
<p>We had a number of discussions about how we should tackle this project. I set up a subversion repository on my dedicated server for the project and gave him access. I started the long, tedious process of learning, really understanding, the inner workings of BuddyPress. After all, BP Privacy would not be a typical plugin. It had to interact with all the core BuddyPress components. It had to monitor and take control of output based on an individual&#8217;s desires. We both realized that BP Privacy was going to be a major, foundational component in its own right&mdash;even though it would be a third-party plugin.</p>
<p>However, as weeks passed into months, my project partner&#8217;s schedule did not allow him to participate. So, I told him that I was just going to get started and that he could join in at any time.</p>
<p>So that is the humble, less than exciting beginning of BP Privacy. It started with a two-person project team but ended up becoming a solo effort.</p>
<p><strong>BP Privacy Timeline</strong></p>
<p>On the BP Privacy site, I state <a href="http://bp-privacy.com/2010/09/privacy-comes-to-buddypress/">in a blog post</a> that this journey has been 16-months long. Of course, that was posted  basically October 1, 2010. So as of the date on this post, the process is nearing 20 months. The reality, however, is that this project had its inception even earlier, almost two years ago.</p>
<p>Here is a blow-by-blow timetable for BP Privacy and some of the key factors and issues at each point along the way:</p>
<p><em>Project idea inception</em>: Early April 2009. My project partner and I began discussing BP Privacy (what was at that time called BPAz or BP-Authz)</p>
<p><em>First code written</em>: June 23, 2009. This was two months after hatching the concept. It was the point when my project partner determined his schedule would not allow him to participate. So, I started coding the project on my own.</p>
<p><em>First public beta release</em>: December 5, 2009. Only four months and two weeks after the first code block was written, <a href="http://jeffsayre.com/2009/12/05/buddypress-privacy-component-released/">I released a very solid public beta version</a> to the community. Note that before that public beta release, there was a small, select group of private alpha testers.</p>
<p>This was a very solid beta version with only a few minor bugs. It worked perfectly with BuddyPress v1.1.3, offering privacy filtering for four of BuddyPress&#8217; then core components. But the rug was about to be pulled out from underneath the project.</p>
<p><em>Codebase and platform concerns arise</em>: January 2, 2010. As BuddyPress 1.2 was fast approaching release, it became clear that a major BP Privacy code refactoring would be required. A good portion of the previous 4 months of work would need to be reevaluated and much rewritten. As I looked at the time commitment involved, I realized <a href="http://jeffsayre.com/2010/01/02/do-you-support-buddypress-privacy/">I needed to try a new approach</a>.</p>
<p>Not surprisingly, this approach failed. It only raised about $175 dollars. Without a big financial boost to help me focus on BP Privacy, I had to turn my attention elsewhere for awhile.</p>
<p><em>Late spring through early fall of 2010</em>: The BuddyPress project experienced critical uncertainties in my opinion. These uncertainties made me question its long-term health. During this time, the development of BP Privacy progressively slowed down, practically grinding to a halt in late summer of 2010 as I awaited a few, final core patches I had submitted months before to be accepted.</p>
<p>Due to these factors, nine months passed with very little development time being invested.</p>
<p><em>Announcement of Public Release (v1.0)</em>: September 30, 2010. I was privy to some promising developments in the world of BuddyPress that gave me hope that BuddyPress might actually weather the storm. So, after almost nine months of greatly reduced activity on my part, I went out on a limb, venturing back into the BP Privacy project on a more serious level once again.</p>
<p>I created the <a href="http://bp-privacy.com/">BP Privacy site</a> and made an announcement on that new site that BP Privacy would be released on November 8, 2010. This is the first officially-advertised date given for the release of the public, production-ready version (v1.0).</p>
<p>A few weeks later came <a href="http://buddypress.org/2010/10/introducing-paul-and-boone-2/">the news for which I had been waiting</a>. The BuddyPress community had a shot of adrenaline and renewed hope. We welcomed the announcement that <a href="http://twitter.com/pgibbs">Paul Gibbs</a> and <a href="http://twitter.com/boonebgorges">Boone Gorges</a> had been &#8220;promoted&#8221; to core committers.</p>
<p>Of course, November 8, 2010 came and went. I continued working on BP Privacy as time permitted as I patiently awaited the release of BuddyPress 1.2.7 which was finally released on December 22, 2010.</p>
<p><em>BP Privacy&#8217;s Future</em>:  See the end of this article.</p>
<p><strong>Time Invested and Anticipated Returns</strong></p>
<p>Projects of the magnitude of BP Privacy require a considerable time commitment. Whereas it is difficult to be absolutely precise, I have a pretty accurate estimate as to the number of hours I&#8217;ve invested in BP Privacy. My total time spent to date working on BP Privacy is 1450 hours.</p>
<p>What kinds of activities go into a project that would require such a time commitment? A great number of essential activities such as: emails, forum and IRC discussions, support of alpha and beta1 testers, writing and submitting core patches required to bring privacy services to BuddyPress, debating a number of these patches, studying and thoroughly understanding the inner workings of BP, keeping up to date with codebase changes in BP Trac, <a href="http://jeffsayre.com/2010/04/29/introducing-wordpress-hook-sniffer-a-developer-plugin/">writing tools that were necessary in figuring out some unexpected behaviors with BuddyPress&#8217; action and filter hooks</a>, continuous and exhaustive testing of BP Privacy, and writing detailed documentation. Of course, all of this is on top of the actual coding of the component itself which has required (so far) two major refactorings of the codebase.</p>
<p>What will I earn for all of this effort? Zero. Okay, I had a total of about $225 in donations to help support development ($175 as mentioned above plus $50 received before that post). I am very grateful to all who donated, to my select testers, and to everyone who offered support in other ways.</p>
<p>This means that I will have earned just shy of 16 cents per hour working on BP Privacy. So, the next time you question the commitment and contribution of those who actively volunteer in the open source world, remember that number. Of course, if all the additional <a href="http://jeffsayre.com/2009/12/21/i’m-buddypress-ed-for-time/">hours of time that I&#8217;ve donated on the BP support forums</a>, IRC, via email, Twitter, and Skype are included, that total would undoubtably be about half of that.</p>
<p>Financially, I would have been better off spending that time working at McDonalds. It is ironic that the vast majority of people who will benefit from my work will not even contribute enough for me to buy a Big Mac. By the way, I do not eat at McDonalds so please don&#8217;t send coupons. In fact, I am not interested in any more donations.</p>
<p>Why do I have a section emphasizing the monetary aspects of BP Privacy? Because like the vast majority of people, I need to pay bills, put food on my family&#8217;s table, and save for the future. How many of you can donate 1450 hours of time creating free products or services for others to use?</p>
<p>I am a vocal advocate of the open source model, as anyone who reads my blog and tweets would know. I have volunteered a thousand hours plus of my time answering questions on the BuddyPress community support forums, via email, in IRC, on the phone, and via Skype. None of those hours are included in my total time spent on BP Privacy. Like many active members of the community, I give in more ways than just creating plugins.</p>
<p>The reality for me is that this community and its open source model does not make it possible to earn even a small part of my living in a way that I prefer&mdash;coding great-quality GPLed plugins that provide needed services to others.</p>
<p>As I do not take on client work&ndash;I&#8217;ve discussed this fact with people many times before&ndash;I need another means with which to recoup some of the time I have invested in coding open source software for the community. If you really want to learn more about this point, please <a href="http://jeffsayre.com/2010/01/02/how-can-buddypress-developers-earn-a-living/">read this post about this issue from my perspective</a>&mdash;and read the comments for a fascinating discussion.</p>
<p><strong>Lessons Learned</strong></p>
<p>Here are a few lessons learned that may help other WordPress and BuddyPress developers have a better experience with offering GPLed software to the greater community.</p>
<p><em>Work on Projects that Give You Energy, Not Sap Your Strength</em>: By and large, I have lost more energy working on the BP Privacy project than I have gained. It has been exceedingly frustrating at times. To be honest, if this were not something desperately needed for the BuddyPress platform, I would have dropped this project a year ago.</p>
<p>At the time I started coding BP Privacy, I was planning on using BuddyPress as the foundation of my startup, and privacy was key to that vision. So it made sense to continue BP Privacy and then release the component to the greater community once it was ready. Had I any idea how vocal the negative minority would be as they impatiently waited for me to provide them with high-quality, free-as-in-cost software, I would have canned the community release a long time ago and just worked on it for my private use.</p>
<p><em>The Vocal, Negative Minority</em>: It is important to realize that more likely than not, the vast majority of users will be happy about your work, or at least indifferent. Unfortunately, human nature makes us more vocal when we&#8217;re displeased than when we are pleased. It is a minority of users that will be anywhere from disappointed to obsessively outraged. It will be this minority that will be most vocal. If you release your work to the community, expect to have a greater volume of &#8220;I hate you&#8221; than &#8220;I love you&#8221; feedback from your user base.</p>
<p>Whereas community members may appreciate your volunteer help on various support forums, and paying clients may love you, when it comes to freely-contributed plugins,  don&#8217;t expect the same rosy reception.</p>
<p><em>Don&#8217;t Expect Donations</em>: Based on the vast majority of all plugin developers&#8217; experience, ninety-nine percent (and realistically more) of all users will never donate to your efforts. There are many plugin developers who have written about this. Here are just a few articles to shed some light on this issue. Again, read the comments to get a more balanced perspective on this issue as there are good points on both sides:</p>
<ul>
<li><a href="http://www.justinparks.com/have-you-made-donation-to-your-wordpress-plugin-developer/">Have you made a donation to your WordPress Plugin Developer?</a></li>
<li><a href="http://speckyboy.com/2011/01/13/do-we-do-enough-to-support-wordpress-plugin-developers/">Do we do enough to support WordPress Plugin Developers?</a></li>
<li><a href="http://alexking.org/blog/2010/12/01/open-source-motivations">Open Source Motivations</a></li>
</ul>
<p>The donation model is not broken, for the vast majority of creators, it never worked to begin with. I have tried many tactics to increase donation conversions. My plugins and appropriate blog posts all had obvious donate badges. But that has not made a difference. Donating to something that is freely available apparently also goes against human nature.</p>
<p><em>Plugin support</em>: Unless you clearly and explicitly state that there will be zero support offered for your plugin (at a minimum that should be communicated in the readme.txt file) then it is your moral obligation to offer some level of support if you release a plugin to the community&mdash;which includes forking an existing plugin.</p>
<p>Therefore, expect there to be questions that must be answered, that user issues will take away time from your other projects, and possibly impact your paid work and family obligations. There will be users who claim they are having a problem with your plugin when in actuality it will be caused by something other than your plugin. No matter how hard you try to communicate that it is not an issue with your plugin, in these people&#8217;s minds, you will still be the party at &#8220;fault&#8221;.</p>
<p>It is for this reason that some plugin developers <a href="http://www.gnu.org/philosophy/selling.html">fully exercise their GPL rights</a>. Please note that if you plan to charge for support, you should be aware of a potential issue.</p>
<p>Since all WordPress plugins and themes need to be licensed under then same GPL version as WordPress itself&ndash;GPL version 2&ndash;you do not technically have the freedom or right to charge support fees. That explicit freedom and right was added later in GPL version 3. (Compare the last paragraph of Section 1 of <a href="http://www.gnu.org/licenses/gpl-2.0.html">GPL version 2</a> to the last paragraph of Section 4 of <a href="http://www.gnu.org/licenses/gpl.html">GPL version 3</a>).</p>
<p>Therefore, if you are planning on charging for support, you are operating outside the freedoms of the GPL version 2. You would be wise to seek legal counsel.</p>
<p><em>Disclaimer: You should seek legal counsel if you have questions or concerns about your freedoms and rights under the GPL. I am not a lawyer and the information presented is my opinion only.</em></p>
<p><em>With Plugin Popularity Comes Possible Trouble</em>: I do not envy plugin developers with high download counts. I know that that means one of two things: they are at the first stage of the plugin&#8217;s support lifecycle where they are spending an inordinate amount of their time supporting the plugin (probably for free), or they will soon be entering the final stage of the plugin&#8217;s support lifecycle where they discontinue support and future development as their time commitment to the project cannot be sustained.</p>
<p>It is for these two reasons that I always donate to plugin developers whose software I use and only use plugins that I am sufficiently interested in as I expect that one day I will have to maintain them myself.</p>
<p>Plugin development should not be a popularity contest, he or she who has the highest plugin download count often does not win. Do not release a plugin for praise and glory. That rarely happens. What really happens is the more popular your plugin becomes, the greater the potential for you to lose control over your time. This can lead to a rather unpleasant, overall experience with your project.</p>
<p><em>Alpha &#038; Beta testing</em>: If you have limited time to work on your project, then it is best to make the alpha and maybe first beta version private releases. Provide copies only to those people who you believe will genuinely test it and provide you with useful feedback. It is better to have a small, focused group of testers than a horde of quasi-interested and knowledgeable testers.</p>
<p>The exception to this lesson would be if you have a team of developers who can share the responsibilities of managing a public alpha and beta test. But, if you are a solo developer, you could be in for a world of hurt if you set your pre-release software free for any and all to test.</p>
<p>Bugs will continue to be found even after you&#8217;ve released the first public version. You have to go no farther than WordPress or BuddyPress Trac to see how many bugs still exist in those stable, public products. That is the nature of all software. No matter how mature a software product, there will always be bugs, some of them serious.</p>
<p><em>Develop on a Developer-stable Version</em>: Although BuddyPress v1.0 was the first official public release deemed suitable for general use, it was far from stable from a developer&#8217;s standpoint. This is evidenced by the fact that significant changes occurred between BP 1.0 and BP 1.1 that caused developers some grief and then even greater changes occurred between BP 1.1 and BP 1.2.</p>
<p>In my opinion, BP 1.2 should have been then first public release. In other words, BP 1.2 is really v1.0 in my mind. Now, with BP 1.3 close at hand, I&#8217;m concerned that developers (and possibly even users) will be faced with difficult upgrade challenges. Although, Paul, Boone, and John have been working hard to make the transition to BP 1.3 as painless as possible. So, perhaps my concerns are not valid. Whatever the reality, when the dust settles, BP 1.3 will become the first developer-stable version in my opinion.</p>
<p><em>Group or Solo effort</em>: As should be obvious from the start of this article, you need to carefully vet your project partners. Although I had little data with which to make an honest assessment of my project partner&#8217;s suitability&ndash;the BuddyPress community was very new at the time&ndash;I nevertheless made a mistake at the start of this project. I should have quietly started by myself and only asked for interested project partners once I had some code to share and knew more about the skill sets of the various BP developers with whom I associated.</p>
<p><em>Communicate Less, Not More</em>: This may come across as a hypocritical suggestion in light of some of the communication issues BuddyPress had last year. However, you need to differentiate BuddyPress as a developer platform and community from that of developing a BP plugin. With the former, the community is what makes the project a success. With the later, only a few key people need to be kept apprised. Communication is essential to the former, whereas to the latter it is not necessary until the plugin is released.</p>
<p>When it comes to plugin development, it is better to surprise the community with a new release (especially the initial release) than it is to build up their expectations. Although there is a thrill with getting validation for your efforts at the start of a project, there is no way to know what challenges lie ahead and how difficult the task may be. Interest and attention in any project can quickly turn negative if there are seemingly few results to share. Blame will always go to you, whether the issues holding up your project are beyond your control or not. This is especially true for a project that is deemed very important or possibly even vital&mdash;such as BP Privacy.</p>
<p>Once a plugin is released to the world, then proactive communication and vigilant project management are crucial to the project&#8217;s continued success. But before the public release, communicating less might actually help the project succeed as you won&#8217;t be distracted by the negative vocal minority.</p>
<p><em>Promised Release Dates</em>: As a follow up to the point above, it is best to never put a date on a release. You are working on a plugin, not the core foundation of WordPress or BuddyPress where it makes sense to have project deadlines and development freeze dates.</p>
<p>If you do communicate a release date, do not be overly concerned if you fail to meet it. You are generously working on GPLed software that will more than likely earn you little if any for your efforts invested. You are not beholden to anyone.</p>
<p>Even the BuddyPress project has difficulties meeting its promised release dates. As this article can witness, there are many factors that contribute to a missed release date. Some are beyond your control. From a community standpoint, it is best if people remain patient and remember that they are getting GPLed software that provides them many freedoms of use. The software will be released when its released.</p>
<p><em>Use of the WordPress Plugin Repository</em>: The WP Plugin Repo is a great service to developers and the greater community. You should use this service if you are planning not to exercise your full GPL rights. However, do not use the Repo for releasing alpha, beta, or RC versions. Most users will have no clue what an alpha or beta version truly means. More importantly, most will not care. If it&#8217;s on the Repo they&#8217;ll expect it to work. You should make your plugins available on the Repo only when they are ready for full public release. Until then, use another service, or your own server, to make pre-release versions available to those whom you wish to have access.</p>
<p><strong>When Will BP Privacy Be Released?</strong></p>
<p>Over the past two months, I have been reassessing my role in this project. As you have found out from the above history, my time commitment and investment into this project have been substantial. I&#8217;ve decided that the time required to support and maintain this project, and the energy required to do it properly, is incompatible with me earning a semblance of a living. It has also taken too much focus away from my current startup.</p>
<p>This project started out as a team effort but unfortunately became a solo effort. I believe that this project needs to become a team effort again&mdash;as in a team of developers, not a team of testers.</p>
<p>To be clear, BP Privacy was never intended to be a core BuddyPress component&mdash;even though some of you think that was the case. I am not and have never been part of BuddyPress&#8217; core development team. I was simply an active community volunteer, support forum moderator, and plugin developer.</p>
<p>As most of you know, I am a staunch privacy advocate. Since my first days with the BuddyPress project, I have believed that privacy was a necessary core feature. That has yet to be realized. Perhaps part of the BP Privacy codebase can serve that purpose in the future. Although it might make more sense to refactor BuddyPress, offering true core privacy as a component.</p>
<p>What does this all mean?</p>
<p>I will be releasing the fully-functioning BP Privacy codebase over the next several days, along with a very extensive manual (35+ pages). At that point, I will end my official involvement with the project, and as such, I will not be providing any support.</p>
<p>The project will be in the hands of the community. It will be available for anyone to use as is, expand upon, fork, or even merge into BuddyPress core. Perhaps a group of developers will adopt BP Privacy and maintain it as a community-based project.</p>
<p>Because of my decision to end my official involvement with the project, I&#8217;ve decide to back tag the version I&#8217;ll be releasing, making it a release candidate instead of a public, ready-for-production version. Therefore, it will be v1.0-RC1 instead of V1.0. It also means that I will not be placing it on the WordPress Plugin Repository per the reasons I mentioned at the end of the last section. It will be available for a short while on the BP Privacy site before that site is taken down. The link will go to some yet-to-be-determined public repository. I will also be placing the link within a BP support forum thread.</p>
<p>By the way, for any group of developers interested, I have registered the bp-privacy distribution name with the WP Repo. I would be more than willing to assign that over to another group, if that is possible, or at the bare minimum add other committers. But be advised that I will not be participating in the project anymore.</p>
<p>Once BP Privacy v1.0-RC1 is out, it will be up to each person to fully evaluate the plugin and decide for themselves whether or not to run it on a production site. Although in my exhaustive testing BP Privacy works very will under WP 3.0.4 and BP 1.2.7, you must decide for yourself the viability of its use in a production environment. Thus, please be advised, no matter what you do, you are on your own until (and if) a new group of developers takes the reigns of BP Privacy and assumes support and maintenance responsibilities.</p>
<p>As far as the upcoming release of BP 1.3, I have not fully tested the most recent BP trunk version in Trac. Therefore, I cannot say how much refactoring may be required. I may put some effort into that, but do not wait for me. You should take the initiative and bring it up to date on your own volition.</p>
<p>As far as the few people that have pre-purchased BuddyPress Privacy Support Plans, I will be refunding all the monies received over the next week. But first I will focus on getting BP Privacy out the door. I will also be refunding my two, wonderful advertising partners. Yes, your ads have been up on BP Privacy going on three months (I have only charged them for the first month), but you have not received the type of exposure that you had expected. It is only fair that you get full refunds as well.</p>
<p>I hope that BP Privacy finds a useful life going forward!</p>
]]></content:encoded>
			<wfw:commentRss>http://jeffsayre.com/2011/01/19/bp-privacy-history-and-lessons-learned-from-developing-a-major-buddypress-component/feed/</wfw:commentRss>
		<slash:comments>33</slash:comments>
		</item>
		<item>
		<title>Release of BuddyPress Privacy Component Pushed Back One Week</title>
		<link>http://jeffsayre.com/2010/11/07/release-of-buddypress-privacy-component-pushed-back-one-week/</link>
		<comments>http://jeffsayre.com/2010/11/07/release-of-buddypress-privacy-component-pushed-back-one-week/#comments</comments>
		<pubDate>Sun, 07 Nov 2010 07:00:07 +0000</pubDate>
		<dc:creator>Jeff Sayre</dc:creator>
				<category><![CDATA[BuddyPress]]></category>
		<category><![CDATA[GPL]]></category>
		<category><![CDATA[privacy]]></category>
		<category><![CDATA[WordPress Plugins]]></category>

		<guid isPermaLink="false">http://jeffsayre.com/?p=1122</guid>
		<description><![CDATA[Yes, I know. What??? How could you??!! And just on the greatly-anticipated eve of BP Privacy&#8217;s release? Is this a warped event caused by a rip in the space-time continuum or possibly even triggered by Daylight Savings Time? Is this some sort of a joke? Nope. It is real. The reason is simple and practical. [...]]]></description>
			<content:encoded><![CDATA[<p>Yes, I know. What??? How could you??!! And just on the greatly-anticipated eve of <a href="http://bp-privacy.com/">BP Privacy&#8217;s</a> release? Is this a warped event caused by a rip in the space-time continuum or possibly even triggered by Daylight Savings Time? Is this some sort of a joke?</p>
<p>Nope. It is real. The reason is simple and practical.<span id="more-1122"></span></p>
<p>This past Wednesday during the BuddyPress Developers’ Chat on IRC, it was decided that another subdecimal release of BP was necessary to provide a few fixes to some key bugs. BuddyPress v1.2.7 is <a href="http://bpdevel.wordpress.com/2010/11/03/minutes-of-november-3rd-dev-chat-buddyp/">scheduled to come out around the end of this coming week</a>.</p>
<p>As I thought about this more and more over the past few days, I released that it is not a good practice to release a major new BuddyPress component targeted to a version of BuddyPress that will be obsolete a few days after launch. There is no way to determine how many additional changes to BuddyPress&#8217; core files will be made over the next week&mdash;some of which could affect the operation of BP Privacy.</p>
<p>It would be foolish to release BP Privacy this coming Monday and then take a chance that it will play well with BP 1.2.7 when that comes out four or five days later. It could be an operations pain for my users and a support nightmare for me. So the prudent course of action is to postpone the release of BP Privacy pending the release of BP 1.2.7.</p>
<p>Therefore, BP Privacy will not be launching tomorrow, November 8, 2010. Instead, assuming BP 1.2.7 will be released as detailed in the link above&ndash;and that there are no major issues with it negatively affecting the operation of BP Privacy&ndash;the new launch date for BP Privacy will now be Monday, November 15, 2010.</p>
<p>It’s just one, short week. I’m just as eager to set this free as you are to get your hands on it. But prudence and patience must win out.</p>
<p><strong>It’s Not a Total Loss</strong></p>
<p>There are tangible benefits to this postponement. If you have not yet purchased a BuddyPress Privacy Component Support plan (BPCSP), this delay gives you an additional week to act. It will allow you another chance to get a great, <a href="http://bp-privacy.com/2010/09/stellar-pre-launch-discount-on-support-plans/">permanent discount on support plans</a>.</p>
<p>Furthermore, if you are a current advertiser on BP-Privacy.com, I’m going to give you the full month of December at no additional cost. I cannot justify having my ad clients paying for a full month but not having a full month’s worth of regular traffic. So, December is on me!</p>
<p>This offer for an extra month (December) of advertising will apply to the <a href="http://bp-privacy.com/advertise/">last two remaining ad spots</a> if they are leased before BP Privacy launches on Monday, November 15, 2010.</p>
]]></content:encoded>
			<wfw:commentRss>http://jeffsayre.com/2010/11/07/release-of-buddypress-privacy-component-pushed-back-one-week/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>BuddyPress Featured Members Plugin Widget Re-Released</title>
		<link>http://jeffsayre.com/2010/05/05/buddypress-featured-members-plugin-widget-re-released/</link>
		<comments>http://jeffsayre.com/2010/05/05/buddypress-featured-members-plugin-widget-re-released/#comments</comments>
		<pubDate>Wed, 05 May 2010 18:09:52 +0000</pubDate>
		<dc:creator>Jeff Sayre</dc:creator>
				<category><![CDATA[BuddyPress]]></category>
		<category><![CDATA[GPL]]></category>
		<category><![CDATA[WordPress Plugins]]></category>

		<guid isPermaLink="false">http://jeffsayre.com/?p=650</guid>
		<description><![CDATA[After dragging my feet for too long, I’ve finally upgraded and updated my old Featured Members Widget to work with WP/MU 2.9.2 and BuddyPress 1.2.3. The code has been entirely rewritten using the WordPress Plugin API. This re-released version is what I call a plugin widget as it is a BuddyPress-specific widget and must be [...]]]></description>
			<content:encoded><![CDATA[<p>After dragging my feet for too long, I’ve finally upgraded and updated my old Featured Members Widget to work with WP/MU 2.9.2 and BuddyPress 1.2.3. The code has been entirely rewritten using the <a href="http://codex.wordpress.org/Widgets_API">WordPress Plugin API</a>.<span id="more-650"></span></p>
<p>This re-released version is what I call a plugin widget as it is a BuddyPress-specific widget and must be activated like other BP plugins. Widget installation is handled this way so that if BuddyPress is not activated, then this plugin widget will not be loaded&mdash;which could cause issues with your WP site. The widget does an internal check to see if BuddyPress is activated, if so then it continues loading. If not, it stops loading and will not be visible in the widget gallery. The widget is automatically activated sitewide so your other members will not see it in their plugins section if you&#8217;re running a multisite install.</p>
<p><strong>Download BuddyPress Featured Members Plugin Widget and Donate!</strong></p>
<p>You can <a href="http://wordpress.org/extend/plugins/buddypress-featured-members-widget/">download version 1.2 of the BuddyPress Featured Members Plugin Widget from the WordPress Plugin Repository</a>. Even more excitingly, you can help me support this plugin, encourage me to create new ones, and enable me to keep living by selecting a sponsorship level below and clicking the &#8220;Pay Now&#8221; button. Thank you!</p>
<div class="paypal_button">
<form action="https://www.paypal.com/cgi-bin/webscr" method="post">
<input type="hidden" name="cmd" value="_s-xclick"/>
<input type="hidden" name="hosted_button_id" value="VTHMENKR9ZWB4"/>
<table>
<tr>
<td>
<input type="hidden" name="on0" value="Sponsorship Levels"/>Sponsorship Levels</td>
</tr>
<tr>
<td>
<select name="os0">
<option value="Supporter">Supporter $15.00</option>
<option value="Donor">Donor $25.00</option>
<option value="Sponsor">Sponsor $50.00</option>
<option value="Benefactor">Benefactor $100.00</option>
<option value="Patron">Patron $250.00</option>
<option value="Open Source Angel">Open Source Angel $500.00</option>
<option value="Holy Cow!">Holy Cow! $1,000.00</option>
</select>
</td>
</tr>
</table>
<input type="hidden" name="currency_code" value="USD"/>
<input type="image" src="https://www.paypal.com/en_US/i/btn/btn_paynowCC_LG.gif" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!"/>
						<img alt="" border="0" src="https://www.paypal.com/en_US/i/scr/pixel.gif" width="1" height="1"/><br />
					</form>
<p><em>If you are a corporate user, consultant, plugin developer, or theme designer and profit from using my plugin, please consider donating at one of the upper levels. Thank you!</em></p>
</p></div>
<p><strong>Using the Plugin Widget</strong></p>
<p>Please read the readme.txt file for installation and usage instructions. If you have any issues, please leave a comment in this post, or visit the <a href="http://buddypress.org/community/groups/buddypress-featured-members-widget/forum/">support forum for this plugin widget</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://jeffsayre.com/2010/05/05/buddypress-featured-members-plugin-widget-re-released/feed/</wfw:commentRss>
		<slash:comments>23</slash:comments>
		</item>
		<item>
		<title>Crap, GPL Questions Once Again</title>
		<link>http://jeffsayre.com/2010/04/12/crap-gpl-questions-once-again/</link>
		<comments>http://jeffsayre.com/2010/04/12/crap-gpl-questions-once-again/#comments</comments>
		<pubDate>Mon, 12 Apr 2010 20:00:40 +0000</pubDate>
		<dc:creator>Jeff Sayre</dc:creator>
				<category><![CDATA[Social Media & Semantic Web]]></category>
		<category><![CDATA[BuddyPress]]></category>
		<category><![CDATA[GPL]]></category>
		<category><![CDATA[WordPress Plugins]]></category>

		<guid isPermaLink="false">http://jeffsayre.com/?p=522</guid>
		<description><![CDATA[Recently, someone sent me a private message on the BuddyPress.org community network. They had joined WPMU DEV and acquired all of their premium plugins. They wanted to know it they could, “release those plugins all to the buddypress / wp mu community without consequences.” I wrote a response but decided to share it here as [...]]]></description>
			<content:encoded><![CDATA[<p>Recently, someone sent me a private message on the <a href="http://buddypress.org/forums/">BuddyPress.org community network</a>. They had joined <a href="http://wpmudev.org/">WPMU DEV</a> and acquired all of their premium plugins. They wanted to know it they could, “<em>release those plugins all to the buddypress / wp mu community without consequences</em>.”</p>
<p>I wrote a response but decided to share it here as I periodically receive<span id="more-522"></span> similar DMs, PMs, and emails. So, the next time that someone asks my opinion on this issue, I can simply point them to this post and be done with it.</p>
<p>Although this topic seems to rear its ugly head periodically, it clearly will not die. This is not an attempt to reignite any of the heated debates of the past.</p>
<p>Please respectfully add your comments and thoughts. I will include all that stay civil.</p>
<p><strong>My Response</strong></p>
<p>You have specific freedoms with all GPLed themes and plugins. To find out what those are, you should read the appropriate version of the license under which a given theme or plugin is licensed.</p>
<p>Here are a few things to consider:</p>
<ol>
<li>If you turn around and release any premium GPLed theme or plugin to the public, you will have to offer support to anyone who uses it or tell them that there is no support offered. Most authors of premium themes and plugins will not provide support for thier work if it was obtained from another site.</li>
<li>The community in general frowns upon people who take someone else&#8217;s work and profit from it&mdash;even though it may be perfectly acceptable under the GPL. So, if you decide to redistribute someone else&#8217;s premium work for a fee, then you should be aware that it may cause some backlash. If you are using someone else&#8217;s premium work as the basis of a new product, in other words you will be adding additional value to it, that is a different issue. The value added should be appreciable, you must always give credit to the original creator, and the work must remain licensed under the GPL.</li>
<li>You will have to provide your own download site. Since you are not the author of the theme or plugin, the WordPress repository will most likely not accept it for inclusion. The exception to this would be if you are creating a new version of the original theme or plugin, if you are adding additional, substantive value to it as detailed above. One scenario would be updating and rereleasing a GPLed theme or plugin that the original author no longer supports.</li>
<li>Many people within the greater WP community frown upon such maneuvers in general. Both premium theme designers and premium plugin developers donate a considerable amount of time to designing their themes and coding their plugins. They are simply trying to earn an honest living from their generous contributions.</li>
<li>There is nothing in the GPL that disallows theme designers or plugin developers from charging a distribution fee or a support fee for their work. The GPL is about usage freedoms, not about free-as-in-cost software. There is nothing in the GPL that differentiates between a designer&#8217;s work being fundamentally different than a developer&#8217;s work. So designers and developers are operating within the rights of the GPL when they offer their work for a premium&mdash;as long as they are only charging a distribution and/or support fee. When it comes to offering premium themes or plugins, any talk about the differences in rights between designers and developers is outside of the GPL, is a matter of opinion more than legal fact.</li>
<li>Currently it seems that in the WordPress community, premium theme designers are accepted in general whereas many premium plugin developers are not. I believe this disparity, this inequity, cannot last for long. The community needs both designers and developers. If developers are not afforded the same opportunities, then some will move on.</li>
<li>See my post in the following thread for <a href="http://buddypress.org/community/groups/miscellaneous/forum/topic/gpl-question-re-upcoming-plugin-release/#post-36398">my additional thoughts and opinions on this topic</a>.</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://jeffsayre.com/2010/04/12/crap-gpl-questions-once-again/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How Can BuddyPress Developers Earn a Living?</title>
		<link>http://jeffsayre.com/2010/01/02/how-can-buddypress-developers-earn-a-living/</link>
		<comments>http://jeffsayre.com/2010/01/02/how-can-buddypress-developers-earn-a-living/#comments</comments>
		<pubDate>Sat, 02 Jan 2010 19:35:48 +0000</pubDate>
		<dc:creator>Jeff Sayre</dc:creator>
				<category><![CDATA[BuddyPress]]></category>
		<category><![CDATA[Social Media & Semantic Web]]></category>
		<category><![CDATA[developers]]></category>
		<category><![CDATA[GPL]]></category>
		<category><![CDATA[WordPress Plugins]]></category>

		<guid isPermaLink="false">http://jeffsayre.com/?p=121</guid>
		<description><![CDATA[In the WordPress ecosystem, when it comes to getting paid for time spent, it seems that theme designers are far ahead of plugin developers. GPLed&#8211;premium themes are not only an accepted part of this ecosystem, but seem to thrive. Plugin developers, on the other hand, have been shunned in the past for offering premium plugins. [...]]]></description>
			<content:encoded><![CDATA[<p>In the WordPress ecosystem, when it comes to getting paid for time spent, it seems that theme designers are far ahead of plugin developers. GPLed&ndash;premium themes are not only <a href="http://wordpress.org/extend/themes/commercial/">an accepted part of this ecosystem</a>, but seem to thrive. Plugin developers, on the other hand, have been shunned in the past for offering premium plugins. I won&#8217;t go into the reasons for this, but there is a sordid history, to say the least. I also do not want to reopen the war wounds from previous debates on this topic.<span id="more-121"></span></p>
<p><em>UPDATE: January 19, 2010 A year after this post and here are the results. See my current thoughts on this issue in this article, <a href="http://jeffsayre.com/2011/01/19/bp-privacy-history-and-lessons-learned-from-developing-a-major-buddypress-component/">BP Privacy: History and Lessons Learned from Developing a Major BuddyPress Component</a>.</em></p>
<p>I think it is not only fair and appropriate, but also necessary for plugin developers to have the opportunity to make a living, or at least part of their living, writing great code that extends the base functionality of the BuddyPress platform.</p>
<p>To be clear, I am not an employee of Automattic. Like the vast majority of BuddyPress developers, I do not get paid a single cent for my contributions. In fact, as a salaried employee of Automattic, Andy Peatling, the lead developer of BuddyPress, is the only one who gets paid for his time working on this Open Source project (as far as I know).</p>
<p>Again, I am not looking to fan the embers of previous debates. I do not have any issue with how Automattic runs the WP plugin repository or care if they never list commercial plugins. That is not my point.</p>
<p>All I’m asking is how can plugin developers exist on an equal footing with theme designers when it comes to the issue of earning a living? Currently, the only three options that developers have, it seems, are to advertise a donate button for each plugin, accept consulting gigs, or accept advertising on their website. But <a href="http://www.justinparks.com/have-you-made-donation-to-your-wordpress-plugin-developer/">donate buttons rarely provide much support</a> and providing consulting services to clients is not for everyone. Furthermore, for me, I do not care to turn my personal website into a billboard.</p>
<p>The argument that plugin developers benefit by offering their work for free is flawed. It assumes that all developers are looking for consulting work, and two that all developers who offer their work for free will receive consulting work. Whereas it is certainly the case that some plugin developers have built a nice consulting business as a result of their donated work in the WordPress community, that does not mean that this route is for everyone.</p>
<p>What if a developer just wishes to code great-quality plugins like a theme designer designs high-quality themes? What if he or she does not want to provide any other service? How should this developer be compensated for their time?</p>
<p>But, since you asked, I do have a <a href="http://jeffsayre.com/2010/01/02/do-you-support-buddypress-privacy/">donate-like button for my BuddyPress Privacy Component</a>. You can read more about my version of &#8220;donate&#8221; here.</p>
<p>I would like to hear some ideas on this topic as <a href="http://jeffsayre.com/2009/12/21/i’m-buddypress-ed-for-time/">I have contributed much time to the BuddyPress community</a> but have not earned a single penny. I am not looking to provide programming services or start a consulting company. I have a significant project that I’m working on so I don&#8217;t have time for much else.</p>
<p>Since I am not yet making an money on my project, I need a vehicle to earn some semblance of a respectable cash flow. Just as some theme designers earn a decent income from their premium themes, I would like to think that my income vehicle could be BuddyPress component development.</p>
<p>So, ideas and civil discussion, please!</p>
]]></content:encoded>
			<wfw:commentRss>http://jeffsayre.com/2010/01/02/how-can-buddypress-developers-earn-a-living/feed/</wfw:commentRss>
		<slash:comments>49</slash:comments>
		</item>
	</channel>
</rss>

