10 Million NGOs Worldwide (who just might want open source multilingual software)

Let’s start 2016 off with some great news. NGOs are growing internationally and their role in our society is becoming more important.  From the post:
https://www.ongood.ngo/portal/facts-and-stats-about-ngos-worldwide

NGO Facts - 10 Million#NGOfacts is an ongoing campaign that highlights statistical data about NGOs, nonprofits and charities worldwide. Committed to building a comprehensive list of facts and stats about the NGO sector, please check back regularly for updates.

1. There are an estimated 10 million (non-governmental organizations) NGOs worldwide.
Source: The Global Journal

2. The number of people worldwide donating money to NGOs increased from 1.2 billion in 2011 to 1.4 billion in 2014. By 2030, the number is expected to grow to 2.5 billion.
Source: Charities Aid Foundation

(those are the first two points of 14 – go read the full post here!)

And yes, we are pretty happy to see greater adoption of Tendenci – an open source software solution for NGOs that is already multilingual. Join us!

RIP Ian Murdock

ian-murdockRIP Ian Murdock,the  founder of Debian Linux. Without Ian’s work in the Open Source Community there could be no Tendenci. This is a sad way to end 2015.

News links below:

#RIP

Why Use Open Source Software: The Benefits – LinuxIT Europe

This video is one of the best explanations of why people are switching to Open Source solutions like Tendenci,

The video is from LinuxIT Europe so go check them out.

And if you’d like to learn more about Tendenci functionality for non-profits here is a video from us.

Example: Our web site is at www.tendenci.com with membership management software functionality in addition to high end cms capabilities.

But what about the code? It’s right on github for you to peruse right now https://github.com/tendenci/tendenci because …. well, just watch this video to understand how differentiated open source is!

Django 1.49 EOL drives Tendenci 5 EOL date – time to upgrade

Tendenci 5.x or earlier clients should upgrade to Tendenci 7+ now.

If you are on Tendenci 5 or earlier, you need to upgrade. For open source self installed users the instructions to upgrade tendenci are on readthedocs. For hosted clients please contact us.

Why? What is driving this notice?

Primarily as a safety precaution even if there are no known issues at this time because Django has declared EOL for Django 1.49 which is behind Tendenci 5. (Note: Tendenci 7 uses Django 1.8+ and is not impacted.)

What happens if we don’t upgrade to a newer version of Tendenci?

First – it’s in your best interest because of changes in search engine technology and user’s browsing behavior. But…

In the short term, probably nothing will happen as there are no known issues that I am aware of as I type this. But if the community is not maintaining Django 1.49 then that means nobody is watching on a daily basis and opens the door to possible security issues being undiscovered.

Is there a cost to upgrade from Tendenci 5 to Tendenci 7? Yes.

Earlier this year google changed it’s ranking system to strongly favor mobile web sites. As a result Tendenci 6 and Tendenci 7 use a significantly different template theming based on Bootstrap 3. In the industry this was referred to as “Google’s Mobilegedon”

http://money.cnn.com/2015/04/21/technology/google-mobilegeddon/index.html

Is there a cost to upgrade from Tendenci 6 to 7?

No. There is no cost to upgrade from T6 to T7.

It is redoing the layouts to be mobile responsive that causes the need for human intervention to do the upgrades from T5. And this was driven by google and by you, the user, who now browses the web more on their mobile device than their computer.

More mobile web than desktop or mobile apps
How you browse the web now

We strongly recommend you upgrade with the team at Tendenci or with your own developer. The full upgrade instructions are posted on readthedocs.

The good news is we expect future upgrades to be less painful now that we are bootstrap3+ and mobile compatible. Which is why the T6 to T7 upgrade is free for our hosted clients.

We can’t guarantee that all future upgrades after T7 will be free because you never know what Apple, Google, Microsoft, or Samsung are going to do. But we are doing our best to help you control costs and stay safe on this whole crazy Internet thing.

Software Lifecycles and End of Life Version Dates

What is this whole “End of Life” thing?

Software evolves and is developed with the ever constant changing technology. From a clients perspective this looks like this:

Software Product Lifecycle
Software Product Lifecycle

ProductEndOfLifeCycle” by ArkrishnaOwn work.
Licensed under CC BY-SA 3.0 via Commons.

Tendenci is based on Django which has a stated release cycle methodology. Django is the web framework that handles much of the heavy lifting. Therefore Tendenci which depends on Django is tied to their release and support cycles,

To a developer software development cycles look like this:

Software Development Cycles
Software Development Cycles

Software dev2” by HeyinsunOwn work.
Licensed under CC BY 3.0 via Commons.

Like a cell phone, your web site needs to be upgraded every few years as technology changes. Your old flip phone might still work, but it might also have a security vulnerability that was discovered a year or two after EOL and nobody is there to catch it.

More on that in a follow up post.

Download a Static Version of Your Site

You should backup your website yourself on a regular basis. It is after all YOUR web site, right?

We see questions in help desk tickets that are usually phrased differently like “how can I get a static version of my site?” or “do you use FTP” or similar but basically it’s the same question. And it is a great question. At Tendenci we believe that while all vendors don’t have to be open source like Tendenci is (full source code available at https://github.com/tendenci/ ) they should at least make it easy for you to get your content. But they don’t. So let’s show you how to get it anyway.

Let’s pretend you want to download an entire static (meaning not-database driven but looks almost identical) version of your site on a Mac. First the free way to do it:

Download wget for your Mac. The easiest way is using the Rudix packages (Note – I’m typing this on Sept 10, 2015 so with time, check it to be sure it is still safe.) http://rudix.org/packages/wget.html

wget-for-mac

Then you have to launch terminal. I know terminal is kind of scary if you haven’t used it much so I’ll show you a paid version way of downloading your site in a sec. First the “free” way. Launch terminal on your Mac. It should look something like this:

terminal-window

The next line looks complicated. It kind of is, but just copy and paste it replacing the part that reads MYWEBSITE with your web site. You do have to include the “http” part so it’s easiest to go to your site in a web browser and copy it from the address bar.

wget --limit-rate=400k --no-clobber --convert-links --restrict-file-names=windows --random-wait -r -p -E -e robots=off -U mozilla MYWEBSITE

In terminal I highlighted in blue the part that I typed in. In this case I was making an offline backup static site for our client http://www.texasliver.com (Dr. Galati is awesome!)

wget-down-a-site

Everything after the blue part (and again copy from where I pasted it above just change the URL to be yours), but everything after the blue part is just the system starting to download the files. It DOES cause load on the server so perhaps don’t run it at lunch or during high traffic times. When it’s done you should be able to see it in finder and it should look about like this.

texas-liver-downloaded-site

BUT, this isn’t currently on a web server. Still you can view it in yor web browser by clicking the “index.html” file for example. When viewed as offline files the browser bar look kinda like this:

exporting-web-site-to-files

And BOOM! You have all of your files for free! Even if you made a mistake and went with a proprietary vendor a while back. You CAN get your files.

Bonus round for the uber geeks. If you want to make and build wget on your mac yourself you can use these lines of code (check for newer versions as this blog post ages of course):

cd ~/Downloads/
curl -O http://ftp.gnu.org/gnu/wget/wget-1.15.tar.gz
tar -zxvf wget-1.15.tar.gz
cd wget-1.15/
./configure --with-ssl=openssl
make
sudo make install
rm -rf wget-1.15
rm wget-1.15.tar.gz

Thanks and let’s hear it for Open Source Software like Tendenci. And here’s to open source software like “wget” that allows you to get a static copy of your site even from proprietary vendors and their long contracts. Freedom is good.

Lastly a few (some paid) alternatives to download your site:

http://ricks-apps.com/osx/sitesucker/index.html

For windows you can google it although I can’t vouch for any of these products so be sure to run your virus scanner and watch for bad guys as always.

https://www.google.com/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=sitesucker%20for%20windows

Elon Musk on Work Ethic

“Constantly seek criticism. … A well thought out critique of whatever you are doing is as valuable as gold.”- Elon Musk

and….

“If you do the simple math, if somebody else is working 50 hours and you are working 100, you’ll get twice as much done in the course of a year as the other company.”

“Just work like hell. You’ve gotta put in 80, 100 hour work weeks.” – Elon Musk

“Starting a business. Number 1 is having a high pain threshold.” – Elon Musk

“You are always going to buy the trusted brand unless there is a BIG difference.” – Elon Musk

“Constantly seek criticism. … A well thought out critique of whatever you are doing is as valuable as gold.” – Elon Musk

“Usually your friends know what is wrong. They don’t want to tell you because they don’t want to hurt you. … Usually your friends are right. …. You should take the approach that as an entrepreneur you are wrong. You want to be less wrong.” – Elon Musk

#listen #endure #powerthrough #succeed

Translations, Client iphone and Android Apps

A few cool things in the land of Tendenci clients and open source users internationally to share.

Client Created iPhone and Android Apps

Kudos to www.hapl.org and the developer Jaime Lossada who created this application for the iphone and android on top of Tendenci. This was completely the work of Jaime so if you have questions please reach out to him directly.

HAPL iPhone App by Jaime Lossada
HAPL iPhone and Android Apps by Jaime Lossada

We just think it’s cool to see what “Open” software enables people to do versus closed-old-world-options.

Translations

And we’ve had a few requests lately for translations via Transifex as well as new languages to add. Transifex it integrates with github and Open Source Projects like Tendenci.

Translations for Tendenci via Transifex
Translations for Tendenci via Transifex

You can check our our Transifex project for Tendenci. It’s crowd-sourced translations for open source projects.

Tendenci Newsletter Generator – It’s Back!

First – let’s talk about the NOW. Newsletters are back in Tendenci 6!!

Newsletter Generator for Nonprofits
Tendenci’s Open Source Integrated Newsletter Generator

Tendenci’s Open Source Integrated Newsletter Generator

A lot of long time clients have resisted upgrading to the responsive-mobile-first-open-source-version of Tendenci 6, or even the responsive designs in Tendenci 5, because of one killer feature in Tendenci 4 (the old Microsoft version) and that was NEWSLETTERS.

We listened. We heard you. It’s back.

The ability to communicate with your membership by study group, by event attendees, to only the board of directors, etc. We heard you loud and clear and the newsletter generator is back in full force in Tendenci 6. To prevent the tragedy of the commons (e.g. another client blacklisting a shared email server) we are requiring clients to use either their own SES or a product like Mailgun.com for the newsletter. This will offload the sending to the third party and each client can manage their own newsletter statistics for the first time.

This also alleviates another area of pain. If one client out of 500 ish purchased an email list and the bounce rate was too high, well, then EVERYBODY got slammed and nobody could even do a “forgot my password” request because another client blacklisted the mail server. It’s just the way the Internet works. Why can’t we all just get along, right?

If you are on Tendenci 6 (not an automatic upgrade from T4 or T5 because we pushed more of the design to the front end … um…. where it belongs and the designers can do their thing. Rock on you artsy folk who make software look awesome. More freedom for you. (just please no comic sans, ok?)

If you are on T4, which is approaching end of life very quickly as I type this (Microsoft, not Tendenci dictated these dates so please don’t send email asking if we can secure something Microsoft isn’t patching anymore).

Turn a negative into a positive. Now is a great time to consider a mobile first bootstrap 3 theme that integrates with Tendenci 6! They’re smart, mobile first, responsive, and make you a rock start. Check out www.wrapbootstrap.com for bootstrap3 themes. They’re kinda awesome like this:

Affordable Themes for Tendenci Sites
Bootstrap3 themes for Open Source Tendenci!

 

Just one of the many new functional mobile-first capabilities that have been built into open source tendenci since we started the rewrite in 2009.  This is functionality we have been able to bring back with the help of the Tendenci community.

After 17 years we know the functionality the people who use the site to register for events need, as well as the needs of the people on the board-of-directors and the person functioning as Executive Director. It just takes a while to rewrite 10 years of code in a completely different technology. And we’re just getting started!

Check the help file for the Tendenci Association Newsletter Sending Tool for more detail and edits over time.

HOW TO USE DJANGO-SQL-EXPLORER IN TENDENCI MMS

tendenci6megamenu.png

Tendenci 6 ships with the excellent django-sql-explorer from ePantry. This means you can export anything at any time and build any report you want whenever you want. Absolute 100% anytime freedom of access to your data. #JOY #FREEDOM #ROCKS

First a warning. If you choose to use a direct query tool know they are dangerous. You are doing so at your own risk and could possibly corrupt your database beyond repair up to and including requiring a dba to come in and repair it at a cost of thousands of quid. So…. BE CAREFUL.

SQL explorer is a way to directly query your site through the user interface. It is for superusers only and we recommend disabling it by default (see disclaimer above.) But if you are still reading here is the lightning version.

  1. Login to your Tendenci6 site at /accounts/login/
  2. Navigate to /explorer/
  3. Click on playground and test out some queries. For example here are two
    1. “select tablename from pg_tables” – without the quotes to list all 300 tables in your database
    2. “select * from articles_article” – list all articles including expired and inactive etc.
  4. If you like the queries click “new query” and name and describe them and click save.
  5. Click on the SQL explorer icon top left and your back at the dashboard with icons to download the results of your queries.

Visually when you add the URL /explorer/ to the end of your site path you will see something very similar to this.

django-sql-query-dashboard.png

First note the icon on the right to Download CSV so you can download all of whatever that query is for.  If you don’t see any, no worries – that’s what this post is about!

So let’s write a basic sql statement.

django-sql-playground.png

And then when you click “New  Query” you will find this interface and you can carefully name and describe your query so you know what it does later.

creating-new-tendenci-query-for-csv-download.png

 

1) ALL Interactive users:

SELECT  u.first_name, u.last_name, u.email, u.username, u.is_staff,  u.is_superuser, p.salutation, p.company, p.position_title, p.phone,  p.address, p.address2, p.member_number, p.city, p.state, p.zipcode,  p.country, p.url, p.sex, p.address_type, p.phone2, p.fax, p.work_phone,  p.home_phone, p.mobile_phone, p.notes, p.admin_notes FROM auth_user u  INNER JOIN profiles_profile p ON u.id=p.user_id WHERE u.is_active=True  AND p.status=True AND p.status_detail='active'

Copy Paste Version:

SELECT u.first_name, u.last_name, u.email, u.username, u.is_staff, u.is_superuser, p.salutation, p.company, p.position_title, p.phone, p.address, p.address2, p.member_number, p.city, p.state, p.zipcode, p.country, p.url, p.sex, p.address_type, p.phone2, p.fax, p.work_phone, p.home_phone, p.mobile_phone, p.notes, p.admin_notes FROM auth_user u INNER JOIN profiles_profile p ON u.id=p.user_id WHERE u.is_active=True AND p.status=True AND p.status_detail=’active’

2) ALL memberships:

SELECT u.first_name, u.last_name, u.email, u.username, u.is_staff, u.is_superuser,
    p.salutation, p.company, p.position_title, p.phone, p.address, p.address2, 
    p.member_number, p.city, p.state, p.zipcode, p.country, p.url, p.sex, 
    p.address_type, p.phone2, p.fax, p.work_phone, p.home_phone, p.mobile_phone,
    m.membership_type_id, m.renewal, m.certifications, m.work_experience,
    m.referer_url, m.referral_source, m.join_dt, m.expire_dt, m.renew_dt,
    m.primary_practice, m.how_long_in_practice, m.application_approved,
    m.application_approved_dt, m.areas_of_expertise, m.home_state,
    m.year_left_native_country, m.network_sectors, m.networking,
    m.government_worker, m.government_agency, m.license_number,
    m.license_state, m.status_detail
FROM auth_user u
INNER JOIN profiles_profile p
ON u.id=p.user_id
INNER JOIN memberships_membershipdefault m
ON m.user_id=u.id
WHERE u.is_active=True
AND p.status=True
AND m.status_detail <> 'archive'

Copy Paste Version:

SELECT u.first_name, u.last_name, u.email, u.username, u.is_staff, u.is_superuser, p.salutation, p.company, p.position_title, p.phone, p.address, p.address2, p.member_number, p.city, p.state, p.zipcode, p.country, p.url, p.sex, p.address_type, p.phone2, p.fax, p.work_phone, p.home_phone, p.mobile_phone, m.membership_type_id, m.renewal, m.certifications, m.work_experience, m.referer_url, m.referral_source, m.join_dt, m.expire_dt, m.renew_dt, m.primary_practice, m.how_long_in_practice, m.application_approved, m.application_approved_dt, m.areas_of_expertise, m.home_state, m.year_left_native_country, m.network_sectors, m.networking, m.government_worker, m.government_agency, m.license_number, m.license_state, m.status_detail FROM auth_user u INNER JOIN profiles_profile p ON u.id=p.user_id INNER JOIN memberships_membershipdefault m ON m.user_id=u.id WHERE u.is_active=True AND p.status=True AND m.status_detail <> ‘archive’

3) ALL corporate members:

SELECT cp.name, cp.address, cp.address2, cp.city, cp.state, cp.zip, cp.country,
    cp.phone, cp.email, cp.url, cp.number_employees, cp.chapter, cp.tax_exempt,
    cp.annual_revenue, cp.annual_ad_expenditure, cp.description, cp.expectations,
    cp.notes, cp.referral_source, cp.ud1, cp.ud2, cp.ud3, cp.ud4, cp.ud5, cp.ud6, 
    cp.ud7, cp.ud8, cm.corporate_membership_type_id, cm.renewal, cm.renew_dt,
    cm.join_dt, cm.expiration_dt, cm.approved, cm.admin_notes, cm.status_detail
FROM corporate_memberships_corpprofile cp
INNER JOIN corporate_memberships_corpmembership cm
ON cp.id=cm.corp_profile_id
WHERE cm.status_detail <> 'archive'

Copy Paste Version:

SELECT cp.name, cp.address, cp.address2, cp.city, cp.state, cp.zip, cp.country, cp.phone, cp.email, cp.url, cp.number_employees, cp.chapter, cp.tax_exempt, cp.annual_revenue, cp.annual_ad_expenditure, cp.description, cp.expectations, cp.notes, cp.referral_source, cp.ud1, cp.ud2, cp.ud3, cp.ud4, cp.ud5, cp.ud6, cp.ud7, cp.ud8, cm.corporate_membership_type_id, cm.renewal, cm.renew_dt, cm.join_dt, cm.expiration_dt, cm.approved, cm.admin_notes, cm.status_detail FROM corporate_memberships_corpprofile cp INNER JOIN corporate_memberships_corpmembership cm ON cp.id=cm.corp_profile_id WHERE cm.status_detail <> ‘archive’

4) All users in a specific group (replace <YOUR GROUP ID> with your group id)

SELECT ug.name, u.first_name, u.last_name, u.email, u.username, u.is_staff, u.is_superuser, p.salutation, p.company, p.position_title, p.phone, p.address, p.address2, p.member_number, p.city, p.state, p.zipcode, p.country, p.url, p.sex, p.address_type, p.phone2, p.fax, p.work_phone, p.home_phone, p.mobile_phone FROM auth_user u INNER JOIN profiles_profile p ON u.id=p.user_id INNER JOIN user_groups_groupmembership ugm on u.id=ugm.member_id INNER JOIN user_groups_group ug on ug.id=ugm.group_id WHERE ug.id=<YOUR GROUP ID> AND ugm.status=True AND ugm.status_detail='active'

Copy Paste Version:

SELECT ug.name, u.first_name, u.last_name, u.email, u.username, u.is_staff, u.is_superuser, p.salutation, p.company, p.position_title, p.phone, p.address, p.address2, p.member_number, p.city, p.state, p.zipcode, p.country, p.url, p.sex, p.address_type, p.phone2, p.fax, p.work_phone, p.home_phone, p.mobile_phone FROM auth_user u INNER JOIN profiles_profile p ON u.id=p.user_id INNER JOIN user_groups_groupmembership ugm on u.id=ugm.member_id INNER JOIN user_groups_group ug on ug.id=ugm.group_id WHERE ug.id=<YOUR GROUP ID> AND ugm.status=True AND ugm.status_detail=’active’

 

 

 

Contribute back your brilliance to the rest of us? Have you written some good queries for Tendenci using the amazing  django-sql-explorer from ePantry? Post them on the Tendenci Community Site for others to learn and share with!

Please do be careful. Remember the warnings above. Using a live sql tool on a relational database for anything besides SELECT queries is ill-advised. It really is your live data on a live site SO BE CAREFUL!

We believe this level of access to the superusers on Tendenci sites is empowering. We like knowing people can download any of their data when they need it. And perhaps contribute back some suggested new reports to the Tendenci Community as a whole!

Because Tendenci is part of the Django community and we couldn’t have brought this functionality to you without others in the community “giving first.” We may have added it to Tendenci, but that’s ONLY because of the generosity of building and making it available by others. Explorer is brought to you by the power of collaborative open source software (THANK YOU ePantry!)

Note this is a cross post from our help files. See the Help File for the latest accurate info at: https://www.tendenci.com/help-files/how-use-django-sql-explorer-tendenci/