Bitcoin Forum
November 14, 2024, 05:23:36 AM *
News: Check out the artwork 1Dq created to commemorate this forum's 15th anniversary
 
   Home   Help Search Login Register More  
Pages: « 1 2 3 4 5 6 7 8 9 10 11 [12] 13 14 15 »  All
  Print  
Author Topic: Bitcoin-Qt, the future Bitcoin client GUI [user input needed]  (Read 57157 times)
FatherMcGruder
Sr. Member
****
Offline Offline

Activity: 322
Merit: 250



View Profile WWW
September 08, 2011, 02:24:56 PM
 #221

It is just that.   It would be the most restrictive license yet used for anything required.   If this was  brought in,   anyone distributing binaries will also have to make available the source code to the Qt that they used for example or not bundle it.   Wxwidgets made sure those conditions did not apply to derived works distributed in binary form.   The creators of Qt got dragged a bit towards it even being  as unrestricted as the LGPL in the beginning.  I had noticed that the licenses picked so far are all much less restrictive  and had thought that was a deliberate choice to keep the software free to more uses without the burdens of the GPL
I can't imagine a better way to keep the software freer than with the likes of the GPL, but I suppose that's beyond the point. If copyleft should work its way into the main branch, as it might with the inclusion of Qt, folks who don't like it can just work with their own non-copyleft branch.

Use my Trade Hill referral code: TH-R11519

Check out bitcoinity.org and Ripple.

Shameless display of my bitcoin address:
1Hio4bqPUZnhr2SWi4WgsnVU1ph3EkusvH
aq
Full Member
***
Offline Offline

Activity: 238
Merit: 100


View Profile
September 08, 2011, 05:23:50 PM
 #222

One thing which should be change before merge! Progressbar which inform about sync process should be like in Bitcoin Wallet for Android. This mean that 0% is than, when we run client and it is unsynchronized. Now it shows 99% after start and it not changing until full synchronization. This is not functional if not inform about progress.
+1
ArtForz
Sr. Member
****
Offline Offline

Activity: 406
Merit: 257


View Profile
September 08, 2011, 05:46:47 PM
 #223

I would think they should be released a separately as the qt dependency  changes the nature of the licenses being depended on, and a more free main branch would be preferable.

Qt is available under a commercial license, the LGPL, and the GPL. Can you elaborate on your concerns?

It is just that.   It would be the most restrictive license yet used for anything required.   If this was  brought in,   anyone distributing binaries will also have to make available the source code to the Qt that they used for example or not bundle it.   Wxwidgets made sure those conditions did not apply to derived works distributed in binary form.   The creators of Qt got dragged a bit towards it even being  as unrestricted as the LGPL in the beginning.  I had noticed that the licenses picked so far are all much less restrictive  and had thought that was a deliberate choice to keep the software free to more uses without the burdens of the GPL

But the license of the bitcoin and bitcoin-qt code is still MIT, even though it links against an LGPL library. IANAL, but I believe this means that if you use the source to build a headless version (which doesn't link against Qt) there is no restriction on the distribution of the resulting binary.
We're statically linking BDB4.7 already. Read that license?

edit: to save some hunting, here it is:
Code:
/*
 * Copyright (c) 1990,2008 Oracle.  All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 * 3. Redistributions in any form must be accompanied by information on
 *    how to obtain complete source code for the DB software and any
 *    accompanying software that uses the DB software.  The source code
 *    must either be included in the distribution or be available for no
 *    more than the cost of distribution plus a nominal fee, and must be
 *    freely redistributable under reasonable conditions.  For an
 *    executable file, complete source code means the source code for all
 *    modules it contains.  It does not include source code for modules or
 *    files that typically accompany the major components of the operating
 *    system on which the executable file runs.
 *
 * THIS SOFTWARE IS PROVIDED BY ORACLE ``AS IS'' AND ANY EXPRESS OR
 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
 * WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR
 * NON-INFRINGEMENT, ARE DISCLAIMED.  IN NO EVENT SHALL ORACLE BE LIABLE
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
 * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
 * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
 * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */

bitcoin: 1Fb77Xq5ePFER8GtKRn2KDbDTVpJKfKmpz
i0coin: jNdvyvd6v6gV3kVJLD7HsB5ZwHyHwAkfdw
twobits
Sr. Member
****
Offline Offline

Activity: 574
Merit: 250



View Profile
September 08, 2011, 07:05:49 PM
 #224

I would think they should be released a separately as the qt dependency  changes the nature of the licenses being depended on, and a more free main branch would be preferable.

Qt is available under a commercial license, the LGPL, and the GPL. Can you elaborate on your concerns?

It is just that.   It would be the most restrictive license yet used for anything required.   If this was  brought in,   anyone distributing binaries will also have to make available the source code to the Qt that they used for example or not bundle it.   Wxwidgets made sure those conditions did not apply to derived works distributed in binary form.   The creators of Qt got dragged a bit towards it even being  as unrestricted as the LGPL in the beginning.  I had noticed that the licenses picked so far are all much less restrictive  and had thought that was a deliberate choice to keep the software free to more uses without the burdens of the GPL

But the license of the bitcoin and bitcoin-qt code is still MIT, even though it links against an LGPL library. IANAL, but I believe this means that if you use the source to build a headless version (which doesn't link against Qt) there is no restriction on the distribution of the resulting binary.
We're statically linking BDB4.7 already. Read that license?

edit: to save some hunting, here it is:


Thanks.   You did not save me any hunting however.  I have of course  read the Sleepycat license, in fact  years ago and was quoting form it recently in another thread here, and reread it before posting in that thread.
 I do agree it is the current most restrictive license  being used by a dependency. In fact that is why I have said on irc to some that I had been thinking  of removing that dependency.   That really would not be that big of a project.    That would be a silly project now though if another more restrictive one would go in.   In fact the current distributions of the binaries for bitcoin are in violation of the Sleepycat license. It however would be very simple to remedy  unlike the gpl licenses that require you to keep available the exact code you used for a number of years and not just point to another mirror of it.

I stand by what I said above, and I said it being fully aware of of the BDB dependance and it's license, and am not sure why you thought I was not.


█████                █████      ███████             
█████                ███    █████████████       
█████                ██  █████████████████   
█████                █  ██████              ██████ 
█████                    ████                      ████ 
█████████████  █████                        ████
█████████████  █████                        ████
█████████████  █████                        ████
█████                    █████                             
█████                █  ██████              ███████
█████                ██  ███████████    █████ 
█████                ███    █████████    ████   
█████                █████      ███████    ██
███
███
███
███
███
███
███
███
███
HyperQuant.net
Platform for Professional Asset Management
███
███
███
███
███
███
███
███
███
WhitePaper
One-Pager
███
███
███
███
███
███
███
███
███
Telegram 
Facebook
Twitter
Medium
███
███
███
███
███
███
███
███
███
███
███
███
███
███
███
███
███
███
█████                █████      ███████             
█████                ███    █████████████       
█████                ██  █████████████████   
█████                █  ██████              ██████ 
█████                    ████                      ████ 
█████████████  █████                        ████
█████████████  █████                        ████
█████████████  █████                        ████
█████                    █████                             
█████                █  ██████              ███████
█████                ██  ███████████    █████ 
█████                ███    █████████    ████   
█████                █████      ███████    ██
twobits
Sr. Member
****
Offline Offline

Activity: 574
Merit: 250



View Profile
September 08, 2011, 07:11:49 PM
 #225

It is just that.   It would be the most restrictive license yet used for anything required.   If this was  brought in,   anyone distributing binaries will also have to make available the source code to the Qt that they used for example or not bundle it.   Wxwidgets made sure those conditions did not apply to derived works distributed in binary form.   The creators of Qt got dragged a bit towards it even being  as unrestricted as the LGPL in the beginning.  I had noticed that the licenses picked so far are all much less restrictive  and had thought that was a deliberate choice to keep the software free to more uses without the burdens of the GPL
I can't imagine a better way to keep the software freer than with the likes of the GPL, but I suppose that's beyond the point. If copyleft should work its way into the main branch, as it might with the inclusion of Qt, folks who don't like it can just work with their own non-copyleft branch.


Yes,  someone could always fork that last branch before that and probably will.

█████                █████      ███████             
█████                ███    █████████████       
█████                ██  █████████████████   
█████                █  ██████              ██████ 
█████                    ████                      ████ 
█████████████  █████                        ████
█████████████  █████                        ████
█████████████  █████                        ████
█████                    █████                             
█████                █  ██████              ███████
█████                ██  ███████████    █████ 
█████                ███    █████████    ████   
█████                █████      ███████    ██
███
███
███
███
███
███
███
███
███
HyperQuant.net
Platform for Professional Asset Management
███
███
███
███
███
███
███
███
███
WhitePaper
One-Pager
███
███
███
███
███
███
███
███
███
Telegram 
Facebook
Twitter
Medium
███
███
███
███
███
███
███
███
███
███
███
███
███
███
███
███
███
███
█████                █████      ███████             
█████                ███    █████████████       
█████                ██  █████████████████   
█████                █  ██████              ██████ 
█████                    ████                      ████ 
█████████████  █████                        ████
█████████████  █████                        ████
█████████████  █████                        ████
█████                    █████                             
█████                █  ██████              ███████
█████                ██  ███████████    █████ 
█████                ███    █████████    ████   
█████                █████      ███████    ██
ArtForz
Sr. Member
****
Offline Offline

Activity: 406
Merit: 257


View Profile
September 08, 2011, 07:28:20 PM
 #226

I just don't see the massive problem here. SleepyCat (in my book a way "stronger" copyleft license than LGPL) is ok because you can rewrite the database interface, but simply removing the GUI or forking the old wx GUI is ... what? impossible?

bitcoin: 1Fb77Xq5ePFER8GtKRn2KDbDTVpJKfKmpz
i0coin: jNdvyvd6v6gV3kVJLD7HsB5ZwHyHwAkfdw
twobits
Sr. Member
****
Offline Offline

Activity: 574
Merit: 250



View Profile
September 08, 2011, 07:33:22 PM
 #227

I just don't see the massive problem here. SleepyCat (in my book a way "stronger" copyleft license than LGPL) is ok because you can rewrite the database interface, but simply removing the GUI or forking the old wx GUI is ... what? impossible?


Again you put things that I am not writing.  Where did I write that the SleepyCat is ok?   I simple wrote that is is less restrictive then the  LGPL.  If I thought it was ok, I doubt I would have started the project to remove it.
 Is that the point of debate?     What to me was not ok, is going the direction of more restrictive licenses.   I simple said that it would not be too hard to remove.   I did not say it was ok to me.  However it already is present. Too late to avoid adding it unlike lgpled dependent code.

Also never said that forking it was impossible, in fact in the post right above your reply I say the opposite.  I probably will do just that, if I continue.  Just thought I would try and avoid the need for yet another fork.


█████                █████      ███████             
█████                ███    █████████████       
█████                ██  █████████████████   
█████                █  ██████              ██████ 
█████                    ████                      ████ 
█████████████  █████                        ████
█████████████  █████                        ████
█████████████  █████                        ████
█████                    █████                             
█████                █  ██████              ███████
█████                ██  ███████████    █████ 
█████                ███    █████████    ████   
█████                █████      ███████    ██
███
███
███
███
███
███
███
███
███
HyperQuant.net
Platform for Professional Asset Management
███
███
███
███
███
███
███
███
███
WhitePaper
One-Pager
███
███
███
███
███
███
███
███
███
Telegram 
Facebook
Twitter
Medium
███
███
███
███
███
███
███
███
███
███
███
███
███
███
███
███
███
███
█████                █████      ███████             
█████                ███    █████████████       
█████                ██  █████████████████   
█████                █  ██████              ██████ 
█████                    ████                      ████ 
█████████████  █████                        ████
█████████████  █████                        ████
█████████████  █████                        ████
█████                    █████                             
█████                █  ██████              ███████
█████                ██  ███████████    █████ 
█████                ███    █████████    ████   
█████                █████      ███████    ██
ArtForz
Sr. Member
****
Offline Offline

Activity: 406
Merit: 257


View Profile
September 08, 2011, 07:41:50 PM
 #228

*shrug* I still don't see how LGPL is more restrictive than SleepyCat, but... guess we'll have to disagree on that.

bitcoin: 1Fb77Xq5ePFER8GtKRn2KDbDTVpJKfKmpz
i0coin: jNdvyvd6v6gV3kVJLD7HsB5ZwHyHwAkfdw
aq
Full Member
***
Offline Offline

Activity: 238
Merit: 100


View Profile
September 08, 2011, 11:26:22 PM
 #229

It is just that.   It would be the most restrictive license yet used for anything required.   If this was  brought in,   anyone distributing binaries will also have to make available the source code to the Qt that they used for example or not bundle it.   Wxwidgets made sure those conditions did not apply to derived works distributed in binary form.   The creators of Qt got dragged a bit towards it even being  as unrestricted as the LGPL in the beginning.  I had noticed that the licenses picked so far are all much less restrictive  and had thought that was a deliberate choice to keep the software free to more uses without the burdens of the GPL
I can't imagine a better way to keep the software freer than with the likes of the GPL, but I suppose that's beyond the point. If copyleft should work its way into the main branch, as it might with the inclusion of Qt, folks who don't like it can just work with their own non-copyleft branch.
Actually I can't imaging someone wants a closed source bitcoin client - the only advantage of not using GPL. As a side effect of using GPL all bitcoin forks would stay open source too, which is not necessary with MIT/BSD. Looking at Linux, GPL did not prevent it from being used commercially, in contrast, it enabled it reaching from smartphones to supercomputers.
kjj
Legendary
*
Offline Offline

Activity: 1302
Merit: 1026



View Profile
September 09, 2011, 04:14:29 AM
 #230

It is just that.   It would be the most restrictive license yet used for anything required.   If this was  brought in,   anyone distributing binaries will also have to make available the source code to the Qt that they used for example or not bundle it.   Wxwidgets made sure those conditions did not apply to derived works distributed in binary form.   The creators of Qt got dragged a bit towards it even being  as unrestricted as the LGPL in the beginning.  I had noticed that the licenses picked so far are all much less restrictive  and had thought that was a deliberate choice to keep the software free to more uses without the burdens of the GPL
I can't imagine a better way to keep the software freer than with the likes of the GPL, but I suppose that's beyond the point. If copyleft should work its way into the main branch, as it might with the inclusion of Qt, folks who don't like it can just work with their own non-copyleft branch.
Actually I can't imaging someone wants a closed source bitcoin client - the only advantage of not using GPL. As a side effect of using GPL all bitcoin forks would stay open source too, which is not necessary with MIT/BSD. Looking at Linux, GPL did not prevent it from being used commercially, in contrast, it enabled it reaching from smartphones to supercomputers.

GPL software is never open source.  It is always free, which is the whole point of the license.

17Np17BSrpnHCZ2pgtiMNnhjnsWJ2TMqq8
I routinely ignore posters with paid advertising in their sigs.  You should too.
aq
Full Member
***
Offline Offline

Activity: 238
Merit: 100


View Profile
September 09, 2011, 11:51:09 AM
 #231

It is just that.   It would be the most restrictive license yet used for anything required.   If this was  brought in,   anyone distributing binaries will also have to make available the source code to the Qt that they used for example or not bundle it.   Wxwidgets made sure those conditions did not apply to derived works distributed in binary form.   The creators of Qt got dragged a bit towards it even being  as unrestricted as the LGPL in the beginning.  I had noticed that the licenses picked so far are all much less restrictive  and had thought that was a deliberate choice to keep the software free to more uses without the burdens of the GPL
I can't imagine a better way to keep the software freer than with the likes of the GPL, but I suppose that's beyond the point. If copyleft should work its way into the main branch, as it might with the inclusion of Qt, folks who don't like it can just work with their own non-copyleft branch.
Actually I can't imaging someone wants a closed source bitcoin client - the only advantage of not using GPL. As a side effect of using GPL all bitcoin forks would stay open source too, which is not necessary with MIT/BSD. Looking at Linux, GPL did not prevent it from being used commercially, in contrast, it enabled it reaching from smartphones to supercomputers.

GPL software is never open source.  It is always free, which is the whole point of the license.
Well, it depends on your definition of the term "open source". These days this usually means an OSI http://www.opensource.org/ approved license.
wumpus (OP)
Hero Member
*****
Offline Offline

Activity: 812
Merit: 1022

No Maps for These Territories


View Profile
September 09, 2011, 05:49:13 PM
 #232

No license discussion here please, get your own room Smiley The core library is still independent of Qt, so you choose to link against LGPL (Qt is not GPL!) code only when you want to build the UI not when you want to link it into your own evilly licensed statically linked program Tongue

Matoking's fixes have been merged

Quote
One thing which should be change before merge! Progressbar which inform about sync process should be like in Bitcoin Wallet for Android. This mean that 0% is than, when we run client and it is unsynchronized. Now it shows 99% after start and it not changing until full synchronization. This is not functional if not inform about progress.
Yeah, I too think that'd be better...

Bitcoin Core developer [PGP] Warning: For most, coin loss is a larger risk than coin theft. A disk can die any time. Regularly back up your wallet through FileBackup Wallet to an external storage or the (encrypted!) cloud. Use a separate offline wallet for storing larger amounts.
Matoking
Sr. Member
****
Offline Offline

Activity: 352
Merit: 250

Firstbits: 1m8xa


View Profile WWW
September 11, 2011, 08:11:11 AM
 #233

Quote
One thing which should be change before merge! Progressbar which inform about sync process should be like in Bitcoin Wallet for Android. This mean that 0% is than, when we run client and it is unsynchronized. Now it shows 99% after start and it not changing until full synchronization. This is not functional if not inform about progress.
Yeah, I too think that'd be better...

https://github.com/Matoking/bitcoin-qt ( https://github.com/Matoking/bitcoin-qt/commit/b97357889fd71549373b7d2a826a863402a586ff )
I implemented it on my fork. May not be the best way of doing it but it works. Let me know if it's ok.

Also, the launch parameter reference has been removed in the latest commit, gotta figure out how I'll implement it.

BTC : 1CcpmVDLvR7DgA5deFGScoNhiEtiJnh6H4 - LTC : LYTnoXAHNsemMB2jhCSi1znQqnfupdRkSy
Bitcoin-otc
BitBin - earn bitcoins with your pastes!
wumpus (OP)
Hero Member
*****
Offline Offline

Activity: 812
Merit: 1022

No Maps for These Territories


View Profile
September 11, 2011, 08:22:43 AM
 #234

Quote
I implemented it on my fork. May not be the best way of doing it but it works. Let me know if it's ok.
Thanks. I think your implementation of storing the number in the model (instead of the core) is a good idea.

Quote
Also, the launch parameter reference has been removed in the latest commit, gotta figure out how I'll implement it.
Please don't add commandline parameters for GUI options, it's not the right place. If it would be an option, it should be in Options in the GUI, add an "Appearance" tab for example Smiley

Though I don't think this is a big issue. If people think that the transparency effect is annoying we should simply remove it. I personally thought it looked nice and accepted the contribution from nico_w making the application look more "windows 7 native", but we could get rid of a lot of windows-specific code if we simply removed it.

Bitcoin Core developer [PGP] Warning: For most, coin loss is a larger risk than coin theft. A disk can die any time. Regularly back up your wallet through FileBackup Wallet to an external storage or the (encrypted!) cloud. Use a separate offline wallet for storing larger amounts.
Matoking
Sr. Member
****
Offline Offline

Activity: 352
Merit: 250

Firstbits: 1m8xa


View Profile WWW
September 11, 2011, 08:46:39 AM
 #235

The problem with the transparency effect is you sometimes to have to move stuff around or maximize the window to make it readable. If your application window is over a black background it's hard to read it. I'll see if there's something that can be done to make it better.

And that commandline parameter was just a test that never took off, no intention of adding it like that.

Maybe add a glow over the menu buttons (native Windows programs do this)

BTC : 1CcpmVDLvR7DgA5deFGScoNhiEtiJnh6H4 - LTC : LYTnoXAHNsemMB2jhCSi1znQqnfupdRkSy
Bitcoin-otc
BitBin - earn bitcoins with your pastes!
wumpus (OP)
Hero Member
*****
Offline Offline

Activity: 812
Merit: 1022

No Maps for These Territories


View Profile
September 11, 2011, 08:53:47 AM
 #236

The better progress bar handling patch has been merged.

Maybe add a glow over the menu buttons (native Windows programs do this)
Yeah I wonder if Qt can do this. If not, I don't think it's worth spending too much work in. But this indeed would be a far better solution  Smiley

Edit: BTW, thanks to whoever sent me a anonymous donation

Bitcoin Core developer [PGP] Warning: For most, coin loss is a larger risk than coin theft. A disk can die any time. Regularly back up your wallet through FileBackup Wallet to an external storage or the (encrypted!) cloud. Use a separate offline wallet for storing larger amounts.
Matoking
Sr. Member
****
Offline Offline

Activity: 352
Merit: 250

Firstbits: 1m8xa


View Profile WWW
September 11, 2011, 04:01:52 PM
 #237

Hmm, I noticed after I played Portal 2 that the background of the main window became entirely black.

I wonder if the transparency effect is really needed after all.

BTC : 1CcpmVDLvR7DgA5deFGScoNhiEtiJnh6H4 - LTC : LYTnoXAHNsemMB2jhCSi1znQqnfupdRkSy
Bitcoin-otc
BitBin - earn bitcoins with your pastes!
wumpus (OP)
Hero Member
*****
Offline Offline

Activity: 812
Merit: 1022

No Maps for These Territories


View Profile
September 11, 2011, 07:02:02 PM
 #238

I'm going to remove it for now...

Bitcoin Core developer [PGP] Warning: For most, coin loss is a larger risk than coin theft. A disk can die any time. Regularly back up your wallet through FileBackup Wallet to an external storage or the (encrypted!) cloud. Use a separate offline wallet for storing larger amounts.
Furyan
Full Member
***
Offline Offline

Activity: 175
Merit: 102



View Profile
September 12, 2011, 01:10:50 PM
 #239

I'm going to remove it for now...

Would it matter if I object?

FWIW the transparency effect is working exactly as intended.  The black background after playing Portal 2 is likely due to a crashed video driver.  Simply restarting the DWM service will fix that.

With regard to having to move the window around if you've got it on top of something with a black background - like a console window? - Microsoft took that kind of issue into account when creating the UI.  For the vast majority of "dumb" users, it isn't an issue and your average user will expect to see transparency in a supposedly professional app. Removing it will make them think you haven't really updated it in a long time, reducing their confidence in it.  The research confirms this.

We technical types have a way of designing software the way we think people would use it.  We're almost never right in that regard - we use software very, very differently than an average user.  If your purpose with Bitcoin-Qt is only to appeal to a technical audience, your intuition will guide you very well.  If your purpose is to appeal to less technical users and encourage wide adoption of Bitcoin, you should ignore your intuition as often as possible and look to other well-documented approaches for guidance.

I think the transparency makes the app look alot more beautiful and I rather liked it..
HostFat
Staff
Legendary
*
Offline Offline

Activity: 4270
Merit: 1209


I support freedom of choice


View Profile WWW
September 12, 2011, 01:23:05 PM
 #240

Can be enabled as an option? Smiley

NON DO ASSISTENZA PRIVATA - https://t.me/hostfatmind/
Pages: « 1 2 3 4 5 6 7 8 9 10 11 [12] 13 14 15 »  All
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!